mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-23 23:21:46 +00:00
[XFS] Fixes a bug in the quota code when allocating a new dquot record
which can cause an extent hole to be filled and a free extent to be processed. In this case, we make a few mistakes: forget to pass back the transaction, forget to put a hold on the buffer and forget to add the buf to the new transaction. SGI-PV: 940366 SGI-Modid: xfs-linux:xfs-kern:23594a Signed-off-by: Tim Shimmin <tes@sgi.com> Signed-off-by: Nathan Scott <nathans@sgi.com>
This commit is contained in:
parent
0f9fffbcc1
commit
efa092f3d4
3 changed files with 60 additions and 7 deletions
|
@ -713,6 +713,29 @@ xfs_trans_bhold(xfs_trans_t *tp,
|
|||
xfs_buf_item_trace("BHOLD", bip);
|
||||
}
|
||||
|
||||
/*
|
||||
* Cancel the previous buffer hold request made on this buffer
|
||||
* for this transaction.
|
||||
*/
|
||||
void
|
||||
xfs_trans_bhold_release(xfs_trans_t *tp,
|
||||
xfs_buf_t *bp)
|
||||
{
|
||||
xfs_buf_log_item_t *bip;
|
||||
|
||||
ASSERT(XFS_BUF_ISBUSY(bp));
|
||||
ASSERT(XFS_BUF_FSPRIVATE2(bp, xfs_trans_t *) == tp);
|
||||
ASSERT(XFS_BUF_FSPRIVATE(bp, void *) != NULL);
|
||||
|
||||
bip = XFS_BUF_FSPRIVATE(bp, xfs_buf_log_item_t *);
|
||||
ASSERT(!(bip->bli_flags & XFS_BLI_STALE));
|
||||
ASSERT(!(bip->bli_format.blf_flags & XFS_BLI_CANCEL));
|
||||
ASSERT(atomic_read(&bip->bli_refcount) > 0);
|
||||
ASSERT(bip->bli_flags & XFS_BLI_HOLD);
|
||||
bip->bli_flags &= ~XFS_BLI_HOLD;
|
||||
xfs_buf_item_trace("BHOLD RELEASE", bip);
|
||||
}
|
||||
|
||||
/*
|
||||
* This is called to mark bytes first through last inclusive of the given
|
||||
* buffer as needing to be logged when the transaction is committed.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue