util-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: L A Walsh <lkml@tlinx.org>
To: Karel Zak <kzak@redhat.com>
Cc: util-linux@vger.kernel.org
Subject: Re: is there a util, or can findmnt be enhanced...(RFE?)
Date: Mon, 15 Mar 2021 12:29:37 -0700	[thread overview]
Message-ID: <604FB5A1.3010404@tlinx.org> (raw)
In-Reply-To: <20210315110221.fpz66zkpwqp6ebva@ws.net.home>

Sorry, thought this was something simple, but when I thought
about it I ended up with a few more details 😓

On 2021/03/15 04:02, Karel Zak wrote:
>  On Fri, Mar 12, 2021 at 08:48:39PM -0800, L A Walsh wrote:
> > Why does it
> > produce no output when a non-mount-point is entered?  I.e. -- is that
> > behavior something that is currently relied upon?
>
>  Do you mean the default output (when --target is not specified)?
>
>  The problem is that findmnt follows mount(8) behavior when search for
>  filesystem. It means you do not have to be explicit and you can use
>  source as well as target...
---
  Note: commenting from mount manpage:

|   For more robust and customizable output  use  findmnt(8),  espe-
|   cially  in  your  scripts.   Note that control characters in the
|   mountpoint name are replaced with '?'.
---
  I.e. "findmnt" was created because the behavior of 'mount' was
lacking. 😉   In 'mount', if you give a non-mount point, you get
mount's idea of useful:

  mount: /dev/sda: can't find in /etc/fstab
  mount /home/karel: can't find in /etc/fstab

  Since findmnt was created because the output of 'mount' is
lacking, findmnt shouldn't need to push off output to another
util because it, itself is lacking! 😟

Ex:
>  $ findmnt --target /dev/sda3
>  TARGET SOURCE   FSTYPE   OPTIONS
>  /dev   devtmpfs devtmpfs 
rw,nosuid,noexec,size=8144964k,nr_inodes=2036241,mode=755,inode64
----
    1st comment: unix philosophy, less is more: findmnt should only
list headers when asked for them.  Two reasons:  Since the output
doesn't fit on 1 line, it will be wrapped and will be confusing
for interactive use, and for script use -- they don't need it and
can adjust output for exactly what they want.  Usually, headers
need removing so data fields can be processed.

    2nd comment -- options should remain optional and not
listed by default (use --verbose to display all options).

    2a) default options should be suppressed by default (else
--expand-defaults could be used if really needed).  At most, display
'default' for an actual mountpoint (+ deltas from default)

   3rd comment -- don't truncate by default, but do allow
field width specifiers (%.20SOURCE\t %.30TARGET...).  To
truncate, maybe have -w[maxwidth], with default being screen
width if to tty?


>  now try to imagine --target is the default, you will get always any
>  answer for arbitrary path ... IMHO very confusing for many users.
---
  Honestly, isn't the default output likely confusing for many
users?  😉  Alternatively,

if device w/mount point, show:

# findmnt /dev/sdb
/dev/sdb1   [not] mounted on  /boot
# findmnt /boot
/dev/sdb1   [not] mounted on  /boot

(i.e. ^^ keep same behavior of allowing dev or /mntpnt)

if device w/no mountpoint in /etc/fstab, then same as 'mount':

# findmnt /dev/sda
findmnt: /dev/sda: can't find in /etc/fstab

if not device and not mountpoint (I'm not 100% certain about
the exact text, but something like):

# findmnt /boot/sbin/v86d
sbin/v86d   in /boot      (/dev/sdb1)
  -or-
/boot/[sbin/v86d]   on    /dev/sdb1

Or if format specified, for above 2:
# findmnt --format "%-40SUBPATH in TARGET\t(SOURCE)
# findmnt --format "TARGET/[SUBPATH]\ton\tSOURCE"


Having 'no output' for the default, is also a bit
confusing for users



>  I have doubts we can change this default behavior due to backward
>  compatibility (yes, the proper way how to use findmnt in scripts is to
>  use --target, --sources or --mountpoint, but people do not use it
>  ...).
---
  That's just the thing... who/what could be relying on "no output"?



>  It would be probably better to introduce a small new util "path2fs" to
>  get mountpoint (or source), but without any other findmnt functionality.
---
See comment about why findmnt was needed in the 1st place... 😁


>  We have mountpoint(1), but it returns TRUE/FALSE if the given path is
>  a mountpoint.
---

  Ya, sorta unrelated, but that's where "no output" might be
expected since it's only used for its return value, but I can't
see how findmnt would be similarly used...

*cheers*!
😱



      reply	other threads:[~2021-03-15 19:30 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-11 20:44 is there a util, or can findmnt be enhanced...(RFE?) L A Walsh
2021-03-12  7:55 ` Karel Zak
2021-03-13  4:48   ` L A Walsh
2021-03-15 11:02     ` Karel Zak
2021-03-15 19:29       ` L A Walsh [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=604FB5A1.3010404@tlinx.org \
    --to=lkml@tlinx.org \
    --cc=kzak@redhat.com \
    --cc=util-linux@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).