Reduce size of struct btrfs_path from 144 to 96 bytes and save one cacheline. This will allow packing of 42 objects into a PAGE_SIZE slab, (previously 28, measured on x86_64). Let ''slots'' hold at most 65536, which is enough to index items for reasonably big blocksizes (4k, 64k). Maximum is 2M: 65536 * 33 (sizeof struct btrfs_key_ptr) (Making it u8 would allow only 256 * 33 = 8448 ie 8k blocksize) A ''locks'' item holds at most 5 values of lock type. ''lowest_level'': maximum level is 8 The ''reada'' is set to {-1,0,1,2}, has to be signed. Signed-off-by: David Sterba <dsterba@suse.cz> --- fs/btrfs/ctree.h | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index 04a5dfc..0b5bd2c 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h @@ -514,12 +514,12 @@ struct btrfs_node { */ struct btrfs_path { struct extent_buffer *nodes[BTRFS_MAX_LEVEL]; - int slots[BTRFS_MAX_LEVEL]; + u16 slots[BTRFS_MAX_LEVEL]; /* if there is real range locking, this locks field will change */ - int locks[BTRFS_MAX_LEVEL]; - int reada; + u8 locks[BTRFS_MAX_LEVEL]; /* keep some upper locks as we walk down */ - int lowest_level; + u8 lowest_level; + s8 reada; /* sign represents direction */ /* * set by btrfs_split_item, tells search_slot to keep all locks -- 1.7.6 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html