On Wed, Jun 19, 2002 at 00:43:13 -0400, Bosko Milekic wrote: > On Tue, Jun 18, 2002 at 10:36:36PM -0600, Kenneth D. Merry wrote: > > > > I've released a new zero copy sockets snapshot, against -current from June > > 18th, 2002. > > > > http://people.FreeBSD.org/~ken/zero_copy > > > > The fixes that went into this snapshot: > > > > - Take mutex locking out of ti_attach(), it isn't really needed. > > As long as we can assume that probes of successive ti(4) instances > > happen sequentially, we'll be safe in doing this. Thanks to John > > Baldwin for pointing out the solution to that problem. (The lock in > > ti_attach() was causing all sorts of WITNESS warnings when > > bus_setup_intr() was called.) > > > > - Added a new routine, vm_object_allocate_wait(). This is a variant of > > vm_object_allocate() that allows the user to specify whether the > > uma_zalloc() call inside vm_object_allocate_wait() is called with > > M_WAITOK or M_NOWAIT. This eliminates a WITNESS warning caused when > > jumbo_vm_init() calls vm_object_allocate() with the jumbo lock held, and > > potentially gives other callers the option of eliminating the mandatory > > wait on the uma_zalloc() call. > > I think this problem was fixed in recent -CURRENT by JeffR. Notably, > the VM system should not allow itself to recurse on itself when called > with M_NOWAIT.
A number of problems have been fixed, but I don't think this one would get fixed by internal VM system changes: vm_object_t vm_object_allocate(objtype_t type, vm_size_t size) { vm_object_t result; result = (vm_object_t) uma_zalloc(obj_zone, M_WAITOK); _vm_object_allocate(type, size, result); return (result); } uma_zalloc() is called with M_WAITOK unconditionally. My solution: vm_object_t vm_object_allocate_wait(objtype_t type, vm_size_t size, int flags) { vm_object_t result; result = (vm_object_t) uma_zalloc(obj_zone, flags); if (result != NULL) _vm_object_allocate(type, size, result); return (result); } vm_object_allocate() is implemented by calling vm_object_allocate_wait() with M_WAITOK. Ken -- Kenneth Merry [EMAIL PROTECTED] To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-net" in the body of the message