From 3a50d97c5c165f2ee59b643bb0e70f8646bbdaa6 Mon Sep 17 00:00:00 2001 From: alc <alc@FreeBSD.org> Date: Sun, 9 Mar 2003 20:38:56 +0000 Subject: [PATCH] Remove some unnecessary actions by the zero-copy setup and teardown code. Remove an incorrect comment. (Incrementing an object's reference count does not prevent a process from exiting. The real concern here is that the physical page must not be deleted until transmission is complete. That is already handled by the VM system and sf_buf_free().) Tested by: ken --- sys/kern/uipc_cow.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/sys/kern/uipc_cow.c b/sys/kern/uipc_cow.c index 21701e0f597b..dfe2c8690ce3 100644 --- a/sys/kern/uipc_cow.c +++ b/sys/kern/uipc_cow.c @@ -87,19 +87,15 @@ socow_iodone(void *addr, void *args) { int s; struct sf_buf *sf; - - vm_offset_t paddr; vm_page_t pp; sf = dtosf(addr); - paddr = vtophys((vm_offset_t)addr); - pp = PHYS_TO_VM_PAGE(paddr); + pp = sf->m; s = splvm(); /* remove COW mapping */ vm_page_lock_queues(); vm_page_cowclear(pp); vm_page_unlock_queues(); - vm_object_deallocate(pp->object); splx(s); /* note that sf_buf_free() unwires the page for us*/ sf_buf_free(addr, NULL); @@ -152,11 +148,6 @@ socow_setup(struct mbuf *m0, struct uio *uio) vm_page_wire(pp); vm_page_unlock_queues(); - /* - * prevent the process from exiting on us. - */ - vm_object_reference(pp->object); - /* * attach to mbuf */