[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