Eryk Sun <[email protected]> added the comment:
> What do you mean by "portable version of mountpoint"?
posixpath.ismount is based on a portable method to detect a mountpoint in Unix
systems, since POSIX lacks a portable function for this. The implementation is
simple. A symlink is never a mountpoint. Otherwise compare the lstat of the
path and its parent directory. It's a mountpoint if the st_dev fields are
different. If not, it's a mountpoint if the st_ino fields are the same (e.g.
"/").
The portable method may fail in particular cases. For instance, a bind mount in
the Linux kernel (not bindfs) doesn't create a new device. For example, given
"/opt" is bound to "opt" in the current directory on the same filesystem,
ismount returns a false negative:
>>> posixpath.ismount('opt')
False
But it's a mountpoint according to the "/proc/self/mountinfo" table:
>>> os.system('mountpoint opt')
opt is a mountpoint
0
The above false negative is documented, so a precedent exists to simply
document the false positive with a btrfs subvolume. Developers can make of it
what they will. If it matters to not count this case as a mountpoint, a script
will have to implement its own platform-specific solution (e.g. use subprocess
to call `mountpoint`).
----------
nosy: +eryksun
versions: +Python 3.8, Python 3.9
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue37339>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com