[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