Re: ENOMEM on socket writes

2001-01-14 Thread kuznet

Hello!

> memory".  Rsync is writing on a socket which is set non-blocking and
> the write is apparently returning ENOMEM.

This must not happen with stock 2.4.0. TCP never returns ENOMEM.
Please, investigate.

But application should be ready to get this error yet.


> >From the point of view of the application, ENOMEM is a little hard to
> deal with constructively. 

The only constructive way to handle this is to fail instantly
and to release all the allocated resources as soon as possible,
avoiding operations requiring allocating new resources.


>Select will say that the socket is
> writable, so there doesn't seem to be a good way of waiting until the
> write has a chance of succeeding.

It never will if you do not abort something.

It is in theory. In practice, write() on TCP returns EAGAIN on
transient errors and application will spin, which is normal.

Alexey
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/



ENOMEM on socket writes

2001-01-11 Thread Paul Mackerras

Using 2.4, and the prereleases since about early December or so, I
have been seeing rsync dying with an error "write: unable to allocate
memory".  Rsync is writing on a socket which is set non-blocking and
the write is apparently returning ENOMEM.

Is this actually a new behaviour, or just something which was possible
all along but which has been made more likely by the recent VM
changes?

>From the point of view of the application, ENOMEM is a little hard to
deal with constructively.  Select will say that the socket is
writable, so there doesn't seem to be a good way of waiting until the
write has a chance of succeeding.  About the only thing that I can see
to do is just to spin trying the write over and over - does anyone
have a better idea?

Paul.

-- 
Paul Mackerras, Open Source Research Fellow, Linuxcare, Inc.
+61 2 6262 8990 tel, +61 2 6262 8991 fax
[EMAIL PROTECTED], http://www.linuxcare.com.au/
Linuxcare.  Support for the revolution.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/