87 lines
2.7 KiB
Diff
87 lines
2.7 KiB
Diff
Upstream-Status: inappropriate
|
|
|
|
From 3b9edc3e7c809f64dc164d73b64ab4a606ccfea1 Mon Sep 17 00:00:00 2001
|
|
From: Corey Minyard <cminyard@mvista.com>
|
|
Date: Fri, 3 Jun 2011 21:24:49 -0500
|
|
Subject: [PATCH 13/19] Add volume id support.
|
|
|
|
Add support for setting the volume id of the filesystem. This is
|
|
functionally the same as the patch from OpenEmbedded, but is built
|
|
on previous changes in this patch set.
|
|
---
|
|
genext2fs.8 | 3 +++
|
|
genext2fs.c | 12 ++++++++++--
|
|
2 files changed, 13 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/genext2fs.8 b/genext2fs.8
|
|
index 0f77e7c..8b8db25 100644
|
|
--- a/genext2fs.8
|
|
+++ b/genext2fs.8
|
|
@@ -61,6 +61,9 @@ Size of the image in blocks.
|
|
.BI "\-N, \-\-number\-of\-inodes inodes"
|
|
Maximum number of inodes.
|
|
.TP
|
|
+.BI "\-L, \-\-volume\-id name"
|
|
+Set the volume id (volume name) for the filesystem.
|
|
+.TP
|
|
.BI "\-i, \-\-bytes\-per\-inode ratio"
|
|
Used to calculate the maximum number of inodes from the available blocks.
|
|
.TP
|
|
diff --git a/genext2fs.c b/genext2fs.c
|
|
index e420bba..4d01bc4 100644
|
|
--- a/genext2fs.c
|
|
+++ b/genext2fs.c
|
|
@@ -3058,6 +3058,7 @@ main(int argc, char **argv)
|
|
int squash_perms = 0;
|
|
uint16 endian = 1;
|
|
int bigendian = !*(char*)&endian;
|
|
+ char *volumelabel = NULL;
|
|
filesystem *fs;
|
|
int i;
|
|
int c;
|
|
@@ -3071,6 +3072,7 @@ main(int argc, char **argv)
|
|
{ "size-in-blocks", required_argument, NULL, 'b' },
|
|
{ "bytes-per-inode", required_argument, NULL, 'i' },
|
|
{ "number-of-inodes", required_argument, NULL, 'N' },
|
|
+ { "volume-label", required_argument, NULL, 'L' },
|
|
{ "reserved-percentage", required_argument, NULL, 'm' },
|
|
{ "block-map", required_argument, NULL, 'g' },
|
|
{ "fill-value", required_argument, NULL, 'e' },
|
|
@@ -3087,11 +3089,11 @@ main(int argc, char **argv)
|
|
|
|
app_name = argv[0];
|
|
|
|
- while((c = getopt_long(argc, argv, "x:d:D:b:i:N:m:g:e:zfqUPhVv", longopts, NULL)) != EOF) {
|
|
+ while((c = getopt_long(argc, argv, "x:d:D:b:i:N:L:m:g:e:zfqUPhVv", longopts, NULL)) != EOF) {
|
|
#else
|
|
app_name = argv[0];
|
|
|
|
- while((c = getopt(argc, argv, "x:d:D:b:i:N:m:g:e:zfqUPhVv")) != EOF) {
|
|
+ while((c = getopt(argc, argv, "x:d:D:b:i:N:L:m:g:e:zfqUPhVv")) != EOF) {
|
|
#endif /* HAVE_GETOPT_LONG */
|
|
switch(c)
|
|
{
|
|
@@ -3111,6 +3113,9 @@ main(int argc, char **argv)
|
|
case 'N':
|
|
nbinodes = SI_atof(optarg);
|
|
break;
|
|
+ case 'L':
|
|
+ volumelabel = optarg;
|
|
+ break;
|
|
case 'm':
|
|
reserved_frac = SI_atof(optarg) / 100;
|
|
break;
|
|
@@ -3199,6 +3204,9 @@ main(int argc, char **argv)
|
|
fs = init_fs(nbblocks, nbinodes, nbresrvd, holes, fs_timestamp,
|
|
bigendian, fsout);
|
|
}
|
|
+ if (volumelabel != NULL)
|
|
+ strncpy((char *)fs->sb->s_volume_name, volumelabel,
|
|
+ sizeof(fs->sb->s_volume_name));
|
|
|
|
populate_fs(fs, dopt, didx, squash_uids, squash_perms, fs_timestamp, NULL);
|
|
|
|
--
|
|
1.7.4.1
|
|
|