Btrfs: Always use 64bit inode number
There's a potential problem in 32bit system when we exhaust 32bit inode numbers and start to allocate big inode numbers, because btrfs uses inode->i_ino in many places. So here we always use BTRFS_I(inode)->location.objectid, which is an u64 variable. There are 2 exceptions that BTRFS_I(inode)->location.objectid != inode->i_ino: the btree inode (0 vs 1) and empty subvol dirs (256 vs 2), and inode->i_ino will be used in those cases. Another reason to make this change is I'm going to use a special inode to save free ino cache, and the inode number must be > (u64)-256. Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
This commit is contained in:
@ -125,9 +125,10 @@ static int check_compressed_csum(struct inode *inode,
|
||||
kunmap_atomic(kaddr, KM_USER0);
|
||||
|
||||
if (csum != *cb_sum) {
|
||||
printk(KERN_INFO "btrfs csum failed ino %lu "
|
||||
printk(KERN_INFO "btrfs csum failed ino %llu "
|
||||
"extent %llu csum %u "
|
||||
"wanted %u mirror %d\n", inode->i_ino,
|
||||
"wanted %u mirror %d\n",
|
||||
(unsigned long long)btrfs_ino(inode),
|
||||
(unsigned long long)disk_start,
|
||||
csum, *cb_sum, cb->mirror_num);
|
||||
ret = -EIO;
|
||||
|
Reference in New Issue
Block a user