Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 3 Jun 1998 05:00:01 -0700 (PDT)
From:      David Greenman <dg@root.com>
To:        freebsd-bugs@FreeBSD.ORG
Subject:   Re: kern/6837: in_setpeeraddr() and in_setsockaddr() block on memory 
Message-ID:  <199806031200.FAA21557@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/6837; it has been noted by GNATS.

From: David Greenman <dg@root.com>
To: Craig Metz <cmetz@inner.net>
Cc: freebsd-gnats-submit@FreeBSD.ORG
Subject: Re: kern/6837: in_setpeeraddr() and in_setsockaddr() block on memory 
Date: Wed, 03 Jun 1998 04:59:40 -0700

 >  If you do it M_WAIT style, the kernel tsleep()s the process, and the app
 >doesn't have any choice. It sleeps, possibly for a long time. By the time it
 >wakes up, given many typical places where getpeername()/getsockname() are used,
 >the returned value will be irrelevant.
 
    In many cases the delay won't be for more than a few microseconds while
 the pagedaemon wakes up and frees some cruft. In the worst case, some pages
 need to be pushed to swap, but even that should be less than a second of
 wait, so I don't see your argument about client retries. I really don't
 think it is a good idea to make this non-blocking.
 
 >  The other, far easier to explain answer, is that we're putting some code in
 >there for IPv6 support that makes the malloc() happen at splnet(), and
 >tsleep()ing at such a priority is not good.
 
    That would be bad, but I don't think the solution is to make it fail on
 temporary resource shortages. I think a better solution would be to change
 the functions to take an already (m)alloced struct sockaddr_in and change
 the callers (I think there are only two) to accomodate.
 
 -DG
 
 David Greenman
 Co-founder/Principal Architect, The FreeBSD Project

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message



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