Skip to content

Commit

Permalink
xfs: return the buffer locked from xfs_buf_get_uncached
Browse files Browse the repository at this point in the history
All other xfs_buf_get/read-like helpers return the buffer locked, make sure
xfs_buf_get_uncached isn't different for no reason.  Half of the callers
already lock it directly after, and the others probably should also keep
it locked if only for consistency and beeing able to use xfs_buf_rele,
but I'll leave that for later.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Alex Elder <aelder@sgi.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
  • Loading branch information
Christoph Hellwig committed Jul 8, 2011
1 parent 0c842ad commit c8da0fa
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 7 deletions.
3 changes: 0 additions & 3 deletions fs/xfs/linux-2.6/xfs_buf.c
Original file line number Diff line number Diff line change
Expand Up @@ -679,7 +679,6 @@ xfs_buf_read_uncached(
return NULL;

/* set up the buffer for a read IO */
xfs_buf_lock(bp);
XFS_BUF_SET_ADDR(bp, daddr);
XFS_BUF_READ(bp);
XFS_BUF_BUSY(bp);
Expand Down Expand Up @@ -814,8 +813,6 @@ xfs_buf_get_uncached(
goto fail_free_mem;
}

xfs_buf_unlock(bp);

trace_xfs_buf_get_uncached(bp, _RET_IP_);
return bp;

Expand Down
3 changes: 1 addition & 2 deletions fs/xfs/xfs_log.c
Original file line number Diff line number Diff line change
Expand Up @@ -1090,8 +1090,7 @@ xlog_alloc_log(xfs_mount_t *mp,
log->l_iclog_size, 0);
if (!bp)
goto out_free_iclog;
if (!xfs_buf_trylock(bp))
ASSERT(0);

XFS_BUF_SET_IODONE_FUNC(bp, xlog_iodone);
XFS_BUF_SET_FSPRIVATE2(bp, (unsigned long)1);
iclog->ic_bp = bp;
Expand Down
8 changes: 6 additions & 2 deletions fs/xfs/xfs_log_recover.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,8 @@ xlog_get_bp(
xlog_t *log,
int nbblks)
{
struct xfs_buf *bp;

if (!xlog_buf_bbcount_valid(log, nbblks)) {
xfs_warn(log->l_mp, "Invalid block length (0x%x) for buffer",
nbblks);
Expand Down Expand Up @@ -118,8 +120,10 @@ xlog_get_bp(
nbblks += log->l_sectBBsize;
nbblks = round_up(nbblks, log->l_sectBBsize);

return xfs_buf_get_uncached(log->l_mp->m_logdev_targp,
BBTOB(nbblks), 0);
bp = xfs_buf_get_uncached(log->l_mp->m_logdev_targp, BBTOB(nbblks), 0);
if (bp)
xfs_buf_unlock(bp);
return bp;
}

STATIC void
Expand Down
2 changes: 2 additions & 0 deletions fs/xfs/xfs_vnodeops.c
Original file line number Diff line number Diff line change
Expand Up @@ -1969,6 +1969,8 @@ xfs_zero_remaining_bytes(
if (!bp)
return XFS_ERROR(ENOMEM);

xfs_buf_unlock(bp);

for (offset = startoff; offset <= endoff; offset = lastoffset + 1) {
offset_fsb = XFS_B_TO_FSBT(mp, offset);
nimap = 1;
Expand Down

0 comments on commit c8da0fa

Please sign in to comment.