On 07/31/2012 09:07 AM, Jim Meyering wrote: > I did something similar in gnulib's fts.c when deciding > whether it needs to sort directory entries on inode number > in order to avoid an O(N^2) seek storm. There, I used fstatfs > to get each device's statfs.f_type, so far without complaint. > Then, since we're using a file descriptor, there would be no race.
For that purpose, a race isn't such a big deal, since it merely causes fts to be slower. But for 'grep' a race might cause the output to be incorrect, so we need to consider it more carefully. I don't see how having a file descriptor avoids a race. Using fstat gives us only a device+inode pair, right? And if there's a unmount+mount between the time that we do the fstat, and the time we check the file system, the device number might not correspond to what's in the mount table that we see, so we might get incorrect information about the current file.
