mirror of
https://github.com/torvalds/linux.git
synced 2024-10-26 15:02:39 +00:00
xfs: remove xfs_ipin/xfs_iunpin
Inodes are only pinned/unpinned via the inode item methods, and lots of code relies on that fact. So remove the separate xfs_ipin/xfs_iunpin helpers and merge them into their only callers. This also fixes up various duplicate and/or incorrect comments. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <david@fromorbit.com> Signed-off-by: Alex Elder <aelder@sgi.com>
This commit is contained in:
parent
60ec678371
commit
a14a5ab58f
|
@ -2438,34 +2438,6 @@ xfs_idestroy_fork(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Increment the pin count of the given buffer.
|
|
||||||
* This value is protected by ipinlock spinlock in the mount structure.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
xfs_ipin(
|
|
||||||
xfs_inode_t *ip)
|
|
||||||
{
|
|
||||||
ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));
|
|
||||||
|
|
||||||
atomic_inc(&ip->i_pincount);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Decrement the pin count of the given inode, and wake up
|
|
||||||
* anyone in xfs_iwait_unpin() if the count goes to 0. The
|
|
||||||
* inode must have been previously pinned with a call to xfs_ipin().
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
xfs_iunpin(
|
|
||||||
xfs_inode_t *ip)
|
|
||||||
{
|
|
||||||
ASSERT(atomic_read(&ip->i_pincount) > 0);
|
|
||||||
|
|
||||||
if (atomic_dec_and_test(&ip->i_pincount))
|
|
||||||
wake_up(&ip->i_ipin_wait);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is called to unpin an inode. The caller must have the inode locked
|
* This is called to unpin an inode. The caller must have the inode locked
|
||||||
* in at least shared mode so that the buffer cannot be subsequently pinned
|
* in at least shared mode so that the buffer cannot be subsequently pinned
|
||||||
|
|
|
@ -471,8 +471,6 @@ int xfs_itruncate_finish(struct xfs_trans **, xfs_inode_t *,
|
||||||
int xfs_iunlink(struct xfs_trans *, xfs_inode_t *);
|
int xfs_iunlink(struct xfs_trans *, xfs_inode_t *);
|
||||||
|
|
||||||
void xfs_iext_realloc(xfs_inode_t *, int, int);
|
void xfs_iext_realloc(xfs_inode_t *, int, int);
|
||||||
void xfs_ipin(xfs_inode_t *);
|
|
||||||
void xfs_iunpin(xfs_inode_t *);
|
|
||||||
void xfs_iunpin_wait(xfs_inode_t *);
|
void xfs_iunpin_wait(xfs_inode_t *);
|
||||||
int xfs_iflush(xfs_inode_t *, uint);
|
int xfs_iflush(xfs_inode_t *, uint);
|
||||||
void xfs_ichgtime(xfs_inode_t *, int);
|
void xfs_ichgtime(xfs_inode_t *, int);
|
||||||
|
|
|
@ -535,23 +535,23 @@ xfs_inode_item_format(
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is called to pin the inode associated with the inode log
|
* This is called to pin the inode associated with the inode log
|
||||||
* item in memory so it cannot be written out. Do this by calling
|
* item in memory so it cannot be written out.
|
||||||
* xfs_ipin() to bump the pin count in the inode while holding the
|
|
||||||
* inode pin lock.
|
|
||||||
*/
|
*/
|
||||||
STATIC void
|
STATIC void
|
||||||
xfs_inode_item_pin(
|
xfs_inode_item_pin(
|
||||||
xfs_inode_log_item_t *iip)
|
xfs_inode_log_item_t *iip)
|
||||||
{
|
{
|
||||||
ASSERT(xfs_isilocked(iip->ili_inode, XFS_ILOCK_EXCL));
|
ASSERT(xfs_isilocked(iip->ili_inode, XFS_ILOCK_EXCL));
|
||||||
xfs_ipin(iip->ili_inode);
|
|
||||||
|
atomic_inc(&iip->ili_inode->i_pincount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is called to unpin the inode associated with the inode log
|
* This is called to unpin the inode associated with the inode log
|
||||||
* item which was previously pinned with a call to xfs_inode_item_pin().
|
* item which was previously pinned with a call to xfs_inode_item_pin().
|
||||||
* Just call xfs_iunpin() on the inode to do this.
|
*
|
||||||
|
* Also wake up anyone in xfs_iunpin_wait() if the count goes to 0.
|
||||||
*/
|
*/
|
||||||
/* ARGSUSED */
|
/* ARGSUSED */
|
||||||
STATIC void
|
STATIC void
|
||||||
|
@ -559,7 +559,11 @@ xfs_inode_item_unpin(
|
||||||
xfs_inode_log_item_t *iip,
|
xfs_inode_log_item_t *iip,
|
||||||
int stale)
|
int stale)
|
||||||
{
|
{
|
||||||
xfs_iunpin(iip->ili_inode);
|
struct xfs_inode *ip = iip->ili_inode;
|
||||||
|
|
||||||
|
ASSERT(atomic_read(&ip->i_pincount) > 0);
|
||||||
|
if (atomic_dec_and_test(&ip->i_pincount))
|
||||||
|
wake_up(&ip->i_ipin_wait);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ARGSUSED */
|
/* ARGSUSED */
|
||||||
|
@ -568,7 +572,7 @@ xfs_inode_item_unpin_remove(
|
||||||
xfs_inode_log_item_t *iip,
|
xfs_inode_log_item_t *iip,
|
||||||
xfs_trans_t *tp)
|
xfs_trans_t *tp)
|
||||||
{
|
{
|
||||||
xfs_iunpin(iip->ili_inode);
|
xfs_inode_item_unpin(iip, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue
Block a user