diff options
author | Theodore Ts'o <tytso@mit.edu> | 2001-01-18 01:47:48 +0000 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2001-01-18 01:47:48 +0000 |
commit | 5683e6e2c78ef4c620f3830c4e2fa4c2ead0eb4c (patch) | |
tree | 9c91a8246dbd5d9129b5845defddac741243dad7 /misc/util.c | |
parent | 020888625fb8f6d5293e67da95ae18c0af45aead (diff) | |
download | e2fsprogs-5683e6e2c78ef4c620f3830c4e2fa4c2ead0eb4c.tar.gz |
ChangeLog, util.c, util.h:
util.h, util.c (journal_default_size): New function from Andreas
Dilger to calculate an appropriate default journal size given a
filesystem size.
util.c (parse_journal_opts): Allow the creation of a journal as small
as 1MB.
Diffstat (limited to 'misc/util.c')
-rw-r--r-- | misc/util.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/misc/util.c b/misc/util.c index bf3aabdb..eaf6fea4 100644 --- a/misc/util.c +++ b/misc/util.c @@ -164,7 +164,7 @@ void parse_journal_opts(const char *opts) } journal_size = strtoul(arg, &p, 0); journal_size_check: - if (*p || (journal_size < 4 || journal_size > 100)) { + if (*p || (journal_size < 1 || journal_size > 100)) { fprintf(stderr, _("Invalid journal size parameter - %s.\n"), arg); @@ -191,8 +191,29 @@ void parse_journal_opts(const char *opts) "\tsize=<journal size in megabytes>\n" "\tdevice=<journal device>\n\n" "Journal size must be between " - "4 and 100 megabytes.\n\n" )); + "1 and 100 megabytes.\n\n" )); exit(1); } } +/* + * Find a reasonable journal file size (in blocks) given the number of blocks + * in the filesystem. For very small filesystems, it is not reasonable to + * have a journal that fills more than half of the filesystem. + */ +int journal_default_size(blk_t blocks_count) +{ + blk_t j_blocks; + + if (blocks_count < 2048) { + fprintf(stderr, "Filesystem too small for a journal\n"); + j_blocks = 0; + } else if (blocks_count < 32768) + j_blocks = 1024; + else if (blocks_count < 262144) + j_blocks = 4096; + else + j_blocks = 8192; + + return j_blocks; +} |