Whamcloud - gitweb
e2fsck: add support for dirdata feature
authorAndreas Dilger <andreas.dilger@intel.com>
Thu, 17 May 2018 03:43:16 +0000 (13:43 +1000)
committerLi Dongyang <dongyangli@ddn.com>
Wed, 19 Dec 2018 22:28:56 +0000 (09:28 +1100)
commitb87e30ec4ccdac80f86293997b67b40eee0f76d2
tree5c540bc7c4d69495dd284765adb0c7144a72e4d8
parente4bb1846fcc23ad3471eb86a36f44bd9531810c4
e2fsck: add support for dirdata feature

Add support for the INCOMPAT_DIRDATA feature, which allows
storing extra data in the directory entry beyond the name.
This allows the Lustre File IDentifier to be accessed in
an efficient manner, and would be useful for expanding a
filesystem to allow more than 2^32 inodes in the future.

Include this patches:

e2fsck: e2fsck -D does not change dirdata content

Fix dir optimization to preserve dirdata content for dot
and dotdot entries.

Lustre-bug: https://jira.hpdd.intel.com/browse/LU-1774
Signed-off-by: Bobi Jam <bobijam.xu@intel.com>
Change-Id: Iae190794da75a2080a8e5cc5b95a49e0c894f72f

e2fsprogs: Consider DIRENT_LUFID flag in link_proc().

While adding the new file entry in directory block, link_proc()
calculates minimum record length of the existing directory entry
without considering the dirent data size and which leads to
corruption. Changed the code to use EXT2_DIR_REC_LEN() which will
return correct record length including dirent data size.

Lustre-bug: https://jira.hpdd.intel.com/browse/LU-2462
Signed-off-by: Manisha Salve <msalve@ddn.com>
Change-Id: Ic593c558c47a78183143ec8e99d8385ac94d06f7

libext2fs, e2fsck: don't use ext2_dir_entry_2

Due to endian issues, do not use ext2_dir_entry_2 because it will
have the wrong byte order on directory entries that are swabbed.
Instead, use the standard practice of mask-and-shift to access the
file_type and dirdata flags.

Lustre-bug: https://jira.hpdd.intel.com/browse/LU-4677
Signed-off-by: Pravin Shelar <pravin@clusterfs.com>
Signed-off-by: Andreas Dilger <andreas.dilger@intel.com>
Signed-off-by: Artem Blagodarenko <artem.blagodarenko@gmail.com>
29 files changed:
debugfs/debugfs.8.in
debugfs/htree.c
debugfs/ls.c
debugfs/ncheck.c
e2fsck/pass1.c
e2fsck/pass2.c
e2fsck/pass3.c
e2fsck/problem.c
e2fsck/problem.h
e2fsck/rehash.c
lib/ext2fs/dirblock.c
lib/ext2fs/ext2_fs.h
lib/ext2fs/ext2fs.h
lib/ext2fs/inline_data.c
lib/ext2fs/lfsck.h [new file with mode: 0644]
lib/ext2fs/link.c
lib/ext2fs/newdir.c
misc/mke2fs.c
misc/tune2fs.c
tests/f_dir_optimize/expect.1 [new file with mode: 0644]
tests/f_dir_optimize/expect.2 [new file with mode: 0644]
tests/f_dir_optimize/image.gz [new file with mode: 0644]
tests/f_dir_optimize/name [new file with mode: 0644]
tests/f_dir_optimize/script [new file with mode: 0644]
tests/f_dirdata_optimize/expect.1 [new file with mode: 0644]
tests/f_dirdata_optimize/expect.2 [new file with mode: 0644]
tests/f_dirdata_optimize/image.gz [new file with mode: 0644]
tests/f_dirdata_optimize/name [new file with mode: 0644]
tests/f_dirdata_optimize/script [new file with mode: 0644]