[PATCH 4 of 5 V2] util: add a getfstype method

Yuya Nishihara yuya at tcha.org
Sat Mar 11 19:48:54 EST 2017


On Thu, 2 Mar 2017 22:13:30 -0800, Jun Wu wrote:
> # HG changeset patch
> # User Jun Wu <quark at fb.com>
> # Date 1488521308 28800
> #      Thu Mar 02 22:08:28 2017 -0800
> # Node ID d79c818940ff7e29c76ff5e985b920885aa4e7c1
> # Parent  1cf153ec3faaef92c9ad3515372a6d8591195d6e
> # Available At https://bitbucket.org/quark-zju/hg-draft
> #              hg pull https://bitbucket.org/quark-zju/hg-draft -r d79c818940ff
> util: add a getfstype method

Can you update debugfsinfo to include this information?

> +if pycompat.sysplatform.startswith('linux'):
> +    # for Linux, reading /etc/mtab (symlink to /proc/self/mounts) is a sane way
> +    # to get the current filesystem mount information
> +    def _getfstypetable():
> +        result = {}
> +        try:
> +            with open('/etc/mtab', 'r') as f:
> +                for line in f.read().splitlines():
> +                    name, path, fs, ops, freq, passno = line.split(' ', 5)
> +                    result[path] = fs
> +        except OSError:

For reminder, it should be IOError.

Shouldn't we take care of mtab corruption as well? IIRC, it was a plain file
on old Linux.

> +# cache _getfstypetable() to avoid repetitive expensive queries, it assumes
> +# mount table does not change during the lifetime of the process, which is
> +# reasonable for short-lived process
> +_fstypetable = None

This can be problem on chg or hgweb. Short-lived cache in vfs would help.


More information about the Mercurial-devel mailing list