summaryrefslogtreecommitdiff
path: root/misc/util.c
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2001-01-18 01:47:48 +0000
committerTheodore Ts'o <tytso@mit.edu>2001-01-18 01:47:48 +0000
commit5683e6e2c78ef4c620f3830c4e2fa4c2ead0eb4c (patch)
tree9c91a8246dbd5d9129b5845defddac741243dad7 /misc/util.c
parent020888625fb8f6d5293e67da95ae18c0af45aead (diff)
downloade2fsprogs-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.c25
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;
+}