diff options
author | Christoph Hellwig <hch@infradead.org> | 2010-06-23 21:36:58 -0400 |
---|---|---|
committer | Alex Elder <aelder@sgi.com> | 2010-07-26 14:16:36 -0400 |
commit | 898621d5a72c6799a9a13fce20443b4b6699899c (patch) | |
tree | 6cd994bd8d24f4f4f6ac5b5b57e0b99ee02d4ba6 /fs/xfs/xfs_bmap.c | |
parent | 4d16e9246fc3b3cf7bc95609eff66929a39daa06 (diff) |
xfs: simplify inode to transaction joining
Currently we need to either call IHOLD or xfs_trans_ihold on an inode when
joining it to a transaction via xfs_trans_ijoin.
This patches instead makes xfs_trans_ijoin usable on it's own by doing
an implicity xfs_trans_ihold, which also allows us to drop the third
argument. For the case where we want to hold a reference on the inode
a xfs_trans_ijoin_ref wrapper is added which does the IHOLD and marks
the inode for needing an xfs_iput. In addition to the cleaner interface
to the caller this also simplifies the implementation.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Diffstat (limited to 'fs/xfs/xfs_bmap.c')
-rw-r--r-- | fs/xfs/xfs_bmap.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index ff8675b41973..e0389656ad2c 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c | |||
@@ -3751,9 +3751,10 @@ xfs_bmap_add_attrfork( | |||
3751 | ip->i_d.di_aformat = XFS_DINODE_FMT_EXTENTS; | 3751 | ip->i_d.di_aformat = XFS_DINODE_FMT_EXTENTS; |
3752 | } | 3752 | } |
3753 | ASSERT(ip->i_d.di_anextents == 0); | 3753 | ASSERT(ip->i_d.di_anextents == 0); |
3754 | IHOLD(ip); | 3754 | |
3755 | xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); | 3755 | xfs_trans_ijoin_ref(tp, ip, XFS_ILOCK_EXCL); |
3756 | xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); | 3756 | xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); |
3757 | |||
3757 | switch (ip->i_d.di_format) { | 3758 | switch (ip->i_d.di_format) { |
3758 | case XFS_DINODE_FMT_DEV: | 3759 | case XFS_DINODE_FMT_DEV: |
3759 | ip->i_d.di_forkoff = roundup(sizeof(xfs_dev_t), 8) >> 3; | 3760 | ip->i_d.di_forkoff = roundup(sizeof(xfs_dev_t), 8) >> 3; |