From 881de8642d4cc3174a85474112e52b2f11310b69 Mon Sep 17 00:00:00 2001 From: "Alexander.Boyko" Date: Fri, 20 Jan 2012 12:22:54 +0400 Subject: [PATCH] LU-968 e2scan: fix directory check filelist_dblist_iterate_cb() checks whether a scanned inode is a directory, but it didn't mask of the dir data size before comparing the file type. Signed-off-by: Alexander Boyko Xyratex-bug-id: MRP-309 Change-Id: I6f13f266944aa6967f4d9905a30b83ab8e577b15 --- patches/e2fsprogs-e2scan.patch | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/patches/e2fsprogs-e2scan.patch b/patches/e2fsprogs-e2scan.patch index 49d22c6..a3cc2cc 100644 --- a/patches/e2fsprogs-e2scan.patch +++ b/patches/e2fsprogs-e2scan.patch @@ -2,7 +2,7 @@ Index: e2fsprogs/configure.in =================================================================== --- e2fsprogs.orig/configure.in +++ e2fsprogs/configure.in -@@ -589,6 +589,28 @@ DEBUGFS_CMT= +@@ -597,6 +597,28 @@ DEBUGFS_CMT= ) AC_SUBST(DEBUGFS_CMT) dnl @@ -31,7 +31,7 @@ Index: e2fsprogs/configure.in dnl handle --enable-imager dnl AC_ARG_ENABLE([imager], -@@ -812,6 +834,10 @@ AC_CHECK_HEADERS(net/if.h,,, +@@ -820,6 +842,10 @@ AC_CHECK_HEADERS(net/if.h,,, #endif ]]) AC_CHECK_HEADERS(db.h) @@ -42,7 +42,7 @@ Index: e2fsprogs/configure.in AC_FUNC_VPRINTF dnl Check to see if dirent has member d_reclen. On cygwin those d_reclen dnl is not decleared. -@@ -954,6 +980,52 @@ AC_CHECK_LIB(db-4.8, db_env_create, +@@ -962,6 +988,52 @@ AC_CHECK_LIB(db-4.8, db_env_create, AC_DEFINE(HAVE_DB4)]) AC_SUBST(DB4VERSION) dnl @@ -95,7 +95,7 @@ Index: e2fsprogs/configure.in dnl See if optreset exists dnl AC_MSG_CHECKING(for optreset) -@@ -1170,7 +1241,7 @@ for i in MCONFIG Makefile e2fsprogs.spec +@@ -1178,7 +1250,7 @@ for i in MCONFIG Makefile e2fsprogs.spec lib/ss/ss.pc lib/uuid/uuid.pc lib/et/com_err.pc \ lib/e2p/e2p.pc lib/blkid/blkid.pc lib/ext2fs/ext2fs.pc \ misc/Makefile ext2ed/Makefile e2fsck/Makefile \ @@ -114,8 +114,8 @@ Index: e2fsprogs/e2fsprogs.spec.in %{_root_sbindir}/tune2fs +@E2SCAN_CMT@%{_sbindir}/e2scan %{_sbindir}/filefrag + @LFSCK_CMT@%{_sbindir}/lfsck %{_sbindir}/mklost+found - %{_sbindir}/e2freefrag @@ -183,6 +184,7 @@ exit 0 %{_mandir}/man8/fsck.ext4dev.8* %{_mandir}/man8/e2image.8* @@ -1309,7 +1309,7 @@ Index: e2fsprogs/e2scan/filelist.c =================================================================== --- /dev/null +++ e2fsprogs/e2scan/filelist.c -@@ -0,0 +1,456 @@ +@@ -0,0 +1,457 @@ +#define _GNU_SOURCE +#define _FILE_OFFSET_BITS 64 + @@ -1711,7 +1711,8 @@ Index: e2fsprogs/e2scan/filelist.c + assert(dir != NULL); + + dirent2 = (struct ext2_dir_entry_2 *)dirent; -+ is_dirname = (dirent2->file_type == EXT2_FT_DIR) ? 1 : 0; ++ is_dirname = ((dirent2->file_type & EXT2_FT_MASK) == EXT2_FT_DIR) ? ++ 1 : 0; + if (is_dirname) { + subdir = find_dentry(dirent->inode); + if (subdir == NULL) -- 1.8.3.1