genext2fs - patch for volume ID.
authorRaymond Danks <raymond@edanks.com>
Mon, 24 Jul 2006 16:03:06 +0000 (16:03 +0000)
committerRaymond Danks <raymond@edanks.com>
Mon, 24 Jul 2006 16:03:06 +0000 (16:03 +0000)
packages/genext2fs/files/.mtn2git_empty [new file with mode: 0644]
packages/genext2fs/files/volume.patch [new file with mode: 0644]
packages/genext2fs/genext2fs_1.3+1.4rc1.bb

diff --git a/packages/genext2fs/files/.mtn2git_empty b/packages/genext2fs/files/.mtn2git_empty
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/packages/genext2fs/files/volume.patch b/packages/genext2fs/files/volume.patch
new file mode 100644 (file)
index 0000000..32ef8dc
--- /dev/null
@@ -0,0 +1,107 @@
+Index: genext2fs-1.4rc1/genext2fs.c
+===================================================================
+--- genext2fs-1.4rc1.orig/genext2fs.c
++++ genext2fs-1.4rc1/genext2fs.c
+@@ -409,7 +409,9 @@ swab32(uint32 val)
+ typedef struct
+ {
+       superblock_decl
+-      uint32 s_reserved[235];       // Reserved
++      uint32  s_reserved1[9];
++      char s_volume[16];
++      uint32 s_reserved2[222];       // Reserved
+ } superblock;
+ typedef struct
+@@ -1122,7 +1124,7 @@ extend_blk(filesystem *fs, uint32 nod, b
+       while(create)
+       {
+               int i, copyb = 0;
+-              if(!(fs->sb.s_reserved[200] & OP_HOLES))
++              if(!(fs->sb.s_reserved2[187] & OP_HOLES))
+                       copyb = 1;
+               else
+                       for(i = 0; i < BLOCKSIZE / 4; i++)
+@@ -1784,7 +1786,8 @@ swap_badfs(filesystem *fs)
+ // initialize an empty filesystem
+ static filesystem *
+-init_fs(int nbblocks, int nbinodes, int nbresrvd, int holes, uint32 fs_timestamp)
++init_fs(int nbblocks, int nbinodes, int nbresrvd, int holes,
++              uint32 fs_timestamp, char *volumeid)
+ {
+       int i;
+       filesystem *fs;
+@@ -1847,6 +1850,9 @@ init_fs(int nbblocks, int nbinodes, int 
+       fs->sb.s_magic = EXT2_MAGIC_NUMBER;
+       fs->sb.s_lastcheck = fs_timestamp;
++      if (volumeid != NULL)
++              strncpy(fs->sb.s_volume, volumeid, sizeof(fs->sb.s_volume));
++
+       // set up groupdescriptors
+       for(i = 0,bbmpos=2+gd,ibmpos=3+gd,itblpos =4+gd;
+               i<nbgroups;
+@@ -1945,7 +1951,7 @@ init_fs(int nbblocks, int nbinodes, int 
+       // options for me
+       if(holes)
+-              fs->sb.s_reserved[200] |= OP_HOLES;
++              fs->sb.s_reserved2[187] |= OP_HOLES;
+       
+       return fs;
+ }
+@@ -2276,7 +2282,7 @@ static void
+ dump_fs(filesystem *fs, FILE * fh, int swapit)
+ {
+       int nbblocks = fs->sb.s_blocks_count;
+-      fs->sb.s_reserved[200] = 0;
++      fs->sb.s_reserved2[187] = 0;
+       if(swapit)
+               swap_goodfs(fs);
+       if(fwrite(fs, BLOCKSIZE, nbblocks, fh) < nbblocks)
+@@ -2341,6 +2347,7 @@ main(int argc, char **argv)
+       uint16 endian = 1;
+       int bigendian = !*(char*)&endian;
+       filesystem *fs;
++      char *volumeid = NULL;
+       int i;
+       int c;
+       struct stats stats;
+@@ -2359,6 +2366,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, 'I' },
++        { "volume-id",        required_argument,      NULL, 'L' },
+         { "reserved-blocks",  required_argument,      NULL, 'r' },
+         { "block-map",        required_argument,      NULL, 'g' },
+         { "fill-value",       required_argument,      NULL, 'e' },
+@@ -2372,7 +2380,7 @@ main(int argc, char **argv)
+         { 0, 0, 0, 0}
+       } ;
+-      while((c = getopt_long(argc, argv, "x:d:D:b:I:i:r:g:e:zfqUPhv", longopts, NULL)) != EOF) {
++      while((c = getopt_long(argc, argv, "x:d:D:b:I:i:L:r:g:e:zfqUPhv", longopts, NULL)) != EOF) {
+               switch(c)
+               {
+                       case 'x':
+@@ -2391,6 +2399,9 @@ main(int argc, char **argv)
+                       case 'I':
+                               nbinodes = SI_atof(optarg);
+                               break;
++                      case 'L':
++                              volumeid = optarg;
++                              break;
+                       case 'r':
+                               nbresrvd = SI_atof(optarg);
+                               break;
+@@ -2517,7 +2528,8 @@ main(int argc, char **argv)
+                       nbresrvd = nbblocks * RESERVED_BLOCKS;
+               if(fs_timestamp == -1)
+                       fs_timestamp = time(NULL);
+-              fs = init_fs(nbblocks, nbinodes, nbresrvd, holes, fs_timestamp);
++              fs = init_fs(nbblocks, nbinodes, nbresrvd, holes,
++                              fs_timestamp, volumeid);
+       }
+       for(i = 0; i < didx; i++)
+       {
index 5bcb608..a7f14d7 100644 (file)
@@ -2,7 +2,8 @@ include genext2fs.inc
 
 TRIMMEDV = "${@bb.data.getVar('PV', d, 1).split('+')[1]}"
 FILESPATH = "${FILE_DIRNAME}/genext2fs-${PV}:${FILE_DIRNAME}/genext2fs:${FILE_DIRNAME}/files"
-SRC_URI = "${SOURCEFORGE_MIRROR}/genext2fs/genext2fs-${TRIMMEDV}.tar.gz"
+SRC_URI = "${SOURCEFORGE_MIRROR}/genext2fs/genext2fs-${TRIMMEDV}.tar.gz \
+          file://volume.patch;patch=1"
 S = "${WORKDIR}/genext2fs-${TRIMMEDV}"
 DEFAULT_PREFERENCE = "1"