diff --git a/headers/os/kernel/fs_interface.h b/headers/os/kernel/fs_interface.h index 69ace075bb..9e2dba67c7 100644 --- a/headers/os/kernel/fs_interface.h +++ b/headers/os/kernel/fs_interface.h @@ -119,11 +119,11 @@ typedef struct fs_ops { status_t (*remove_attr)(fs_volume fs, fs_vnode file, const char *name); /* index directory & index operations */ - status_t (*open_index_dir)(fs_volume fs, fs_vnode v, fs_cookie *cookie, int oflags); - status_t (*close_index_dir)(fs_volume fs, fs_vnode v, fs_cookie cookie); - status_t (*free_index_dir_cookie)(fs_volume fs, fs_vnode v, fs_cookie cookie); - status_t (*read_index_dir)(fs_volume fs, fs_vnode v, fs_cookie cookie, struct dirent *buffer, size_t bufferSize, uint32 *_num); - status_t (*rewind_index_dir)(fs_volume fs, fs_vnode v, fs_cookie cookie); + status_t (*open_index_dir)(fs_volume fs, fs_cookie *cookie); + status_t (*close_index_dir)(fs_volume fs, fs_cookie cookie); + status_t (*free_index_dir_cookie)(fs_volume fs, fs_cookie cookie); + status_t (*read_index_dir)(fs_volume fs, fs_cookie cookie, struct dirent *buffer, size_t bufferSize, uint32 *_num); + status_t (*rewind_index_dir)(fs_volume fs, fs_cookie cookie); status_t (*create_index)(fs_volume fs, const char *name, uint32 type, int flags); status_t (*remove_index)(fs_volume fs, const char *name); diff --git a/headers/private/kernel/fd.h b/headers/private/kernel/fd.h index ee090b65f4..cb8f7a0062 100644 --- a/headers/private/kernel/fd.h +++ b/headers/private/kernel/fd.h @@ -14,6 +14,7 @@ struct file_descriptor; +struct fs_mount; struct vnode; /** The I/O context of a process/team, holds the fd array */ @@ -43,7 +44,10 @@ struct file_descriptor { int32 type; /* descriptor type */ int32 ref_count; struct fd_ops *ops; - struct vnode *vnode; + union { + struct vnode *vnode; + struct fs_mount *mount; + } u; void *cookie; int32 open_mode; }; @@ -55,8 +59,9 @@ enum fd_types { FDTYPE_FILE = 1, FDTYPE_ATTR, FDTYPE_DIR, - FDTYPE_ATTRDIR, + FDTYPE_ATTR_DIR, FDTYPE_INDEX, + FDTYPE_INDEX_DIR, FDTYPE_QUERY, FDTYPE_SOCKET };