[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