Commit 1edd2c05 authored by Darrick J. Wong's avatar Darrick J. Wong

xfs: don't fail unwritten extent conversion on writeback due to edquot

During writeback, it's possible for the quota block reservation in
xfs_iomap_write_unwritten to fail with EDQUOT because we hit the quota
limit.  This causes writeback errors for data that was already written
to disk, when it's not even guaranteed that the bmbt will expand to
exceed the quota limit.  Irritatingly, this condition is reported to
userspace as EIO by fsync, which is confusing.

We wrote the data, so allow the reservation.  That might put us slightly
above the hard limit, but it's better than losing data after a write.
Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
parent 964176bd
...@@ -563,7 +563,7 @@ xfs_iomap_write_unwritten( ...@@ -563,7 +563,7 @@ xfs_iomap_write_unwritten(
xfs_trans_ijoin(tp, ip, 0); xfs_trans_ijoin(tp, ip, 0);
error = xfs_trans_reserve_quota_nblks(tp, ip, resblks, 0, error = xfs_trans_reserve_quota_nblks(tp, ip, resblks, 0,
XFS_QMOPT_RES_REGBLKS); XFS_QMOPT_RES_REGBLKS | XFS_QMOPT_FORCE_RES);
if (error) if (error)
goto error_on_bmapi_transaction; goto error_on_bmapi_transaction;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment