kern/141305: commit references a PR

dfilter service dfilter at FreeBSD.ORG
Wed Sep 15 10:40:03 UTC 2010


The following reply was made to PR kern/141305; it has been noted by GNATS.

From: dfilter at FreeBSD.ORG (dfilter service)
To: bug-followup at FreeBSD.org
Cc:  
Subject: Re: kern/141305: commit references a PR
Date: Wed, 15 Sep 2010 10:31:35 +0000 (UTC)

 Author: avg
 Date: Wed Sep 15 10:31:27 2010
 New Revision: 212650
 URL: http://svn.freebsd.org/changeset/base/212650
 
 Log:
   tmpfs, zfs + sendfile: mark page bits as valid after populating it with data
   
   Otherwise, adding insult to injury, in addition to double-caching of data
   we would always copy the data into a vnode's vm object page from backend.
   This is specific to sendfile case only (VOP_READ with UIO_NOCOPY).
   
   PR:		kern/141305
   Reported by:	Wiktor Niesiobedzki <bsd at vink.pl>
   Reviewed by:	alc
   Tested by:	tools/regression/sockets/sendfile
   MFC after:	2 weeks
 
 Modified:
   head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
   head/sys/fs/tmpfs/tmpfs_vnops.c
 
 Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
 ==============================================================================
 --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c	Wed Sep 15 10:18:18 2010	(r212649)
 +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c	Wed Sep 15 10:31:27 2010	(r212650)
 @@ -498,6 +498,8 @@ again:
  				sched_unpin();
  			}
  			VM_OBJECT_LOCK(obj);
 +			if (error == 0)
 +				vm_page_set_valid(m, off, bytes);
  			vm_page_wakeup(m);
  			if (error == 0)
  				uio->uio_resid -= bytes;
 
 Modified: head/sys/fs/tmpfs/tmpfs_vnops.c
 ==============================================================================
 --- head/sys/fs/tmpfs/tmpfs_vnops.c	Wed Sep 15 10:18:18 2010	(r212649)
 +++ head/sys/fs/tmpfs/tmpfs_vnops.c	Wed Sep 15 10:31:27 2010	(r212650)
 @@ -562,6 +562,8 @@ lookupvpg:
  		sf_buf_free(sf);
  		sched_unpin();
  		VM_OBJECT_LOCK(vobj);
 +		if (error == 0)
 +			vm_page_set_valid(m, offset, tlen);
  		vm_page_wakeup(m);
  		VM_OBJECT_UNLOCK(vobj);
  		return	(error);
 _______________________________________________
 svn-src-all at freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe at freebsd.org"
 


More information about the freebsd-fs mailing list