Loading fs/btrfs/inode.c +17 −5 Original line number Diff line number Diff line Loading @@ -2518,7 +2518,9 @@ static void btrfs_read_locked_inode(struct inode *inode) filled = true; path = btrfs_alloc_path(); BUG_ON(!path); if (!path) goto make_bad; path->leave_spinning = 1; memcpy(&location, &BTRFS_I(inode)->location, sizeof(location)); Loading Loading @@ -3973,6 +3975,7 @@ struct inode *btrfs_iget(struct super_block *s, struct btrfs_key *location, struct btrfs_root *root, int *new) { struct inode *inode; int bad_inode = 0; inode = btrfs_iget_locked(s, location->objectid, root); if (!inode) Loading @@ -3982,10 +3985,19 @@ struct inode *btrfs_iget(struct super_block *s, struct btrfs_key *location, BTRFS_I(inode)->root = root; memcpy(&BTRFS_I(inode)->location, location, sizeof(*location)); btrfs_read_locked_inode(inode); if (!is_bad_inode(inode)) { inode_tree_add(inode); unlock_new_inode(inode); if (new) *new = 1; } else { bad_inode = 1; } } if (bad_inode) { iput(inode); inode = ERR_PTR(-ESTALE); } return inode; Loading Loading
fs/btrfs/inode.c +17 −5 Original line number Diff line number Diff line Loading @@ -2518,7 +2518,9 @@ static void btrfs_read_locked_inode(struct inode *inode) filled = true; path = btrfs_alloc_path(); BUG_ON(!path); if (!path) goto make_bad; path->leave_spinning = 1; memcpy(&location, &BTRFS_I(inode)->location, sizeof(location)); Loading Loading @@ -3973,6 +3975,7 @@ struct inode *btrfs_iget(struct super_block *s, struct btrfs_key *location, struct btrfs_root *root, int *new) { struct inode *inode; int bad_inode = 0; inode = btrfs_iget_locked(s, location->objectid, root); if (!inode) Loading @@ -3982,10 +3985,19 @@ struct inode *btrfs_iget(struct super_block *s, struct btrfs_key *location, BTRFS_I(inode)->root = root; memcpy(&BTRFS_I(inode)->location, location, sizeof(*location)); btrfs_read_locked_inode(inode); if (!is_bad_inode(inode)) { inode_tree_add(inode); unlock_new_inode(inode); if (new) *new = 1; } else { bad_inode = 1; } } if (bad_inode) { iput(inode); inode = ERR_PTR(-ESTALE); } return inode; Loading