[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