Commit 90c0304c authored by Nikolay Borisov's avatar Nikolay Borisov Committed by David Sterba
Browse files

btrfs: make btrfs_dec_test_ordered_pending take btrfs_inode

parent acbf1dd0
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -2781,8 +2781,8 @@ void btrfs_writepage_endio_finish_ordered(struct page *page, u64 start,
	trace_btrfs_writepage_end_io_hook(page, start, end, uptodate);

	ClearPagePrivate2(page);
	if (!btrfs_dec_test_ordered_pending(inode, &ordered_extent, start,
					    end - start + 1, uptodate))
	if (!btrfs_dec_test_ordered_pending(BTRFS_I(inode), &ordered_extent,
					    start, end - start + 1, uptodate))
		return;

	if (btrfs_is_free_space_inode(BTRFS_I(inode)))
@@ -8184,8 +8184,8 @@ static void btrfs_invalidatepage(struct page *page, unsigned int offset,
				ordered->truncated_len = new_len;
			spin_unlock_irq(&tree->lock);

			if (btrfs_dec_test_ordered_pending(inode, &ordered,
							   start,
			if (btrfs_dec_test_ordered_pending(BTRFS_I(inode),
							   &ordered, start,
							   end - start + 1, 1))
				btrfs_finish_ordered_io(ordered);
		}
+3 −4
Original line number Diff line number Diff line
@@ -378,17 +378,16 @@ int btrfs_dec_test_first_ordered_pending(struct btrfs_inode *inode,
 * test_and_set_bit on a flag in the struct btrfs_ordered_extent is used
 * to make sure this function only returns 1 once for a given ordered extent.
 */
int btrfs_dec_test_ordered_pending(struct inode *inode,
int btrfs_dec_test_ordered_pending(struct btrfs_inode *inode,
				   struct btrfs_ordered_extent **cached,
				   u64 file_offset, u64 io_size, int uptodate)
{
	struct btrfs_ordered_inode_tree *tree;
	struct btrfs_ordered_inode_tree *tree = &inode->ordered_tree;
	struct rb_node *node;
	struct btrfs_ordered_extent *entry = NULL;
	unsigned long flags;
	int ret;

	tree = &BTRFS_I(inode)->ordered_tree;
	spin_lock_irqsave(&tree->lock, flags);
	if (cached && *cached) {
		entry = *cached;
@@ -409,7 +408,7 @@ int btrfs_dec_test_ordered_pending(struct inode *inode,
	}

	if (io_size > entry->bytes_left) {
		btrfs_crit(BTRFS_I(inode)->root->fs_info,
		btrfs_crit(inode->root->fs_info,
			   "bad ordered accounting left %llu size %llu",
		       entry->bytes_left, io_size);
	}
+1 −1
Original line number Diff line number Diff line
@@ -153,7 +153,7 @@ btrfs_ordered_inode_tree_init(struct btrfs_ordered_inode_tree *t)
void btrfs_put_ordered_extent(struct btrfs_ordered_extent *entry);
void btrfs_remove_ordered_extent(struct inode *inode,
				struct btrfs_ordered_extent *entry);
int btrfs_dec_test_ordered_pending(struct inode *inode,
int btrfs_dec_test_ordered_pending(struct btrfs_inode *inode,
				   struct btrfs_ordered_extent **cached,
				   u64 file_offset, u64 io_size, int uptodate);
int btrfs_dec_test_first_ordered_pending(struct btrfs_inode *inode,