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>
This commit is contained in:
@@ -397,13 +397,12 @@ static u64 hash_extent_ref(u64 root_objectid, u64 ref_generation,
|
|||||||
high_crc = crc32c(high_crc, &lenum, sizeof(lenum));
|
high_crc = crc32c(high_crc, &lenum, sizeof(lenum));
|
||||||
lenum = cpu_to_le64(ref_generation);
|
lenum = cpu_to_le64(ref_generation);
|
||||||
low_crc = crc32c(low_crc, &lenum, sizeof(lenum));
|
low_crc = crc32c(low_crc, &lenum, sizeof(lenum));
|
||||||
|
if (owner >= BTRFS_FIRST_FREE_OBJECTID) {
|
||||||
#if 0
|
lenum = cpu_to_le64(owner);
|
||||||
lenum = cpu_to_le64(owner);
|
low_crc = crc32c(low_crc, &lenum, sizeof(lenum));
|
||||||
low_crc = crc32c(low_crc, &lenum, sizeof(lenum));
|
lenum = cpu_to_le64(owner_offset);
|
||||||
lenum = cpu_to_le64(owner_offset);
|
low_crc = crc32c(low_crc, &lenum, sizeof(lenum));
|
||||||
low_crc = crc32c(low_crc, &lenum, sizeof(lenum));
|
}
|
||||||
#endif
|
|
||||||
return ((u64)high_crc << 32) | (u64)low_crc;
|
return ((u64)high_crc << 32) | (u64)low_crc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user