aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/transaction.c
diff options
context:
space:
mode:
authorLi Zefan <lizf@cn.fujitsu.com>2011-04-19 22:31:50 -0400
committerLi Zefan <lizf@cn.fujitsu.com>2011-04-25 04:46:09 -0400
commit33345d01522f8152f99dc84a3e7a1a45707f387f (patch)
tree6a978702dc4421768e63501fa15bc8fedd5bff32 /fs/btrfs/transaction.c
parent0414efae7989a2183fb2cc000ab285c4c2836a00 (diff)
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>
Diffstat (limited to 'fs/btrfs/transaction.c')
-rw-r--r--fs/btrfs/transaction.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
index aef6c81e7101..f4c1184b7f1a 100644
--- a/fs/btrfs/transaction.c
+++ b/fs/btrfs/transaction.c
@@ -972,7 +972,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
972 BUG_ON(ret); 972 BUG_ON(ret);
973 ret = btrfs_insert_dir_item(trans, parent_root, 973 ret = btrfs_insert_dir_item(trans, parent_root,
974 dentry->d_name.name, dentry->d_name.len, 974 dentry->d_name.name, dentry->d_name.len,
975 parent_inode->i_ino, &key, 975 btrfs_ino(parent_inode), &key,
976 BTRFS_FT_DIR, index); 976 BTRFS_FT_DIR, index);
977 BUG_ON(ret); 977 BUG_ON(ret);
978 978
@@ -1014,7 +1014,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
1014 */ 1014 */
1015 ret = btrfs_add_root_ref(trans, tree_root, objectid, 1015 ret = btrfs_add_root_ref(trans, tree_root, objectid,
1016 parent_root->root_key.objectid, 1016 parent_root->root_key.objectid,
1017 parent_inode->i_ino, index, 1017 btrfs_ino(parent_inode), index,
1018 dentry->d_name.name, dentry->d_name.len); 1018 dentry->d_name.name, dentry->d_name.len);
1019 BUG_ON(ret); 1019 BUG_ON(ret);
1020 dput(parent); 1020 dput(parent);