Rev |
Age |
Author |
Path |
Log message |
Diff |
Changes |
2690 |
6145 d 20 h |
jermar |
/trunk/uspace/srv/ |
Make a distinction between VFS operations that are common to VFS and FS
implementations, operations that are VFS only and operations that are FS
implementations only. |
|
/trunk/uspace/srv/fs/fat/fat.c /trunk/uspace/srv/fs/tmpfs/tmpfs.c /trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_ops.c
|
2687 |
6145 d 21 h |
jermar |
/trunk/uspace/srv/ |
Management of the cached VFS node size. |
|
/trunk/uspace/srv/fs/tmpfs/tmpfs_ops.c /trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_lookup.c /trunk/uspace/srv/vfs/vfs_mount.c /trunk/uspace/srv/vfs/vfs_node.c /trunk/uspace/srv/vfs/vfs_open.c /trunk/uspace/srv/vfs/vfs_rdwr.c
|
2684 |
6147 d 22 h |
jermar |
/trunk/ |
Add libc and VFS implementation of lseek(), VFS_SEEK resp.
Add the size member to the VFS node structure (not yet initialized). |
|
/trunk/kernel/generic/include/errno.h /trunk/uspace/lib/libc/generic/vfs.c /trunk/uspace/lib/libc/include/unistd.h /trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_rdwr.c
|
2683 |
6148 d 1 h |
jermar |
/trunk/uspace/srv/vfs/ |
Introduce the open file lock. Modify vfs_rdwr() to take this lock into account
when reading or writing from/to an open file. |
|
/trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_file.c /trunk/uspace/srv/vfs/vfs_rdwr.c
|
2682 |
6148 d 3 h |
jermar |
/trunk/uspace/ |
Fix type in declaration of VFS node rwlock.
Introduce a dedicated type for futexes. Make the existing futex code use this
newly introduced type and fix formatting in futex.c. |
|
/trunk/uspace/lib/libc/generic/futex.c /trunk/uspace/lib/libc/include/futex.h /trunk/uspace/srv/vfs/vfs.h
|
2681 |
6148 d 4 h |
jermar |
/trunk/uspace/ |
Turn the namespace futex into rwlock. |
|
/trunk/uspace/lib/libc/include/rwlock.h /trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_mount.c /trunk/uspace/srv/vfs/vfs_open.c /trunk/uspace/srv/vfs/vfs_unlink.c
|
2680 |
6148 d 5 h |
jermar |
/trunk/uspace/ |
Add basic rwlock API for uspace so that VFS can be designed/implemented using
this API. So far, the implementation of this API merely wraps futexes into
rwlocks. Real rwlocks are wanted by ticket #54.
Using the new rwlock API, replace the VFS node content futex with an rwlock.
Lock the contents rwlock as reader on reads and as writer on writes. |
|
/trunk/uspace/lib/libc/include/rwlock.h
/trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_node.c /trunk/uspace/srv/vfs/vfs_rdwr.c
|
2679 |
6151 d 21 h |
jermar |
/trunk/uspace/srv/vfs/ |
Rename unlink_futex to namespace_futex and introduce a new futex for serializing
concurrent access to a VFS node's contents by multiple clients. |
|
/trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_mount.c /trunk/uspace/srv/vfs/vfs_node.c /trunk/uspace/srv/vfs/vfs_open.c /trunk/uspace/srv/vfs/vfs_rdwr.c /trunk/uspace/srv/vfs/vfs_unlink.c
|
2666 |
6159 d 21 h |
jermar |
/trunk/uspace/srv/ |
VFS and TMPFS support for VFS_WRITE. |
|
/trunk/uspace/srv/vfs/vfs_rdwr.c
/trunk/uspace/srv/vfs/vfs_read.c
/trunk/uspace/srv/fs/tmpfs/tmpfs.h /trunk/uspace/srv/fs/tmpfs/tmpfs_ops.c /trunk/uspace/srv/vfs/Makefile /trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h
|
2641 |
6170 d 23 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
During VFS_REGISTER, use strncmp() instead of strcmp().
Add one excessive convenience byte to vfs_info.name to support the
above-mentioned change. In case the fs name spans all available
characters, make sure this convenience byte is zero. |
|
/trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_register.c
|
2625 |
6190 d 23 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Proto implementation of VFS_READ. |
|
/trunk/uspace/srv/vfs/vfs_read.c
/trunk/uspace/srv/vfs/Makefile /trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h
|
2596 |
6209 d 0 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Implement VFS node hash table management. |
|
/trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_node.c
|
2593 |
6210 d 22 h |
jermar |
/trunk/uspace/srv/vfs/ |
A lot of more VFS prototyping.
VFS_OPEN gets reasonably complete, fix a limitation that prevented file
structures from being shared by multiple file descriptors, add functions for
file descriptor management, introduce unlink_futex and two new VFS operations
VFS_UNLINK and VFS_RENAME. |
|
/trunk/uspace/srv/vfs/vfs_file.c /trunk/uspace/srv/vfs/vfs_unlink.c
/trunk/uspace/srv/vfs/Makefile /trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_node.c /trunk/uspace/srv/vfs/vfs_open.c
|
2590 |
6212 d 0 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Start implementing VFS side of VFS_OPEN.
Add vfs_node.c to contain VFS node related internal functions. |
|
/trunk/uspace/srv/vfs/vfs_node.c
/trunk/uspace/srv/vfs/Makefile /trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_lookup.c /trunk/uspace/srv/vfs/vfs_mount.c /trunk/uspace/srv/vfs/vfs_open.c /trunk/uspace/srv/vfs/vfs_register.c
|
2589 |
6212 d 2 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Allocate the open filess array dynamically and protect access to it via a
per-connection futex. Defer its allocation until the client makes a first
VFS_OPEN request.
Actually call vfs_mount() and vfs_open(), respectively, when the VFS_MOUNT and
VFS_OPEN requests, respectively, are received from the client. |
|
/trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_open.c
|
2587 |
6212 d 3 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Introduce the notion of VFS_PAIR which corresponds to a file system instance,
and VFS_TRIPLET, which corresponds to a file system node. Separate vfs_triplet_t
and vfs_node_t as the former one is the stateless counterpart of the latter. |
|
/trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_lookup.c /trunk/uspace/srv/vfs/vfs_mount.c
|
2560 |
6246 d 23 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Start VFS_OPEN. |
|
/trunk/uspace/srv/vfs/vfs_open.c
/trunk/uspace/srv/vfs/Makefile /trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h
|
2552 |
6247 d 21 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
This is a checkpoint commit.
It introduces initial, still incomplete, code for VFS-side VFS_MOUNT request. |
|
/trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_lookup.c /trunk/uspace/srv/vfs/vfs_mount.c
|
2550 |
6248 d 1 h |
cejka |
/trunk/ |
Fixed naming convention in IPC. |
|
/trunk/kernel/generic/include/ipc/ipc.h /trunk/uspace/lib/libc/include/ipc/fb.h /trunk/uspace/srv/devmap/devmap.c /trunk/uspace/srv/devmap/devmap.h /trunk/uspace/srv/vfs/vfs.h
|
2549 |
6248 d 3 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Modify vfs_lookup_internal() to be able to work with an alternate root. This
will be useful for VFS_MOUNT support.
Improve observability and debuggability by explicitly zeroing out PLB after the
path has been looked up. |
|
/trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_lookup.c /trunk/uspace/srv/vfs/vfs_register.c
|
2548 |
6248 d 4 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Add fs_name_to_handle() function to abstract away the details of walking the
list of registered file systems, and in order to avoid code duplication. |
|
/trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_register.c
|
2546 |
6248 d 7 h |
jermar |
/trunk/uspace/srv/ |
VFS work.
Upon FS registration via VFS_REGISTER, the client is assigned a unique file
system handle. When generating the VFS_LOOKUP request in VFS, we also need to
pass the device handle. Add function to transform file system handle to phone.
Implement basic multi-call VFS request serialization on VFS side. |
|
/trunk/uspace/srv/fs/fat/fat.c /trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_lookup.c /trunk/uspace/srv/vfs/vfs_register.c
|
2544 |
6248 d 23 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Proto implementation of VFS-side vfs_lookup_internal(). |
|
/trunk/uspace/srv/vfs/vfs.h /trunk/uspace/srv/vfs/vfs_lookup.c
|
2542 |
6249 d 5 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Start support for the Patch Lookup Buffer.
Also add rootfs pointer. |
|
/trunk/uspace/srv/vfs/vfs_lookup.c /trunk/uspace/srv/vfs/vfs_mount.c
/trunk/uspace/srv/vfs/Makefile /trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h
|
2540 |
6249 d 19 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Introduce basic types representing a file system node and an open file. |
|
/trunk/uspace/srv/vfs/vfs.h
|
2535 |
6256 d 0 h |
jermar |
/trunk/uspace/srv/vfs/ |
Move VFS_REGISTER functionality into a separate file. |
|
/trunk/uspace/srv/vfs/vfs_register.c
/trunk/uspace/srv/vfs/Makefile /trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h
|
2529 |
6259 d 0 h |
jermar |
/trunk/uspace/ |
Turn the empty fs service into the beginning of FAT support.
Start implementing the VFS protocol for fat.c. |
|
/trunk/uspace/srv/fs/fat /trunk/uspace/srv/fs/fat/Makefile /trunk/uspace/srv/fs/fat/fat.c
/trunk/uspace/srv/fs/Makefile /trunk/uspace/srv/fs/fs.c
/trunk/uspace/Makefile /trunk/uspace/lib/libc/include/ipc/services.h /trunk/uspace/srv/vfs/vfs.h
|
2527 |
6260 d 6 h |
jermar |
/trunk/ |
VFS work.
Added mandatory VFS_LOOKUP
Handling of VFS_REGISTER request should be now more or less complete.
Added code that inserts the new fs_info structure into the list of registered
filesystems and creates a callback connection to the client FS. |
|
/trunk/kernel/generic/include/ipc/ipc.h /trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h
|
2526 |
6261 d 3 h |
jermar |
/trunk/uspace/ |
VFS work.
Delve deeper into VFS_REGISTER. |
|
/trunk/uspace/lib/libc/include/ctype.h /trunk/uspace/lib/libc/include/libadt/hash_table.h /trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h
|
2523 |
6261 d 9 h |
jermar |
/trunk/ |
VFS work.
Now, each VFS connection fibril will accept requests in a loop. The idea is that
each connection will be potentially reused for multiple requests before it is
closed by the server.
More VFS_REGISTER bits. Make use of the IPC_M_DATA_SEND wrappers introduced in
the previous commit.
Add enum members for more VFS operations. |
|
/trunk/kernel/generic/include/ipc/ipc.h /trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h
|
2521 |
6262 d 21 h |
jermar |
/trunk/uspace/srv/vfs/ |
VFS work.
Start implementing the VFS_REGISTER request. |
|
/trunk/uspace/srv/vfs/vfs.c /trunk/uspace/srv/vfs/vfs.h
|
2520 |
6262 d 22 h |
jermar |
/trunk/uspace/ |
VFS work.
Turn the dummy skeleton into a dummy skeleton that can handle connections.
There are already traces of the VFS protocol. |
|
/trunk/uspace/srv/vfs/vfs.h
/trunk/uspace/lib/libc/include/ipc/services.h /trunk/uspace/srv/vfs/vfs.c
|