* [PATCH] debugfs : Fix printing of pathnames with ncheck if files have hardlinks in same directory.
@ 2008-10-09 17:34 Manish Katiyar
2008-10-10 18:57 ` Theodore Tso
0 siblings, 1 reply; 2+ messages in thread
From: Manish Katiyar @ 2008-10-09 17:34 UTC (permalink / raw)
To: ext4, Theodore Tso; +Cc: mkatiyar
Hi Ted,
Commit 03206bd introduced regression in ncheck while printing all the
pathnames of an inode. For files which have hardlink in the same
directory we will print the same pathname instead of all possible like
below :-
debugfs: ncheck 14
Inode Pathname
14 /a/f1
14 /a/f1
14 /b/f3
where it should have printed
debugfs: ncheck 14
Inode Pathname
14 /a/f1
14 /a/f2
14 /b/f3
Below patch fixes it.
Signed-off-by : Manish Katiyar <mkatiyar@gmail.com>
---
debugfs/ncheck.c | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/debugfs/ncheck.c b/debugfs/ncheck.c
index 22fa29f..c850739 100644
--- a/debugfs/ncheck.c
+++ b/debugfs/ncheck.c
@@ -36,14 +36,16 @@ static int ncheck_proc(struct ext2_dir_entry *dirent,
int i;
char *pathname;
errcode_t retval;
+ static ext2_ino_t parent;
iw->position++;
+ if (iw->position == 2)
+ parent = dirent->inode;
if (iw->position <= 2)
return 0;
for (i=0; i < iw->num_inodes; i++) {
if (iw->iarray[i] == dirent->inode) {
- retval = ext2fs_get_pathname(current_fs, iw->parent,
- iw->iarray[i],
+ retval = ext2fs_get_pathname(current_fs, parent, iw->parent,
&pathname);
if (retval)
com_err("ncheck", retval,
@@ -51,7 +53,7 @@ static int ncheck_proc(struct ext2_dir_entry *dirent,
"inode %d (%d)", iw->parent,
iw->iarray[i]);
else
- printf("%u\t%s\n", iw->iarray[i], pathname);
+ printf("%u\t%s/%s\n", iw->iarray[i], pathname, dirent->name);
}
}
if (!iw->inodes_left)
--
1.5.4.3
Thanks -
Manish
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] debugfs : Fix printing of pathnames with ncheck if files have hardlinks in same directory.
2008-10-09 17:34 [PATCH] debugfs : Fix printing of pathnames with ncheck if files have hardlinks in same directory Manish Katiyar
@ 2008-10-10 18:57 ` Theodore Tso
0 siblings, 0 replies; 2+ messages in thread
From: Theodore Tso @ 2008-10-10 18:57 UTC (permalink / raw)
To: Manish Katiyar; +Cc: ext4
On Thu, Oct 09, 2008 at 11:04:45PM +0530, Manish Katiyar wrote:
> Hi Ted,
>
> Commit 03206bd introduced regression in ncheck while printing all the
> pathnames of an inode. For files which have hardlink in the same
> directory we will print the same pathname instead of all possible like
> below :-
This patch is a better way to fix things. It fixes a memory leak,
avoids the static variable, and avoids calling ext2fs_get_pathname
multiple times for each directory.
- Ted
commit b4c36addc0279193018a4bb59871c5365db1489b
Author: Theodore Ts'o <tytso@mit.edu>
Date: Fri Oct 10 14:53:09 2008 -0400
debugfs: Fix ncheck when printing pathnames for multiple hardlinks in a directory
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
diff --git a/debugfs/ncheck.c b/debugfs/ncheck.c
index 22fa29f..abb38a8 100644
--- a/debugfs/ncheck.c
+++ b/debugfs/ncheck.c
@@ -23,7 +23,7 @@ struct inode_walk_struct {
int inodes_left;
int num_inodes;
int position;
- ext2_ino_t parent;
+ char *parent;
};
static int ncheck_proc(struct ext2_dir_entry *dirent,
@@ -42,16 +42,8 @@ static int ncheck_proc(struct ext2_dir_entry *dirent,
return 0;
for (i=0; i < iw->num_inodes; i++) {
if (iw->iarray[i] == dirent->inode) {
- retval = ext2fs_get_pathname(current_fs, iw->parent,
- iw->iarray[i],
- &pathname);
- if (retval)
- com_err("ncheck", retval,
- "while resolving pathname for "
- "inode %d (%d)", iw->parent,
- iw->iarray[i]);
- else
- printf("%u\t%s\n", iw->iarray[i], pathname);
+ printf("%u\t%s/%*s\n", iw->iarray[i], iw->parent,
+ (dirent->name_len & 0xFF), dirent->name);
}
}
if (!iw->inodes_left)
@@ -124,10 +116,17 @@ void do_ncheck(int argc, char **argv)
goto next;
iw.position = 0;
- iw.parent = ino;
+
+ retval = ext2fs_get_pathname(current_fs, ino, 0, &iw.parent);
+ if (retval) {
+ com_err("ncheck", retval,
+ "while calling ext2fs_get_pathname");
+ goto next;
+ }
retval = ext2fs_dir_iterate(current_fs, ino, 0, 0,
ncheck_proc, &iw);
+ ext2fs_free_mem(&iw.parent);
if (retval) {
com_err("ncheck", retval,
"while calling ext2_dir_iterate");
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2008-10-10 18:57 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-09 17:34 [PATCH] debugfs : Fix printing of pathnames with ncheck if files have hardlinks in same directory Manish Katiyar
2008-10-10 18:57 ` Theodore Tso
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).