[Ocfs2-commits] jlbec commits r909 - trunk/src

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Mon May 10 18:59:27 CDT 2004


Author: jlbec
Date: 2004-05-10 17:59:25 -0500 (Mon, 10 May 2004)
New Revision: 909

Modified:
   trunk/src/alloc.c
   trunk/src/dir.c
   trunk/src/extmap.c
   trunk/src/file.c
   trunk/src/inode.c
   trunk/src/io.c
   trunk/src/journal.c
   trunk/src/namei.c
   trunk/src/oin.c
   trunk/src/super.c
   trunk/src/sysfile.c
Log:

o Moved a bunch of '>> 9' and '512' to osb->sect_size_bits and
  osb->sect_size respectively.
o Reordered mount to use 512/9 for reading the vol_header and
  osb->sect_size{,_bits} afterwords.

I've ignored io.c (ocfs_read_bhs{,_iarr}) for now.  Also, referring to
osb->sect_size{,_bits} might be less preferred than
sb->s_blocksize{,_bits}, but that is a simple sed.



Modified: trunk/src/alloc.c
===================================================================
--- trunk/src/alloc.c	2004-05-10 15:49:54 UTC (rev 908)
+++ trunk/src/alloc.c	2004-05-10 22:59:25 UTC (rev 909)
@@ -912,7 +912,7 @@
 		goto finally;
 	}
 	real_fe = (ocfs_file_entry *)OCFS_BH_GET_DATA_READ(fe_bh); /* read */
-	memcpy(fe, real_fe, 512);
+	memcpy(fe, real_fe, osb->sect_size);
 	OCFS_BH_PUT_DATA(fe_bh);
 	real_fe = NULL;
 	
@@ -1157,7 +1157,7 @@
 
 	if (fe) {
 		real_fe = (ocfs_file_entry *)OCFS_BH_GET_DATA_WRITE(fe_bh);  /* write */
-		memcpy(real_fe, fe, 512);
+		memcpy(real_fe, fe, osb->sect_size);
 		OCFS_BH_PUT_DATA(fe_bh);
 		real_fe = NULL;
 		ocfs_release_file_entry(fe);
@@ -1611,8 +1611,9 @@
 	for (i =0; i < OCFS_TREE_STACK_SIZE; i++)
 		stack[i] = NULL;
 
-	stack[tos] = ocfs_malloc(512);
-	memcpy(stack[tos], OCFS_BH_GET_DATA_READ(extent_grp_bh), 512);
+	stack[tos] = ocfs_malloc(osb->sect_size);
+	memcpy(stack[tos], OCFS_BH_GET_DATA_READ(extent_grp_bh),
+	       osb->sect_size);
 	OCFS_BH_PUT_DATA(extent_grp_bh);
 
 	do {
@@ -1665,7 +1666,7 @@
 
 			/* should already be null, but we can do this
 			 * just in case. */
-			stack[tos] = ocfs_malloc(512);
+			stack[tos] = ocfs_malloc(osb->sect_size);
 
 			status = ocfs_read_bh(osb, tmp_off, &tmp_bh, 
 					      OCFS_BH_COND_CACHED, inode);
@@ -1674,7 +1675,9 @@
 				goto bail;
 			}
 
-			memcpy(stack[tos], OCFS_BH_GET_DATA_READ(tmp_bh), 512);
+			memcpy(stack[tos],
+			       OCFS_BH_GET_DATA_READ(tmp_bh),
+			       osb->sect_size);
 			OCFS_BH_PUT_DATA(tmp_bh);
 			brelse(tmp_bh);
 			tmp_bh = NULL;

Modified: trunk/src/dir.c
===================================================================
--- trunk/src/dir.c	2004-05-10 15:49:54 UTC (rev 908)
+++ trunk/src/dir.c	2004-05-10 22:59:25 UTC (rev 909)
@@ -175,7 +175,7 @@
 
 	LOG_ENTRY_ARGS ("(osb=%p, parent=%llu, fname=%p, fe_bh=%p, ofile=%p, inode=%p)\n", osb, parent_off, file_name, fe_bh, ofile, inode);
 
-	nbhs = osb->vol_layout.dir_node_size >> 9;
+	nbhs = osb->vol_layout.dir_node_size >> osb->sect_size_bits;
 	bufsz = nbhs * (sizeof(struct buffer_head *));
 
 	thisDirNode = parent_off;
@@ -212,7 +212,7 @@
 		// sync = 1;
 	}
 
