diff options
author | Li Zefan <lizf@cn.fujitsu.com> | 2011-04-19 22:31:50 -0400 |
---|---|---|
committer | Li Zefan <lizf@cn.fujitsu.com> | 2011-04-25 04:46:09 -0400 |
commit | 33345d01522f8152f99dc84a3e7a1a45707f387f (patch) | |
tree | 6a978702dc4421768e63501fa15bc8fedd5bff32 /fs/btrfs/transaction.c | |
parent | 0414efae7989a2183fb2cc000ab285c4c2836a00 (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.c | 4 |
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); |