[Ocfs-tools-commits] smushran commits r105 - in trunk/ocfs2/debugfs.ocfs2: . include

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Fri Jun 25 17:38:29 CDT 2004


Author: smushran
Date: 2004-06-25 16:38:27 -0500 (Fri, 25 Jun 2004)
New Revision: 105

Modified:
   trunk/ocfs2/debugfs.ocfs2/commands.c
   trunk/ocfs2/debugfs.ocfs2/dump.c
   trunk/ocfs2/debugfs.ocfs2/include/dump.h
   trunk/ocfs2/debugfs.ocfs2/include/readfs.h
   trunk/ocfs2/debugfs.ocfs2/readfs.c
Log:
dir read reorgd

Modified: trunk/ocfs2/debugfs.ocfs2/commands.c
===================================================================
--- trunk/ocfs2/debugfs.ocfs2/commands.c	2004-06-25 20:59:41 UTC (rev 104)
+++ trunk/ocfs2/debugfs.ocfs2/commands.c	2004-06-25 21:38:27 UTC (rev 105)
@@ -246,13 +246,10 @@
 {
 	char *opts = args[1];
 	ocfs2_dinode *inode;
-	ocfs2_extent_rec *rec;
 	__u32 blknum;
 	char *buf = NULL;
-	int i;
-	GArray *arr = NULL;
+	GArray *dirarr = NULL;
 	__u32 len;
-	__u64 off, foff;
 
 	len = 1 << blksz_bits;
 	if (!(buf = malloc(len)))
@@ -274,31 +271,17 @@
 		goto bail;
 	}
 
-	arr = g_array_new(0, 1, sizeof(ocfs2_extent_rec));
+	dirarr = g_array_new(0, 1, sizeof(struct ocfs2_dir_entry));
 
-	traverse_extents (dev_fd, &(inode->id2.i_list), arr, 0);
+	read_dir (dev_fd, &(inode->id2.i_list), inode->i_size, dirarr);
 
-	safefree (buf);
+	dump_dir_entry (dirarr);
 
-	for (i = 0; i < arr->len; ++i) {
-		rec = &(g_array_index(arr, ocfs2_extent_rec, i));
-		off = rec->e_blkno << blksz_bits;
-                foff = rec->e_cpos << clstrsz_bits;
-		len = rec->e_clusters << clstrsz_bits;
-                if ((foff + len) > inode->i_size)
-                    len = inode->i_size - foff;
-		if (!(buf = malloc (len)))
-			DBGFS_FATAL("%s", strerror(errno));
-		if ((pread64(dev_fd, buf, len, off)) == -1)
-			DBGFS_FATAL("%s", strerror(errno));
-		dump_dir_entry ((struct ocfs2_dir_entry *)buf, len);
-		safefree (buf);
-	}
-
 bail:
 	safefree (buf);
-	if (arr)
-		g_array_free (arr, 1);
+
+	if (dirarr)
+		g_array_free (dirarr, 1);
 	return ;
 
 }					/* do_ls */

Modified: trunk/ocfs2/debugfs.ocfs2/dump.c
===================================================================
--- trunk/ocfs2/debugfs.ocfs2/dump.c	2004-06-25 20:59:41 UTC (rev 104)
+++ trunk/ocfs2/debugfs.ocfs2/dump.c	2004-06-25 21:38:27 UTC (rev 105)
@@ -242,26 +242,19 @@
  * dump_dir_entry()
  *
  */
