Module Name: src Committed By: hannken Date: Tue Apr 13 09:27:59 UTC 2010
Modified Files: src/sys/ufs/ufs: ufs_vnops.c Log Message: Add fstrans transactions to ufs_close(), ufs_getattr(), ufs_chmod() and ufs_chown(). These functions change file system state. To generate a diff of this commit: cvs rdiff -u -r1.181 -r1.182 src/sys/ufs/ufs/ufs_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/ufs/ufs/ufs_vnops.c diff -u src/sys/ufs/ufs/ufs_vnops.c:1.181 src/sys/ufs/ufs/ufs_vnops.c:1.182 --- src/sys/ufs/ufs/ufs_vnops.c:1.181 Mon Mar 29 13:11:34 2010 +++ src/sys/ufs/ufs/ufs_vnops.c Tue Apr 13 09:27:58 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: ufs_vnops.c,v 1.181 2010/03/29 13:11:34 pooka Exp $ */ +/* $NetBSD: ufs_vnops.c,v 1.182 2010/04/13 09:27:58 hannken Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -66,7 +66,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ufs_vnops.c,v 1.181 2010/03/29 13:11:34 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ufs_vnops.c,v 1.182 2010/04/13 09:27:58 hannken Exp $"); #if defined(_KERNEL_OPT) #include "opt_ffs.h" @@ -267,8 +267,10 @@ vp = ap->a_vp; ip = VTOI(vp); + fstrans_start(vp->v_mount, FSTRANS_SHARED); if (vp->v_usecount > 1) UFS_ITIMES(vp, NULL, NULL, NULL); + fstrans_done(vp->v_mount); return (0); } @@ -371,6 +373,7 @@ vp = ap->a_vp; ip = VTOI(vp); vap = ap->a_vap; + fstrans_start(vp->v_mount, FSTRANS_SHARED); UFS_ITIMES(vp, NULL, NULL, NULL); /* @@ -420,6 +423,7 @@ vap->va_blocksize = vp->v_mount->mnt_stat.f_iosize; vap->va_type = vp->v_type; vap->va_filerev = ip->i_modrev; + fstrans_done(vp->v_mount); return (0); } @@ -671,11 +675,13 @@ 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); UFS_WAPBL_UPDATE(vp, NULL, NULL, 0); + fstrans_done(vp->v_mount); return (0); } @@ -706,6 +712,7 @@ if (error) return (error); + fstrans_start(vp->v_mount, FSTRANS_SHARED); #ifdef QUOTA ogid = ip->i_gid; ouid = ip->i_uid; @@ -730,11 +737,13 @@ DIP_ASSIGN(ip, uid, ouid); (void) chkdq(ip, change, cred, FORCE); (void) chkiq(ip, 1, cred, FORCE); + fstrans_done(vp->v_mount); return (error); good: #endif /* QUOTA */ ip->i_flag |= IN_CHANGE; UFS_WAPBL_UPDATE(vp, NULL, NULL, 0); + fstrans_done(vp->v_mount); return (0); }