-	if (bhs[0]==NULL || bhs[0]->b_blocknr != (thisDirNode >> 9)) {
+	if (bhs[0]==NULL || bhs[0]->b_blocknr != (thisDirNode >> osb->sect_size_bits)) {
 		for (i=0; i<nbhs; i++) {
 			if (bhs[i]) {
 				brelse(bhs[i]);
@@ -308,7 +308,7 @@
 
 	DirNode = (ocfs_dir_node *)OCFS_BH_GET_DATA_READ(bhs[0]); /* read */
 	
-	offset = DirNode->node_disk_off + ((idx + 1) * 512);
+	offset = DirNode->node_disk_off + ((idx + 1) * osb->sect_size);
 
 	OCFS_BH_PUT_DATA(bhs[0]);
 
@@ -359,7 +359,7 @@
 
 	LOG_ENTRY ();
 
-	DirNode = (ocfs_dir_node *) ocfs_malloc(512);
+	DirNode = (ocfs_dir_node *) ocfs_malloc(osb->sect_size);
 	if (DirNode == NULL) {
 		LOG_ERROR_STR("Out of memory");
 		ret = 0;
@@ -367,7 +367,7 @@
 	}
 
 	tmp = (ocfs_dir_node *)OCFS_BH_GET_DATA_READ(bhs[0]); /* read */
-	memcpy(DirNode, tmp, 512);
+	memcpy(DirNode, tmp, osb->sect_size);
 	OCFS_BH_PUT_DATA(bhs[0]);
 
 	if (OFile != NULL)
@@ -436,7 +436,7 @@
 			}
 
 			tmp = (ocfs_dir_node *)OCFS_BH_GET_DATA_READ(bhs[0]); /* read */
-			memcpy(DirNode, tmp, 512);
+			memcpy(DirNode, tmp, osb->sect_size);
 			OCFS_BH_PUT_DATA(bhs[0]);
 
 			if (!IS_VALID_DIR_NODE (DirNode)) {
@@ -597,7 +597,7 @@
 
 	LOG_ENTRY ();
 
-	nbhs = osb->vol_layout.dir_node_size >> 9;
+	nbhs = osb->vol_layout.dir_node_size >> osb->sect_size_bits;
 	bufsz = nbhs * (sizeof(struct buffer_head *));
 
 	if (bhs == NULL) {
@@ -897,7 +897,7 @@
 	}
 	PDirNode = (ocfs_dir_node *) OCFS_BH_GET_DATA_WRITE(dirbhs[0]); /* write */ /* journal access */
 	parent_off = PDirNode->node_disk_off;
-	offset= ((EntryToDel->this_sector - parent_off) >> 9) - 1;
+	offset= ((EntryToDel->this_sector - parent_off) >> osb->sect_size_bits) - 1;
 	for (index = 0; index < PDirNode->num_ent_used; index++)
 		if (PDirNode->index[index] == offset)
 			break;
@@ -907,8 +907,8 @@
 		goto leave;
 	}
 
-	if (febh->b_blocknr != (EntryToDel->this_sector >> 9)) {
-		LOG_TRACE_STR("febh->b_blocknr != (EntryToDel->this_sector >> 9)");
+	if (febh->b_blocknr != (EntryToDel->this_sector >> osb->sect_size_bits)) {
+		LOG_TRACE_STR("febh->b_blocknr != (EntryToDel->this_sector >> osb->sect_size_bits)");
 		goto leave;
 	}
 
@@ -1216,7 +1216,7 @@
 			}
 
 			dirtyall = 1;
-			blk = (unsigned long)(bitmapOffset >> 9);
+			blk = (unsigned long)(bitmapOffset >> osb->sect_size_bits);
 			for (i = 0; i < numbhs; i++) {
 				newbhs[i] = getblk(OCFS_GET_BLOCKDEV(osb->sb),
 						   blk++, 
@@ -1233,7 +1233,7 @@
 					goto leave;
 				}
 				buf = OCFS_BH_GET_DATA_WRITE(newbhs[i]); /* write */
-				memset(buf, 0, 512);
+				memset(buf, 0, osb->sect_size);
 				OCFS_BH_PUT_DATA(newbhs[i]);
 			}
 			pNewDirNode = (ocfs_dir_node *)OCFS_BH_GET_DATA_WRITE(newbhs[0]); /* write */

Modified: trunk/src/extmap.c
===================================================================
--- trunk/src/extmap.c	2004-05-10 15:49:54 UTC (rev 908)
+++ trunk/src/extmap.c	2004-05-10 22:59:25 UTC (rev 909)
@@ -680,11 +680,8 @@
 	}
 
 	/* Make the ByteOffsets in to Sector numbers. */
-	/* In case of 512 byte sectors the OcfsLogOf gives back a value of 9. */
-	/* And by doing a right shift of 9 bits we are actually dividing */
-	/* the value by 512. */
-	Vbo >>= OCFS_LOG_SECTOR_SIZE;
-	Lbo >>= OCFS_LOG_SECTOR_SIZE;
+	Vbo >>= osb->sect_size_bits;
+	Lbo >>= osb->sect_size_bits;
 
 	ret = ocfs_extent_map_add (Map, ((__s64) Vbo), ((__s64) Lbo), ((__s64) ByteCount));
 	if (!ret)

Modified: trunk/src/file.c
===================================================================
--- trunk/src/file.c	2004-05-10 15:49:54 UTC (rev 908)
+++ trunk/src/file.c	2004-05-10 22:59:25 UTC (rev 909)
@@ -283,7 +283,7 @@
 	        /* fix all this - need a real open/close for directories */
 		if (ofile) {
                         if (ofile->curr_dir_buf) {
-				const int nbhs = osb->vol_layout.dir_node_size >> 9;
+				const int nbhs = osb->vol_layout.dir_node_size >> osb->sect_size_bits;
 				struct buffer_head **bhs;
 				int i;
 
@@ -1080,8 +1080,8 @@
 			unsigned long block;
 			struct super_block *sb = osb->sb;
 
-			for (block = actualDiskOffset >> 9; 
-			     block < (actualDiskOffset+actualLength) >> 9;
+			for (block = actualDiskOffset >> osb->sect_size_bits; 
+			     block < (actualDiskOffset+actualLength) >> osb->sect_size_bits;
 			     block++) {
 				LOG_TRACE_ARGS("setting block %lu as new!\n", block);
 				alloc_bh = getblk(OCFS_GET_BLOCKDEV(sb), block, sb->s_blocksize);

Modified: trunk/src/inode.c
===================================================================
--- trunk/src/inode.c	2004-05-10 15:49:54 UTC (rev 908)
+++ trunk/src/inode.c	2004-05-10 22:59:25 UTC (rev 909)
@@ -892,7 +892,7 @@
 		goto bail;
 	}
 
-	map_bh(bh_result, inode->i_sb, (fe->extents[0].disk_off >> 9) + iblock);
+	map_bh(bh_result, inode->i_sb, (fe->extents[0].disk_off >> osb->sect_size_bits) + iblock);
 	OCFS_BH_PUT_DATA(bh);
 
 	err = 0;
@@ -936,7 +936,7 @@
 
 	if (!INODE_JOURNAL(inode) && vbo >= OCFS_I(inode)->alloc_size) {
 		LOG_TRACE_STR("Extending allocation");
-		err = ocfs_extend_file(osb, vbo + 512ULL, GET_INODE_FEOFF(inode), NULL, inode, NULL);
+		err = ocfs_extend_file(osb, vbo + osb->sect_size, GET_INODE_FEOFF(inode), NULL, inode, NULL);
 		if (err < 0) {
 			err = -ENOSPC;
 			LOG_ERROR_STATUS (err);
@@ -1325,9 +1325,9 @@
 	saved_off = *offp;
 	saved_size = size;
 	
-	/* warning not all devices have 512 byte sectors */
+	/* FIXME: Need to differentiate between sectors and blocksize */
 	sector_size = 512;
-	sector_bits = SECTOR_BITS;
+	sector_bits = 9;
 	sector_mask = 511;
 	/* max sectors is 1024 in 2.4.9
 	 * max data is 512kb  
@@ -1348,7 +1348,7 @@
 
 	/* make sure we are aligned to either 4kb or 512 byte IO */
 #ifndef LARGEIOS
-	if ((*offp & 511) || (size & 511))
+	if ((*offp & sector_mask) || (size & sector_mask))
 	   /* if not, then fail, we need either to do dio */
            return err;
 
@@ -1358,7 +1358,7 @@
 #ifdef LARGEIOS	
 	if ((*offp & 4095) || (size & 4095)) {
 		/* if it's not 4kb, then 512 */
-		 if ((*offp & 511) || (size & 511))
+		 if ((*offp & sector_mask) || (size & sector_mask))
 			 /* if not, then fail, we need either to do dio */
 	                 return err;
 		 max_sectors = KIO_MAX_SECTORS; /* for 2.4.9 - 1024 */
@@ -1386,14 +1386,14 @@
 	/* unmapping the single kiobuf as we go to perform each chunk of IO. */
 
 	transferred = 0;
-	blocknr = *offp >> SECTOR_BITS;
-	clustersize = inode->i_blksize >> 9;
-	myiosize = size >> 9;
+	blocknr = *offp >> sector_bits;
+	clustersize = inode->i_blksize >> sector_bits;
+	myiosize = size >> sector_bits;
 	blocks_end_cluster = clustersize - (blocknr % clustersize);
 	firstlogic = blocknr;
 	totalioblocks = 0;
 
-	ret = ocfs_get_block2 (inode, blocknr, &firstphys, 512);
+	ret = ocfs_get_block2 (inode, blocknr, &firstphys, sector_size);
 	if (ret == -1) {
 		err = 0;
 		goto out;
@@ -1409,7 +1409,7 @@
                 nextlogic = firstlogic + blocks_end_cluster;
             }
 again:
-            ret = ocfs_get_block2 (inode, nextlogic, &nextphys, 512);
+            ret = ocfs_get_block2 (inode, nextlogic, &nextphys, sector_size);
             if (ret == -1) {
                 err = 0;
                 goto out;
@@ -1428,11 +1428,11 @@
                 }
             }
 doio:
-                size = totalioblocks << 9;
+                size = totalioblocks << sector_bits;
                 if (large_io)
                         nbhs = (size >> 12);
                 else
-                        nbhs = (size >> SECTOR_BITS);
+                        nbhs = (size >> sector_bits);
                 if (nbhs > max_sectors)
                         nbhs = max_sectors;
 
@@ -1464,10 +1464,10 @@
                                         blocks = max_sectors;
                                 iosize = blocks << 12;
                         } else {
-                                blocks = size >> SECTOR_BITS;
+                                blocks = size >> sector_bits;
                                 if (blocks > max_sectors)
                                         blocks = max_sectors;
-                                iosize = blocks << SECTOR_BITS;
+                                iosize = blocks << sector_bits;
                         }
                         if (!blocks)
                                 break;
@@ -1494,7 +1494,7 @@
 				OCFS_KIO_BLOCKS(iobuf)[i] = OCFS_KIO_BLOCKS(iobuf)[0] + i;
                         }
 			err = brw_kiovec (rw, 1, &iobuf, inode->i_dev, OCFS_KIO_BLOCKS(iobuf),
-					large_io ? 4096 : 512);
+					large_io ? 4096 : sector_size);
 #ifdef SUSE
 			if (rw == READ &&  err > 0)
 				mark_dirty_kiobuf(iobuf, err);
@@ -1564,7 +1564,6 @@
 int ocfs_kvec_rw(struct file *filp, int rw, kvec_cb_t cb, size_t size, loff_t pos) 
 {
         int             err = 0;
-        int sector_bits = SECTOR_BITS;
         int max_sectors = 25000;
         struct inode *inode = filp->f_dentry->d_inode;
         unsigned long blocknr, blocks, iosize,myiosize;
@@ -1572,6 +1571,11 @@
         int clustersize;
         unsigned long blocks_end_cluster = 0;
  
+        /* FIXME: Need to differentiate betwen sectors and blocksize */
+        int sector_bits = 9;
+        int sector_size = 512;
+        int sector_mask = 511;
+
         int ret;
         unsigned long firstlogic;
         long nextphys;
@@ -1589,13 +1593,13 @@
 	}
 
 	err = -EINVAL;
-	if ((pos < 0) || (pos & 511) || (size & 511)) {
+	if ((pos < 0) || (pos & sector_mask) || (size & sector_mask)) {
 		return err;
 	}
 
-	blocknr = pos >> SECTOR_BITS;
+	blocknr = pos >> sector_bits;
 
-	blocks = size >> SECTOR_BITS;;
+	blocks = size >> sector_bits;;
 	if (blocks > max_sectors)
 		blocks = max_sectors;
 	if (!blocks) {
@@ -1603,14 +1607,14 @@
 		return err;;
 	}
 
-        iosize = blocks << SECTOR_BITS;
-        clustersize = inode->i_blksize >> 9;
+        iosize = blocks << sector_bits;
+        clustersize = inode->i_blksize >> sector_bits;
         blocks_end_cluster = clustersize - (blocknr % clustersize);
         myiosize = size >> 9;
         firstlogic = blocknr;
         totalioblocks = 0;
 
-        err = ocfs_get_block2(inode, blocknr, &firstphys, 512);
+        err = ocfs_get_block2(inode, blocknr, &firstphys, sector_size);
         if ( err == -1 ) {
                 err = 0;
                 return err;
@@ -1625,7 +1629,7 @@
                         nextlogic = firstlogic + blocks_end_cluster;
                 }
 again:
-                ret = ocfs_get_block2 (inode, nextlogic, &nextphys, 512);
+                ret = ocfs_get_block2 (inode, nextlogic, &nextphys, sector_size);
                 if (ret == -1) {
                         err = 0;
                         return err;

Modified: trunk/src/io.c
===================================================================
--- trunk/src/io.c	2004-05-10 15:49:54 UTC (rev 908)
+++ trunk/src/io.c	2004-05-10 22:59:25 UTC (rev 909)
@@ -155,8 +155,8 @@
 	
 		/* read only as many blocks as maximum of dir index */
 		status = ocfs_read_bhs_iarr (osb, 
-					     off+512ULL, 
-					     (total-1) << 9, 
+					     off + 512ULL, 
+					     max << 9, 
 					     &bhs[1], 
 					     OCFS_BH_CACHED, 
 					     &arr[1]);

Modified: trunk/src/journal.c
===================================================================
--- trunk/src/journal.c	2004-05-10 15:49:54 UTC (rev 908)
+++ trunk/src/journal.c	2004-05-10 22:59:25 UTC (rev 909)
@@ -575,8 +575,8 @@
 	 * read is not necessary. */
 	if (handle->num_buffs != 0)
 		retval = ocfs_read_bhs(osb, 
-				       handle->buffs[0]->b_blocknr * 512,
-				       handle->num_buffs * 512, 
+				       handle->buffs[0]->b_blocknr * osb->sect_size,
+				       handle->num_buffs * osb->sect_size, 
 				       handle->buffs, 0, NULL);
 	if (retval < 0)
 		LOG_ERROR_STATUS(retval);

Modified: trunk/src/namei.c
===================================================================
--- trunk/src/namei.c	2004-05-10 15:49:54 UTC (rev 908)
+++ trunk/src/namei.c	2004-05-10 22:59:25 UTC (rev 909)
@@ -343,7 +343,7 @@
 		int bufsize;
 		void *tmp;
 
-		numblks = osb->vol_layout.dir_node_size >> 9;
+		numblks = osb->vol_layout.dir_node_size >> osb->sect_size_bits;
 		bufsize = numblks * sizeof(struct buffer_head *);
 		dirbhs  = ocfs_malloc(bufsize);
 		if (dirbhs == NULL) {
@@ -368,7 +368,7 @@
 		fe->file_size = osb->vol_layout.dir_node_size;
 		fe->next_del = INVALID_DIR_NODE_INDEX;
 		
-		blk = (unsigned long)(bitmapOffset >> 9);
+		blk = (unsigned long)(bitmapOffset >> osb->sect_size_bits);
 		for (i = 0; i < numblks; i++) {
 			dirbhs[i] = getblk (OCFS_GET_BLOCKDEV(osb->sb), 
 					    blk++, osb->sb->s_blocksize);

Modified: trunk/src/oin.c
===================================================================
--- trunk/src/oin.c	2004-05-10 15:49:54 UTC (rev 908)
+++ trunk/src/oin.c	2004-05-10 22:59:25 UTC (rev 909)
@@ -126,7 +126,7 @@
 		inode->i_size = fe->file_size;
 		OCFS_I(inode)->chng_seq_num = DISK_LOCK_SEQNUM (fe);
 
-		inode->i_blocks = (inode->i_size + 512) >> 9;
+		inode->i_blocks = (inode->i_size + osb->sect_size) >> osb->sect_size_bits;
 		inode->i_uid = fe->uid;
 		inode->i_gid = fe->gid;
 		inode->i_mode = fe->prot_bits;
@@ -144,7 +144,7 @@
 		switch (fe->attribs) {
 		case OCFS_ATTRIB_DIRECTORY:
 			inode->i_size = OCFS_DEFAULT_DIR_NODE_SIZE;
-			inode->i_blocks = (inode->i_size + 512) >> 9;
+			inode->i_blocks = (inode->i_size + osb->sect_size) >> osb->sect_size_bits;
 			inode->i_mode |= S_IFDIR;
 			break;
 		case OCFS_ATTRIB_SYMLINK:

Modified: trunk/src/super.c
===================================================================
--- trunk/src/super.c	2004-05-10 15:49:54 UTC (rev 908)
+++ trunk/src/super.c	2004-05-10 22:59:25 UTC (rev 909)
@@ -157,21 +157,22 @@
 
 };
 
-static inline int ocfs_set_blocksize(struct super_block *sb)
+static inline int ocfs_set_blocksize(struct super_block *sb,
+                                     int blksize, int blksize_bits)
 {
 	int status = 0;
 
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
-	if (!sb_set_blocksize(sb, 512))
+	if (!sb_set_blocksize(sb, blksize))
 		status = -EIO;
 #else
 	/* TODO: fix this */
-	sb->s_blocksize = 512;
-	sb->s_blocksize_bits = 9;
+	sb->s_blocksize = blksize;
+	sb->s_blocksize_bits = blksize_bits;
 #if LINUX_VERSION_CODE >= LinuxVersionCode(2,4,18)
-	status = set_blocksize (sb->s_dev, 512);
+	status = set_blocksize (sb->s_dev, blksize);
 #else
-	set_blocksize (sb->s_dev, 512);
+	set_blocksize (sb->s_dev, blksize);
 #endif /* < 2.4.18 */
 #endif /* < 2.6.0 */
 
@@ -265,12 +266,6 @@
 		goto read_super_error;
 	}
 
-	status = ocfs_set_blocksize(sb);
-	if (status < 0) {
-		LOG_ERROR_STR("unable to set blocksize");
-		goto read_super_error;
-	}
-
 	sb->s_magic = OCFS_MAGIC;
 	sb->s_op = &ocfs_sops;
 	sb->s_flags |= MS_NOATIME;
@@ -757,20 +752,20 @@
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
         buf->f_blocks =
 		(unsigned long) ((unsigned long) (numbits) *
-				 (unsigned long) (osb->vol_layout.cluster_size >> 9) -
+				 (unsigned long) (osb->vol_layout.cluster_size >> osb->sect_size_bits) -
 				 (8 * ONE_MEGA_BYTE / osb->vol_layout.cluster_size)); 
         buf->f_bfree =
-            (unsigned long) (freebits * (osb->vol_layout.cluster_size >> 9));
+            (unsigned long) (freebits * (osb->vol_layout.cluster_size >> osb->sect_size_bits));
         buf->f_bavail = buf->f_bfree;
         buf->f_files = (unsigned long) (numbits);
         buf->f_ffree = (unsigned long) (numbits) - freebits;
 #else
         buf->f_blocks =
 		(sector_t) ((unsigned long) (numbits) *
-			    (unsigned long) (osb->vol_layout.cluster_size >> 9) -
+			    (unsigned long) (osb->vol_layout.cluster_size >> osb->sect_size_bits) -
 			    (8 * ONE_MEGA_BYTE / osb->vol_layout.cluster_size)); 
         buf->f_bfree =
-            (sector_t) (freebits * (osb->vol_layout.cluster_size >> 9));
+            (sector_t) (freebits * (osb->vol_layout.cluster_size >> osb->sect_size_bits));
         buf->f_files = (sector_t) (numbits);
         buf->f_ffree = (sector_t) (numbits) - freebits;
 #endif
@@ -846,12 +841,19 @@
 	ocfs_super *osb = NULL;
 	ocfs_vol_disk_hdr *vol_header = NULL;
 	ocfs_vol_label *vol_label = NULL;
-	int child_pid, i;
+	int child_pid, i, sect_size;
 	struct buffer_head *bhs[] = { NULL, NULL };
 	struct inode *inode = NULL;
 
 	LOG_ENTRY ();
 
+        /* Force 512B sector size for vol_header reads */
+	status = ocfs_set_blocksize(sb, 512, 9);
+	if (status < 0) {
+		LOG_ERROR_STR("unable to set vol_header blocksize");
+		goto leave;
+	}
+
 	/* get first two blocks */
 	for (i=0; i<2; i++) {
 		bhs[i] = getblk (OCFS_GET_BLOCKDEV(sb), i, 512);
@@ -892,12 +894,23 @@
 
 	osb->reclaim_id = reclaim_id;
 
-	status = ocfs_initialize_osb (osb, vol_header, vol_label, 512);
+        /* FIXME: here it should use the actual blocksize */
+        sect_size = 512;
+	status = ocfs_initialize_osb (osb, vol_header, vol_label,
+				      sect_size);
 	if (status < 0) {
 		LOG_ERROR_STATUS (status);
 		goto leave;
 	}
 
+	/* Now set real blocksize */
+	status = ocfs_set_blocksize(sb, osb->sect_size,
+				    osb->sect_size_bits);
+	if (status < 0) {
+		LOG_ERROR_STR("unable to set final blocksize");
+		goto leave;
+	}
+
 	OCFS_BH_PUT_DATA(bhs[0]);
 	vol_header = NULL;
 	OCFS_BH_PUT_DATA(bhs[1]);

Modified: trunk/src/sysfile.c
===================================================================
--- trunk/src/sysfile.c	2004-05-10 15:49:54 UTC (rev 908)
+++ trunk/src/sysfile.c	2004-05-10 22:59:25 UTC (rev 909)
@@ -305,7 +305,7 @@
 		}
 		
 		if (zero) {
-			numbhs = actualLength >> 9;
+			numbhs = actualLength >> osb->sect_size_bits;
 
 			bhs = ocfs_malloc(numbhs*sizeof(struct buffer_head *));
 			if (!bhs) {
@@ -325,7 +325,7 @@
 
 			for(i = 0; i < numbhs; i++) {
 				data = OCFS_BH_GET_DATA_WRITE(bhs[i]);
-				memset(data, 0, 512);
+				memset(data, 0, osb->sect_size);
 				OCFS_BH_PUT_DATA(bhs[i]);
 			}
 



More information about the Ocfs2-commits mailing list