summaryrefslogtreecommitdiffstats
path: root/disk-utils/fsck.cramfs.c
diff options
context:
space:
mode:
authorRuediger Meier2014-05-17 15:43:30 +0200
committerRuediger Meier2014-05-19 09:22:48 +0200
commit5cd50ebc96fa73525f89203b4d1e853831dd41cd (patch)
tree6542f5e4bbd0acacda727feddcb6c3edaf0ac3cc /disk-utils/fsck.cramfs.c
parentfsck.cramfs: rename variable page_size to blksize (diff)
downloadkernel-qcow2-util-linux-5cd50ebc96fa73525f89203b4d1e853831dd41cd.tar.gz
kernel-qcow2-util-linux-5cd50ebc96fa73525f89203b4d1e853831dd41cd.tar.xz
kernel-qcow2-util-linux-5cd50ebc96fa73525f89203b4d1e853831dd41cd.zip
fsck.cramfs: add option --blocksize
.. similar to mkfs.cramfs Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
Diffstat (limited to 'disk-utils/fsck.cramfs.c')
-rw-r--r--disk-utils/fsck.cramfs.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/disk-utils/fsck.cramfs.c b/disk-utils/fsck.cramfs.c
index e38633ca3..191c311e8 100644
--- a/disk-utils/fsck.cramfs.c
+++ b/disk-utils/fsck.cramfs.c
@@ -59,6 +59,7 @@
#include "blkdev.h"
#include "c.h"
#include "exitcodes.h"
+#include "strutils.h"
#include "closestream.h"
#define XALLOC_EXIT_CODE FSCK_EX_ERROR
@@ -101,7 +102,7 @@ static void expand_fs(char *, struct cramfs_inode *);
static char *outbuffer;
-static size_t blksize;
+static size_t blksize = 0;
#endif /* INCLUDE_FS_TESTS */
@@ -118,6 +119,7 @@ static void __attribute__((__noreturn__)) usage(int status)
fputs(_(" -v, --verbose be more verbose\n"), stream);
fputs(_(" -x, --destination <dir> extract into directory\n"), stream);
fputs(_(" -y for compatibility only, ignored\n"), stream);
+ fputs(_(" -b, --blocksize SIZE use this blocksize, defaults to page size\n"), stream);
fputs(USAGE_SEPARATOR, stream);
fputs(USAGE_HELP, stream);
fputs(USAGE_VERSION, stream);
@@ -655,6 +657,7 @@ int main(int argc, char **argv)
{"verbose", no_argument, 0, 'v'},
{"version", no_argument, 0, 'V'},
{"help", no_argument, 0, 'h'},
+ {"blocksize", required_argument, 0, 'b'},
{NULL, no_argument, 0, '0'},
};
@@ -665,7 +668,7 @@ int main(int argc, char **argv)
atexit(close_stdout);
/* command line options */
- while ((c = getopt_long(argc, argv, "ayx:vVh", longopts, NULL)) != EOF)
+ while ((c = getopt_long(argc, argv, "ayx:vVhb:", longopts, NULL)) != EOF)
switch (c) {
case 'a': /* ignore */
case 'y':
@@ -687,6 +690,11 @@ int main(int argc, char **argv)
case 'v':
opt_verbose++;
break;
+ case 'b':
+#ifdef INCLUDE_FS_TESTS
+ blksize = strtou32_or_err(optarg, _("invalid blocksize argument"));
+#endif
+ break;
default:
usage(FSCK_EX_USAGE);
}
@@ -698,7 +706,8 @@ int main(int argc, char **argv)
test_super(&start, &length);
test_crc(start);
#ifdef INCLUDE_FS_TESTS
- blksize = getpagesize();
+ if (blksize == 0)
+ blksize = getpagesize();
outbuffer = xmalloc(blksize * 2);
test_fs(start);
#endif