mirror of
https://github.com/SerenityOS/serenity.git
synced 2026-11-07 04:29:30 -10:00
Kernel/RAMFS: Add an option to control the maximum filesystem size
This commit is contained in:
1 parent
5176348184
commit
d3ed66350c
3 files changed
+21
-5
No files matched your search
@@ -11,12 +11,26 @@
|
||||
|
||||
namespace Kernel {
|
||||
|
||||
ErrorOr<NonnullRefPtr<FileSystem>> RAMFS::try_create(FileSystemSpecificOptions const&)
|
||||
static constexpr StringView MAXIMUM_SIZE_OPTION = "maximum_size"sv;
|
||||
|
||||
ErrorOr<void> RAMFS::validate_mount_unsigned_integer_flag(StringView key, u64)
|
||||
{
|
||||
if (key == MAXIMUM_SIZE_OPTION)
|
||||
return {};
|
||||
return EINVAL;
|
||||
}
|
||||
|
||||
ErrorOr<NonnullRefPtr<FileSystem>> RAMFS::try_create(FileSystemSpecificOptions const& options)
|
||||
{
|
||||
u64 maximum_size = parse_unsigned_filesystem_specific_option(options, MAXIMUM_SIZE_OPTION).value_or(0);
|
||||
return TRY(adopt_nonnull_ref_or_enomem(new (nothrow) RAMFS(maximum_size)));
|
||||
}
|
||||
|
||||
RAMFS::RAMFS(u64 maximum_size)
|
||||
: m_maximum_size(maximum_size)
|
||||
{
|
||||
return TRY(adopt_nonnull_ref_or_enomem(new (nothrow) RAMFS));
|
||||
}
|
||||
|
||||
RAMFS::RAMFS() = default;
|
||||
RAMFS::~RAMFS() = default;
|
||||
|
||||
ErrorOr<void> RAMFS::initialize()
|
||||
|
||||
@@ -22,6 +22,8 @@ public:
|
||||
static ErrorOr<NonnullRefPtr<FileSystem>> try_create(FileSystemSpecificOptions const&);
|
||||
virtual ErrorOr<void> initialize() override;
|
||||
|
||||
static ErrorOr<void> validate_mount_unsigned_integer_flag(StringView key, u64);
|
||||
|
||||
virtual StringView class_name() const override { return "RAMFS"sv; }
|
||||
|
||||
virtual bool supports_watchers() const override { return true; }
|
||||
@@ -37,7 +39,7 @@ public:
|
||||
virtual unsigned free_block_count() const override;
|
||||
|
||||
private:
|
||||
RAMFS();
|
||||
RAMFS(u64 maximum_size);
|
||||
|
||||
u32 total_block_count_impl() const;
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ static constexpr FileSystemInitializer s_initializers[] = {
|
||||
{ "proc"sv, "ProcFS"sv, false, false, false, {}, ProcFS::try_create, validate_mount_boolean_flag_as_invalid, validate_mount_unsigned_integer_flag_as_invalid, validate_mount_signed_integer_flag_as_invalid, validate_mount_ascii_string_flag_as_invalid },
|
||||
{ "devpts"sv, "DevPtsFS"sv, false, false, false, {}, DevPtsFS::try_create, validate_mount_boolean_flag_as_invalid, validate_mount_unsigned_integer_flag_as_invalid, validate_mount_signed_integer_flag_as_invalid, validate_mount_ascii_string_flag_as_invalid },
|
||||
{ "sys"sv, "SysFS"sv, false, false, false, {}, SysFS::try_create, validate_mount_boolean_flag_as_invalid, validate_mount_unsigned_integer_flag_as_invalid, validate_mount_signed_integer_flag_as_invalid, validate_mount_ascii_string_flag_as_invalid },
|
||||
{ "ram"sv, "RAMFS"sv, false, false, false, {}, RAMFS::try_create, validate_mount_boolean_flag_as_invalid, validate_mount_unsigned_integer_flag_as_invalid, validate_mount_signed_integer_flag_as_invalid, validate_mount_ascii_string_flag_as_invalid },
|
||||
{ "ram"sv, "RAMFS"sv, false, false, false, {}, RAMFS::try_create, validate_mount_boolean_flag_as_invalid, RAMFS::validate_mount_unsigned_integer_flag, validate_mount_signed_integer_flag_as_invalid, validate_mount_ascii_string_flag_as_invalid },
|
||||
{ "ext2"sv, "Ext2FS"sv, true, true, true, Ext2FS::try_create, {}, validate_mount_boolean_flag_as_invalid, validate_mount_unsigned_integer_flag_as_invalid, validate_mount_signed_integer_flag_as_invalid, validate_mount_ascii_string_flag_as_invalid },
|
||||
{ "9p"sv, "Plan9FS"sv, true, true, true, Plan9FS::try_create, {}, validate_mount_boolean_flag_as_invalid, validate_mount_unsigned_integer_flag_as_invalid, validate_mount_signed_integer_flag_as_invalid, validate_mount_ascii_string_flag_as_invalid },
|
||||
{ "iso9660"sv, "ISO9660FS"sv, true, true, true, ISO9660FS::try_create, {}, validate_mount_boolean_flag_as_invalid, validate_mount_unsigned_integer_flag_as_invalid, validate_mount_signed_integer_flag_as_invalid, validate_mount_ascii_string_flag_as_invalid },
|
||||
|
||||
Reference in new issue
Block a user