svn commit: r364289 - head/sys/ufs/ufs

Konstantin Belousov kib at FreeBSD.org
Sun Aug 16 21:07:20 UTC 2020


Author: kib
Date: Sun Aug 16 21:07:19 2020
New Revision: 364289
URL: https://svnweb.freebsd.org/changeset/base/364289

Log:
  VMIO reads: enable for UFS
  
  Move v_object creation earlier, so that VIRF_PGREAD is never set if
  v_object is NULL.  There is no much harm from instantiating v_object
  when later check for append-only flags disallows open.
  
  Reviewed by:	markj
  Tested by:	pho
  Sponsored by:	The FreeBSD Foundation
  Differential revision:	https://reviews.freebsd.org/D25968

Modified:
  head/sys/ufs/ufs/ufs_vnops.c

Modified: head/sys/ufs/ufs/ufs_vnops.c
==============================================================================
--- head/sys/ufs/ufs/ufs_vnops.c	Sun Aug 16 21:05:56 2020	(r364288)
+++ head/sys/ufs/ufs/ufs_vnops.c	Sun Aug 16 21:07:19 2020	(r364289)
@@ -282,13 +282,20 @@ ufs_open(struct vop_open_args *ap)
 		return (EOPNOTSUPP);
 
 	ip = VTOI(vp);
+	vnode_create_vobject(vp, DIP(ip, i_size), ap->a_td);
+	if (vp->v_type == VREG && (vp->v_irflag & VIRF_PGREAD) == 0) {
+		VI_LOCK(vp);
+		vp->v_irflag |= VIRF_PGREAD;
+		VI_UNLOCK(vp);
+	}
+
 	/*
 	 * Files marked append-only must be opened for appending.
 	 */
 	if ((ip->i_flags & APPEND) &&
 	    (ap->a_mode & (FWRITE | O_APPEND)) == FWRITE)
 		return (EPERM);
-	vnode_create_vobject(vp, DIP(ip, i_size), ap->a_td);
+
 	return (0);
 }
 


More information about the svn-src-all mailing list