Module Name: src Committed By: dholland Date: Sun Jul 21 00:01:22 UTC 2013
Modified Files: src/sys/ufs/lfs: lfs_vnops.c ulfs_vnops.c Log Message: Merge logic from ulfs_close(), ulfs_getattr(), and ulfs_strategy() into the preexisting lfs_*() versions of these functions, and delete the unused ulfs copies. To generate a diff of this commit: cvs rdiff -u -r1.250 -r1.251 src/sys/ufs/lfs/lfs_vnops.c cvs rdiff -u -r1.14 -r1.15 src/sys/ufs/lfs/ulfs_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/lfs/lfs_vnops.c diff -u src/sys/ufs/lfs/lfs_vnops.c:1.250 src/sys/ufs/lfs/lfs_vnops.c:1.251 --- src/sys/ufs/lfs/lfs_vnops.c:1.250 Sat Jul 20 22:14:49 2013 +++ src/sys/ufs/lfs/lfs_vnops.c Sun Jul 21 00:01:22 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: lfs_vnops.c,v 1.250 2013/07/20 22:14:49 dholland Exp $ */ +/* $NetBSD: lfs_vnops.c,v 1.251 2013/07/21 00:01:22 dholland Exp $ */ /*- * Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc. @@ -60,7 +60,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: lfs_vnops.c,v 1.250 2013/07/20 22:14:49 dholland Exp $"); +__KERNEL_RCSID(0, "$NetBSD: lfs_vnops.c,v 1.251 2013/07/21 00:01:22 dholland Exp $"); #ifdef _KERNEL_OPT #include "opt_compat_netbsd.h" @@ -772,6 +772,8 @@ lfs_getattr(void *v) struct inode *ip = VTOI(vp); struct vattr *vap = ap->a_vap; struct lfs *fs = ip->i_lfs; + + fstrans_start(vp->v_mount, FSTRANS_SHARED); /* * Copy from inode table */ @@ -801,6 +803,7 @@ lfs_getattr(void *v) vap->va_bytes = lfs_fsbtob(fs, (u_quad_t)ip->i_lfs_effnblks); vap->va_type = vp->v_type; vap->va_filerev = ip->i_modrev; + fstrans_done(vp->v_mount); return (0); } @@ -854,7 +857,9 @@ lfs_wrapgo(struct lfs *fs, struct inode } /* - * Close called + * Close called. + * + * Update the times on the inode. */ /* ARGSUSED */ int @@ -881,9 +886,11 @@ 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); } @@ -994,6 +1001,10 @@ lfs_reclaim(void *v) /* * Read a block from a storage device. + * + * Calculate the logical to physical mapping if not done already, + * then call the device strategy routine. + * * In order to avoid reading blocks that are in the process of being * written by the cleaner---and hence are not mutexed by the normal * buffer cache / page cache mechanisms---check for collisions before @@ -1112,8 +1123,7 @@ lfs_strategy(void *v) mutex_exit(&lfs_lock); vp = ip->i_devvp; - VOP_STRATEGY(vp, bp); - return (0); + return VOP_STRATEGY(vp, bp); } /* Index: src/sys/ufs/lfs/ulfs_vnops.c diff -u src/sys/ufs/lfs/ulfs_vnops.c:1.14 src/sys/ufs/lfs/ulfs_vnops.c:1.15 --- src/sys/ufs/lfs/ulfs_vnops.c:1.14 Sat Jul 20 22:16:02 2013 +++ src/sys/ufs/lfs/ulfs_vnops.c Sun Jul 21 00:01:22 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: ulfs_vnops.c,v 1.14 2013/07/20 22:16:02 dholland Exp $ */ +/* $NetBSD: ulfs_vnops.c,v 1.15 2013/07/21 00:01:22 dholland Exp $ */ /* from NetBSD: ufs_vnops.c,v 1.213 2013/06/08 05:47:02 kardel Exp */ /*- @@ -67,7 +67,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ulfs_vnops.c,v 1.14 2013/07/20 22:16:02 dholland Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ulfs_vnops.c,v 1.15 2013/07/21 00:01:22 dholland Exp $"); #if defined(_KERNEL_OPT) #include "opt_lfs.h" @@ -178,32 +178,6 @@ ulfs_open(void *v) return (0); } -/* - * Close called. - * - * Update the times on the inode. - */ -/* ARGSUSED */ -int -ulfs_close(void *v) -{ - struct vop_close_args /* { - struct vnode *a_vp; - int a_fflag; - kauth_cred_t a_cred; - } */ *ap = v; - struct vnode *vp; - struct inode *ip; - - vp = ap->a_vp; - ip = VTOI(vp); - fstrans_start(vp->v_mount, FSTRANS_SHARED); - if (vp->v_usecount > 1) - ULFS_ITIMES(vp, NULL, NULL, NULL); - fstrans_done(vp->v_mount); - return (0); -} - static int ulfs_check_possible(struct vnode *vp, struct inode *ip, mode_t mode, kauth_cred_t cred) @@ -289,76 +263,6 @@ ulfs_access(void *v) return error; } -/* ARGSUSED */ -int -ulfs_getattr(void *v) -{ - struct vop_getattr_args /* { - struct vnode *a_vp; - struct vattr *a_vap; - kauth_cred_t a_cred; - } */ *ap = v; - struct vnode *vp; - struct inode *ip; - struct vattr *vap; - - vp = ap->a_vp; - ip = VTOI(vp); - vap = ap->a_vap; - fstrans_start(vp->v_mount, FSTRANS_SHARED); - ULFS_ITIMES(vp, NULL, NULL, NULL); - - /* - * Copy from inode table - */ - vap->va_fsid = ip->i_dev; - vap->va_fileid = ip->i_number; - vap->va_mode = ip->i_mode & ALLPERMS; - vap->va_nlink = ip->i_nlink; - vap->va_uid = ip->i_uid; - vap->va_gid = ip->i_gid; - vap->va_size = vp->v_size; - if (ip->i_ump->um_fstype == ULFS1) { - vap->va_rdev = (dev_t)ulfs_rw32(ip->i_ffs1_rdev, - ULFS_MPNEEDSWAP(ip->i_ump)); - vap->va_atime.tv_sec = ip->i_ffs1_atime; - vap->va_atime.tv_nsec = ip->i_ffs1_atimensec; - vap->va_mtime.tv_sec = ip->i_ffs1_mtime; - vap->va_mtime.tv_nsec = ip->i_ffs1_mtimensec; - vap->va_ctime.tv_sec = ip->i_ffs1_ctime; - vap->va_ctime.tv_nsec = ip->i_ffs1_ctimensec; - vap->va_birthtime.tv_sec = 0; - vap->va_birthtime.tv_nsec = 0; - vap->va_bytes = dbtob((u_quad_t)ip->i_ffs1_blocks); - } else { - vap->va_rdev = (dev_t)ulfs_rw64(ip->i_ffs2_rdev, - ULFS_MPNEEDSWAP(ip->i_ump)); - vap->va_atime.tv_sec = ip->i_ffs2_atime; - vap->va_atime.tv_nsec = ip->i_ffs2_atimensec; - vap->va_mtime.tv_sec = ip->i_ffs2_mtime; - vap->va_mtime.tv_nsec = ip->i_ffs2_mtimensec; - vap->va_ctime.tv_sec = ip->i_ffs2_ctime; - vap->va_ctime.tv_nsec = ip->i_ffs2_ctimensec; - vap->va_birthtime.tv_sec = ip->i_ffs2_birthtime; - vap->va_birthtime.tv_nsec = ip->i_ffs2_birthnsec; - vap->va_bytes = dbtob(ip->i_ffs2_blocks); - } - vap->va_gen = ip->i_gen; - vap->va_flags = ip->i_flags; - - /* this doesn't belong here */ - if (vp->v_type == VBLK) - vap->va_blocksize = BLKDEV_IOSIZE; - else if (vp->v_type == VCHR) - vap->va_blocksize = MAXBSIZE; - else - 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); -} - /* * Set attribute vnode op. called from several syscalls */ @@ -1274,52 +1178,6 @@ ulfs_readlink(void *v) } /* - * Calculate the logical to physical mapping if not done already, - * then call the device strategy routine. - */ -int -ulfs_strategy(void *v) -{ - struct vop_strategy_args /* { - struct vnode *a_vp; - struct buf *a_bp; - } */ *ap = v; - struct buf *bp; - struct vnode *vp; - struct inode *ip; - int error; - - bp = ap->a_bp; - vp = ap->a_vp; - ip = VTOI(vp); - if (vp->v_type == VBLK || vp->v_type == VCHR) - panic("ulfs_strategy: spec"); - KASSERT(bp->b_bcount != 0); - if (bp->b_blkno == bp->b_lblkno) { - error = VOP_BMAP(vp, bp->b_lblkno, NULL, &bp->b_blkno, - NULL); - if (error) { - bp->b_error = error; - biodone(bp); - return (error); - } - if (bp->b_blkno == -1) /* no valid data */ - clrbuf(bp); - } - if (bp->b_blkno < 0) { /* block is not on disk */ - biodone(bp); - return (0); - } - vp = ip->i_devvp; - - error = VOP_STRATEGY(vp, bp); - if (error) - return error; - - return 0; -} - -/* * Print out the contents of an inode. */ int