diff mbox

debugfs : Fix printing of pathnames with ncheck if files have hardlinks in same directory.

Message ID ea11fea30810091034k56788d54ka794fdde914f6616@mail.gmail.com
State Superseded, archived
Headers show

Commit Message

Manish Katiyar Oct. 9, 2008, 5:34 p.m. UTC
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 mbox

Patch

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)