diff options
author | Chris Mason <chris.mason@oracle.com> | 2008-02-01 14:51:59 -0500 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2008-09-25 11:04:00 -0400 |
commit | 21a4989d26d5ce43aac452fd67be592463a5996d (patch) | |
tree | 5e4c4829264dcae66917ead9625c64ef11646abe /fs/btrfs/extent-tree.c | |
parent | 47e4bb988c853d9af79d76fc5135aee9eeffed77 (diff) |
Btrfs: Hash in the offset and owner for file extent backref keys
This makes searches for backrefs and backref insertion much more efficient
when there are many backrefs for a single extent
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/extent-tree.c')
-rw-r--r-- | fs/btrfs/extent-tree.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 0fc8dfd58da9..8761aec59e37 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
@@ -397,13 +397,12 @@ static u64 hash_extent_ref(u64 root_objectid, u64 ref_generation, | |||
397 | high_crc = crc32c(high_crc, &lenum, sizeof(lenum)); | 397 | high_crc = crc32c(high_crc, &lenum, sizeof(lenum)); |
398 | lenum = cpu_to_le64(ref_generation); | 398 | lenum = cpu_to_le64(ref_generation); |
399 | low_crc = crc32c(low_crc, &lenum, sizeof(lenum)); | 399 | low_crc = crc32c(low_crc, &lenum, sizeof(lenum)); |
400 | 400 | if (owner >= BTRFS_FIRST_FREE_OBJECTID) { | |
401 | #if 0 | 401 | lenum = cpu_to_le64(owner); |
402 | lenum = cpu_to_le64(owner); | 402 | low_crc = crc32c(low_crc, &lenum, sizeof(lenum)); |
403 | low_crc = crc32c(low_crc, &lenum, sizeof(lenum)); | 403 | lenum = cpu_to_le64(owner_offset); |
404 | lenum = cpu_to_le64(owner_offset); | 404 | low_crc = crc32c(low_crc, &lenum, sizeof(lenum)); |
405 | low_crc = crc32c(low_crc, &lenum, sizeof(lenum)); | 405 | } |
406 | #endif | ||
407 | return ((u64)high_crc << 32) | (u64)low_crc; | 406 | return ((u64)high_crc << 32) | (u64)low_crc; |
408 | } | 407 | } |
409 | 408 | ||