mirror of
https://github.com/genodelabs/genode.git
synced 2025-01-18 02:40:08 +00:00
vfs: pass root directory to plugins
This patch enables the use of the VFS from VFS plugins by passing a reference of the root directory to the constructors of file-system instances. Since it changes the signature of 'Vfs::Dir_file_system', any code that uses the VFS directly requires an adaptation. Fixes #2701
This commit is contained in:
parent
f61c0c6309
commit
b0b92e4ee2
@ -1718,7 +1718,8 @@ struct Lxip_factory : Vfs::File_system_factory
|
||||
Vfs::File_system *create(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node config,
|
||||
Vfs::Io_response_handler &io_handler) override
|
||||
Vfs::Io_response_handler &io_handler,
|
||||
Vfs::File_system &) override
|
||||
{
|
||||
static Init inst(env, alloc);
|
||||
return new (alloc) Vfs::Lxip_file_system(env, alloc, config, io_handler);
|
||||
|
@ -713,7 +713,8 @@ class Rump_factory : public Vfs::File_system_factory
|
||||
Vfs::File_system *create(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node config,
|
||||
Vfs::Io_response_handler &) override
|
||||
Vfs::Io_response_handler &,
|
||||
Vfs::File_system &) override
|
||||
{
|
||||
return new (alloc) Vfs::Rump_file_system(env, config);
|
||||
}
|
||||
@ -727,10 +728,11 @@ extern "C" Vfs::File_system_factory *vfs_file_system_factory(void)
|
||||
Vfs::File_system *create(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node node,
|
||||
Vfs::Io_response_handler &io_handler) override
|
||||
Vfs::Io_response_handler &io_handler,
|
||||
Vfs::File_system &root_dir) override
|
||||
{
|
||||
static Rump_factory factory(env, alloc);
|
||||
return factory.create(env, alloc, node, io_handler);
|
||||
return factory.create(env, alloc, node, io_handler, root_dir);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -224,7 +224,7 @@ struct Genode::Root_directory : public Vfs::Io_response_handler,
|
||||
Root_directory(Env &env, Allocator &alloc, Xml_node config)
|
||||
:
|
||||
Vfs::Global_file_system_factory(alloc),
|
||||
Vfs::Dir_file_system(env, alloc, config, *this, *this, Dir_file_system::Root()),
|
||||
Vfs::Dir_file_system(env, alloc, config, *this, *this),
|
||||
Directory(*this, env.ep(), alloc)
|
||||
{ }
|
||||
|
||||
|
@ -97,7 +97,7 @@ class Libc::Env_implementation : public Libc::Env
|
||||
:
|
||||
_env(env), _file_system_factory(alloc),
|
||||
_vfs(_env, alloc, _vfs_config(), io_response_handler,
|
||||
_file_system_factory, Vfs::Dir_file_system::Root())
|
||||
_file_system_factory)
|
||||
{ }
|
||||
|
||||
|
||||
|
@ -637,23 +637,25 @@ struct Fatfs_factory : Vfs::File_system_factory
|
||||
Inner(Genode::Env &env, Genode::Allocator &alloc) {
|
||||
Fatfs::block_init(env, alloc); }
|
||||
|
||||
Vfs::File_system *create(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node node,
|
||||
Vfs::Io_response_handler &) override
|
||||
Vfs::File_system *create(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node node,
|
||||
Vfs::Io_response_handler &,
|
||||
Vfs::File_system &) override
|
||||
{
|
||||
return new (alloc)
|
||||
Fatfs::File_system(env, alloc, node);
|
||||
}
|
||||
};
|
||||
|
||||
Vfs::File_system *create(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node node,
|
||||
Vfs::Io_response_handler &io_handler) override
|
||||
Vfs::File_system *create(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node node,
|
||||
Vfs::Io_response_handler &io_handler,
|
||||
Vfs::File_system &root_dir) override
|
||||
{
|
||||
static Inner factory(env, alloc);
|
||||
return factory.create(env, alloc, node, io_handler);
|
||||
return factory.create(env, alloc, node, io_handler, root_dir);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -22,7 +22,7 @@ struct Jitterentropy_factory : Vfs::File_system_factory
|
||||
{
|
||||
Vfs::File_system *create(Genode::Env&, Genode::Allocator &alloc,
|
||||
Genode::Xml_node node,
|
||||
Vfs::Io_response_handler &) override
|
||||
Vfs::Io_response_handler &, Vfs::File_system &) override
|
||||
{
|
||||
return new (alloc) Jitterentropy_file_system(alloc, node);
|
||||
}
|
||||
|
@ -30,8 +30,6 @@ class Vfs::Dir_file_system : public File_system
|
||||
|
||||
enum { MAX_NAME_LEN = 128 };
|
||||
|
||||
struct Root { };
|
||||
|
||||
private:
|
||||
|
||||
/*
|
||||
@ -45,7 +43,9 @@ class Vfs::Dir_file_system : public File_system
|
||||
*
|
||||
* Additionally, the root has an empty _name.
|
||||
*/
|
||||
bool _vfs_root;
|
||||
bool _vfs_root = false;
|
||||
|
||||
Dir_file_system &_root_dir;
|
||||
|
||||
struct Dir_vfs_handle : Vfs_handle
|
||||
{
|
||||
@ -95,7 +95,7 @@ class Vfs::Dir_file_system : public File_system
|
||||
};
|
||||
|
||||
/* pointer to first child file system */
|
||||
File_system *_first_file_system;
|
||||
File_system *_first_file_system = nullptr;
|
||||
|
||||
/* add new file system to the list of children */
|
||||
void _append_file_system(File_system *fs)
|
||||
@ -326,10 +326,10 @@ class Vfs::Dir_file_system : public File_system
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node node,
|
||||
Io_response_handler &io_handler,
|
||||
File_system_factory &fs_factory)
|
||||
File_system_factory &fs_factory,
|
||||
Dir_file_system &root_dir)
|
||||
:
|
||||
_vfs_root(false),
|
||||
_first_file_system(0)
|
||||
_root_dir(root_dir)
|
||||
{
|
||||
using namespace Genode;
|
||||
|
||||
@ -346,11 +346,14 @@ class Vfs::Dir_file_system : public File_system
|
||||
/* traverse into <dir> nodes */
|
||||
if (sub_node.has_type("dir")) {
|
||||
_append_file_system(new (alloc)
|
||||
Dir_file_system(env, alloc, sub_node, io_handler, fs_factory));
|
||||
Dir_file_system(env, alloc, sub_node, io_handler,
|
||||
fs_factory, _root_dir));
|
||||
continue;
|
||||
}
|
||||
|
||||
File_system *fs = fs_factory.create(env, alloc, sub_node, io_handler);
|
||||
File_system * const fs =
|
||||
fs_factory.create(env, alloc, sub_node, io_handler, _root_dir);
|
||||
|
||||
if (fs) {
|
||||
_append_file_system(fs);
|
||||
continue;
|
||||
@ -369,15 +372,19 @@ class Vfs::Dir_file_system : public File_system
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor used for creating the root directory
|
||||
*/
|
||||
Dir_file_system(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node node,
|
||||
Io_response_handler &io_handler,
|
||||
File_system_factory &fs_factory,
|
||||
Dir_file_system::Root)
|
||||
File_system_factory &fs_factory)
|
||||
:
|
||||
Dir_file_system(env, alloc, node, io_handler, fs_factory)
|
||||
{ _vfs_root = true; }
|
||||
Dir_file_system(env, alloc, node, io_handler, fs_factory, *this)
|
||||
{
|
||||
_vfs_root = true;
|
||||
}
|
||||
|
||||
/*********************************
|
||||
** Directory-service interface **
|
||||
|
@ -28,15 +28,17 @@ struct Vfs::File_system_factory : Interface
|
||||
/**
|
||||
* Create and return a new file-system
|
||||
*
|
||||
* \param env Env for service connections
|
||||
* \param alloc internal file-system allocator
|
||||
* \param config file-system configuration
|
||||
* \param env Env for service connections
|
||||
* \param alloc internal file-system allocator
|
||||
* \param config file-system configuration
|
||||
* \param io_handler callback handler
|
||||
* \param root_dir VFS root directory
|
||||
*/
|
||||
virtual File_system *create(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Xml_node config,
|
||||
Io_response_handler &io_handler) = 0;
|
||||
virtual File_system *create(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Xml_node config,
|
||||
Io_response_handler &io_handler,
|
||||
File_system &root_dir) = 0;
|
||||
};
|
||||
|
||||
|
||||
@ -64,10 +66,11 @@ class Vfs::Global_file_system_factory : public Vfs::File_system_factory
|
||||
template <typename FILE_SYSTEM>
|
||||
void _add_builtin_fs();
|
||||
|
||||
Vfs::File_system *_try_create(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node node,
|
||||
Io_response_handler &io_handler);
|
||||
Vfs::File_system *_try_create(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node node,
|
||||
Io_response_handler &io_handler,
|
||||
Vfs::File_system &root_dir);
|
||||
|
||||
/**
|
||||
* Return name of factory provided by the shared library
|
||||
@ -112,17 +115,11 @@ class Vfs::Global_file_system_factory : public Vfs::File_system_factory
|
||||
Global_file_system_factory(Genode::Allocator &md_alloc);
|
||||
|
||||
/**
|
||||
* Create and return a new file-system
|
||||
*
|
||||
* \param env Env for service connections
|
||||
* \param alloc internal file-system allocator
|
||||
* \param config file-system configuration
|
||||
* \param io_handler callback handler
|
||||
* File_system_factory interface
|
||||
*/
|
||||
Vfs::File_system *create(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node node,
|
||||
Io_response_handler &io_handler) override;
|
||||
File_system *create(Genode::Env &, Genode::Allocator &,
|
||||
Genode::Xml_node, Io_response_handler &,
|
||||
File_system &) override;
|
||||
|
||||
/**
|
||||
* Register an additional factory for new file-system type
|
||||
|
@ -157,7 +157,7 @@ struct Cli_monitor::Main
|
||||
|
||||
/* initialize virtual file system */
|
||||
Vfs::Dir_file_system _root_dir { _env, _heap, _vfs_config(), io_response_handler,
|
||||
_global_file_system_factory, Vfs::Dir_file_system::Root() };
|
||||
_global_file_system_factory };
|
||||
|
||||
Subsystem_config_registry _subsystem_config_registry { _root_dir, _heap, _env.ep() };
|
||||
|
||||
|
@ -337,7 +337,8 @@ class Vfs::Block_file_system : public Single_file_system
|
||||
Block_file_system(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node config,
|
||||
Io_response_handler &)
|
||||
Io_response_handler &,
|
||||
File_system &)
|
||||
:
|
||||
Single_file_system(NODE_TYPE_BLOCK_DEVICE, name(), config),
|
||||
_alloc(alloc),
|
||||
|
@ -66,12 +66,13 @@ struct Vfs::Builtin_entry : Vfs::Global_file_system_factory::Entry_base
|
||||
{
|
||||
Builtin_entry() : Entry_base(FILE_SYSTEM::name()) { }
|
||||
|
||||
Vfs::File_system *create(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node node,
|
||||
Vfs::Io_response_handler &io_handler) override
|
||||
Vfs::File_system *create(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node node,
|
||||
Io_response_handler &io_handler,
|
||||
File_system &root_dir) override
|
||||
{
|
||||
return new (alloc) FILE_SYSTEM(env, alloc, node, io_handler);
|
||||
return new (alloc) FILE_SYSTEM(env, alloc, node, io_handler, root_dir);
|
||||
}
|
||||
};
|
||||
|
||||
@ -80,16 +81,19 @@ struct Vfs::External_entry : Vfs::Global_file_system_factory::Entry_base
|
||||
{
|
||||
File_system_factory &_fs_factory;
|
||||
|
||||
External_entry(Fs_type_name const &name,
|
||||
Vfs::File_system_factory &fs_factory)
|
||||
External_entry(Fs_type_name const &name,
|
||||
File_system_factory &fs_factory)
|
||||
:
|
||||
Entry_base(name), _fs_factory(fs_factory) { }
|
||||
|
||||
Vfs::File_system *create(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node node,
|
||||
Vfs::Io_response_handler &io_handler) override {
|
||||
return _fs_factory.create(env, alloc, node, io_handler); }
|
||||
File_system *create(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node node,
|
||||
Io_response_handler &io_handler,
|
||||
File_system &root_dir) override
|
||||
{
|
||||
return _fs_factory.create(env, alloc, node, io_handler, root_dir);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -106,14 +110,15 @@ void Vfs::Global_file_system_factory::_add_builtin_fs()
|
||||
/**
|
||||
* Lookup and create File_system instance
|
||||
*/
|
||||
Vfs::File_system *Vfs::Global_file_system_factory::_try_create(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node node,
|
||||
Io_response_handler &io_handler)
|
||||
Vfs::File_system *Vfs::Global_file_system_factory::_try_create(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node node,
|
||||
Io_response_handler &io_handler,
|
||||
File_system &root_dir)
|
||||
{
|
||||
for (Entry_base *e = _list.first(); e; e = e->next()) {
|
||||
if (e->matches(node)) {
|
||||
return e->create(env, alloc, node, io_handler);
|
||||
return e->create(env, alloc, node, io_handler, root_dir);
|
||||
}
|
||||
}
|
||||
|
||||
@ -206,11 +211,12 @@ bool Vfs::Global_file_system_factory::_probe_external_factory(Genode::Env
|
||||
Vfs::File_system *Vfs::Global_file_system_factory::create(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node node,
|
||||
Io_response_handler &io_handler)
|
||||
Io_response_handler &io_handler,
|
||||
File_system &root_dir)
|
||||
{
|
||||
try {
|
||||
/* try if type is handled by the currently registered fs types */
|
||||
if (Vfs::File_system *fs = _try_create(env, alloc, node, io_handler))
|
||||
if (Vfs::File_system *fs = _try_create(env, alloc, node, io_handler, root_dir))
|
||||
return fs;
|
||||
/* if the builtin fails, do not try loading an external */
|
||||
} catch (...) { return 0; }
|
||||
@ -219,7 +225,7 @@ Vfs::File_system *Vfs::Global_file_system_factory::create(Genode::Env &e
|
||||
/* probe for file system implementation available as shared lib */
|
||||
if (_probe_external_factory(env, alloc, node)) {
|
||||
/* try again with the new file system type loaded */
|
||||
if (Vfs::File_system *fs = _try_create(env, alloc, node, io_handler))
|
||||
if (Vfs::File_system *fs = _try_create(env, alloc, node, io_handler, root_dir))
|
||||
return fs;
|
||||
}
|
||||
} catch (...) { }
|
||||
|
@ -577,7 +577,8 @@ class Vfs::Fs_file_system : public File_system
|
||||
Fs_file_system(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node config,
|
||||
Io_response_handler &io_handler)
|
||||
Io_response_handler &io_handler,
|
||||
File_system &)
|
||||
:
|
||||
_env(env),
|
||||
_fs_packet_alloc(&alloc),
|
||||
|
@ -101,10 +101,11 @@ class Vfs::Inline_file_system : public Single_file_system
|
||||
|
||||
public:
|
||||
|
||||
Inline_file_system(Genode::Env&,
|
||||
Genode::Allocator&,
|
||||
Inline_file_system(Genode::Env &,
|
||||
Genode::Allocator &,
|
||||
Genode::Xml_node config,
|
||||
Io_response_handler &)
|
||||
Io_response_handler &,
|
||||
File_system &)
|
||||
:
|
||||
Single_file_system(NODE_TYPE_FILE, name(), config),
|
||||
_base(config.content_base()),
|
||||
|
@ -94,7 +94,8 @@ class Vfs::Log_file_system : public Single_file_system
|
||||
Log_file_system(Genode::Env &env,
|
||||
Genode::Allocator&,
|
||||
Genode::Xml_node config,
|
||||
Io_response_handler &)
|
||||
Io_response_handler &,
|
||||
File_system &)
|
||||
:
|
||||
Single_file_system(NODE_TYPE_CHAR_DEVICE, name(), config),
|
||||
_label(config.attribute_value("label", Label())),
|
||||
|
@ -22,10 +22,9 @@ namespace Vfs { class Null_file_system; }
|
||||
|
||||
struct Vfs::Null_file_system : Single_file_system
|
||||
{
|
||||
Null_file_system(Genode::Env&,
|
||||
Genode::Allocator&,
|
||||
Null_file_system(Genode::Env&, Genode::Allocator&,
|
||||
Genode::Xml_node config,
|
||||
Io_response_handler &)
|
||||
Io_response_handler &, File_system &)
|
||||
:
|
||||
Single_file_system(NODE_TYPE_CHAR_DEVICE, name(), config)
|
||||
{ }
|
||||
|
@ -507,7 +507,7 @@ class Vfs::Ram_file_system : public Vfs::File_system
|
||||
Ram_file_system(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node,
|
||||
Io_response_handler &)
|
||||
Io_response_handler &, File_system &)
|
||||
: _env(env), _alloc(alloc) { }
|
||||
|
||||
~Ram_file_system() { _root.empty(_alloc); }
|
||||
|
@ -105,7 +105,8 @@ class Vfs::Rom_file_system : public Single_file_system
|
||||
Rom_file_system(Genode::Env &env,
|
||||
Genode::Allocator&,
|
||||
Genode::Xml_node config,
|
||||
Io_response_handler &)
|
||||
Io_response_handler &,
|
||||
File_system &)
|
||||
:
|
||||
Single_file_system(NODE_TYPE_FILE, name(), config),
|
||||
_label(config),
|
||||
|
@ -89,7 +89,8 @@ class Vfs::Rtc_file_system : public Single_file_system
|
||||
Rtc_file_system(Genode::Env &env,
|
||||
Genode::Allocator&,
|
||||
Genode::Xml_node config,
|
||||
Io_response_handler &)
|
||||
Io_response_handler &,
|
||||
File_system &)
|
||||
:
|
||||
Single_file_system(NODE_TYPE_CHAR_DEVICE, name(), config),
|
||||
_rtc(env)
|
||||
|
@ -31,10 +31,9 @@ class Vfs::Symlink_file_system : public Single_file_system
|
||||
|
||||
public:
|
||||
|
||||
Symlink_file_system(Genode::Env&,
|
||||
Genode::Allocator&,
|
||||
Symlink_file_system(Genode::Env &, Genode::Allocator &,
|
||||
Genode::Xml_node config,
|
||||
Io_response_handler&)
|
||||
Io_response_handler &, File_system &)
|
||||
:
|
||||
Single_file_system(NODE_TYPE_SYMLINK, "symlink", config),
|
||||
_target(config.attribute_value("target", Target()))
|
||||
|
@ -515,7 +515,8 @@ class Vfs::Tar_file_system : public File_system
|
||||
Tar_file_system(Genode::Env &env,
|
||||
Genode::Allocator &alloc,
|
||||
Genode::Xml_node config,
|
||||
Io_response_handler &)
|
||||
Io_response_handler &,
|
||||
File_system &)
|
||||
:
|
||||
_env(env), _alloc(alloc),
|
||||
_rom_name(config.attribute_value("name", Rom_name())),
|
||||
|
@ -106,9 +106,10 @@ class Vfs::Terminal_file_system : public Single_file_system
|
||||
public:
|
||||
|
||||
Terminal_file_system(Genode::Env &env,
|
||||
Genode::Allocator&,
|
||||
Genode::Allocator &,
|
||||
Genode::Xml_node config,
|
||||
Io_response_handler &io_handler)
|
||||
Io_response_handler &io_handler,
|
||||
File_system &)
|
||||
:
|
||||
Single_file_system(NODE_TYPE_CHAR_DEVICE, name(), config),
|
||||
_label(config.attribute_value("label", Label())),
|
||||
|
@ -22,10 +22,9 @@ namespace Vfs { class Zero_file_system; }
|
||||
|
||||
struct Vfs::Zero_file_system : Single_file_system
|
||||
{
|
||||
Zero_file_system(Genode::Env&,
|
||||
Genode::Allocator&,
|
||||
Zero_file_system(Genode::Env &, Genode::Allocator &,
|
||||
Genode::Xml_node config,
|
||||
Io_response_handler &)
|
||||
Io_response_handler &, File_system &)
|
||||
:
|
||||
Single_file_system(NODE_TYPE_CHAR_DEVICE, name(), config)
|
||||
{ }
|
||||
|
@ -208,8 +208,7 @@ class Fs_report::Root : public Genode::Root_component<Session_component>
|
||||
Vfs::Dir_file_system _vfs {
|
||||
_env, _heap, vfs_config(),
|
||||
_io_response_handler,
|
||||
_global_file_system_factory,
|
||||
Vfs::Dir_file_system::Root() };
|
||||
_global_file_system_factory };
|
||||
|
||||
Genode::Signal_handler<Root> _config_dispatcher {
|
||||
_env.ep(), *this, &Root::_config_update };
|
||||
|
@ -682,7 +682,7 @@ class Vfs_server::Root : public Genode::Root_component<Session_component>
|
||||
|
||||
Vfs::Dir_file_system _vfs {
|
||||
_env, _vfs_heap, vfs_config(), _io_response_handler,
|
||||
_global_file_system_factory, Vfs::Dir_file_system::Root() };
|
||||
_global_file_system_factory };
|
||||
|
||||
Genode::Signal_handler<Root> _config_handler {
|
||||
_env.ep(), *this, &Root::_config_update };
|
||||
|
@ -531,10 +531,9 @@ void Component::construct(Genode::Env &env)
|
||||
|
||||
Vfs::Global_file_system_factory global_file_system_factory(heap);
|
||||
|
||||
Vfs::Dir_file_system vfs_root(env, heap, config_xml.sub_node("vfs"),
|
||||
io_response_handler,
|
||||
global_file_system_factory,
|
||||
Vfs::Dir_file_system::Root());
|
||||
Vfs::Dir_file_system vfs_root { env, heap, config_xml.sub_node("vfs"),
|
||||
io_response_handler,
|
||||
global_file_system_factory };
|
||||
|
||||
Vfs::Vfs_handle *vfs_root_handle;
|
||||
vfs_root.opendir("/", false, &vfs_root_handle, heap);
|
||||
|
@ -235,9 +235,7 @@ struct Noux::Main
|
||||
} _io_response_handler;
|
||||
|
||||
Vfs::Dir_file_system _root_dir { _env, _heap, _config.xml().sub_node("fstab"),
|
||||
_io_response_handler,
|
||||
_global_file_system_factory,
|
||||
Vfs::Dir_file_system::Root() };
|
||||
_io_response_handler, _global_file_system_factory };
|
||||
|
||||
Vfs_handle_context _vfs_handle_context;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user