[Ocfs2-commits] khackel commits r1088 - branches/format-changes/src

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Mon Jun 14 03:06:18 CDT 2004


Author: khackel
Date: 2004-06-14 02:06:17 -0500 (Mon, 14 Jun 2004)
New Revision: 1088

Modified:
   branches/format-changes/src/inode.c
   branches/format-changes/src/ocfs2_fs.h
   branches/format-changes/src/super.c
Log:
fixed sector_bits in inode.c
changed from 3 inodes for autoconfig/publish/vote to 1
needs corresponding mkfs change (revision 60)


Modified: branches/format-changes/src/inode.c
===================================================================
--- branches/format-changes/src/inode.c	2004-06-14 06:52:28 UTC (rev 1087)
+++ branches/format-changes/src/inode.c	2004-06-14 07:06:17 UTC (rev 1088)
@@ -1777,8 +1777,8 @@
 	unsigned long blocks_end_cluster = 0;
  
 	/* FIXME: Need to differentiate betwen sectors and blocksize */
-	int sector_bits = OCFS_SB(inode->i_sb)->sect_size_bits;
-	int sector_size = OCFS_SB(inode->i_sb)->sect_size;
+	int sector_bits = OCFS_SB(inode->i_sb)->s_sectsize_bits;
+	int sector_size = 1 << OCFS_SB(inode->i_sb)->s_sectsize_bits;
 	int sector_mask = sector_size - 1;
 
 	int ret;

Modified: branches/format-changes/src/ocfs2_fs.h
===================================================================
--- branches/format-changes/src/ocfs2_fs.h	2004-06-14 06:52:28 UTC (rev 1087)
+++ branches/format-changes/src/ocfs2_fs.h	2004-06-14 07:06:17 UTC (rev 1088)
@@ -92,9 +92,10 @@
 	GLOBAL_BITMAP_SYSTEM_INODE = 0,
 	GLOBAL_INODE_ALLOC_SYSTEM_INODE,
 	GLOBAL_INODE_ALLOC_BITMAP_SYSTEM_INODE,
-	AUTOCONFIG_SYSTEM_INODE,
-	PUBLISH_SYSTEM_INODE,
-	VOTE_SYSTEM_INODE,
+	//AUTOCONFIG_SYSTEM_INODE,
+	//PUBLISH_SYSTEM_INODE,
+	//VOTE_SYSTEM_INODE,
+	DLM_SYSTEM_INODE,
 	ORPHAN_DIR_SYSTEM_INODE,
 #define OCFS2_LAST_GLOBAL_SYSTEM_INODE ORPHAN_DIR_SYSTEM_INODE
 	EXTENT_ALLOC_SYSTEM_INODE,
@@ -111,9 +112,10 @@
 	[GLOBAL_BITMAP_SYSTEM_INODE]		"global_bitmap",
 	[GLOBAL_INODE_ALLOC_SYSTEM_INODE] 	"global_inode_alloc",
 	[GLOBAL_INODE_ALLOC_BITMAP_SYSTEM_INODE]	"global_inode_alloc_bitmap",
-	[AUTOCONFIG_SYSTEM_INODE]		"autoconfig",
-	[PUBLISH_SYSTEM_INODE]			"publish",
-	[VOTE_SYSTEM_INODE]			"vote",
+	//[AUTOCONFIG_SYSTEM_INODE]		"autoconfig",
+	//[PUBLISH_SYSTEM_INODE]			"publish",
+	//[VOTE_SYSTEM_INODE]			"vote",
+	[DLM_SYSTEM_INODE]			"dlm",
 	[ORPHAN_DIR_SYSTEM_INODE]		"orphan_dir",
 
 	/* Node-specific system inodes (one copy per node) */

Modified: branches/format-changes/src/super.c
===================================================================
--- branches/format-changes/src/super.c	2004-06-14 06:52:28 UTC (rev 1087)
+++ branches/format-changes/src/super.c	2004-06-14 07:06:17 UTC (rev 1088)
@@ -1568,9 +1568,10 @@
 	}
 
 	/*
-	 * autoconfig
+	 * an inode for the whole DLM area
+	 * autoconfig, new autoconfig, publish, vote
 	 */	
-	inode = ocfs_get_system_file_inode(osb, AUTOCONFIG_SYSTEM_INODE, -1);
+	inode = ocfs_get_system_file_inode(osb, DLM_SYSTEM_INODE, -1);
 	if (!inode) {
 		LOG_ERROR_STATUS(status = -EINVAL);
 		goto bail;
@@ -1580,23 +1581,44 @@
 		LOG_ERROR_STATUS(status);
 		goto bail;
 	}
