From 63ce83dc30296c74d35dadfbe7dd4db9d9dfd63e Mon Sep 17 00:00:00 2001 From: hannken Date: Thu, 30 Mar 2017 09:10:08 +0000 Subject: [PATCH] Remove now redundant calls to fstrans_start()/fstrans_done(). Add fstrans_start()/fstrans_done() to lfs_putpages(). --- sys/ufs/lfs/lfs_pages.c | 53 +++++++++++++++++++++++++++++++----- sys/ufs/lfs/lfs_vnops.c | 30 ++------------------ sys/ufs/lfs/ulfs_bmap.c | 7 ++--- sys/ufs/lfs/ulfs_inode.c | 9 ++---- sys/ufs/lfs/ulfs_lookup.c | 8 ++---- sys/ufs/lfs/ulfs_quota2.c | 5 ++-- sys/ufs/lfs/ulfs_readwrite.c | 16 ++--------- sys/ufs/lfs/ulfs_vnops.c | 32 +++------------------- 8 files changed, 62 insertions(+), 98 deletions(-) diff --git a/sys/ufs/lfs/lfs_pages.c b/sys/ufs/lfs/lfs_pages.c index 9820a3a979dd..921be0a9e303 100644 --- a/sys/ufs/lfs/lfs_pages.c +++ b/sys/ufs/lfs/lfs_pages.c @@ -1,4 +1,4 @@ -/* $NetBSD: lfs_pages.c,v 1.9 2016/10/04 16:46:20 christos Exp $ */ +/* $NetBSD: lfs_pages.c,v 1.10 2017/03/30 09:10:08 hannken Exp $ */ /*- * Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc. @@ -60,7 +60,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: lfs_pages.c,v 1.9 2016/10/04 16:46:20 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: lfs_pages.c,v 1.10 2017/03/30 09:10:08 hannken Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -466,6 +466,7 @@ lfs_putpages(void *v) bool seglocked, sync, pagedaemon, reclaim; struct vm_page *pg, *busypg; UVMHIST_FUNC("lfs_putpages"); UVMHIST_CALLED(ubchist); + struct mount *trans_mp; int oreclaim = 0; int donewriting = 0; #ifdef DEBUG @@ -478,6 +479,7 @@ lfs_putpages(void *v) sync = (ap->a_flags & PGO_SYNCIO) != 0; reclaim = (ap->a_flags & PGO_RECLAIM) != 0; pagedaemon = (curlwp == uvm.pagedaemon_lwp); + trans_mp = NULL; KASSERT(mutex_owned(vp->v_interlock)); @@ -487,6 +489,7 @@ lfs_putpages(void *v) return 0; } +retry: /* * If there are no pages, don't do anything. */ @@ -497,6 +500,8 @@ lfs_putpages(void *v) vp->v_iflag &= ~VI_WRMAPDIRTY; vn_syncer_remove_from_worklist(vp); } + if (trans_mp) + fstrans_done(trans_mp); mutex_exit(vp->v_interlock); /* Remove us from paging queue, if we were on it */ @@ -587,6 +592,33 @@ lfs_putpages(void *v) return r; } + if (trans_mp /* && (ap->a_flags & PGO_CLEANIT) != 0 */) { + if (pagedaemon) { + /* Pagedaemon must not sleep here. */ + trans_mp = vp->v_mount; + error = fstrans_start_nowait(trans_mp, FSTRANS_SHARED); + if (error) { + mutex_exit(vp->v_interlock); + return error; + } + } else { + /* + * Cannot use vdeadcheck() here as this operation + * usually gets used from VOP_RECLAIM(). Test for + * change of v_mount instead and retry on change. + */ + mutex_exit(vp->v_interlock); + trans_mp = vp->v_mount; + fstrans_start(trans_mp, FSTRANS_SHARED); + if (vp->v_mount != trans_mp) { + fstrans_done(trans_mp); + trans_mp = NULL; + } + } + mutex_enter(vp->v_interlock); + goto retry; + } + /* Set PGO_BUSYFAIL to avoid deadlocks */ ap->a_flags |= PGO_BUSYFAIL; @@ -607,7 +639,8 @@ lfs_putpages(void *v) if (r < 0) { /* Pages are busy with another process */ mutex_exit(vp->v_interlock); - return EDEADLK; + error = EDEADLK; + goto out; } if (r > 0) /* Some pages are dirty */ break; @@ -624,7 +657,8 @@ lfs_putpages(void *v) ip->i_lfs_iflags &= ~LFSI_NO_GOP_WRITE; if (r != EDEADLK) { KASSERT(!mutex_owned(vp->v_interlock)); - return r; + error = r; + goto out; } /* One of the pages was busy. Start over. */ @@ -662,7 +696,8 @@ lfs_putpages(void *v) mutex_exit(&lfs_lock); preempt(); KASSERT(!mutex_owned(vp->v_interlock)); - return EWOULDBLOCK; + error = EWOULDBLOCK; + goto out; } /* @@ -724,7 +759,7 @@ lfs_putpages(void *v) error = lfs_seglock(fs, SEGM_PROT | (sync ? SEGM_SYNC : 0)); if (error != 0) { KASSERT(!mutex_owned(vp->v_interlock)); - return error; + goto out; } mutex_enter(vp->v_interlock); lfs_acquire_finfo(fs, ip->i_number, ip->i_gen); @@ -851,7 +886,7 @@ lfs_putpages(void *v) */ if (seglocked) { KASSERT(!mutex_owned(vp->v_interlock)); - return error; + goto out; } /* Clean up FIP and send it to disk. */ @@ -892,6 +927,10 @@ lfs_putpages(void *v) } mutex_exit(vp->v_interlock); } + +out:; + if (trans_mp) + fstrans_done(trans_mp); KASSERT(!mutex_owned(vp->v_interlock)); return error; } diff --git a/sys/ufs/lfs/lfs_vnops.c b/sys/ufs/lfs/lfs_vnops.c index 679c5cae762f..1531e08e042d 100644 --- a/sys/ufs/lfs/lfs_vnops.c +++ b/sys/ufs/lfs/lfs_vnops.c @@ -1,4 +1,4 @@ -/* $NetBSD: lfs_vnops.c,v 1.306 2017/03/16 01:09:24 maya Exp $ */ +/* $NetBSD: lfs_vnops.c,v 1.307 2017/03/30 09:10:08 hannken Exp $ */ /*- * Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc. @@ -125,7 +125,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: lfs_vnops.c,v 1.306 2017/03/16 01:09:24 maya Exp $"); +__KERNEL_RCSID(0, "$NetBSD: lfs_vnops.c,v 1.307 2017/03/30 09:10:08 hannken Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -147,7 +147,6 @@ __KERNEL_RCSID(0, "$NetBSD: lfs_vnops.c,v 1.306 2017/03/16 01:09:24 maya Exp $") #include #include #include -#include #include #include @@ -721,7 +720,6 @@ lfs_symlink(void *v) if (error) return error; - fstrans_start(dvp->v_mount, FSTRANS_SHARED); error = lfs_makeinode(ap->a_vap, dvp, ulr, vpp, ap->a_cnp); if (error) { goto out; @@ -757,8 +755,6 @@ lfs_symlink(void *v) vrele(*vpp); out: - fstrans_done(dvp->v_mount); - UNMARK_VNODE(dvp); /* XXX: is it even possible for the symlink to get MARK'd? */ UNMARK_VNODE(*vpp); @@ -809,7 +805,6 @@ lfs_mknod(void *v) if (error) return error; - fstrans_start(dvp->v_mount, FSTRANS_SHARED); error = lfs_makeinode(vap, dvp, ulr, vpp, ap->a_cnp); /* Either way we're done with the dirop at this point */ @@ -818,7 +813,6 @@ lfs_mknod(void *v) lfs_unset_dirop(fs, dvp, "mknod"); if (error) { - fstrans_done(dvp->v_mount); vrele(dvp); *vpp = NULL; return (error); @@ -843,7 +837,6 @@ lfs_mknod(void *v) /* return (error); */ } - fstrans_done(dvp->v_mount); vrele(dvp); KASSERT(error == 0); VOP_UNLOCK(*vpp); @@ -889,13 +882,10 @@ lfs_create(void *v) if (error) return error; - fstrans_start(dvp->v_mount, FSTRANS_SHARED); error = lfs_makeinode(vap, dvp, ulr, vpp, ap->a_cnp); if (error) { - fstrans_done(dvp->v_mount); goto out; } - fstrans_done(dvp->v_mount); VN_KNOTE(dvp, NOTE_WRITE); VOP_UNLOCK(*vpp); @@ -962,8 +952,6 @@ lfs_mkdir(void *v) if (error) return error; - fstrans_start(dvp->v_mount, FSTRANS_SHARED); - if ((nlink_t)dp->i_nlink >= LINK_MAX) { error = EMLINK; goto out; @@ -1066,8 +1054,6 @@ lfs_mkdir(void *v) } out: - fstrans_done(dvp->v_mount); - UNMARK_VNODE(dvp); UNMARK_VNODE(*vpp); if (error) { @@ -1207,7 +1193,6 @@ lfs_getattr(void *v) struct vattr *vap = ap->a_vap; struct lfs *fs = ip->i_lfs; - fstrans_start(vp->v_mount, FSTRANS_SHARED); /* * Copy from inode table */ @@ -1245,7 +1230,6 @@ lfs_getattr(void *v) vap->va_bytes = lfs_fsbtob(fs, ip->i_lfs_effnblks); vap->va_type = vp->v_type; vap->va_filerev = ip->i_modrev; - fstrans_done(vp->v_mount); return (0); } @@ -1329,11 +1313,9 @@ lfs_close(void *v) vp->v_mount->mnt_iflag & IMNT_UNMOUNT) return 0; - fstrans_start(vp->v_mount, FSTRANS_SHARED); if (vp->v_usecount > 1 && vp != ip->i_lfs->lfs_ivnode) { LFS_ITIMES(ip, NULL, NULL, NULL); } - fstrans_done(vp->v_mount); return (0); } @@ -2266,9 +2248,7 @@ lfs_getextattr(void *v) if (ump->um_fstype == ULFS1) { #ifdef LFS_EXTATTR - fstrans_start(vp->v_mount, FSTRANS_SHARED); error = ulfs_getextattr(ap); - fstrans_done(vp->v_mount); #else error = EOPNOTSUPP; #endif @@ -2298,9 +2278,7 @@ lfs_setextattr(void *v) if (ump->um_fstype == ULFS1) { #ifdef LFS_EXTATTR - fstrans_start(vp->v_mount, FSTRANS_SHARED); error = ulfs_setextattr(ap); - fstrans_done(vp->v_mount); #else error = EOPNOTSUPP; #endif @@ -2330,9 +2308,7 @@ lfs_listextattr(void *v) if (ump->um_fstype == ULFS1) { #ifdef LFS_EXTATTR - fstrans_start(vp->v_mount, FSTRANS_SHARED); error = ulfs_listextattr(ap); - fstrans_done(vp->v_mount); #else error = EOPNOTSUPP; #endif @@ -2360,9 +2336,7 @@ lfs_deleteextattr(void *v) if (ump->um_fstype == ULFS1) { #ifdef LFS_EXTATTR - fstrans_start(vp->v_mount, FSTRANS_SHARED); error = ulfs_deleteextattr(ap); - fstrans_done(vp->v_mount); #else error = EOPNOTSUPP; #endif diff --git a/sys/ufs/lfs/ulfs_bmap.c b/sys/ufs/lfs/ulfs_bmap.c index 8002f4b917db..c09203545660 100644 --- a/sys/ufs/lfs/ulfs_bmap.c +++ b/sys/ufs/lfs/ulfs_bmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: ulfs_bmap.c,v 1.8 2017/03/13 14:24:20 riastradh Exp $ */ +/* $NetBSD: ulfs_bmap.c,v 1.9 2017/03/30 09:10:08 hannken Exp $ */ /* from NetBSD: ufs_bmap.c,v 1.50 2013/01/22 09:39:18 dholland Exp */ /* @@ -38,7 +38,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ulfs_bmap.c,v 1.8 2017/03/13 14:24:20 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ulfs_bmap.c,v 1.9 2017/03/30 09:10:08 hannken Exp $"); #include #include @@ -49,7 +49,6 @@ __KERNEL_RCSID(0, "$NetBSD: ulfs_bmap.c,v 1.8 2017/03/13 14:24:20 riastradh Exp #include #include #include -#include #include @@ -113,10 +112,8 @@ ulfs_bmap(void *v) if (ap->a_bnp == NULL) return (0); - fstrans_start(ap->a_vp->v_mount, FSTRANS_SHARED); error = ulfs_bmaparray(ap->a_vp, ap->a_bn, ap->a_bnp, NULL, NULL, ap->a_runp, ulfs_issequential); - fstrans_done(ap->a_vp->v_mount); return error; } diff --git a/sys/ufs/lfs/ulfs_inode.c b/sys/ufs/lfs/ulfs_inode.c index 3802cf85e538..519c28317f6d 100644 --- a/sys/ufs/lfs/ulfs_inode.c +++ b/sys/ufs/lfs/ulfs_inode.c @@ -1,4 +1,4 @@ -/* $NetBSD: ulfs_inode.c,v 1.16 2016/08/20 12:37:09 hannken Exp $ */ +/* $NetBSD: ulfs_inode.c,v 1.17 2017/03/30 09:10:08 hannken Exp $ */ /* from NetBSD: ufs_inode.c,v 1.95 2015/06/13 14:56:45 hannken Exp */ /* @@ -38,7 +38,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ulfs_inode.c,v 1.16 2016/08/20 12:37:09 hannken Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ulfs_inode.c,v 1.17 2017/03/30 09:10:08 hannken Exp $"); #if defined(_KERNEL_OPT) #include "opt_lfs.h" @@ -53,7 +53,6 @@ __KERNEL_RCSID(0, "$NetBSD: ulfs_inode.c,v 1.16 2016/08/20 12:37:09 hannken Exp #include #include #include -#include #include #include @@ -86,12 +85,9 @@ ulfs_inactive(void *v) } */ *ap = v; struct vnode *vp = ap->a_vp; struct inode *ip = VTOI(vp); - struct mount *transmp; mode_t mode; int error = 0; - transmp = vp->v_mount; - fstrans_start(transmp, FSTRANS_LAZY); /* * Ignore inodes related to stale file handles. */ @@ -129,7 +125,6 @@ out: */ *ap->a_recycle = (ip->i_mode == 0); VOP_UNLOCK(vp); - fstrans_done(transmp); return (error); } diff --git a/sys/ufs/lfs/ulfs_lookup.c b/sys/ufs/lfs/ulfs_lookup.c index ce4510e33242..3e439078a962 100644 --- a/sys/ufs/lfs/ulfs_lookup.c +++ b/sys/ufs/lfs/ulfs_lookup.c @@ -1,4 +1,4 @@ -/* $NetBSD: ulfs_lookup.c,v 1.39 2016/06/20 02:25:03 dholland Exp $ */ +/* $NetBSD: ulfs_lookup.c,v 1.40 2017/03/30 09:10:08 hannken Exp $ */ /* from NetBSD: ufs_lookup.c,v 1.135 2015/07/11 11:04:48 mlelstv */ /* @@ -38,7 +38,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ulfs_lookup.c,v 1.39 2016/06/20 02:25:03 dholland Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ulfs_lookup.c,v 1.40 2017/03/30 09:10:08 hannken Exp $"); #ifdef _KERNEL_OPT #include "opt_lfs.h" @@ -54,7 +54,6 @@ __KERNEL_RCSID(0, "$NetBSD: ulfs_lookup.c,v 1.39 2016/06/20 02:25:03 dholland Ex #include #include #include -#include #include #include @@ -208,8 +207,6 @@ ulfs_lookup(void *v) cnp->cn_flags |= ISWHITEOUT; } - fstrans_start(vdp->v_mount, FSTRANS_SHARED); - /* * Suppress search for slots unless creating * file and at end of pathname, in which case @@ -630,7 +627,6 @@ found: error = 0; out: - fstrans_done(vdp->v_mount); return error; } diff --git a/sys/ufs/lfs/ulfs_quota2.c b/sys/ufs/lfs/ulfs_quota2.c index 0df1804ee0b9..f44930488479 100644 --- a/sys/ufs/lfs/ulfs_quota2.c +++ b/sys/ufs/lfs/ulfs_quota2.c @@ -1,4 +1,4 @@ -/* $NetBSD: ulfs_quota2.c,v 1.29 2016/11/20 21:22:14 riastradh Exp $ */ +/* $NetBSD: ulfs_quota2.c,v 1.30 2017/03/30 09:10:08 hannken Exp $ */ /* from NetBSD: ufs_quota2.c,v 1.40 2015/03/28 19:24:05 maxv Exp Exp */ /* from NetBSD: ffs_quota2.c,v 1.5 2015/02/22 14:12:48 maxv Exp */ @@ -29,7 +29,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ulfs_quota2.c,v 1.29 2016/11/20 21:22:14 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ulfs_quota2.c,v 1.30 2017/03/30 09:10:08 hannken Exp $"); #include #include @@ -40,7 +40,6 @@ __KERNEL_RCSID(0, "$NetBSD: ulfs_quota2.c,v 1.29 2016/11/20 21:22:14 riastradh E #include #include #include -#include #include #include #include diff --git a/sys/ufs/lfs/ulfs_readwrite.c b/sys/ufs/lfs/ulfs_readwrite.c index 90454c70700c..d5304043facd 100644 --- a/sys/ufs/lfs/ulfs_readwrite.c +++ b/sys/ufs/lfs/ulfs_readwrite.c @@ -1,4 +1,4 @@ -/* $NetBSD: ulfs_readwrite.c,v 1.22 2016/06/20 03:36:09 dholland Exp $ */ +/* $NetBSD: ulfs_readwrite.c,v 1.23 2017/03/30 09:10:08 hannken Exp $ */ /* from NetBSD: ufs_readwrite.c,v 1.120 2015/04/12 22:48:38 riastradh Exp */ /*- @@ -33,7 +33,7 @@ */ #include -__KERNEL_RCSID(1, "$NetBSD: ulfs_readwrite.c,v 1.22 2016/06/20 03:36:09 dholland Exp $"); +__KERNEL_RCSID(1, "$NetBSD: ulfs_readwrite.c,v 1.23 2017/03/30 09:10:08 hannken Exp $"); #ifdef LFS_READWRITE #define FS struct lfs @@ -110,8 +110,6 @@ READ(void *v) return ffs_snapshot_read(vp, uio, ioflag); #endif /* !LFS_READWRITE */ - fstrans_start(vp->v_mount, FSTRANS_SHARED); - if (uio->uio_offset >= ip->i_size) goto out; @@ -132,7 +130,6 @@ READ(void *v) out: error = ulfs_post_read_update(vp, ap->a_ioflag, error); - fstrans_done(vp->v_mount); return (error); } @@ -174,8 +171,6 @@ BUFRD(struct vnode *vp, struct uio *uio, int ioflag, kauth_cred_t cred) KASSERT(!ISSET(ip->i_flags, (SF_SNAPSHOT | SF_SNAPINVAL))); #endif - fstrans_start(vp->v_mount, FSTRANS_SHARED); - if (uio->uio_offset >= ip->i_size) goto out; @@ -223,7 +218,6 @@ BUFRD(struct vnode *vp, struct uio *uio, int ioflag, kauth_cred_t cred) out: error = ulfs_post_read_update(vp, ioflag, error); - fstrans_done(vp->v_mount); return (error); } @@ -298,8 +292,6 @@ WRITE(void *v) if (uio->uio_resid == 0) return (0); - fstrans_start(vp->v_mount, FSTRANS_SHARED); - flags = ioflag & IO_SYNC ? B_SYNC : 0; async = vp->v_mount->mnt_flag & MNT_ASYNC; origoff = uio->uio_offset; @@ -451,7 +443,6 @@ WRITE(void *v) out: error = ulfs_post_write_update(vp, uio, ioflag, cred, osize, resid, extended, error); - fstrans_done(vp->v_mount); return (error); } @@ -496,8 +487,6 @@ BUFWR(struct vnode *vp, struct uio *uio, int ioflag, kauth_cred_t cred) if (uio->uio_resid == 0) return 0; - fstrans_start(vp->v_mount, FSTRANS_SHARED); - flags = ioflag & IO_SYNC ? B_SYNC : 0; resid = uio->uio_resid; osize = ip->i_size; @@ -579,7 +568,6 @@ BUFWR(struct vnode *vp, struct uio *uio, int ioflag, kauth_cred_t cred) error = ulfs_post_write_update(vp, uio, ioflag, cred, osize, resid, extended, error); - fstrans_done(vp->v_mount); return (error); } diff --git a/sys/ufs/lfs/ulfs_vnops.c b/sys/ufs/lfs/ulfs_vnops.c index 185483ffd733..35e4f4342684 100644 --- a/sys/ufs/lfs/ulfs_vnops.c +++ b/sys/ufs/lfs/ulfs_vnops.c @@ -1,4 +1,4 @@ -/* $NetBSD: ulfs_vnops.c,v 1.45 2017/03/13 14:24:20 riastradh Exp $ */ +/* $NetBSD: ulfs_vnops.c,v 1.46 2017/03/30 09:10:08 hannken Exp $ */ /* from NetBSD: ufs_vnops.c,v 1.232 2016/05/19 18:32:03 riastradh Exp */ /*- @@ -67,7 +67,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ulfs_vnops.c,v 1.45 2017/03/13 14:24:20 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ulfs_vnops.c,v 1.46 2017/03/30 09:10:08 hannken Exp $"); #if defined(_KERNEL_OPT) #include "opt_lfs.h" @@ -90,7 +90,6 @@ __KERNEL_RCSID(0, "$NetBSD: ulfs_vnops.c,v 1.45 2017/03/13 14:24:20 riastradh Ex #include #include #include -#include #include #include @@ -159,9 +158,7 @@ ulfs_check_possible(struct vnode *vp, struct inode *ip, mode_t mode, if (vp->v_mount->mnt_flag & MNT_RDONLY) return (EROFS); #if defined(LFS_QUOTA) || defined(LFS_QUOTA2) - fstrans_start(vp->v_mount, FSTRANS_SHARED); error = lfs_chkdq(ip, 0, cred, 0); - fstrans_done(vp->v_mount); if (error != 0) return error; #endif @@ -263,8 +260,6 @@ ulfs_setattr(void *v) return (EINVAL); } - fstrans_start(vp->v_mount, FSTRANS_SHARED); - if (vap->va_flags != VNOVAL) { if (vp->v_mount->mnt_flag & MNT_RDONLY) { error = EROFS; @@ -403,7 +398,6 @@ ulfs_setattr(void *v) } VN_KNOTE(vp, NOTE_ATTRIB); out: - fstrans_done(vp->v_mount); return (error); } @@ -424,12 +418,10 @@ ulfs_chmod(struct vnode *vp, int mode, kauth_cred_t cred, struct lwp *l) if (error) return (error); - fstrans_start(vp->v_mount, FSTRANS_SHARED); ip->i_mode &= ~ALLPERMS; ip->i_mode |= (mode & ALLPERMS); ip->i_flag |= IN_CHANGE; DIP_ASSIGN(ip, mode, ip->i_mode); - fstrans_done(vp->v_mount); return (0); } @@ -461,7 +453,6 @@ ulfs_chown(struct vnode *vp, uid_t uid, gid_t gid, kauth_cred_t cred, if (error) return (error); - fstrans_start(vp->v_mount, FSTRANS_SHARED); #if defined(LFS_QUOTA) || defined(LFS_QUOTA2) ogid = ip->i_gid; ouid = ip->i_uid; @@ -486,12 +477,10 @@ ulfs_chown(struct vnode *vp, uid_t uid, gid_t gid, kauth_cred_t cred, DIP_ASSIGN(ip, uid, ouid); (void) lfs_chkdq(ip, change, cred, FORCE); (void) lfs_chkiq(ip, 1, cred, FORCE); - fstrans_done(vp->v_mount); return (error); good: #endif /* LFS_QUOTA || LFS_QUOTA2 */ ip->i_flag |= IN_CHANGE; - fstrans_done(vp->v_mount); return (0); } @@ -505,21 +494,18 @@ ulfs_remove(void *v) } */ *ap = v; struct vnode *vp, *dvp; struct inode *ip; - struct mount *mp; int error; struct ulfs_lookup_results *ulr; vp = ap->a_vp; dvp = ap->a_dvp; ip = VTOI(vp); - mp = dvp->v_mount; - KASSERT(mp == vp->v_mount); /* XXX Not stable without lock. */ + KASSERT(dvp->v_mount == vp->v_mount); /* XXX Not stable without lock. */ /* XXX should handle this material another way */ ulr = &VTOI(dvp)->i_crap; ULFS_CHECK_CRAPCOUNTER(VTOI(dvp)); - fstrans_start(mp, FSTRANS_SHARED); if (vp->v_type == VDIR || (ip->i_flags & (IMMUTABLE | APPEND)) || (VTOI(dvp)->i_flags & APPEND)) error = EPERM; @@ -534,7 +520,6 @@ ulfs_remove(void *v) else vput(vp); vput(dvp); - fstrans_done(mp); return (error); } @@ -552,20 +537,18 @@ ulfs_link(void *v) struct vnode *dvp = ap->a_dvp; struct vnode *vp = ap->a_vp; struct componentname *cnp = ap->a_cnp; - struct mount *mp = dvp->v_mount; struct inode *ip; int error; struct ulfs_lookup_results *ulr; KASSERT(dvp != vp); KASSERT(vp->v_type != VDIR); - KASSERT(mp == vp->v_mount); /* XXX Not stable without lock. */ + KASSERT(dvp->v_mount == vp->v_mount); /* XXX Not stable without lock. */ /* XXX should handle this material another way */ ulr = &VTOI(dvp)->i_crap; ULFS_CHECK_CRAPCOUNTER(VTOI(dvp)); - fstrans_start(mp, FSTRANS_SHARED); error = vn_lock(vp, LK_EXCLUSIVE); if (error) { VOP_ABORTOP(dvp, cnp); @@ -600,7 +583,6 @@ ulfs_link(void *v) out2: VN_KNOTE(vp, NOTE_LINK); VN_KNOTE(dvp, NOTE_WRITE); - fstrans_done(mp); return (error); } @@ -636,7 +618,6 @@ ulfs_whiteout(void *v) case CREATE: /* create a new directory whiteout */ - fstrans_start(dvp->v_mount, FSTRANS_SHARED); KASSERTMSG((fs->um_maxsymlinklen > 0), "ulfs_whiteout: old format filesystem"); @@ -646,7 +627,6 @@ ulfs_whiteout(void *v) case DELETE: /* remove an existing directory whiteout */ - fstrans_start(dvp->v_mount, FSTRANS_SHARED); KASSERTMSG((fs->um_maxsymlinklen > 0), "ulfs_whiteout: old format filesystem"); @@ -657,7 +637,6 @@ ulfs_whiteout(void *v) panic("ulfs_whiteout: unknown op"); /* NOTREACHED */ } - fstrans_done(dvp->v_mount); return (error); } @@ -697,8 +676,6 @@ ulfs_rmdir(void *v) return (EINVAL); } - fstrans_start(dvp->v_mount, FSTRANS_SHARED); - /* * Do not remove a directory that is in the process of being renamed. * Verify that the directory is empty (and valid). (Rmdir ".." won't @@ -747,7 +724,6 @@ ulfs_rmdir(void *v) out: VN_KNOTE(vp, NOTE_DELETE); vput(vp); - fstrans_done(dvp->v_mount); vput(dvp); return (error); }