[Cluster-devel] cluster/gfs2 convert/gfs2_convert.c libgfs2/st ...

rpeterso at sourceware.org rpeterso at sourceware.org
Wed Jun 6 15:19:56 UTC 2007


CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	rpeterso at sourceware.org	2007-06-06 15:19:56

Modified files:
	gfs2/convert   : gfs2_convert.c 
	gfs2/libgfs2   : structures.c 
	gfs2/man       : mkfs.gfs2.8 
	gfs2/mkfs      : main_mkfs.c 

Log message:
	Resolves: Bugzilla Bug 242056: GFS2 needs block sizes < 4k (mkfs changes)

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs2/convert/gfs2_convert.c.diff?cvsroot=cluster&r1=1.9&r2=1.10
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs2/libgfs2/structures.c.diff?cvsroot=cluster&r1=1.8&r2=1.9
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs2/man/mkfs.gfs2.8.diff?cvsroot=cluster&r1=1.4&r2=1.5
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs2/mkfs/main_mkfs.c.diff?cvsroot=cluster&r1=1.13&r2=1.14

--- cluster/gfs2/convert/gfs2_convert.c	2007/05/01 16:43:38	1.9
+++ cluster/gfs2/convert/gfs2_convert.c	2007/06/06 15:19:55	1.10
@@ -773,17 +773,6 @@
 		close(sbp->device_fd);
 		exit(-1);
 	}
-	if (sbp->sd_sb.sb_bsize != GFS2_DEFAULT_BSIZE) {
-		log_crit("Error: GFS2 only supports a 4K block size.\n");
-		log_crit("Volume %s has a block size of ", device);
-		if (!(sbp->sd_sb.sb_bsize % 1024)) /* if even K boundary */
-			log_crit("%dK bytes.\n", sbp->sd_sb.sb_bsize / 1024);
-		else
-			log_crit("%d bytes.\n", sbp->sd_sb.sb_bsize);
-		log_crit("This file system cannot be converted with this tool.\n");
-		close(sbp->device_fd);
-		exit(-1);
-	}
 	/* get gfs1 rindex inode - gfs1's rindex inode ptr became __pad2 */
 	gfs2_inum_in(&inum, (char *)&raw_gfs1_ondisk_sb.sb_rindex_di);
 	sbp->md.riinode = gfs2_load_inode(sbp, inum.no_addr);
--- cluster/gfs2/libgfs2/structures.c	2007/05/15 18:11:10	1.8
+++ cluster/gfs2/libgfs2/structures.c	2007/06/06 15:19:55	1.9
@@ -55,7 +55,7 @@
 	/* Zero out the beginning of the device up to the superblock */
 	for (x = 0; x < sdp->sb_addr; x++) {
 		bh = bget(sdp, x);
-		memset(bh->b_data, 0, GFS2_DEFAULT_BSIZE);
+		memset(bh->b_data, 0, sdp->bsize);
 		bh->b_uninit = TRUE;
 		brelse(bh, updated);
 	}
--- cluster/gfs2/man/mkfs.gfs2.8	2006/12/19 17:49:53	1.4
+++ cluster/gfs2/man/mkfs.gfs2.8	2007/06/06 15:19:55	1.5
@@ -15,6 +15,14 @@
 
 .SH OPTIONS
 .TP
+\fB-b\fP \fIBlockSize\fR 
+Set the filesystem block size to \fIBlockSize\fR (must be a power of
+two).  The minimum block size is 512.  The FS block size cannot exceed
+the machine's memory page size.  On the most architectures (i386,
+x86_64, s390, s390x), the memory page size is 4096 bytes.  On other
+architectures it may be bigger.  The default block size is 4096 bytes.
+In general, GFS2 filesystems should not deviate from the default value.
+.TP
 \fB-c MegaBytes\fP
 Initial size of each journal's quota change file
 .TP
--- cluster/gfs2/mkfs/main_mkfs.c	2007/05/10 15:47:45	1.13
+++ cluster/gfs2/mkfs/main_mkfs.c	2007/06/06 15:19:56	1.14
@@ -58,6 +58,7 @@
 	printf("\n");
 	printf("Options:\n");
 	printf("\n");
+	printf("  -b <bytes>       Filesystem block size\n");
 	printf("  -c <MB>          Size of quota change file\n");
 	printf("  -D               Enable debugging code\n");
 	printf("  -h               Print this help, then exit\n");
@@ -91,9 +92,12 @@
 	strcpy(sdp->lockproto, "lock_nolock");
 
 	while (cont) {
-		optchar = getopt(argc, argv, "-c:DhJ:j:Op:qr:t:u:VX");
+		optchar = getopt(argc, argv, "-b:c:DhJ:j:Op:qr:t:u:VX");
 
 		switch (optchar) {
+		case 'b':
+			sdp->bsize = atoi(optarg);
+			break;
 
 		case 'c':
 			sdp->qcsize = atoi(optarg);
@@ -192,6 +196,7 @@
 
 	if (sdp->debug) {
 		printf("Command Line Arguments:\n");
+		printf("  bsize = %u\n", sdp->bsize);
 		printf("  qcsize = %u\n", sdp->qcsize);
 		printf("  jsize = %u\n", sdp->jsize);
 		printf("  journals = %u\n", sdp->md.journals);




More information about the Cluster-devel mailing list