[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