-void dump_dir_entry(struct ocfs2_dir_entry *dir, int len)
+void dump_dir_entry (GArray *arr)
 {
 	struct ocfs2_dir_entry *rec;
-	GArray *arr = NULL;
 	int i;
 
-	arr = g_array_new (0, 1, sizeof(struct ocfs2_dir_entry));
-
 	printf("%-20s %-4s %-4s %-2s %-4s\n",
 	       "Inode", "Rlen", "Nlen", "Ty", "Name");
 
-	read_dir (dir, len, arr);
-
 	for (i = 0; i < arr->len; ++i) {
 		rec = &(g_array_index(arr, struct ocfs2_dir_entry, i));
-		printf("%-15llu  %-6u  %-7u  %-4u  %s\n", rec->inode,
+		printf("%-20llu %-4u %-4u %-2u %s\n", rec->inode,
 		       rec->rec_len, rec->name_len, rec->file_type, rec->name);
 	}
 
-	if (arr)
-		g_array_free (arr, 1);
 	return ;
 }				/* dump_dir_entry */

Modified: trunk/ocfs2/debugfs.ocfs2/include/dump.h
===================================================================
--- trunk/ocfs2/debugfs.ocfs2/include/dump.h	2004-06-25 20:59:41 UTC (rev 104)
+++ trunk/ocfs2/debugfs.ocfs2/include/dump.h	2004-06-25 21:38:27 UTC (rev 105)
@@ -31,6 +31,6 @@
 void dump_inode (ocfs2_dinode *in);
 void dump_extent_list (ocfs2_extent_list *ext);
 void dump_extent_block (ocfs2_extent_block *blk);
-void dump_dir_entry(struct ocfs2_dir_entry *dir, int len);
+void dump_dir_entry (GArray *arr);
 
 #endif		/* __DUMP_H__ */

Modified: trunk/ocfs2/debugfs.ocfs2/include/readfs.h
===================================================================
--- trunk/ocfs2/debugfs.ocfs2/include/readfs.h	2004-06-25 20:59:41 UTC (rev 104)
+++ trunk/ocfs2/debugfs.ocfs2/include/readfs.h	2004-06-25 21:38:27 UTC (rev 105)
@@ -29,6 +29,7 @@
 int read_super_block (int fd, char **buf);
 int read_inode (int fd, __u32 blknum, char *buf, int buflen);
 int traverse_extents (int fd, ocfs2_extent_list *ext, GArray *arr, int dump);
-void read_dir (struct ocfs2_dir_entry *dir, int len, GArray *arr);
+void read_dir_block (struct ocfs2_dir_entry *dir, int len, GArray *arr);
+void read_dir (int fd, ocfs2_extent_list *ext, __u64 size, GArray *dirarr);
 
 #endif		/* __READFS_H__ */

Modified: trunk/ocfs2/debugfs.ocfs2/readfs.c
===================================================================
--- trunk/ocfs2/debugfs.ocfs2/readfs.c	2004-06-25 20:59:41 UTC (rev 104)
+++ trunk/ocfs2/debugfs.ocfs2/readfs.c	2004-06-25 21:38:27 UTC (rev 105)
@@ -161,10 +161,10 @@
 }				/* traverse_extents */
 
 /*
- * read_dir()
+ * read_dir_block()
  *
  */
-void read_dir (struct ocfs2_dir_entry *dir, int len, GArray *arr)
+void read_dir_block (struct ocfs2_dir_entry *dir, int len, GArray *arr)
 {
 	char *p;
 	struct ocfs2_dir_entry *rec;
@@ -179,4 +179,48 @@
 	}
 
 	return ;
+}				/* read_dir_block */
+
+/*
+ * read_dir()
+ *
+ */
+void read_dir (int fd, ocfs2_extent_list *ext, __u64 size, GArray *dirarr)
+{
+	ocfs2_extent_rec *rec;
+	GArray *arr = NULL;
+	int i = 0;
+	char *buf = NULL;
+	__u32 len;
+	__u64 off;
+	__u64 foff;
+
+	arr = g_array_new(0, 1, sizeof(ocfs2_extent_rec));
+
+	traverse_extents (fd, ext, arr, 0);
+
+	for (i = 0; i < arr->len; ++i) {
+		rec = &(g_array_index(arr, ocfs2_extent_rec, i));
+
+		off = rec->e_blkno << blksz_bits;
+                foff = rec->e_cpos << clstrsz_bits;
+		len = rec->e_clusters << clstrsz_bits;
+                if ((foff + len) > size)
+                    len = size - foff;
+
+		if (!(buf = malloc (len)))
+			DBGFS_FATAL("%s", strerror(errno));
+
+		if ((pread64(fd, buf, len, off)) == -1)
+			DBGFS_FATAL("%s", strerror(errno));
+
+		read_dir_block ((struct ocfs2_dir_entry *)buf, len, dirarr);
+
+		safefree (buf);
+	}
+
+	if (arr)
+		g_array_free (arr, 1);
+
+	return ;
 }				/* read_dir */



More information about the Ocfs-tools-commits mailing list