Resending it with updated patch (based on git) On 5/15/07, Trond Myklebust wrote: > On Tue, 2007-05-15 at 12:17 -0300, Flavio Leitner wrote: > > (please, keep myself on CC because I'm not subscribed) > > > > Hi, > > > > In the case of several (>500) mounts running at the same time with -o tcp, > > the number of attempts that succeed is about 300-400 because it run out > > of priviledged port (they are busy in TIME_WAIT state). > > > > The priviledged port range available (~512 ports) for this can't be changed to > > avoid more port conflicts. > > > > An option could be reuse these ports in TIME_WAIT state openning the socket > > with SO_REUSEADDR socket option, but the socket is a tuple: > > (local addr, local port, remote addr, remote port, proto) and it must be > > different from the previous one. Well, they always are equal when you > > mount the same NFS server, so it can't be. > > > > I think reducing TIME_WAIT state in kernel enabling fast recycle > > affects other tcp > > connections and have some extra undesireble effects. > > > > The solution I'm proposing is to add two new nfs parameters to specify > > a timeout and a number of retries to mount before fails. i.e. > > > > # mount -o tcp,rsvretry=10,rsvtimeout=5 server:/export /mnt > > > > This will affect mount.nfs to try bind a reserved port 10 times with a timeout > > of 5 seconds before give up. If not used, the default behavious is unchanged > > (i.e. try only one time and fails). > > > > The code should looks like: > > + int bind_retry=0 > > ... > > - if (bindresvport(so, &laddr) < 0) { > > + while (bindresvport(so, &laddr) < 0) { > > + if (errno == EADDRINUSE && --bind_retry > 0) { > > + sleep(bind_timeout); > > + continue; > > + } > > > > The real scenario could be a huge fstab or a MDA delivering e-mails for 500 > > users with home automounted. > > > > I was able to mount more than 1000 NFS with success in the second scenario > > where normally I only manage to have 200-400. > > > > What you think? > > Why not fix the 'retry' mount option to deal properly with this case? I > can't see why running out of reserved ports really needs its own mount > options. Sure, you are right. What about the attached one? Thanks! -- Flavio Leitner