[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1368459830-3651-2-git-send-email-rpazdera@redhat.com>
Date: Mon, 13 May 2013 17:43:49 +0200
From: Radek Pazdera <rpazdera@...hat.com>
To: linux-ext4@...r.kernel.org
Cc: lczerner@...hat.com, kasparek@....vutbr.cz,
Radek Pazdera <rpazdera@...hat.com>
Subject: [PATCH v2 1/2] libext2fs: Adding itree feature and inode flags
The 'itree' feature adds an auxiliary tree that should help with indexing
directories. The tree resides on the file system along with the original
HTree (althought it is placed outside of the directory file).
It is a B+tree that contains directory entries sorted in inode order and
it is used to implement the getdents/readdir system calls. The inodes
are then returned in the optimal order, which improves the performance of
directory traversal.
This commit reserves a flag for the itree read-only compatible feature
and also an inode flag to indicate a directory has the inode tree
available.
Feature flag: EXT4_FEATURE_RO_COMPAT_ITREE 0x1000
Inode flag: EXT4_ITREE_FL 0x20000000
Signed-off-by: Radek Pazdera <rpazdera@...hat.com>
---
lib/e2p/feature.c | 2 ++
lib/e2p/pf.c | 1 +
lib/ext2fs/ext2_fs.h | 2 ++
3 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/lib/e2p/feature.c b/lib/e2p/feature.c
index 70815ef..9b15679 100644
--- a/lib/e2p/feature.c
+++ b/lib/e2p/feature.c
@@ -66,6 +66,8 @@ static struct feature feature_list[] = {
"metadata_csum"},
{ E2P_FEATURE_RO_INCOMPAT, EXT4_FEATURE_RO_COMPAT_REPLICA,
"replica" },
+ { E2P_FEATURE_RO_INCOMPAT, EXT4_FEATURE_RO_COMPAT_ITREE,
+ "itree" },
{ E2P_FEATURE_INCOMPAT, EXT2_FEATURE_INCOMPAT_COMPRESSION,
"compression" },
diff --git a/lib/e2p/pf.c b/lib/e2p/pf.c
index f116ac3..c70b710 100644
--- a/lib/e2p/pf.c
+++ b/lib/e2p/pf.c
@@ -51,6 +51,7 @@ static struct flags_name flags_array[] = {
{ EXT4_HUGE_FILE_FL, "h", "Huge_file" },
{ FS_NOCOW_FL, "C", "No_COW" },
{ EXT4_INLINE_DATA_FL, "N", "Inline_Data" },
+ { EXT4_ITREE_FL, "r", "Has_Itree" },
{ 0, NULL, NULL }
};
diff --git a/lib/ext2fs/ext2_fs.h b/lib/ext2fs/ext2_fs.h
index 0c0bbcb..7bdae5e 100644
--- a/lib/ext2fs/ext2_fs.h
+++ b/lib/ext2fs/ext2_fs.h
@@ -320,6 +320,7 @@ struct ext2_dx_tail {
#define EXT4_SNAPFILE_DELETED_FL 0x04000000 /* Snapshot is being deleted */
#define EXT4_SNAPFILE_SHRUNK_FL 0x08000000 /* Snapshot shrink has completed */
#define EXT4_INLINE_DATA_FL 0x10000000 /* Inode has inline data */
+#define EXT4_ITREE_FL 0x20000000 /* Directory has itree */
#define EXT2_RESERVED_FL 0x80000000 /* reserved for ext2 lib */
#define EXT2_FL_USER_VISIBLE 0x004BDFFF /* User visible flags */
@@ -739,6 +740,7 @@ struct ext2_super_block {
*/
#define EXT4_FEATURE_RO_COMPAT_METADATA_CSUM 0x0400
#define EXT4_FEATURE_RO_COMPAT_REPLICA 0x0800
+#define EXT4_FEATURE_RO_COMPAT_ITREE 0x1000
#define EXT2_FEATURE_INCOMPAT_COMPRESSION 0x0001
#define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002
--
1.7.7.6
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists