Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Sep 2014 10:35:04 +0000 (UTC)
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r270963 - projects/sendfile/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Message-ID:  <201409021035.s82AZ4Ae051285@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: glebius
Date: Tue Sep  2 10:35:04 2014
New Revision: 270963
URL: http://svnweb.freebsd.org/changeset/base/270963

Log:
  Plug new sendfile(2) operation on ZFS. Unlike UFS it is blocking on I/O.
  
  Sponsored by:	Netflix
  Sponsored by:	Nginx, Inc.

Modified:
  projects/sendfile/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c

Modified: projects/sendfile/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
==============================================================================
--- projects/sendfile/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c	Tue Sep  2 04:22:42 2014	(r270962)
+++ projects/sendfile/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c	Tue Sep  2 10:35:04 2014	(r270963)
@@ -5837,6 +5837,26 @@ zfs_freebsd_getpages(ap)
 }
 
 static int
+zfs_freebsd_getpages_async(ap)
+	struct vop_getpages_async_args /* {
+		struct vnode *a_vp;
+		vm_page_t *a_m;
+		int a_count;
+		int a_reqpage;
+		vm_ooffset_t a_offset;
+		void (*)(void *) a_vop_getpages_iodone;
+		void *a_arg;
+	} */ *ap;
+{
+	int error;
+
+	error = zfs_getpages(ap->a_vp, ap->a_m, ap->a_count, ap->a_reqpage);
+	vm_page_xunbusy(ap->a_m[ap->a_reqpage]);
+	ap->a_vop_getpages_iodone(ap->a_arg);
+	return (error);
+}
+
+static int
 zfs_putpages(struct vnode *vp, vm_page_t *ma, size_t len, int flags,
     int *rtvals)
 {
@@ -7146,6 +7166,7 @@ struct vop_vector zfs_vnodeops = {
 	.vop_setacl =		zfs_freebsd_setacl,
 	.vop_aclcheck =		zfs_freebsd_aclcheck,
 	.vop_getpages =		zfs_freebsd_getpages,
+	.vop_getpages_async =	zfs_freebsd_getpages_async,
 	.vop_putpages =		zfs_freebsd_putpages,
 };
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201409021035.s82AZ4Ae051285>