* Adding volume ops to the overlay filesystem.
* Remove the previous method of applying the overlay by flags. In the future the overlay can just be mounted as a filesystem layer. This is probably how layers were intended to work in the first place. * Move the filesystem module info and filesystem name from the fs_mount to the fs_volume structure. Filesystem layering is done by having multiple layered volumes and we want to be able to have a different fs per layer. * Adapt VFS code to this move. * Implement mounting layered filesystems. Specifying multiple filesystems separated by a colon on mount will cause the layers to be set up and the corresponding filesystems to be mounted at that layer. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29199 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -43,7 +43,6 @@ struct file_io_vec {
|
||||
// flags for publish_vnode() and fs_volume_ops::get_vnode()
|
||||
#define B_VNODE_PUBLISH_REMOVED 0x01
|
||||
#define B_VNODE_DONT_CREATE_SPECIAL_SUB_NODE 0x02
|
||||
#define B_VNODE_WANTS_OVERLAY_SUB_NODE 0x04
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -54,16 +53,18 @@ typedef struct fs_volume fs_volume;
|
||||
typedef struct fs_volume_ops fs_volume_ops;
|
||||
typedef struct fs_vnode fs_vnode;
|
||||
typedef struct fs_vnode_ops fs_vnode_ops;
|
||||
|
||||
typedef struct file_system_module_info file_system_module_info;
|
||||
|
||||
struct fs_volume {
|
||||
dev_t id;
|
||||
partition_id partition;
|
||||
int32 layer;
|
||||
void* private_volume;
|
||||
fs_volume_ops* ops;
|
||||
fs_volume* sub_volume;
|
||||
fs_volume* super_volume;
|
||||
dev_t id;
|
||||
partition_id partition;
|
||||
int32 layer;
|
||||
void* private_volume;
|
||||
fs_volume_ops* ops;
|
||||
fs_volume* sub_volume;
|
||||
fs_volume* super_volume;
|
||||
file_system_module_info* file_system;
|
||||
char* file_system_name;
|
||||
};
|
||||
|
||||
struct fs_vnode {
|
||||
@@ -240,7 +241,7 @@ struct fs_vnode_ops {
|
||||
fs_volume *superVolume, fs_vnode *superVnode);
|
||||
};
|
||||
|
||||
typedef struct file_system_module_info {
|
||||
struct file_system_module_info {
|
||||
struct module_info info;
|
||||
const char* short_name;
|
||||
const char* pretty_name;
|
||||
@@ -290,7 +291,7 @@ typedef struct file_system_module_info {
|
||||
const char *parameters, disk_job_id job);
|
||||
status_t (*initialize)(int fd, partition_id partition, const char *name,
|
||||
const char *parameters, off_t partitionSize, disk_job_id job);
|
||||
} file_system_module_info;
|
||||
};
|
||||
|
||||
|
||||
/* file system add-ons only prototypes */
|
||||
|
||||
Reference in New Issue
Block a user