aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/ocfs2_fs.h
diff options
context:
space:
mode:
authorMark Fasheh <mfasheh@suse.com>2009-01-29 21:17:46 -0500
committerMark Fasheh <mfasheh@suse.com>2009-04-03 14:39:16 -0400
commite7c17e43090afe558c40bfb66637744c27bd2aeb (patch)
tree4c164c4ec59eaa7599c91f865a261517454ba45f /fs/ocfs2/ocfs2_fs.h
parent4ed8a6bb083bfcc21f1ed66a474b03c0386e4b34 (diff)
ocfs2: Introduce dir free space list
The only operation which doesn't get faster with directory indexing is insert, which still has to walk the entire unindexed directory portion to find a free block. This patch provides an improvement in directory insert performance by maintaining a singly linked list of directory leaf blocks which have space for additional dirents. Signed-off-by: Mark Fasheh <mfasheh@suse.com> Acked-by: Joel Becker <joel.becker@oracle.com>
Diffstat (limited to 'fs/ocfs2/ocfs2_fs.h')
-rw-r--r--fs/ocfs2/ocfs2_fs.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/ocfs2/ocfs2_fs.h b/fs/ocfs2/ocfs2_fs.h
index 1d1c54ea5bc4..d549b1799a61 100644
--- a/fs/ocfs2/ocfs2_fs.h
+++ b/fs/ocfs2/ocfs2_fs.h
@@ -416,6 +416,7 @@ static struct ocfs2_system_inode_info ocfs2_system_inodes[NUM_SYSTEM_INODES] = {
416#define OCFS2_DIR_REC_LEN(name_len) (((name_len) + OCFS2_DIR_MEMBER_LEN + \ 416#define OCFS2_DIR_REC_LEN(name_len) (((name_len) + OCFS2_DIR_MEMBER_LEN + \
417 OCFS2_DIR_ROUND) & \ 417 OCFS2_DIR_ROUND) & \
418 ~OCFS2_DIR_ROUND) 418 ~OCFS2_DIR_ROUND)
419#define OCFS2_DIR_MIN_REC_LEN OCFS2_DIR_REC_LEN(1)
419 420
420#define OCFS2_LINK_MAX 32000 421#define OCFS2_LINK_MAX 32000
421 422
@@ -842,7 +843,9 @@ struct ocfs2_dx_root_block {
842 __le16 dr_reserved1; 843 __le16 dr_reserved1;
843 __le64 dr_dir_blkno; /* Pointer to parent inode */ 844 __le64 dr_dir_blkno; /* Pointer to parent inode */
844 __le64 dr_reserved2; 845 __le64 dr_reserved2;
845 __le64 dr_reserved3[16]; 846 __le64 dr_free_blk; /* Pointer to head of free
847 * unindexed block list. */
848 __le64 dr_reserved3[15];
846 union { 849 union {
847 struct ocfs2_extent_list dr_list; /* Keep this aligned to 128 850 struct ocfs2_extent_list dr_list; /* Keep this aligned to 128
848 * bits for maximum space 851 * bits for maximum space