Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 549b4fdb authored by Josef Bacik's avatar Josef Bacik
Browse files

Btrfs: check the return value of filemap_write_and_wait in the space cache



We need to check the return value of filemap_write_and_wait in the space cache
writeout code.  Also don't set the inode's generation until we're sure nothing
else is going to fail.  Thanks,

Signed-off-by: default avatarJosef Bacik <josef@redhat.com>
parent a67509c3
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -852,9 +852,10 @@ int __btrfs_write_out_cache(struct btrfs_root *root, struct inode *inode,
	if (ret)
		goto out;

	BTRFS_I(inode)->generation = trans->transid;

	filemap_write_and_wait(inode->i_mapping);
	ret = filemap_write_and_wait(inode->i_mapping);
	if (ret)
		goto out;

	key.objectid = BTRFS_FREE_SPACE_OBJECTID;
	key.offset = offset;
@@ -884,6 +885,8 @@ int __btrfs_write_out_cache(struct btrfs_root *root, struct inode *inode,
			goto out;
		}
	}

	BTRFS_I(inode)->generation = trans->transid;
	header = btrfs_item_ptr(leaf, path->slots[0],
				struct btrfs_free_space_header);
	btrfs_set_free_space_entries(leaf, header, entries);