From dc94c584f6d98c966d00aabe54ee04f9b523c465 Mon Sep 17 00:00:00 2001 From: Josef 'Jeff' Sipek Date: Tue, 4 Jul 2017 00:47:09 +0300 Subject: [PATCH] ufs: treat transaction macros as pass by value (not name) --- include/sys/fs/ufs_fs.h | 4 +- include/sys/fs/ufs_trans.h | 26 ++++----- kernel/fs/ufs/ufs_alloc.c | 30 +++++------ kernel/fs/ufs/ufs_dir.c | 6 +-- kernel/fs/ufs/ufs_extvnops.c | 8 +-- kernel/fs/ufs/ufs_lockfs.c | 7 +-- kernel/fs/ufs/ufs_subr.c | 6 +-- kernel/fs/ufs/ufs_thread.c | 21 ++++---- kernel/fs/ufs/ufs_trans.c | 8 +-- kernel/fs/ufs/ufs_vfsops.c | 14 ++--- kernel/fs/ufs/ufs_vnops.c | 125 ++++++++++++++++++++++--------------------- 11 files changed, 130 insertions(+), 125 deletions(-) diff --git a/include/sys/fs/ufs_fs.h b/include/sys/fs/ufs_fs.h index 30f8809d86..3f5e10f968 100644 --- a/include/sys/fs/ufs_fs.h +++ b/include/sys/fs/ufs_fs.h @@ -778,8 +778,8 @@ struct ocg { indeadlock = 0; \ while (!rw_tryenter(lock, mode)) { \ if (ulp && ULOCKFS_IS_SLOCK(ulp)) { \ - TRANS_END_CSYNC(ufsvfsp, error, issync, \ - transmode, trans_size); \ + TRANS_END_CSYNC(ufsvfsp, &error, issync, \ + transmode, trans_size); \ ufs_lockfs_end(ulp); \ indeadlock = 1; \ break; \ diff --git a/include/sys/fs/ufs_trans.h b/include/sys/fs/ufs_trans.h index 13093f921a..bbbd4b9432 100644 --- a/include/sys/fs/ufs_trans.h +++ b/include/sys/fs/ufs_trans.h @@ -117,8 +117,8 @@ struct ufsvfs; #define TRANS_BEGIN_SYNC(ufsvfsp, vid, vsize, error)\ {\ if (TRANS_ISTRANS(ufsvfsp)) { \ - error = 0; \ - top_begin_sync(ufsvfsp, vid, vsize, &error); \ + *error = 0; \ + top_begin_sync(ufsvfsp, vid, vsize, error); \ } \ } @@ -137,9 +137,9 @@ struct ufsvfs; #define TRANS_TRY_BEGIN_ASYNC(ufsvfsp, vid, vsize, err)\ {\ if (TRANS_ISTRANS(ufsvfsp))\ - err = top_begin_async(ufsvfsp, vid, vsize, 1); \ + *err = top_begin_async(ufsvfsp, vid, vsize, 1); \ else\ - err = 0; \ + *err = 0; \ } /* @@ -154,10 +154,10 @@ struct ufsvfs; ASSERT(vsize); \ top_begin_sync(ufsvfsp, vid, vsize, &error); \ ASSERT(error == 0); \ - issync = 1; \ + *issync = 1; \ } else {\ (void) top_begin_async(ufsvfsp, vid, vsize, 0); \ - issync = 0; \ + *issync = 0; \ }\ }\ } @@ -171,12 +171,12 @@ struct ufsvfs; if (TRANS_ISTRANS(ufsvfsp)) {\ if (ufsvfsp->vfs_syncdir) {\ ASSERT(vsize); \ - top_begin_sync(ufsvfsp, vid, vsize, &error); \ - ASSERT(error == 0); \ - issync = 1; \ + top_begin_sync(ufsvfsp, vid, vsize, error); \ + ASSERT(*error == 0); \ + *issync = 1; \ } else {\ - error = top_begin_async(ufsvfsp, vid, vsize, 1); \ - issync = 0; \ + *error = top_begin_async(ufsvfsp, vid, vsize, 1); \ + *issync = 0; \ }\ }\ }\ @@ -197,7 +197,7 @@ struct ufsvfs; #define TRANS_END_SYNC(ufsvfsp, error, vid, vsize)\ {\ if (TRANS_ISTRANS(ufsvfsp))\ - top_end_sync(ufsvfsp, &error, vid, vsize); \ + top_end_sync(ufsvfsp, error, vid, vsize); \ } /* @@ -207,7 +207,7 @@ struct ufsvfs; {\ if (TRANS_ISTRANS(ufsvfsp))\ if (issync)\ - top_end_sync(ufsvfsp, &error, vid, vsize); \ + top_end_sync(ufsvfsp, error, vid, vsize); \ else\ top_end_async(ufsvfsp, vid, vsize); \ } diff --git a/kernel/fs/ufs/ufs_alloc.c b/kernel/fs/ufs/ufs_alloc.c index 2619226b6a..bcd3cf0571 100644 --- a/kernel/fs/ufs/ufs_alloc.c +++ b/kernel/fs/ufs/ufs_alloc.c @@ -1622,7 +1622,7 @@ ufs_allocsp(struct vnode *vp, struct flock64 *lp, cred_t *cr) if (lblkno(fs, lp->l_start) < NDADDR) { ufs_trans_trunc_resv(ip, ip->i_size + (NDADDR * fs->fs_bsize), &resv, &resid); - TRANS_BEGIN_CSYNC(ufsvfsp, issync, TOP_ALLOCSP, resv); + TRANS_BEGIN_CSYNC(ufsvfsp, &issync, TOP_ALLOCSP, resv); rw_enter(&ufsvfsp->vfs_dqrwlock, RW_READER); rw_enter(&ip->i_contents, RW_WRITER); @@ -1642,8 +1642,8 @@ ufs_allocsp(struct vnode *vp, struct flock64 *lp, cred_t *cr) TRANS_INODE(ufsvfsp, ip); rw_exit(&ip->i_contents); rw_exit(&ufsvfsp->vfs_dqrwlock); - TRANS_END_CSYNC(ufsvfsp, err, issync, - TOP_ALLOCSP, resv); + TRANS_END_CSYNC(ufsvfsp, &err, issync, + TOP_ALLOCSP, resv); err = allocsp_unlockfs(vp, &lf); goto exit; } @@ -1659,7 +1659,7 @@ ufs_allocsp(struct vnode *vp, struct flock64 *lp, cred_t *cr) TRANS_INODE(ufsvfsp, ip); rw_exit(&ip->i_contents); rw_exit(&ufsvfsp->vfs_dqrwlock); - TRANS_END_CSYNC(ufsvfsp, err, issync, TOP_ALLOCSP, resv); + TRANS_END_CSYNC(ufsvfsp, &err, issync, TOP_ALLOCSP, resv); /* start offset for indirect allocation */ istart = (uoff + nbytes); @@ -1668,7 +1668,7 @@ ufs_allocsp(struct vnode *vp, struct flock64 *lp, cred_t *cr) /* Break the transactions into vfs_iotransz units */ ufs_trans_trunc_resv(ip, ip->i_size + blkroundup(fs, ufsvfsp->vfs_iotransz), &resv, &resid); - TRANS_BEGIN_CSYNC(ufsvfsp, issync, TOP_ALLOCSP, resv); + TRANS_BEGIN_CSYNC(ufsvfsp, &issync, TOP_ALLOCSP, resv); rw_enter(&ufsvfsp->vfs_dqrwlock, RW_READER); rw_enter(&ip->i_contents, RW_WRITER); @@ -1681,8 +1681,8 @@ ufs_allocsp(struct vnode *vp, struct flock64 *lp, cred_t *cr) TRANS_INODE(ufsvfsp, ip); rw_exit(&ip->i_contents); rw_exit(&ufsvfsp->vfs_dqrwlock); - TRANS_END_CSYNC(ufsvfsp, err, issync, - TOP_ALLOCSP, resv); + TRANS_END_CSYNC(ufsvfsp, &err, issync, TOP_ALLOCSP, + resv); err = allocsp_unlockfs(vp, &lf); goto exit; } @@ -1717,8 +1717,8 @@ ufs_allocsp(struct vnode *vp, struct flock64 *lp, cred_t *cr) rw_exit(&ip->i_contents); rw_exit(&ufsvfsp->vfs_dqrwlock); - TRANS_END_CSYNC(ufsvfsp, err, issync, - TOP_ALLOCSP, resv); + TRANS_END_CSYNC(ufsvfsp, &err, issync, + TOP_ALLOCSP, resv); rw_exit(&ip->i_rwlock); (void) allocsp_unlockfs(vp, &lf); return (EIO); @@ -1729,8 +1729,8 @@ ufs_allocsp(struct vnode *vp, struct flock64 *lp, cred_t *cr) rw_exit(&ufsvfsp->vfs_dqrwlock); /* End the current transaction */ - TRANS_END_CSYNC(ufsvfsp, err, issync, - TOP_ALLOCSP, resv); + TRANS_END_CSYNC(ufsvfsp, &err, issync, TOP_ALLOCSP, + resv); if (CV_HAS_WAITERS(&ulp->ul_cv)) { /* Release the write lock */ @@ -1751,7 +1751,7 @@ ufs_allocsp(struct vnode *vp, struct flock64 *lp, cred_t *cr) ufs_trans_trunc_resv(ip, ip->i_size + blkroundup(fs, ufsvfsp->vfs_iotransz), &resv, &resid); - TRANS_BEGIN_CSYNC(ufsvfsp, issync, TOP_ALLOCSP, resv); + TRANS_BEGIN_CSYNC(ufsvfsp, &issync, TOP_ALLOCSP, resv); rw_enter(&ufsvfsp->vfs_dqrwlock, RW_READER); rw_enter(&ip->i_contents, RW_WRITER); @@ -1772,7 +1772,7 @@ ufs_allocsp(struct vnode *vp, struct flock64 *lp, cred_t *cr) rw_exit(&ip->i_contents); rw_exit(&ufsvfsp->vfs_dqrwlock); - TRANS_END_CSYNC(ufsvfsp, err, issync, TOP_ALLOCSP, resv); + TRANS_END_CSYNC(ufsvfsp, &err, issync, TOP_ALLOCSP, resv); err = allocsp_unlockfs(vp, &lf); /* @@ -1800,7 +1800,7 @@ exit: */ if (berr) { ufs_trans_trunc_resv(ip, totblks * fs->fs_bsize, &resv, &resid); - TRANS_BEGIN_CSYNC(ufsvfsp, issync, TOP_ALLOCSP, resv); + TRANS_BEGIN_CSYNC(ufsvfsp, &issync, TOP_ALLOCSP, resv); rw_enter(&ufsvfsp->vfs_dqrwlock, RW_READER); rw_enter(&ip->i_contents, RW_WRITER); @@ -1837,7 +1837,7 @@ exit: rw_exit(&ip->i_contents); rw_exit(&ufsvfsp->vfs_dqrwlock); - TRANS_END_CSYNC(ufsvfsp, err, issync, TOP_ALLOCSP, resv); + TRANS_END_CSYNC(ufsvfsp, &err, issync, TOP_ALLOCSP, resv); rw_exit(&ip->i_rwlock); return (berr); diff --git a/kernel/fs/ufs/ufs_dir.c b/kernel/fs/ufs/ufs_dir.c index d6138539ce..9ed4faa251 100644 --- a/kernel/fs/ufs/ufs_dir.c +++ b/kernel/fs/ufs/ufs_dir.c @@ -3224,7 +3224,7 @@ again: if (ulp) { trans_size = (int)TOP_MKDIR_SIZE(tdp); - TRANS_BEGIN_CSYNC(ufsvfsp, issync, TOP_MKDIR, trans_size); + TRANS_BEGIN_CSYNC(ufsvfsp, &issync, TOP_MKDIR, trans_size); } /* @@ -3281,7 +3281,7 @@ again: if (ulp) { int terr = 0; - TRANS_END_CSYNC(ufsvfsp, err, issync, TOP_MKDIR, trans_size); + TRANS_END_CSYNC(ufsvfsp, &err, issync, TOP_MKDIR, trans_size); ufs_lockfs_end(ulp); if (err == 0) err = terr; @@ -3297,7 +3297,7 @@ fail: if (dorwlock == 2) rw_exit(&tdp->i_rwlock); if (ulp) { - TRANS_END_CSYNC(ufsvfsp, err, issync, TOP_MKDIR, trans_size); + TRANS_END_CSYNC(ufsvfsp, &err, issync, TOP_MKDIR, trans_size); ufs_lockfs_end(ulp); } if (dorwlock == 1) diff --git a/kernel/fs/ufs/ufs_extvnops.c b/kernel/fs/ufs/ufs_extvnops.c index b67e81d886..1c22b1e4bd 100644 --- a/kernel/fs/ufs/ufs_extvnops.c +++ b/kernel/fs/ufs/ufs_extvnops.c @@ -276,8 +276,8 @@ ufs_alloc_data( * Try to begin a UFS log transaction */ trans_size = TOP_GETPAGE_SIZE(ip); - TRANS_TRY_BEGIN_CSYNC(ufsvfsp, issync, TOP_GETPAGE, - trans_size, error); + TRANS_TRY_BEGIN_CSYNC(ufsvfsp, &issync, TOP_GETPAGE, + trans_size, &error); if (error == EWOULDBLOCK) { ufs_lockfs_end(ulp); if ((fdbp != NULL) && (flags & B_ASYNC)) { @@ -516,8 +516,8 @@ ufs_alloc_data( /* * End the UFS Log transaction */ - TRANS_END_CSYNC(ufsvfsp, error, issync, TOP_GETPAGE, - trans_size); + TRANS_END_CSYNC(ufsvfsp, &error, issync, TOP_GETPAGE, + trans_size); ufs_lockfs_end(ulp); } if (io_started && (flags & B_ASYNC)) { diff --git a/kernel/fs/ufs/ufs_lockfs.c b/kernel/fs/ufs/ufs_lockfs.c index d024a8c238..3dcd953a51 100644 --- a/kernel/fs/ufs/ufs_lockfs.c +++ b/kernel/fs/ufs/ufs_lockfs.c @@ -422,11 +422,12 @@ ufs_flush(struct vfs *vfsp) curthread->t_flag |= T_DONTBLOCK; TRANS_BEGIN_SYNC(ufsvfsp, TOP_COMMIT_FLUSH, - TOP_COMMIT_SIZE, error); + TOP_COMMIT_SIZE, &error); if (!error) { - TRANS_END_SYNC(ufsvfsp, saverror, - TOP_COMMIT_FLUSH, TOP_COMMIT_SIZE); + TRANS_END_SYNC(ufsvfsp, &saverror, + TOP_COMMIT_FLUSH, + TOP_COMMIT_SIZE); } if (tdontblock == 0) diff --git a/kernel/fs/ufs/ufs_subr.c b/kernel/fs/ufs/ufs_subr.c index 00a4f833bb..d7f620fe9a 100644 --- a/kernel/fs/ufs/ufs_subr.c +++ b/kernel/fs/ufs/ufs_subr.c @@ -369,10 +369,10 @@ ufs_update(int flag) ufsp = (struct ufsvfs *)vfsp->vfs_data; curthread->t_flag |= T_DONTBLOCK; TRANS_BEGIN_SYNC(ufsp, TOP_COMMIT_UPDATE, TOP_COMMIT_SIZE, - error); + &error); if (!error) { - TRANS_END_SYNC(ufsp, error, TOP_COMMIT_UPDATE, - TOP_COMMIT_SIZE); + TRANS_END_SYNC(ufsp, &error, TOP_COMMIT_UPDATE, + TOP_COMMIT_SIZE); } curthread->t_flag &= ~T_DONTBLOCK; diff --git a/kernel/fs/ufs/ufs_thread.c b/kernel/fs/ufs/ufs_thread.c index 70d6a4f5d3..c58c95c992 100644 --- a/kernel/fs/ufs/ufs_thread.c +++ b/kernel/fs/ufs/ufs_thread.c @@ -305,8 +305,8 @@ ufs_delete(struct ufsvfs *ufsvfsp, struct inode *ip, int dolockfs) * Delete the attribute directory. */ if (ip->i_oeftflag != 0) { - TRANS_BEGIN_CSYNC(ufsvfsp, issync, TOP_REMOVE, - trans_size = (int)TOP_REMOVE_SIZE(ip)); + TRANS_BEGIN_CSYNC(ufsvfsp, &issync, TOP_REMOVE, + trans_size = (int)TOP_REMOVE_SIZE(ip)); rw_enter(&ip->i_contents, RW_WRITER); err = ufs_iget(ip->i_vfs, ip->i_oeftflag, &dp, CRED()); @@ -345,8 +345,7 @@ ufs_delete(struct ufsvfs *ufsvfsp, struct inode *ip, int dolockfs) */ ip->i_oeftflag = 0; rw_exit(&ip->i_contents); - TRANS_END_CSYNC(ufsvfsp, err, issync, - TOP_REMOVE, trans_size); + TRANS_END_CSYNC(ufsvfsp, &err, issync, TOP_REMOVE, trans_size); dnlc_remove(ITOV(ip), XATTR_DIR_NAME); } @@ -595,10 +594,10 @@ ufs_delete_drain_wait(struct ufsvfs *ufsvfsp, int dolockfs) * any canceled freed blocks are available for allocation. */ curthread->t_flag |= T_DONTBLOCK; - TRANS_BEGIN_SYNC(ufsvfsp, TOP_COMMIT_UPDATE, TOP_COMMIT_SIZE, error); + TRANS_BEGIN_SYNC(ufsvfsp, TOP_COMMIT_UPDATE, TOP_COMMIT_SIZE, &error); if (!error) { - TRANS_END_SYNC(ufsvfsp, error, TOP_COMMIT_UPDATE, - TOP_COMMIT_SIZE); + TRANS_END_SYNC(ufsvfsp, &error, TOP_COMMIT_UPDATE, + TOP_COMMIT_SIZE); } curthread->t_flag &= ~T_DONTBLOCK; } @@ -1224,8 +1223,8 @@ ufs_attr_purge(struct inode *dp) goto out; } - TRANS_BEGIN_CSYNC(ufsvfsp, issync, TOP_REMOVE, - trans_size = (int)TOP_REMOVE_SIZE(tp)); + TRANS_BEGIN_CSYNC(ufsvfsp, &issync, TOP_REMOVE, + trans_size = (int)TOP_REMOVE_SIZE(tp)); /* * Delete inode. @@ -1244,8 +1243,8 @@ ufs_attr_purge(struct inode *dp) VN_RELE(ITOV(tp)); entryoffsetinblk += ep->d_reclen; - TRANS_END_CSYNC(ufsvfsp, error, - issync, TOP_REMOVE, trans_size); + TRANS_END_CSYNC(ufsvfsp, &error, issync, TOP_REMOVE, + trans_size); } offset += ep->d_reclen; diff --git a/kernel/fs/ufs/ufs_trans.c b/kernel/fs/ufs/ufs_trans.c index 0eb7769795..8c9bd9678c 100644 --- a/kernel/fs/ufs/ufs_trans.c +++ b/kernel/fs/ufs/ufs_trans.c @@ -826,7 +826,7 @@ ufs_trans_itrunc(struct inode *ip, uoff_t length, int flags, cred_t *cr) */ again: ufs_trans_trunc_resv(ip, length, &resv, &resid); - TRANS_BEGIN_CSYNC(ufsvfsp, issync, TOP_ITRUNC, resv); + TRANS_BEGIN_CSYNC(ufsvfsp, &issync, TOP_ITRUNC, resv); rw_enter(&ufsvfsp->vfs_dqrwlock, RW_READER); rw_enter(&ip->i_contents, RW_WRITER); if (resid) { @@ -854,7 +854,7 @@ again: curthread->t_flag &= ~T_DONTBLOCK; rw_exit(&ip->i_contents); rw_exit(&ufsvfsp->vfs_dqrwlock); - TRANS_END_CSYNC(ufsvfsp, err, issync, TOP_ITRUNC, resv); + TRANS_END_CSYNC(ufsvfsp, &err, issync, TOP_ITRUNC, resv); if ((err == 0) && resid) { ufsvfsp->vfs_avgbfree = fs->fs_cstotal.cs_nbfree / fs->fs_ncg; @@ -961,7 +961,7 @@ again: rw_exit(&ip->i_contents); rw_exit(&ufsvfsp->vfs_dqrwlock); if (ioflag & (FSYNC|FDSYNC)) { - TRANS_END_SYNC(ufsvfsp, err, TOP_WRITE_SYNC, resv); + TRANS_END_SYNC(ufsvfsp, &err, TOP_WRITE_SYNC, resv); } else { TRANS_END_ASYNC(ufsvfsp, TOP_WRITE, resv); } @@ -977,7 +977,7 @@ again: */ if (ioflag & (FSYNC|FDSYNC)) { int error; - TRANS_BEGIN_SYNC(ufsvfsp, TOP_WRITE_SYNC, resv, error); + TRANS_BEGIN_SYNC(ufsvfsp, TOP_WRITE_SYNC, resv, &error); ASSERT(!error); } else { TRANS_BEGIN_ASYNC(ufsvfsp, TOP_WRITE, resv); diff --git a/kernel/fs/ufs/ufs_vfsops.c b/kernel/fs/ufs/ufs_vfsops.c index 544eb56242..1650dbbf2f 100644 --- a/kernel/fs/ufs/ufs_vfsops.c +++ b/kernel/fs/ufs/ufs_vfsops.c @@ -1636,11 +1636,11 @@ ufs_unmount(struct vfs *vfsp, int fflag, struct cred *cr) * push this last transaction */ curthread->t_flag |= T_DONTBLOCK; - TRANS_BEGIN_SYNC(ufsvfsp, TOP_COMMIT_UNMOUNT, TOP_COMMIT_SIZE, - error); + TRANS_BEGIN_SYNC(ufsvfsp, TOP_COMMIT_UNMOUNT, + TOP_COMMIT_SIZE, &error); if (!error) - TRANS_END_SYNC(ufsvfsp, error, TOP_COMMIT_UNMOUNT, - TOP_COMMIT_SIZE); + TRANS_END_SYNC(ufsvfsp, &error, TOP_COMMIT_UNMOUNT, + TOP_COMMIT_SIZE); curthread->t_flag &= ~T_DONTBLOCK; } @@ -1929,10 +1929,10 @@ ufs_sync(struct vfs *vfsp, short flag, struct cred *cr) * commit any outstanding async transactions */ curthread->t_flag |= T_DONTBLOCK; - TRANS_BEGIN_SYNC(ufsvfsp, TOP_COMMIT_UPDATE, TOP_COMMIT_SIZE, error); + TRANS_BEGIN_SYNC(ufsvfsp, TOP_COMMIT_UPDATE, TOP_COMMIT_SIZE, &error); if (!error) { - TRANS_END_SYNC(ufsvfsp, error, TOP_COMMIT_UPDATE, - TOP_COMMIT_SIZE); + TRANS_END_SYNC(ufsvfsp, &error, TOP_COMMIT_UPDATE, + TOP_COMMIT_SIZE); } curthread->t_flag &= ~T_DONTBLOCK; diff --git a/kernel/fs/ufs/ufs_vnops.c b/kernel/fs/ufs/ufs_vnops.c index 05fdd920d9..4a0c550fde 100644 --- a/kernel/fs/ufs/ufs_vnops.c +++ b/kernel/fs/ufs/ufs_vnops.c @@ -350,11 +350,11 @@ ufs_read(struct vnode *vp, struct uio *uiop, int ioflag, struct cred *cr, if (ulp && (ioflag & FRSYNC) && (ioflag & (FSYNC | FDSYNC)) && TRANS_ISTRANS(ufsvfsp)) { rw_exit(&ip->i_rwlock); - TRANS_BEGIN_SYNC(ufsvfsp, TOP_READ_SYNC, TOP_READ_SIZE, - error); + TRANS_BEGIN_SYNC(ufsvfsp, TOP_READ_SYNC, + TOP_READ_SIZE, &error); ASSERT(!error); - TRANS_END_SYNC(ufsvfsp, error, TOP_READ_SYNC, - TOP_READ_SIZE); + TRANS_END_SYNC(ufsvfsp, &error, TOP_READ_SYNC, + TOP_READ_SIZE); rw_enter(&ip->i_rwlock, RW_READER); } } else { @@ -370,8 +370,8 @@ ufs_read(struct vnode *vp, struct uio *uiop, int ioflag, struct cred *cr, */ if (ulp && (ioflag & FRSYNC) && (ioflag & (FSYNC | FDSYNC)) && TRANS_ISTRANS(ufsvfsp)) { - TRANS_BEGIN_SYNC(ufsvfsp, TOP_READ_SYNC, TOP_READ_SIZE, - error); + TRANS_BEGIN_SYNC(ufsvfsp, TOP_READ_SYNC, + TOP_READ_SIZE, &error); ASSERT(!error); intrans = 1; } @@ -381,8 +381,8 @@ ufs_read(struct vnode *vp, struct uio *uiop, int ioflag, struct cred *cr, rw_exit(&ip->i_contents); if (intrans) { - TRANS_END_SYNC(ufsvfsp, error, TOP_READ_SYNC, - TOP_READ_SIZE); + TRANS_END_SYNC(ufsvfsp, &error, TOP_READ_SYNC, + TOP_READ_SIZE); } } @@ -578,8 +578,8 @@ retry_mandlock: rw_exit(&ip->i_contents); } else { int terr = 0; - TRANS_BEGIN_SYNC(ufsvfsp, TOP_WRITE_SYNC, resv, - terr); + TRANS_BEGIN_SYNC(ufsvfsp, TOP_WRITE_SYNC, + resv, &terr); ASSERT(!terr); } } @@ -624,8 +624,8 @@ retry_mandlock: if (!rewriteflg) { int terr = 0; - TRANS_END_SYNC(ufsvfsp, terr, TOP_WRITE_SYNC, - resv); + TRANS_END_SYNC(ufsvfsp, &terr, + TOP_WRITE_SYNC, resv); if (error == 0) error = terr; } @@ -1753,16 +1753,16 @@ ufs_ioctl( if (ulp) { trans_size = (int)TOP_SETATTR_SIZE(VTOI(vp)); - TRANS_BEGIN_CSYNC(ufsvfsp, issync, - TOP_SETATTR, trans_size); + TRANS_BEGIN_CSYNC(ufsvfsp, &issync, + TOP_SETATTR, trans_size); } error = ufs_fiosatime(vp, (struct timeval *)arg, flag, cr); if (ulp) { - TRANS_END_CSYNC(ufsvfsp, error, issync, - TOP_SETATTR, trans_size); + TRANS_END_CSYNC(ufsvfsp, &error, issync, + TOP_SETATTR, trans_size); ufs_lockfs_end(ulp); } return (error); @@ -2198,7 +2198,7 @@ again: if (ulp) { trans_size = (int)TOP_SETATTR_SIZE(ip); - TRANS_BEGIN_CSYNC(ufsvfsp, issync, TOP_SETATTR, trans_size); + TRANS_BEGIN_CSYNC(ufsvfsp, &issync, TOP_SETATTR, trans_size); ++dotrans; } @@ -2400,8 +2400,8 @@ update_inode: if (ulp) { if (dotrans) { int terr = 0; - TRANS_END_CSYNC(ufsvfsp, terr, issync, TOP_SETATTR, - trans_size); + TRANS_END_CSYNC(ufsvfsp, &terr, issync, TOP_SETATTR, + trans_size); if (error == 0) error = terr; } @@ -2673,13 +2673,13 @@ ufs_fsync(struct vnode *vp, int syncflag, struct cred *cr, */ if (ulp) { TRANS_BEGIN_SYNC(ufsvfsp, TOP_FSYNC, TOP_COMMIT_SIZE, - error); + &error); if (error) { error = 0; /* commit wasn't needed */ goto out; } - TRANS_END_SYNC(ufsvfsp, error, TOP_FSYNC, - TOP_COMMIT_SIZE); + TRANS_END_SYNC(ufsvfsp, &error, TOP_FSYNC, + TOP_COMMIT_SIZE); } } else { /* not logging */ if (!(IS_SWAPVP(vp))) @@ -2934,7 +2934,7 @@ again: if (ulp) { trans_size = (int)TOP_CREATE_SIZE(ip); - TRANS_BEGIN_CSYNC(ufsvfsp, issync, TOP_CREATE, trans_size); + TRANS_BEGIN_CSYNC(ufsvfsp, &issync, TOP_CREATE, trans_size); } if ((vap->va_mode & VSVTX) && secpolicy_vnode_stky_modify(cr) != 0) @@ -2986,8 +2986,9 @@ again: vap, &xip, cr, (noentry | (retry ? IQUIET : 0))); if (error == EAGAIN) { if (ulp) { - TRANS_END_CSYNC(ufsvfsp, error, issync, - TOP_CREATE, trans_size); + TRANS_END_CSYNC(ufsvfsp, &error, + issync, TOP_CREATE, + trans_size); ufs_lockfs_end(ulp); } goto again; @@ -3145,8 +3146,8 @@ unlock: if (ulp) { int terr = 0; - TRANS_END_CSYNC(ufsvfsp, terr, issync, TOP_CREATE, - trans_size); + TRANS_END_CSYNC(ufsvfsp, &terr, issync, TOP_CREATE, + trans_size); /* * If we haven't had a more interesting failure @@ -3225,8 +3226,8 @@ retry_remove: goto out; if (ulp) - TRANS_BEGIN_CSYNC(ufsvfsp, issync, TOP_REMOVE, - trans_size = (int)TOP_REMOVE_SIZE(VTOI(vp))); + TRANS_BEGIN_CSYNC(ufsvfsp, &issync, TOP_REMOVE, + trans_size = (int)TOP_REMOVE_SIZE(VTOI(vp))); /* * ufs_tryirwlock_trans uses rw_tryenter and checks for SLOCK @@ -3240,7 +3241,8 @@ retry_remove: rw_exit(&ip->i_rwlock); if (ulp) { - TRANS_END_CSYNC(ufsvfsp, error, issync, TOP_REMOVE, trans_size); + TRANS_END_CSYNC(ufsvfsp, &error, issync, TOP_REMOVE, + trans_size); ufs_lockfs_end(ulp); } @@ -3274,8 +3276,8 @@ retry_link: goto out; if (ulp) - TRANS_BEGIN_CSYNC(ufsvfsp, issync, TOP_LINK, - trans_size = (int)TOP_LINK_SIZE(VTOI(tdvp))); + TRANS_BEGIN_CSYNC(ufsvfsp, &issync, TOP_LINK, + trans_size = (int)TOP_LINK_SIZE(VTOI(tdvp))); if (fop_realvp(svp, &realvp, ct) == 0) svp = realvp; @@ -3318,7 +3320,7 @@ retry_link: unlock: if (ulp) { - TRANS_END_CSYNC(ufsvfsp, error, issync, TOP_LINK, trans_size); + TRANS_END_CSYNC(ufsvfsp, &error, issync, TOP_LINK, trans_size); ufs_lockfs_end(ulp); } @@ -3412,8 +3414,8 @@ retry_rename: goto unlock; if (ulp) - TRANS_BEGIN_CSYNC(ufsvfsp, issync, TOP_RENAME, - trans_size = (int)TOP_RENAME_SIZE(sdp)); + TRANS_BEGIN_CSYNC(ufsvfsp, &issync, TOP_RENAME, + trans_size = (int)TOP_RENAME_SIZE(sdp)); if (fop_realvp(tdvp, &realvp, ct) == 0) tdvp = realvp; @@ -3441,8 +3443,8 @@ retry_rename: if (error = ufs_dirlook(sdp, snm, &sip, cr, 0, 0)) { if (error == EAGAIN) { if (ulp) { - TRANS_END_CSYNC(ufsvfsp, error, issync, - TOP_RENAME, trans_size); + TRANS_END_CSYNC(ufsvfsp, &error, issync, + TOP_RENAME, trans_size); ufs_lockfs_end(ulp); } goto retry_rename; @@ -3490,8 +3492,8 @@ retry_firstlock: */ if (ulp && ULOCKFS_IS_SLOCK(ulp)) { - TRANS_END_CSYNC(ufsvfsp, error, issync, TOP_RENAME, - trans_size); + TRANS_END_CSYNC(ufsvfsp, &error, issync, TOP_RENAME, + trans_size); ufs_lockfs_end(ulp); goto retry_rename; @@ -3516,8 +3518,8 @@ retry_firstlock: rw_exit(first_lock); if (ulp && ULOCKFS_IS_SLOCK(ulp)) { - TRANS_END_CSYNC(ufsvfsp, error, issync, TOP_RENAME, - trans_size); + TRANS_END_CSYNC(ufsvfsp, &error, issync, TOP_RENAME, + trans_size); ufs_lockfs_end(ulp); goto retry_rename; @@ -3745,7 +3747,8 @@ unlock: VN_RELE(ITOV(sip)); if (ulp) { - TRANS_END_CSYNC(ufsvfsp, error, issync, TOP_RENAME, trans_size); + TRANS_END_CSYNC(ufsvfsp, &error, issync, TOP_RENAME, + trans_size); ufs_lockfs_end(ulp); } @@ -3783,8 +3786,8 @@ again: if (error) goto out; if (ulp) - TRANS_BEGIN_CSYNC(ufsvfsp, issync, TOP_MKDIR, - trans_size = (int)TOP_MKDIR_SIZE(ip)); + TRANS_BEGIN_CSYNC(ufsvfsp, &issync, TOP_MKDIR, + trans_size = (int)TOP_MKDIR_SIZE(ip)); /* * ufs_tryirwlock_trans uses rw_tryenter and checks for SLOCK @@ -3799,8 +3802,8 @@ again: (retry ? IQUIET : 0)); if (error == EAGAIN) { if (ulp) { - TRANS_END_CSYNC(ufsvfsp, error, issync, TOP_MKDIR, - trans_size); + TRANS_END_CSYNC(ufsvfsp, &error, issync, TOP_MKDIR, + trans_size); ufs_lockfs_end(ulp); } goto again; @@ -3815,7 +3818,7 @@ again: if (ulp) { int terr = 0; - TRANS_END_CSYNC(ufsvfsp, terr, issync, TOP_MKDIR, trans_size); + TRANS_END_CSYNC(ufsvfsp, &terr, issync, TOP_MKDIR, trans_size); ufs_lockfs_end(ulp); if (error == 0) error = terr; @@ -3868,8 +3871,8 @@ retry_rmdir: goto out; if (ulp) - TRANS_BEGIN_CSYNC(ufsvfsp, issync, TOP_RMDIR, - trans_size = TOP_RMDIR_SIZE); + TRANS_BEGIN_CSYNC(ufsvfsp, &issync, TOP_RMDIR, + trans_size = TOP_RMDIR_SIZE); /* * ufs_tryirwlock_trans uses rw_tryenter and checks for SLOCK @@ -3884,8 +3887,8 @@ retry_rmdir: rw_exit(&ip->i_rwlock); if (ulp) { - TRANS_END_CSYNC(ufsvfsp, error, issync, TOP_RMDIR, - trans_size); + TRANS_END_CSYNC(ufsvfsp, &error, issync, TOP_RMDIR, + trans_size); ufs_lockfs_end(ulp); } @@ -4139,8 +4142,8 @@ again: goto out; if (ulp) - TRANS_BEGIN_CSYNC(ufsvfsp, issync, TOP_SYMLINK, - trans_size = (int)TOP_SYMLINK_SIZE(dip)); + TRANS_BEGIN_CSYNC(ufsvfsp, &issync, TOP_SYMLINK, + trans_size = (int)TOP_SYMLINK_SIZE(dip)); /* * We must create the inode before the directory entry, to avoid @@ -4267,8 +4270,8 @@ unlock: if (ulp) { int terr = 0; - TRANS_END_CSYNC(ufsvfsp, terr, issync, TOP_SYMLINK, - trans_size); + TRANS_END_CSYNC(ufsvfsp, &terr, issync, TOP_SYMLINK, + trans_size); ufs_lockfs_end(ulp); if (error == 0) error = terr; @@ -4568,7 +4571,7 @@ ufs_getpage(struct vnode *vp, offset_t off, size_t len, uint_t *protp, trans_size = TOP_GETPAGE_SIZE(ip); if (seg->s_as != &kas) { TRANS_TRY_BEGIN_ASYNC(ufsvfsp, TOP_GETPAGE, - trans_size, err) + trans_size, &err); if (err == EWOULDBLOCK) { /* * Use EDEADLK here because the VM code @@ -5860,8 +5863,9 @@ ufs_l_pathconf(struct vnode *vp, int cmd, ulong_t *valp, struct cred *cr, if (error == 0 && sip != NULL) { /* Start transaction */ if (ulp) { - TRANS_BEGIN_CSYNC(ufsvfsp, issync, - TOP_RMDIR, TOP_RMDIR_SIZE); + TRANS_BEGIN_CSYNC(ufsvfsp, &issync, + TOP_RMDIR, + TOP_RMDIR_SIZE); } /* * Is directory empty @@ -5881,8 +5885,9 @@ ufs_l_pathconf(struct vnode *vp, int cmd, ulong_t *valp, struct cred *cr, rw_exit(&sip->i_contents); rw_exit(&sip->i_rwlock); if (ulp) { - TRANS_END_CSYNC(ufsvfsp, error, issync, - TOP_RMDIR, TOP_RMDIR_SIZE); + TRANS_END_CSYNC(ufsvfsp, &error, + issync, TOP_RMDIR, + TOP_RMDIR_SIZE); } VN_RELE(ITOV(sip)); } else if (error == ENOENT) { -- 2.11.4.GIT