From owner-svn-src-head@freebsd.org Tue Nov 8 10:10:56 2016 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 44997C36C5C; Tue, 8 Nov 2016 10:10:56 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 150C3CDE; Tue, 8 Nov 2016 10:10:56 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id uA8AAtDB041396; Tue, 8 Nov 2016 10:10:55 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id uA8AAtqD041363; Tue, 8 Nov 2016 10:10:55 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201611081010.uA8AAtqD041363@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Tue, 8 Nov 2016 10:10:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r308442 - head/sys/kern X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Nov 2016 10:10:56 -0000 Author: kib Date: Tue Nov 8 10:10:55 2016 New Revision: 308442 URL: https://svnweb.freebsd.org/changeset/base/308442 Log: Tweaks for the buffer pager. Pass current thread credentials instead of NOCRED. Only allow unmapped buffers for filesystem which proclaimed the support. For all filesystems which currently use buffer pager (UFS, msdosfs and cd9660), the changes are effectively nop. Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Modified: head/sys/kern/vfs_bio.c Modified: head/sys/kern/vfs_bio.c ============================================================================== --- head/sys/kern/vfs_bio.c Tue Nov 8 10:06:43 2016 (r308441) +++ head/sys/kern/vfs_bio.c Tue Nov 8 10:10:55 2016 (r308442) @@ -4686,13 +4686,15 @@ vfs_bio_getpages(struct vnode *vp, vm_pa vm_page_t m; vm_object_t object; struct buf *bp; + struct mount *mp; daddr_t lbn, lbnp; vm_ooffset_t la, lb, poff, poffe; long bsize; - int bo_bs, error, i; + int bo_bs, br_flags, error, i; bool redo, lpart; object = vp->v_object; + mp = vp->v_mount; la = IDX_TO_OFF(ma[count - 1]->pindex); if (la >= object->un_pager.vnp.vnp_size) return (VM_PAGER_BAD); @@ -4709,6 +4711,8 @@ vfs_bio_getpages(struct vnode *vp, vm_pa vnp.vnp_size, PAGE_SIZE) - la); } } + br_flags = (mp != NULL && (mp->mnt_kern_flag & MNTK_UNMAPPED_BUFS) + != 0) ? GB_UNMAPPED : 0; VM_OBJECT_WLOCK(object); again: for (i = 0; i < count; i++) @@ -4741,8 +4745,8 @@ again: lbnp = lbn; bsize = get_blksize(vp, lbn); - error = bread_gb(vp, lbn, bsize, NOCRED, GB_UNMAPPED, - &bp); + error = bread_gb(vp, lbn, bsize, curthread->td_ucred, + br_flags, &bp); if (error != 0) goto end_pages; if (LIST_EMPTY(&bp->b_dep)) {