Loading fs/btrfs/ctree.h +1 −0 Original line number Diff line number Diff line Loading @@ -1144,6 +1144,7 @@ int btrfs_check_free_space(struct btrfs_root *root, u64 num_required, int btrfs_page_mkwrite(struct vm_area_struct *vma, struct page *page); int btrfs_readpage(struct file *file, struct page *page); void btrfs_delete_inode(struct inode *inode); void btrfs_drop_inode(struct inode *inode); void btrfs_read_locked_inode(struct inode *inode); int btrfs_write_inode(struct inode *inode, int wait); void btrfs_dirty_inode(struct inode *inode); Loading fs/btrfs/inode.c +19 −0 Original line number Diff line number Diff line Loading @@ -990,6 +990,25 @@ static int btrfs_setattr(struct dentry *dentry, struct iattr *attr) fail: return err; } void btrfs_drop_inode(struct inode *inode) { struct btrfs_trans_handle *trans; struct btrfs_root *root = BTRFS_I(inode)->root; if (!BTRFS_I(inode)->ordered_trans) { generic_drop_inode(inode); return; } /* nasty, but it prevents a deadlock with data=ordered by preventing * a commit until after this inode is done */ trans = btrfs_start_transaction(root, 1); generic_drop_inode(inode); /* note, the inode is now untouchable */ btrfs_end_transaction(trans, root); } void btrfs_delete_inode(struct inode *inode) { struct btrfs_trans_handle *trans; Loading fs/btrfs/super.c +1 −0 Original line number Diff line number Diff line Loading @@ -425,6 +425,7 @@ static struct file_system_type btrfs_fs_type = { static struct super_operations btrfs_super_ops = { .delete_inode = btrfs_delete_inode, .drop_inode = btrfs_drop_inode, .put_super = btrfs_put_super, .read_inode = btrfs_read_locked_inode, .write_super = btrfs_write_super, Loading Loading
fs/btrfs/ctree.h +1 −0 Original line number Diff line number Diff line Loading @@ -1144,6 +1144,7 @@ int btrfs_check_free_space(struct btrfs_root *root, u64 num_required, int btrfs_page_mkwrite(struct vm_area_struct *vma, struct page *page); int btrfs_readpage(struct file *file, struct page *page); void btrfs_delete_inode(struct inode *inode); void btrfs_drop_inode(struct inode *inode); void btrfs_read_locked_inode(struct inode *inode); int btrfs_write_inode(struct inode *inode, int wait); void btrfs_dirty_inode(struct inode *inode); Loading
fs/btrfs/inode.c +19 −0 Original line number Diff line number Diff line Loading @@ -990,6 +990,25 @@ static int btrfs_setattr(struct dentry *dentry, struct iattr *attr) fail: return err; } void btrfs_drop_inode(struct inode *inode) { struct btrfs_trans_handle *trans; struct btrfs_root *root = BTRFS_I(inode)->root; if (!BTRFS_I(inode)->ordered_trans) { generic_drop_inode(inode); return; } /* nasty, but it prevents a deadlock with data=ordered by preventing * a commit until after this inode is done */ trans = btrfs_start_transaction(root, 1); generic_drop_inode(inode); /* note, the inode is now untouchable */ btrfs_end_transaction(trans, root); } void btrfs_delete_inode(struct inode *inode) { struct btrfs_trans_handle *trans; Loading
fs/btrfs/super.c +1 −0 Original line number Diff line number Diff line Loading @@ -425,6 +425,7 @@ static struct file_system_type btrfs_fs_type = { static struct super_operations btrfs_super_ops = { .delete_inode = btrfs_delete_inode, .drop_inode = btrfs_drop_inode, .put_super = btrfs_put_super, .read_inode = btrfs_read_locked_inode, .write_super = btrfs_write_super, Loading