On Mon, Mar 4, 2019 at 10:06 PM Eric Sandeen <sandeen@xxxxxxxxxxx> wrote: > > > > On 3/4/19 5:45 PM, Dave Chinner wrote: > > On Mon, Mar 04, 2019 at 04:31:24PM -0500, tgill@xxxxxxxxxx wrote: > >> From: Todd Gill <tgill@xxxxxxxxxx> > >> > >> The xfs_only flag will allow the caller to request only XFS filesystems are > >> added to the fs table. > >> > >> For commands that are XFS specific (xfs_fsr, xfs_growfs, xfs_scrub) - pass > >> the flag as 1. > >> > >> The change avoids a hang when remote filesystem (like NFS) are non > >> responsive. > > > > I have the nagging feeling that this has been proposed, discussed > > and rejected previously. However, my search skills are sadly lacking > > today, because I can't find it in my local archive. Probably worth > > doing some more searching rather than repeating the discussion over > > again... > > FWIW, this problem is relatively new. It crept in when we decided that > xfs_quota should work on ext4, and so we had to slurp in non-xfs > mountpoints. Yay. > > Dave, I'm wondering if I didn't discuss this on IRC briefly and that's > what's triggering your memory... > It may also be commit 29647c8d572d9364c0f599932f2153af8f306966 that added xfs_quota support for ext4. In that change thestrcmp(mnt->mnt_type, "xfs") check was removed from fs_table_initialize_mounts(). If folks this this is a reasonable change, I'll make the requested improvements and send a new version. > May 03 17:32:07 <sandeen> dchinner, i'm not sure waht to do about our crazy is-it-mounted checks w.r.t. your subvols at this point. > May 03 17:32:18 <sandeen> I Kinda need to fix the "mkfs.xfs hangs on stuck nfs mounts, wut?!" problem > May 03 17:34:54 <djwong> check fsname[0] == '/' like e2fsprogs does :D > May 03 17:35:34 <sandeen> I pointed and laughed at that, but actually ... > May 03 17:35:46 <sandeen> dave's fs/volume paths will be full paths from / > May 03 17:36:12 <sandeen> you ... can't really get an actual device node in /proc/mounts w/ a relative path either, right? > May 03 17:36:15 <sandeen> maybe that's not so bad. > May 03 17:37:00 <sandeen> see if the "device" contains a : and then try to ping the stuff before it ;) > May 03 17:37:07 <sandeen> (I AM KIDDING) > May 03 17:37:44 <sandeen> anyway, skipping anything that doesn't start with '/' might actually be smart/ok > May 03 17:40:33 <sandeen> if youv'e somehow contrived an actual device that doesn't have a path in /proc/mounts and you go to try to mkfs it while mounted I think you get to keep all the explody bits. > May 03 17:53:00 <dchinner> sandeen: just ignore them - I'll do whatever I need to do to make them work again when your code hits the tree... > > but ... I don't know if anything ever got sent. > > I had also mused about something like: > > May 02 14:36:27 <sandeen> I wonder if this is safe in the "is it mounted" loop: > May 02 14:36:27 <sandeen> while ((mnt = getmntent(f)) != NULL) { > May 02 14:36:27 <sandeen> /* If the "fsname" is't a stat-able device, skip it */ > May 02 14:36:27 <sandeen> if (stat(mnt->mnt_fsname, &mst) < 0) > May 02 14:36:27 <sandeen> continue; > May 02 14:37:01 <sandeen> i.e. don't bother checking every procfs, nfs mount, tmpfs, cgroup, etc. > > -Eric