[Ocfs2-tools-commits] mfasheh commits r428 - in branches/dlm-glue: libocfs2/include mkfs.ocfs2

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Fri Nov 19 17:46:09 CST 2004


Author: mfasheh
Date: 2004-11-19 17:46:07 -0600 (Fri, 19 Nov 2004)
New Revision: 428

Modified:
   branches/dlm-glue/libocfs2/include/ocfs2_fs.h
   branches/dlm-glue/mkfs.ocfs2/mkfs.c
Log:
* tools support for the new slot map stuff



Modified: branches/dlm-glue/libocfs2/include/ocfs2_fs.h
===================================================================
--- branches/dlm-glue/libocfs2/include/ocfs2_fs.h	2004-11-19 23:02:13 UTC (rev 427)
+++ branches/dlm-glue/libocfs2/include/ocfs2_fs.h	2004-11-19 23:46:07 UTC (rev 428)
@@ -96,6 +96,11 @@
 #define OCFS2_DLM_FL		(0x00000200)	/* DLM area */
 #define OCFS2_CHAIN_FL		(0x00000400)	/* Chain allocator */
 
+/*
+ * Journal Flags (ocfs2_dinode.id1.journal1.i_flags)
+ */
+#define OCFS2_JOURNAL_DIRTY_FL	(0x00000001)	/* Journal needs recovery */
+
 /* Limit of space in ocfs2_dir_entry */
 #define OCFS2_MAX_FILENAME_LENGTH       255
 
@@ -115,8 +120,9 @@
 enum {
 	BAD_BLOCK_SYSTEM_INODE = 0,
 	GLOBAL_INODE_ALLOC_SYSTEM_INODE,
+	SLOT_MAP_SYSTEM_INODE,
+#define OCFS2_FIRST_ONLINE_SYSTEM_INODE SLOT_MAP_SYSTEM_INODE
 	DLM_SYSTEM_INODE,
-#define OCFS2_FIRST_ONLINE_SYSTEM_INODE DLM_SYSTEM_INODE
 	GLOBAL_BITMAP_SYSTEM_INODE,
 	ORPHAN_DIR_SYSTEM_INODE,
 #define OCFS2_LAST_GLOBAL_SYSTEM_INODE ORPHAN_DIR_SYSTEM_INODE
@@ -134,6 +140,7 @@
 	[GLOBAL_INODE_ALLOC_SYSTEM_INODE] 	"global_inode_alloc",
 
 	/* These are used by the running filesystem */
+	[SLOT_MAP_SYSTEM_INODE]			"slot_map",
 	[DLM_SYSTEM_INODE]			"dlm",
 	[GLOBAL_BITMAP_SYSTEM_INODE]		"global_bitmap",
 	[ORPHAN_DIR_SYSTEM_INODE]		"orphan_dir",

Modified: branches/dlm-glue/mkfs.ocfs2/mkfs.c
===================================================================
--- branches/dlm-glue/mkfs.ocfs2/mkfs.c	2004-11-19 23:02:13 UTC (rev 427)
+++ branches/dlm-glue/mkfs.ocfs2/mkfs.c	2004-11-19 23:46:07 UTC (rev 428)
@@ -271,6 +271,7 @@
 static void write_metadata(State *s, SystemFileDiskRecord *rec, void *src);
 static void write_bitmap_data(State *s, AllocBitmap *bitmap);
 static void write_directory_data(State *s, DirData *dir);
+static void write_slot_map_data(State *s, SystemFileDiskRecord *slot_map_rec);
 static void write_group_data(State *s, AllocGroup *group);
 static void format_leading_space(State *s);
 static void replacement_journal_create(State *s, uint64_t journal_off);
@@ -296,6 +297,7 @@
 SystemFileInfo system_files[] = {
 	{ "bad_blocks", SFI_OTHER, 1, 0 },
 	{ "global_inode_alloc", SFI_CHAIN, 1, 0 },
+	{ "slot_map", SFI_OTHER, 1, 0 },
 	{ "dlm", SFI_DLM, 1, 0 },
 	{ "global_bitmap", SFI_CLUSTER, 1, 0 },
 	{ "orphan_dir", SFI_OTHER, 1, 1 },
@@ -458,9 +460,8 @@
 		cpu_to_le64(tmprec->fe_off >> s->blocksize_bits);
 
 	tmprec = &(record[DLM_SYSTEM_INODE][0]);
-	need = (AUTOCONF_BLOCKS(s->initial_nodes, 32) +
-		PUBLISH_BLOCKS(s->initial_nodes, 32) +
-		VOTE_BLOCKS(s->initial_nodes, 32)) << s->blocksize_bits;
+	need = (OCFS2_MAX_NODES + 1) << s->blocksize_bits;
+
 	alloc_bytes_from_bitmap(s, need, s->global_bm, &tmprec->extent_off, &tmprec->extent_len);
 	tmprec->file_size = need;
 
@@ -470,6 +471,10 @@
 	add_entry_to_directory(s, orphan_dir, ".", tmprec->fe_off, OCFS2_FT_DIR);
 	add_entry_to_directory(s, orphan_dir, "..", system_dir_rec.fe_off, OCFS2_FT_DIR);
 
+	tmprec = &(record[SLOT_MAP_SYSTEM_INODE][0]);
+	alloc_from_bitmap(s, 1, s->global_bm, &tmprec->extent_off, &tmprec->extent_len);
+	tmprec->file_size = s->cluster_size;
+
 	format_leading_space(s);
 	format_superblock(s, &superblock_rec, &root_dir_rec, &system_dir_rec);
 
@@ -509,6 +514,9 @@
 
 	write_group_data(s, s->system_group);
 
+	tmprec = &(record[SLOT_MAP_SYSTEM_INODE][0]);
+	write_slot_map_data(s, tmprec);
+
 	write_directory_data(s, root_dir);
 	write_directory_data(s, system_dir);
 	write_directory_data(s, orphan_dir);
@@ -1685,6 +1693,28 @@
 }
 
 static void
+write_slot_map_data(State *s, SystemFileDiskRecord *slot_map_rec)
+{
+	int i, num;
+	int16_t *slot_map;
+
+	/* we only use the 1st block of this file, the rest is zero'd
+	 * out. */
+	num = s->blocksize / sizeof(int16_t);
+
+	slot_map = do_malloc(s, slot_map_rec->extent_len);
+	memset(slot_map, 0, slot_map_rec->extent_len);
+
+	for(i = 0; i < num; i++)
+		slot_map[i] = cpu_to_le16(-1);
+
+	do_pwrite(s, slot_map, slot_map_rec->extent_len,
+		  slot_map_rec->extent_off);
+
+	free(slot_map);
+}
+
+static void
 format_leading_space(State *s)
 {
 	int num_blocks = 2, size;



More information about the Ocfs2-tools-commits mailing list