[Ocfs2-tools-commits] mfasheh commits r904 - trunk/mkfs.ocfs2

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Thu May 19 19:06:07 CDT 2005


Author: mfasheh
Signed-off-by: zab
Signed-off-by: jlbec
Date: 2005-05-19 19:06:05 -0500 (Thu, 19 May 2005)
New Revision: 904

Modified:
   trunk/mkfs.ocfs2/check.c
   trunk/mkfs.ocfs2/mkfs.c
Log:
* 'lost+found' was being allocated out of the global inode
  allocator. Fix things so it's allocated from the node 0 inode alloc
  file.

Signed-off-by: zab
Signed-off-by: jlbec



Modified: trunk/mkfs.ocfs2/check.c
===================================================================
--- trunk/mkfs.ocfs2/check.c	2005-05-19 23:50:19 UTC (rev 903)
+++ trunk/mkfs.ocfs2/check.c	2005-05-20 00:06:05 UTC (rev 904)
@@ -35,10 +35,6 @@
 	ocfs2_filesys *fs = NULL;
 	errcode_t ret;
 
-	initialize_ocfs_error_table();
-	initialize_o2dl_error_table();
-	initialize_o2cb_error_table();
-
 	ret = ocfs2_open(s->device_name, OCFS2_FLAG_RW, 0, 0, &fs);
 	if (ret) {
 		if (ret == OCFS2_ET_OCFS_REV)

Modified: trunk/mkfs.ocfs2/mkfs.c
===================================================================
--- trunk/mkfs.ocfs2/mkfs.c	2005-05-19 23:50:19 UTC (rev 903)
+++ trunk/mkfs.ocfs2/mkfs.c	2005-05-20 00:06:05 UTC (rev 904)
@@ -82,6 +82,7 @@
 					   uint64_t blkno,
 					   uint16_t chain, uint16_t cpg,
 					   uint16_t bpc);
+static void create_lost_found_dir(State *s);
 
 extern char *optarg;
 extern int optind, opterr, optopt;
@@ -137,12 +138,10 @@
 	SystemFileDiskRecord superblock_rec;
 	SystemFileDiskRecord root_dir_rec;
 	SystemFileDiskRecord system_dir_rec;
-	SystemFileDiskRecord lostfound_dir_rec;
 	int i, j, num;
 	DirData *orphan_dir[OCFS2_MAX_NODES];
 	DirData *root_dir;
 	DirData *system_dir;
-	DirData *lostfound_dir;
 	uint64_t need;
 	SystemFileDiskRecord *tmprec;
 	char fname[SYSTEM_FILE_NAME_MAX];
@@ -160,6 +159,10 @@
 		exit(1);
 	}
 
+	initialize_ocfs_error_table();
+	initialize_o2dl_error_table();
+	initialize_o2cb_error_table();
+
 	s = get_state(argc, argv);
 
 	/* bail if volume already mounted on cluster, etc. */
@@ -186,8 +189,6 @@
 
 	clear_both_ends(s);
 
-//	adjust_volume_size(s);
-
 	generate_uuid (s);
 
 	create_generation(s);
@@ -199,7 +200,6 @@
 	init_record(s, &superblock_rec, SFI_OTHER, S_IFREG | 0644);
 	init_record(s, &root_dir_rec, SFI_OTHER, S_IFDIR | 0755);
 	init_record(s, &system_dir_rec, SFI_OTHER, S_IFDIR | 0755);
