diff --git a/headers/os/drivers/fs_interface.h b/headers/os/drivers/fs_interface.h index fb4a8ac737..2b65cce789 100644 --- a/headers/os/drivers/fs_interface.h +++ b/headers/os/drivers/fs_interface.h @@ -107,6 +107,7 @@ struct fs_volume_ops { status_t (*rewind_query)(fs_volume *volume, void *cookie); /* support for FS layers */ + status_t (*all_layers_mounted)(fs_volume *volume); status_t (*create_sub_vnode)(fs_volume *volume, ino_t id, fs_vnode *vnode); status_t (*delete_sub_vnode)(fs_volume *volume, fs_vnode *vnode); }; diff --git a/src/system/kernel/fs/vfs.cpp b/src/system/kernel/fs/vfs.cpp index 654cfc3fcd..f4baa9270a 100644 --- a/src/system/kernel/fs/vfs.cpp +++ b/src/system/kernel/fs/vfs.cpp @@ -7023,6 +7023,13 @@ fs_mount(char* path, const char* device, const char* fsName, uint32 flags, volume = volume->super_volume; } + + volume = mount->volume; + while (volume) { + if (volume->ops->all_layers_mounted != NULL) + volume->ops->all_layers_mounted(volume); + volume = volume->super_volume; + } } // the root node is supposed to be owned by the file system - it must