Christoph Hellwig wrote: > On Tue, Jan 12, 2016 at 08:59:45PM +0100, Felix Janda wrote: > > ustat has been used to check whether a device file is mounted. > > The function is deprecated and not supported by uclibc and musl. > > Now do the check using the *mntent functions. > > > > Based on patch by Natanael Copa <ncopa@xxxxxxxxxxxxxxx>. > > > > Signed-off-by: Felix Janda <felix.janda@xxxxxxxxx> > > ustat is a lot more efficient in checking for the mountedness > than this loop, so I'd really prefer not to do this unconditionally. Is this really performance relevant? Notice that linux's platform_check_iswritable does something very similar. I've tried to make it consistent with the version from freebsd.c. > As far as Linux is concerned the best thing we could do is to use > O_EXCL for any open of a device file, as Linux overloadds O_EXCL > behavior for block devices so that any other O_EXCL open will > be rejected if one has the file open. > > But that might be a major pain to find into the cross platform > framework.. Hmm, so we couldn't we use for linux just something like int platform_check_ismounted(char *name, char *block, struct stat64 *s, int verbose) { int fd = open(block, O_EXCL); int e = errno; if (fd != -1) close(fd); if (e == EBUSY) { if (verbose) fprintf(stderr, _("%s: %s contains a mounted filesystem\n"), progname, name); return 1; } return 0; } Felix _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs