In article <[email protected]>, Nicolas Joly <[email protected]> wrote: > >Hi, > >I do have access, at work, to a new NFS filer (Isilon). Unfortunately >this new beast is in a different subnet ... and, on that subnet, most >UDP ports are filtered. Using TCP to mount exported filesystems works >just fine, but problems arise when trying to unmount them. > >njoly@lanfeust [~]> sudo mount -t nfs -o ro,tcp >filer.yyy.pasteur.fr:/exported/fs /mnt >njoly@lanfeust [~]> sudo umount /mnt >Bad MNT RPC: RPC: Timed out > >Network trace show that UDP packets are sent to the filer (sunrpc port >is ok, but port 300 gets filtered) : > >17:45:23.906523 IP (tos 0x0, ttl 64, id 7200, offset 0, flags [none], >proto UDP (17), length 84) > lanfeust.xxx.pasteur.fr.exp1 > filer.yyy.pasteur.fr.sunrpc: [udp sum >ok] UDP, length 56 >17:45:23.906908 IP (tos 0x0, ttl 63, id 38862, offset 0, flags [none], >proto UDP (17), length 56) > filer.yyy.pasteur.fr.sunrpc > lanfeust.xxx.pasteur.fr.exp1: [udp sum >ok] UDP, length 28 >17:45:23.906997 IP (tos 0x0, ttl 64, id 7201, offset 0, flags [none], >proto UDP (17), length 192) > lanfeust.xxx.pasteur.fr.1020 > filer.yyy.pasteur.fr.300: [udp sum >ok] UDP, length 164 >17:45:24.012627 IP (tos 0x0, ttl 64, id 7212, offset 0, flags [none], >proto UDP (17), length 192) > lanfeust.xxx.pasteur.fr.1020 > filer.yyy.pasteur.fr.300: [udp sum >ok] UDP, length 164 > >Looking into umount(8) the code, show that lastest communication with >the server is unconditionnaly made over UDP (from sbin/umount/umount.c) : > >#ifndef SMALL > if (ai != NULL && !(fflag & MNT_FORCE)) { > clp = clnt_create(hostp, RPCPROG_MNT, RPCMNT_VER1, "udp"); > if (clp == NULL) { > clnt_pcreateerror("Cannot MNT PRC"); > return 1; > } > clp->cl_auth = authsys_create_default(); > try.tv_sec = 20; > try.tv_usec = 0; > clnt_stat = clnt_call(clp, RPCMNT_UMOUNT, xdr_dir, > __UNCONST(name), xdr_void, NULL, try); > if (clnt_stat != RPC_SUCCESS) { > clnt_perror(clp,"Bad MNT RPC"); > return 1; > } > auth_destroy(clp->cl_auth); > clnt_destroy(clp); > } >#endif /* ! SMALL */ > >Hacking it to use "tcp" instead instead of "udp" makes the problem >vanish. > >While i can ask network admins to open a few more UDP ports to make it >work ... I wonder if this should be adjusted to use the protocol which >was requested at mount ?
Or at least a flag to specify the protocol.... This is a bug, we should fix it. christos
