From owner-svn-src-all@FreeBSD.ORG Wed Mar 18 21:51:03 2009 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6D6F3106567C; Wed, 18 Mar 2009 21:51:03 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5811E8FC13; Wed, 18 Mar 2009 21:51:03 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n2ILp3nx038719; Wed, 18 Mar 2009 21:51:03 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n2ILp2IH038712; Wed, 18 Mar 2009 21:51:02 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <200903182151.n2ILp2IH038712@svn.freebsd.org> From: John Baldwin Date: Wed, 18 Mar 2009 21:51:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r189991 - in stable/7/sys: . compat/linux compat/svr4 contrib/pf dev/ath/ath_hal dev/cxgb fs/coda i386/ibcs2 kern nfsserver X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Mar 2009 21:51:05 -0000 Author: jhb Date: Wed Mar 18 21:51:02 2009 New Revision: 189991 URL: http://svn.freebsd.org/changeset/base/189991 Log: MFC: Use shared vnode locks when invoking VOP_READDIR(). Modified: stable/7/sys/ (props changed) stable/7/sys/compat/linux/linux_file.c stable/7/sys/compat/linux/linux_getcwd.c stable/7/sys/compat/svr4/svr4_misc.c stable/7/sys/contrib/pf/ (props changed) stable/7/sys/dev/ath/ath_hal/ (props changed) stable/7/sys/dev/cxgb/ (props changed) stable/7/sys/fs/coda/coda_vnops.c stable/7/sys/i386/ibcs2/ibcs2_misc.c stable/7/sys/kern/vfs_syscalls.c stable/7/sys/nfsserver/nfs_serv.c Modified: stable/7/sys/compat/linux/linux_file.c ============================================================================== --- stable/7/sys/compat/linux/linux_file.c Wed Mar 18 21:46:55 2009 (r189990) +++ stable/7/sys/compat/linux/linux_file.c Wed Mar 18 21:51:02 2009 (r189991) @@ -465,7 +465,7 @@ getdents_common(struct thread *td, struc buflen = min(buflen, MAXBSIZE); buf = malloc(buflen, M_TEMP, M_WAITOK); lbuf = malloc(LINUX_MAXRECLEN, M_TEMP, M_WAITOK | M_ZERO); - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); + vn_lock(vp, LK_SHARED | LK_RETRY, td); again: aiov.iov_base = buf; Modified: stable/7/sys/compat/linux/linux_getcwd.c ============================================================================== --- stable/7/sys/compat/linux/linux_getcwd.c Wed Mar 18 21:46:55 2009 (r189990) +++ stable/7/sys/compat/linux/linux_getcwd.c Wed Mar 18 21:51:02 2009 (r189991) @@ -163,7 +163,7 @@ linux_getcwd_scandir(lvpp, uvpp, bpp, bu cn.cn_nameptr = ".."; cn.cn_namelen = 2; cn.cn_consume = 0; - cn.cn_lkflags = LK_EXCLUSIVE; + cn.cn_lkflags = LK_SHARED; /* * At this point, lvp is locked and will be unlocked by the lookup. Modified: stable/7/sys/compat/svr4/svr4_misc.c ============================================================================== --- stable/7/sys/compat/svr4/svr4_misc.c Wed Mar 18 21:46:55 2009 (r189990) +++ stable/7/sys/compat/svr4/svr4_misc.c Wed Mar 18 21:51:02 2009 (r189991) @@ -278,7 +278,7 @@ svr4_sys_getdents64(td, uap) buflen = max(DIRBLKSIZ, nbytes); buflen = min(buflen, MAXBSIZE); buf = malloc(buflen, M_TEMP, M_WAITOK); - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); + vn_lock(vp, LK_SHARED | LK_RETRY, td); again: aiov.iov_base = buf; aiov.iov_len = buflen; @@ -447,7 +447,7 @@ svr4_sys_getdents(td, uap) buflen = min(MAXBSIZE, uap->nbytes); buf = malloc(buflen, M_TEMP, M_WAITOK); - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); + vn_lock(vp, LK_SHARED | LK_RETRY, td); off = fp->f_offset; again: aiov.iov_base = buf; Modified: stable/7/sys/fs/coda/coda_vnops.c ============================================================================== --- stable/7/sys/fs/coda/coda_vnops.c Wed Mar 18 21:46:55 2009 (r189990) +++ stable/7/sys/fs/coda/coda_vnops.c Wed Mar 18 21:51:02 2009 (r189991) @@ -1510,7 +1510,7 @@ coda_readdir(struct vop_readdir_args *ap */ CODADEBUG(CODA_READDIR, myprintf(("indirect readdir: fid = %s, " "refcnt = %d\n", coda_f2s(&cp->c_fid), vp->v_usecount));); - vn_lock(cp->c_ovp, LK_EXCLUSIVE | LK_RETRY, td); + vn_lock(cp->c_ovp, LK_SHARED | LK_RETRY, td); error = VOP_READDIR(cp->c_ovp, uiop, cred, eofflag, ncookies, cookies); VOP_UNLOCK(cp->c_ovp, 0, td); Modified: stable/7/sys/i386/ibcs2/ibcs2_misc.c ============================================================================== --- stable/7/sys/i386/ibcs2/ibcs2_misc.c Wed Mar 18 21:46:55 2009 (r189990) +++ stable/7/sys/i386/ibcs2/ibcs2_misc.c Wed Mar 18 21:51:02 2009 (r189991) @@ -356,7 +356,7 @@ ibcs2_getdents(td, uap) buflen = max(DIRBLKSIZ, uap->nbytes); buflen = min(buflen, MAXBSIZE); buf = malloc(buflen, M_TEMP, M_WAITOK); - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); + vn_lock(vp, LK_SHARED | LK_RETRY, td); again: aiov.iov_base = buf; aiov.iov_len = buflen; @@ -518,7 +518,7 @@ ibcs2_read(td, uap) buflen = max(DIRBLKSIZ, uap->nbytes); buflen = min(buflen, MAXBSIZE); buf = malloc(buflen, M_TEMP, M_WAITOK); - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); + vn_lock(vp, LK_SHARED | LK_RETRY, td); again: aiov.iov_base = buf; aiov.iov_len = buflen; Modified: stable/7/sys/kern/vfs_syscalls.c ============================================================================== --- stable/7/sys/kern/vfs_syscalls.c Wed Mar 18 21:46:55 2009 (r189990) +++ stable/7/sys/kern/vfs_syscalls.c Wed Mar 18 21:51:02 2009 (r189991) @@ -3665,7 +3665,7 @@ unionread: auio.uio_segflg = UIO_USERSPACE; auio.uio_td = td; auio.uio_resid = uap->count; - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); + vn_lock(vp, LK_SHARED | LK_RETRY, td); loff = auio.uio_offset = fp->f_offset; #ifdef MAC error = mac_check_vnode_readdir(td->td_ucred, vp); @@ -3824,8 +3824,7 @@ unionread: auio.uio_segflg = UIO_USERSPACE; auio.uio_td = td; auio.uio_resid = count; - /* vn_lock(vp, LK_SHARED | LK_RETRY, td); */ - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); + vn_lock(vp, LK_SHARED | LK_RETRY, td); AUDIT_ARG(vnode, vp, ARG_VNODE1); loff = auio.uio_offset = fp->f_offset; #ifdef MAC Modified: stable/7/sys/nfsserver/nfs_serv.c ============================================================================== --- stable/7/sys/nfsserver/nfs_serv.c Wed Mar 18 21:46:55 2009 (r189990) +++ stable/7/sys/nfsserver/nfs_serv.c Wed Mar 18 21:51:02 2009 (r189991) @@ -3236,7 +3236,7 @@ again: io.uio_rw = UIO_READ; io.uio_td = NULL; eofflag = 0; - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); + vn_lock(vp, LK_SHARED | LK_RETRY, td); if (cookies) { free((caddr_t)cookies, M_TEMP); cookies = NULL; @@ -3518,7 +3518,7 @@ again: io.uio_rw = UIO_READ; io.uio_td = NULL; eofflag = 0; - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td); + vn_lock(vp, LK_SHARED | LK_RETRY, td); if (cookies) { free((caddr_t)cookies, M_TEMP); cookies = NULL;