svn commit: r218550 -
head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Andriy Gapon
avg at FreeBSD.org
Fri Feb 11 14:36:16 UTC 2011
On 11/02/2011 05:46, Konstantin Belousov wrote:
> Author: kib
> Date: Fri Feb 11 10:46:15 2011
> New Revision: 218550
> URL: http://svn.freebsd.org/changeset/base/218550
>
> Log:
> For UIO_NOCOPY case of reading request on zfs vnode, which has vm object
> attached, activate the page after the successful read, and free the page
> if read was unsuccessfull.
>
> Freshly allocated page is not on any queue yet, and not activating (or
> deactivating) the page leaves it on no queue, excluding the page from
> pagedaemon scans and making the memory disappeared until the vnode
> reclaimed.
>
> Reviewed by: avg
And
Pointyhat to: avg
as well.
> MFC after: 1 week
>
> Modified:
> head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_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 Fri Feb 11 10:06:49 2011 (r218549)
> +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Fri Feb 11 10:46:15 2011 (r218550)
> @@ -527,9 +527,15 @@ again:
> zfs_unmap_page(sf);
> }
> VM_OBJECT_LOCK(obj);
> - if (error == 0)
> - m->valid = VM_PAGE_BITS_ALL;
> vm_page_io_finish(m);
> + vm_page_lock(m);
> + if (error == 0) {
> + m->valid = VM_PAGE_BITS_ALL;
> + vm_page_activate(m);
> + } else
> + vm_page_free(m);
> + vm_page_unlock(m);
> +
> if (error == 0) {
> uio->uio_resid -= bytes;
> uio->uio_offset += bytes;
--
Andriy Gapon
More information about the svn-src-head
mailing list