-	init_record(s, &lostfound_dir_rec, SFI_OTHER, S_IFDIR | 0755);
 
 	for (i = 0; i < NUM_SYSTEM_INODES; i++) {
 		num = system_files[i].global ? 1 : s->initial_nodes;
@@ -215,7 +215,6 @@
 	system_dir = alloc_directory(s);
 	for (i = 0; i < s->initial_nodes; ++i)
 		orphan_dir[i] = alloc_directory(s);
-	lostfound_dir = alloc_directory(s);
 
 	need = (s->volume_size_in_clusters + 7) >> 3;
 	need = ((need + s->cluster_size - 1) >> s->cluster_size_bits) << s->cluster_size_bits;
@@ -277,17 +276,6 @@
 	add_entry_to_directory(s, root_dir, ".", root_dir_rec.fe_off, OCFS2_FT_DIR);
 	add_entry_to_directory(s, root_dir, "..", root_dir_rec.fe_off, OCFS2_FT_DIR);
 
-	alloc_from_bitmap (s, 1, s->global_bm,
-			   &lostfound_dir_rec.extent_off,
-			   &lostfound_dir_rec.extent_len);
-
-	lostfound_dir_rec.fe_off = alloc_inode(s, &lostfound_dir_rec.suballoc_bit);
-	lostfound_dir->record = &lostfound_dir_rec;
-
-	add_entry_to_directory(s, lostfound_dir, ".", lostfound_dir_rec.fe_off, OCFS2_FT_DIR);
-	add_entry_to_directory(s, lostfound_dir, "..", root_dir_rec.fe_off, OCFS2_FT_DIR);
-	add_entry_to_directory(s, root_dir, "lost+found", lostfound_dir_rec.fe_off, OCFS2_FT_DIR);
-
 	need = system_dir_blocks_needed(s) << s->blocksize_bits;
 	alloc_bytes_from_bitmap(s, need, s->global_bm,
 				&system_dir_rec.extent_off,
@@ -343,7 +331,6 @@
 
 	format_file(s, &root_dir_rec);
 	format_file(s, &system_dir_rec);
-	format_file(s, &lostfound_dir_rec);
 
 	for (i = 0; i < NUM_SYSTEM_INODES; i++) {
 		num = system_files[i].global ? 1 : s->initial_nodes;
@@ -379,7 +366,6 @@
 	write_directory_data(s, system_dir);
 	for (i = 0; i < s->initial_nodes; ++i)
 		write_directory_data(s, orphan_dir[i]);
-	write_directory_data(s, lostfound_dir);
 
 	tmprec = &(record[HEARTBEAT_SYSTEM_INODE][0]);
 	write_metadata(s, tmprec, NULL);
@@ -399,6 +385,14 @@
 	if (!s->quiet)
 		printf("done\n");
 
+	if (!s->quiet)
+		printf("Writing lost+found: ");
+
+	create_lost_found_dir(s);
+
+	if (!s->quiet)
+		printf("done\n");
+
 	close_device(s);
 
 	if (!s->quiet)
@@ -1924,3 +1918,38 @@
 
 	return ;
 }
+
+static void create_lost_found_dir(State *s)
+{
+	errcode_t ret;
+	ocfs2_filesys *fs = NULL;
+	uint64_t lost_found_blkno;
+
+	ret = ocfs2_open(s->device_name, OCFS2_FLAG_RW, 0, 0, &fs);
+	if (ret) {
+		com_err(s->progname, ret, "while opening new file system");
+		exit(1);
+	}
+
+	ret = ocfs2_new_inode(fs, &lost_found_blkno, S_IFDIR | 0755);
+	if (ret) {
+		com_err(s->progname, ret, "while creating lost+found");
+		exit(1);
+	}
+
+	ret = ocfs2_expand_dir(fs, lost_found_blkno, fs->fs_root_blkno);
+	if (ret) {
+		com_err(s->progname, ret, "while adding lost+found dir data");
+		exit(1);
+	}
+
+	ret = ocfs2_link(fs, fs->fs_root_blkno, "lost+found", lost_found_blkno,
+			 OCFS2_FT_DIR);
+	if (ret) {
+		com_err(s->progname, ret, "while linking lost+found to the "
+			"root directory");
+		exit(1);
+	}
+
+	ocfs2_close(fs);
+}



More information about the Ocfs2-tools-commits mailing list