-	osb->autoconfig_blkno = ret >> osb->sb->s_blocksize_bits;
-	osb->autoconfig_blocks = inode->i_size >> osb->sb->s_blocksize_bits;
-	if (osb->autoconfig_blocks != 2+osb->max_nodes+4) {
-		LOG_ERROR_ARGS("autoconfig size incorrect: "
-			       "found=%llu, expected=%u\n",
-			       osb->autoconfig_blocks,
-			       2+osb->max_nodes+4);
+	// i_size must be at least
+	// (2 + osb->max_nodes + 4) + osb->max_nodes + osb->max_nodes
+	if (inode->i_size >> osb->sb->s_blocksize_bits < 
+	    (OCFS_VOLCFG_HDR_SECTORS + osb->max_nodes) + // autoconfig
+	    OCFS_VOLCFG_NEWCFG_SECTORS + // new autoconfig
+	    osb->max_nodes + // publish
+	    osb->max_nodes ) { // vote
+		LOG_ERROR_ARGS("dlm area size incorrect: "
+			       "found=%llu, need=%u\n", 
+			       inode->i_size,
+			       (OCFS_VOLCFG_HDR_SECTORS + 
+				OCFS_VOLCFG_NEWCFG_SECTORS +
+			       (osb->max_nodes*3)) << 
+			       osb->sb->s_blocksize_bits);
 		status = -EINVAL;
 		goto bail;
+
 	}
-	// "new" autoconfig steals 4 blocks from autoconfig_blocks
-	// TODO: this is just so dumb, do something about it
-	osb->autoconfig_blocks -= OCFS_VOLCFG_NEWCFG_SECTORS;
-	osb->new_autoconfig_blocks = OCFS_VOLCFG_NEWCFG_SECTORS;
+	osb->autoconfig_blkno = ret >> osb->sb->s_blocksize_bits;
+	osb->autoconfig_blocks = OCFS_VOLCFG_HDR_SECTORS + osb->max_nodes;
+	
 	osb->new_autoconfig_blkno = osb->autoconfig_blkno + osb->autoconfig_blocks;
+	osb->new_autoconfig_blocks = OCFS_VOLCFG_NEWCFG_SECTORS;
 	osb->total_autoconfig_blocks = OCFS_VOLCFG_NEWCFG_SECTORS + osb->max_nodes;
-	printk("autoconfig: blkno=%llu, blocks=%llu newblkno=%llu newblocks=%llu\n", osb->autoconfig_blkno, osb->autoconfig_blocks, osb->new_autoconfig_blkno, osb->new_autoconfig_blocks);
+	
+	osb->publish_blkno = osb->new_autoconfig_blkno + osb->new_autoconfig_blocks;
+	osb->publish_blocks = osb->max_nodes;
+	
+	osb->vote_blkno = osb->publish_blkno + osb->publish_blocks;
+	osb->vote_blocks = osb->max_nodes;
+
+	printk("autoconfig: blkno=%llu, blocks=%llu newblkno=%llu newblocks=%llu\n", 
+	       osb->autoconfig_blkno, osb->autoconfig_blocks, 
+	       osb->new_autoconfig_blkno, osb->new_autoconfig_blocks);
+	printk("publish: blkno=%llu, blocks=%llu\n", osb->publish_blkno, 
+	       osb->publish_blocks);
+	printk("vote: blkno=%llu, blocks=%llu\n", osb->vote_blkno, osb->vote_blocks);
+
 	osb->autoconfig_bhs = ocfs_malloc (osb->total_autoconfig_blocks
 				    * sizeof(struct buffer_head *));
 	if (!osb->autoconfig_bhs) {
@@ -1606,56 +1628,8 @@
 	memset(osb->autoconfig_bhs, 0, 
 	       osb->total_autoconfig_blocks * sizeof(struct buffer_head *));
 
-	
-	/*
-	 * publish
-	 */	
-	inode = ocfs_get_system_file_inode(osb, PUBLISH_SYSTEM_INODE, -1);
-	if (!inode) {
-		LOG_ERROR_STATUS(status = -EINVAL);
-		goto bail;
-	}
-	status = ocfs_lookup_file_allocation (osb, 0ULL, &ret, 1, NULL, inode);
-	if (status < 0) {
-		LOG_ERROR_STATUS(status);
-		goto bail;
-	}
-	osb->publish_blkno = ret >> osb->sb->s_blocksize_bits;
-	osb->publish_blocks = inode->i_size >> osb->sb->s_blocksize_bits;
-	printk("publish: blkno=%llu, blocks=%llu\n", osb->publish_blkno, osb->publish_blocks);
-
-	/* we still require our autoconfig and publish to be contiguous */
-	if (osb->publish_blkno != (osb->autoconfig_blkno + 
-	      osb->autoconfig_blocks + osb->new_autoconfig_blocks)) {
-		LOG_ERROR_ARGS("autoconfig is NOT contiguous with publish! "
-			       "autoconfig: blkno=%llu, blocks=%llu, "
-			       "newautoconfig: blkno=%llu, blocks=%llu, "
-			       "publish: blkno=%llu, blocks=%llu\n", 
-			       osb->autoconfig_blkno, osb->autoconfig_blocks,
-			       osb->new_autoconfig_blkno, osb->new_autoconfig_blocks,
-			       osb->publish_blkno, osb->publish_blocks);
-		status = -EINVAL;
-		goto bail;
-	}
 	iput(inode);
 
-	/*
-	 * vote
-	 */	
-	inode = ocfs_get_system_file_inode(osb, VOTE_SYSTEM_INODE, -1);
-	if (!inode) {
-		LOG_ERROR_STATUS(status = -EINVAL);
-		goto bail;
-	}
-	status = ocfs_lookup_file_allocation (osb, 0ULL, &ret, 1, NULL, inode);
-	if (status < 0) {
-		LOG_ERROR_STATUS(status);
-		goto bail;
-	}
-	osb->vote_blkno = ret >> osb->sb->s_blocksize_bits;
-	osb->vote_blocks = inode->i_size >> osb->sb->s_blocksize_bits;
-	printk("vote: blkno=%llu, blocks=%llu\n", osb->vote_blkno, osb->vote_blocks);
-	iput(inode);
 
 	
 	/* 



More information about the Ocfs2-commits mailing list