aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/dir-item.c
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2007-04-05 13:35:25 -0400
committerDavid Woodhouse <dwmw2@hera.kernel.org>2007-04-05 13:35:25 -0400
commit5be6f7f174146d91039a27ebb2f1b4ac599172b3 (patch)
tree2933d1e9e5cb50c4ca93f6e8c7e133d65a614461 /fs/btrfs/dir-item.c
parentBtrfs: finish off inode indexing in dirs, add overflows (diff)
downloadlinux-dev-5be6f7f174146d91039a27ebb2f1b4ac599172b3.tar.xz
linux-dev-5be6f7f174146d91039a27ebb2f1b4ac599172b3.zip
Btrfs: dirindex optimizations
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/dir-item.c')
-rw-r--r--fs/btrfs/dir-item.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/btrfs/dir-item.c b/fs/btrfs/dir-item.c
index b1629a5d73c8..0ee9945fb1b0 100644
--- a/fs/btrfs/dir-item.c
+++ b/fs/btrfs/dir-item.c
@@ -92,6 +92,7 @@ int btrfs_lookup_dir_item(struct btrfs_trans_handle *trans, struct btrfs_root
int cow = mod != 0;
struct btrfs_disk_key *found_key;
struct btrfs_leaf *leaf;
+ u32 overflow;
key.objectid = dir;
key.flags = 0;
@@ -119,8 +120,10 @@ int btrfs_lookup_dir_item(struct btrfs_trans_handle *trans, struct btrfs_root
if (btrfs_match_dir_item_name(root, path, name, name_len))
return 0;
- if (btrfs_disk_key_overflow(found_key) == 0)
+ overflow = btrfs_disk_key_overflow(found_key);
+ if (overflow == 0)
return 1;
+ btrfs_set_key_overflow(&key, overflow - 1);
btrfs_release_path(root, path);
}
return 1;