Date: Tue, 7 Oct 2014 21:24:22 -0400 (EDT) From: Rick Macklem <rmacklem@uoguelph.ca> To: Garrett Wollman <wollman@csail.mit.edu> Cc: freebsd-fs@freebsd.org Subject: Re: 9.3 NFS client bug? Message-ID: <1991198781.60122149.1412731462373.JavaMail.root@uoguelph.ca> In-Reply-To: <21556.28888.523838.856998@khavrinen.csail.mit.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
Garrett Wollman wrote: > <<On Tue, 7 Oct 2014 18:16:24 -0400 (EDT), Rick Macklem > <rmacklem@uoguelph.ca> said: > > > ps: I would like to hear what happens when you test against a UFS > > volume. > > We don't have any UFS volumes, and this 96-drive file server is not > likely ever to have any. > > FWIW, I now have a packet capture of the complete test, taken from > the > server side, if anyone wants to look at it in detail. > > The inner loop of the "sequential delete" benchmark looks like this > (slightly simplified): > > while(1) > { > file_ent = readdir(d); > if(file_ent == NULL) > break; > if(file_ent->d_name[0] != '.') > { > if(unlink(file_ent->d_name)) > { > fprintf(stderr, "Can't delete file %s\n", > file_ent->d_name); > return -1; > } > count++; > } > } > closedir(d); > > This makes me wonder if there isn't some issue with the NFS > VOP_READDIR losing its place in the presence of interleaved deletes. > fts(3) won't see this as it reads the whole directory at once (for > sorting, if requested) before invoking the callback on each entry. > Yep. As noted in the other reply, an unlink() inside a loop on readdir() has never worked for NFS on FreeBSD, as far as I know. It's related to the handling of directory offset cookies, but I can't remember all the details. rick > -GAWollman > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1991198781.60122149.1412731462373.JavaMail.root>