diff options
Diffstat (limited to 'fs/btrfs/ordered-data.c')
| -rw-r--r-- | fs/btrfs/ordered-data.c | 7 | 
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c index a8ffecd0b491..a127c0ebb2dc 100644 --- a/fs/btrfs/ordered-data.c +++ b/fs/btrfs/ordered-data.c @@ -16,7 +16,6 @@   * Boston, MA 021110-1307, USA.   */ -#include <linux/gfp.h>  #include <linux/slab.h>  #include <linux/blkdev.h>  #include <linux/writeback.h> @@ -303,6 +302,7 @@ static int __btrfs_remove_ordered_extent(struct inode *inode,  				struct btrfs_ordered_extent *entry)  {  	struct btrfs_ordered_inode_tree *tree; +	struct btrfs_root *root = BTRFS_I(inode)->root;  	struct rb_node *node;  	tree = &BTRFS_I(inode)->ordered_tree; @@ -312,12 +312,13 @@ static int __btrfs_remove_ordered_extent(struct inode *inode,  	set_bit(BTRFS_ORDERED_COMPLETE, &entry->flags);  	spin_lock(&BTRFS_I(inode)->accounting_lock); +	WARN_ON(!BTRFS_I(inode)->outstanding_extents);  	BTRFS_I(inode)->outstanding_extents--;  	spin_unlock(&BTRFS_I(inode)->accounting_lock);  	btrfs_unreserve_metadata_for_delalloc(BTRFS_I(inode)->root,  					      inode, 1); -	spin_lock(&BTRFS_I(inode)->root->fs_info->ordered_extent_lock); +	spin_lock(&root->fs_info->ordered_extent_lock);  	list_del_init(&entry->root_extent_list);  	/* @@ -329,7 +330,7 @@ static int __btrfs_remove_ordered_extent(struct inode *inode,  	    !mapping_tagged(inode->i_mapping, PAGECACHE_TAG_DIRTY)) {  		list_del_init(&BTRFS_I(inode)->ordered_operations);  	} -	spin_unlock(&BTRFS_I(inode)->root->fs_info->ordered_extent_lock); +	spin_unlock(&root->fs_info->ordered_extent_lock);  	return 0;  }  | 
