svn commit: r270963 - projects/sendfile/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Gleb Smirnoff
glebius at FreeBSD.org
Tue Sep 2 10:35:05 UTC 2014
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,
};
More information about the svn-src-projects
mailing list