summaryrefslogtreecommitdiff
path: root/mkfs
diff options
context:
space:
mode:
Diffstat (limited to 'mkfs')
-rw-r--r--mkfs/mkfs.c3
-rw-r--r--mkfs/mkfs.h1
-rw-r--r--mkfs/options.c11
3 files changed, 13 insertions, 2 deletions
diff --git a/mkfs/mkfs.c b/mkfs/mkfs.c
index 8b8ecc3..f0d1e73 100644
--- a/mkfs/mkfs.c
+++ b/mkfs/mkfs.c
@@ -78,6 +78,9 @@ static int read_fstree(fstree_t *fs, options_t *opt)
if (opt->keep_time)
flags |= DIR_SCAN_KEEP_TIME;
+ if (opt->one_filesystem)
+ flags |= DIR_SCAN_ONE_FILESYSTEM;
+
return fstree_from_dir(fs, opt->packdir, flags);
}
diff --git a/mkfs/mkfs.h b/mkfs/mkfs.h
index e6e1517..c7c327c 100644
--- a/mkfs/mkfs.h
+++ b/mkfs/mkfs.h
@@ -36,6 +36,7 @@ typedef struct {
int blksz;
int devblksz;
bool keep_time;
+ bool one_filesystem;
bool exportable;
bool quiet;
const char *infile;
diff --git a/mkfs/options.c b/mkfs/options.c
index 471844f..01727fa 100644
--- a/mkfs/options.c
+++ b/mkfs/options.c
@@ -15,6 +15,7 @@ static struct option long_opts[] = {
{ "pack-file", required_argument, NULL, 'F' },
{ "pack-dir", required_argument, NULL, 'D' },
{ "keep-time", required_argument, NULL, 'k' },
+ { "one-file-system", no_argument, NULL, 'o' },
{ "exportable", no_argument, NULL, 'e' },
{ "force", no_argument, NULL, 'f' },
{ "quiet", no_argument, NULL, 'q' },
@@ -26,9 +27,9 @@ static struct option long_opts[] = {
};
#ifdef WITH_SELINUX
-static const char *short_opts = "s:F:D:X:c:b:B:d:kefqhV";
+static const char *short_opts = "s:F:D:X:c:b:B:d:koefqhV";
#else
-static const char *short_opts = "F:D:X:c:b:B:d:kefqhV";
+static const char *short_opts = "F:D:X:c:b:B:d:koefqhV";
#endif
extern char *__progname;
@@ -76,6 +77,8 @@ static const char *help_string =
" --keep-time, -k When using --pack-dir only, use the timestamps\n"
" from the input files instead of setting\n"
" defaults on all input paths.\n"
+" --one-file-system, -o When using --pack-dir only, stay in local file\n"
+" system and do not cross mount points.\n"
" --exportable, -e Generate an export table for NFS support.\n"
" --force, -f Overwrite the output file if it exists.\n"
" --quiet, -q Do not print out progress reports.\n"
@@ -135,6 +138,7 @@ void process_command_line(options_t *opt, int argc, char **argv)
opt->blksz = SQFS_DEFAULT_BLOCK_SIZE;
opt->devblksz = SQFS_DEVBLK_SIZE;
opt->keep_time = false;
+ opt->one_filesystem = false;
opt->exportable = false;
opt->quiet = false;
opt->infile = NULL;
@@ -182,6 +186,9 @@ void process_command_line(options_t *opt, int argc, char **argv)
case 'k':
opt->keep_time = true;
break;
+ case 'o':
+ opt->one_filesystem = true;
+ break;
case 'e':
opt->exportable = true;
break;