[Ocfs-tools-commits]
smushran commits r104 - in trunk/ocfs2/debugfs.ocfs2: . include
svn-commits at oss.oracle.com
svn-commits at oss.oracle.com
Fri Jun 25 16:59:44 CDT 2004
Author: smushran
Date: 2004-06-25 15:59:41 -0500 (Fri, 25 Jun 2004)
New Revision: 104
Modified:
trunk/ocfs2/debugfs.ocfs2/commands.c
trunk/ocfs2/debugfs.ocfs2/dump.c
trunk/ocfs2/debugfs.ocfs2/include/main.h
trunk/ocfs2/debugfs.ocfs2/include/readfs.h
trunk/ocfs2/debugfs.ocfs2/include/utils.h
trunk/ocfs2/debugfs.ocfs2/readfs.c
trunk/ocfs2/debugfs.ocfs2/utils.c
Log:
dir read made more modular
Modified: trunk/ocfs2/debugfs.ocfs2/commands.c
===================================================================
--- trunk/ocfs2/debugfs.ocfs2/commands.c 2004-06-25 18:48:46 UTC (rev 103)
+++ trunk/ocfs2/debugfs.ocfs2/commands.c 2004-06-25 20:59:41 UTC (rev 104)
@@ -45,23 +45,24 @@
static Command *find_command (char *cmd);
static char **get_data (void);
-static void do_open (char **args);
-static void do_close (char **args);
-static void do_cd (char **args);
-static void do_ls (char **args);
-static void do_pwd (char **args);
-static void do_mkdir (char **args);
-static void do_rmdir (char **args);
-static void do_rm (char **args);
-static void do_read (char **args);
-static void do_write (char **args);
-static void do_quit (char **args);
-static void do_help (char **args);
-static void do_dump (char **args);
-static void do_lcd (char **args);
-static void do_curdev (char **args);
-static void do_super (char **args);
-static void do_inode (char **args);
+static void do_open (char **args);
+static void do_close (char **args);
+static void do_cd (char **args);
+static void do_ls (char **args);
+static void do_pwd (char **args);
+static void do_mkdir (char **args);
+static void do_rmdir (char **args);
+static void do_rm (char **args);
+static void do_read (char **args);
+static void do_write (char **args);
+static void do_quit (char **args);
+static void do_help (char **args);
+static void do_dump (char **args);
+static void do_lcd (char **args);
+static void do_curdev (char **args);
+static void do_super (char **args);
+static void do_inode (char **args);
+static void do_nodes (char **args);
extern gboolean allow_write;
@@ -108,7 +109,9 @@
{ "stats", do_super },
{ "show_inode_info", do_inode },
- { "stat", do_inode }
+ { "stat", do_inode },
+
+ { "show_nodes", do_nodes }
};
@@ -482,3 +485,22 @@
safefree (buf);
return ;
} /* do_inode */
+
+/*
+ * do_nodes()
+ *
+ */
+static void do_nodes (char **args)
+{
+ char *opts = args[1];
+ __u32 nodenum;
+
+ if (opts)
+ nodenum = atoi(opts);
+ else
+ nodenum = ULONG_MAX;
+
+ /* get the dlm file */
+
+ return ;
+} /* do_nodes */
Modified: trunk/ocfs2/debugfs.ocfs2/dump.c
===================================================================
--- trunk/ocfs2/debugfs.ocfs2/dump.c 2004-06-25 18:48:46 UTC (rev 103)
+++ trunk/ocfs2/debugfs.ocfs2/dump.c 2004-06-25 20:59:41 UTC (rev 104)
@@ -244,26 +244,24 @@
*/
void dump_dir_entry(struct ocfs2_dir_entry *dir, int len)
{
- char *p;
struct ocfs2_dir_entry *rec;
+ GArray *arr = NULL;
+ int i;
- p = (char *)dir;
+ arr = g_array_new (0, 1, sizeof(struct ocfs2_dir_entry));
printf("%-20s %-4s %-4s %-2s %-4s\n",
"Inode", "Rlen", "Nlen", "Ty", "Name");
- while (p < (((char *)dir) + len)) {
- rec = (struct ocfs2_dir_entry *)p;
- if (rec->inode) {
- char buf[4096];
- memcpy(buf, rec->name, rec->name_len);
- buf[rec->name_len] = '\0';
- printf("%-15llu %-6u %-7u %-4u %s\n", rec->inode,
- rec->rec_len, rec->name_len, rec->file_type,
- buf);
- }
- p += rec->rec_len;
+ 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,
+ 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/main.h
===================================================================
--- trunk/ocfs2/debugfs.ocfs2/include/main.h 2004-06-25 18:48:46 UTC (rev 103)
+++ trunk/ocfs2/debugfs.ocfs2/include/main.h 2004-06-25 20:59:41 UTC (rev 104)
@@ -52,11 +52,6 @@
#define safefree(_p) do {if (_p) { free(_p); (_p) = NULL; } } while (0)
-static inline void null_term(char *_s, __u32 _l)
-{
- *(_s + _l) = '\0';
-}
-
#define DBGFS_FATAL(fmt, arg...) ({ fprintf(stderr, "ERROR at %s, %d: " fmt ". EXITING!!!\n", \
__FILE__, __LINE__, ##arg); \
exit(1); \
Modified: trunk/ocfs2/debugfs.ocfs2/include/readfs.h
===================================================================
--- trunk/ocfs2/debugfs.ocfs2/include/readfs.h 2004-06-25 18:48:46 UTC (rev 103)
+++ trunk/ocfs2/debugfs.ocfs2/include/readfs.h 2004-06-25 20:59:41 UTC (rev 104)
@@ -29,5 +29,6 @@
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);
#endif /* __READFS_H__ */
Modified: trunk/ocfs2/debugfs.ocfs2/include/utils.h
===================================================================
--- trunk/ocfs2/debugfs.ocfs2/include/utils.h 2004-06-25 18:48:46 UTC (rev 103)
+++ trunk/ocfs2/debugfs.ocfs2/include/utils.h 2004-06-25 20:59:41 UTC (rev 104)
@@ -27,5 +27,6 @@
#define __UTILS_H__
void add_extent_rec (GArray *arr, ocfs2_extent_rec *rec);
+void add_dir_rec (GArray *arr, struct ocfs2_dir_entry *rec);
#endif /* __UTILS_H__ */
Modified: trunk/ocfs2/debugfs.ocfs2/readfs.c
===================================================================
--- trunk/ocfs2/debugfs.ocfs2/readfs.c 2004-06-25 18:48:46 UTC (rev 103)
+++ trunk/ocfs2/debugfs.ocfs2/readfs.c 2004-06-25 20:59:41 UTC (rev 104)
@@ -159,3 +159,24 @@
safefree (buf);
return ret;
} /* traverse_extents */
+
+/*
+ * read_dir()
+ *
+ */
+void read_dir (struct ocfs2_dir_entry *dir, int len, GArray *arr)
+{
+ char *p;
+ struct ocfs2_dir_entry *rec;
+
+ p = (char *) dir;
+
+ while (p < (((char *)dir) + len)) {
+ rec = (struct ocfs2_dir_entry *)p;
+ if (rec->inode)
+ add_dir_rec (arr, rec);
+ p += rec->rec_len;
+ }
+
+ return ;
+} /* read_dir */
Modified: trunk/ocfs2/debugfs.ocfs2/utils.c
===================================================================
--- trunk/ocfs2/debugfs.ocfs2/utils.c 2004-06-25 18:48:46 UTC (rev 103)
+++ trunk/ocfs2/debugfs.ocfs2/utils.c 2004-06-25 20:59:41 UTC (rev 104)
@@ -48,3 +48,31 @@
return ;
} /* add_extent_rec */
+
+/*
+ * add_dir_rec()
+ *
+ */
+void add_dir_rec (GArray *arr, struct ocfs2_dir_entry *rec)
+{
+ struct ocfs2_dir_entry *new;
+
+ if (!arr)
+ return ;
+
+ if (!(new = malloc(sizeof(struct ocfs2_dir_entry))))
+ DBGFS_FATAL("%s", strerror(errno));
+
+ memset(new, 0, sizeof(struct ocfs2_dir_entry));
+
+ new->inode = rec->inode;
+ new->rec_len = rec->rec_len;
+ new->name_len = rec->name_len;
+ new->file_type = rec->file_type;
+ strncpy(new->name, rec->name, rec->name_len);
+ new->name[rec->name_len] = '\0';
+
+ g_array_append_vals(arr, new, 1);
+
+ return ;
+} /* add_dir_rec */
More information about the Ocfs-tools-commits
mailing list