From 2a05bf5bc660bfebb35e42f1f8a0c0ac56e0f9d9 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Sun, 21 Jul 2019 20:22:04 +0200 Subject: Implement generating an inode table for NFS export Signed-off-by: David Oberhollenzer --- mkfs/mkfs.c | 5 +++++ mkfs/mkfs.h | 1 + mkfs/options.c | 10 ++++++++-- 3 files changed, 14 insertions(+), 2 deletions(-) (limited to 'mkfs') diff --git a/mkfs/mkfs.c b/mkfs/mkfs.c index f1c1f1b..91cb9bd 100644 --- a/mkfs/mkfs.c +++ b/mkfs/mkfs.c @@ -185,6 +185,11 @@ int main(int argc, char **argv) if (data_writer_write_fragment_table(data)) goto out_data; + if (opt.exportable) { + if (write_export_table(outfd, &fs, &super, cmp)) + goto out_data; + } + if (id_table_write(&idtbl, outfd, &super, cmp)) goto out_data; diff --git a/mkfs/mkfs.h b/mkfs/mkfs.h index 4031c74..70a2ed6 100644 --- a/mkfs/mkfs.h +++ b/mkfs/mkfs.h @@ -29,6 +29,7 @@ typedef struct { int outmode; int blksz; int devblksz; + bool exportable; bool quiet; const char *infile; const char *packdir; diff --git a/mkfs/options.c b/mkfs/options.c index 2dab6b8..fe2bc69 100644 --- a/mkfs/options.c +++ b/mkfs/options.c @@ -9,6 +9,7 @@ static struct option long_opts[] = { { "comp-extra", required_argument, NULL, 'X' }, { "pack-file", required_argument, NULL, 'F' }, { "pack-dir", required_argument, NULL, 'D' }, + { "exportable", no_argument, NULL, 'e' }, { "force", no_argument, NULL, 'f' }, { "quiet", no_argument, NULL, 'q' }, #ifdef WITH_SELINUX @@ -19,9 +20,9 @@ static struct option long_opts[] = { }; #ifdef WITH_SELINUX -static const char *short_opts = "s:F:D:X:c:b:B:d:fqhV"; +static const char *short_opts = "s:F:D:X:c:b:B:d:efqhV"; #else -static const char *short_opts = "F:D:X:c:b:B:d:fqhV"; +static const char *short_opts = "F:D:X:c:b:B:d:efqhV"; #endif extern char *__progname; @@ -66,6 +67,7 @@ static const char *help_string = " --selinux, -s Specify an SELinux label file to get context\n" " attributes from.\n" #endif +" --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" " --help, -h Print help text and exit.\n" @@ -123,6 +125,7 @@ void process_command_line(options_t *opt, int argc, char **argv) opt->compressor = compressor_get_default(); opt->blksz = SQFS_DEFAULT_BLOCK_SIZE; opt->devblksz = SQFS_DEVBLK_SIZE; + opt->exportable = false; opt->quiet = false; opt->infile = NULL; opt->packdir = NULL; @@ -166,6 +169,9 @@ void process_command_line(options_t *opt, int argc, char **argv) case 'd': opt->fs_defaults = optarg; break; + case 'e': + opt->exportable = true; + break; case 'f': opt->outmode = O_WRONLY | O_CREAT | O_TRUNC; break; -- cgit v1.2.3