• Amir Goldstein's avatar
    ovl: add support for "xino" mount and config options · 795939a9
    Amir Goldstein authored
    With mount option "xino=on", mounter declares that there are enough
    free high bits in underlying fs to hold the layer fsid.
    If overlayfs does encounter underlying inodes using the high xino
    bits reserved for layer fsid, a warning will be emitted and the original
    inode number will be used.
    
    The mount option name "xino" goes after a similar meaning mount option
    of aufs, but in overlayfs case, the mapping is stateless.
    
    An example for a use case of "xino=on" is when upper/lower is on an xfs
    filesystem. xfs uses 64bit inode numbers, but it currently never uses the
    upper 8bit for inode numbers exposed via stat(2) and that is not likely to
    change in the future without user opting-in for a new xfs feature. The
    actual number of unused upper bit is much larger and determined by the xfs
    filesystem geometry (64 - agno_log - agblklog - inopblog). That means
    that for all practical purpose, there are enough unused bits in xfs
    inode numbers for more than OVL_MAX_STACK unique fsid's.
    
    Another use case of "xino=on" is when upper/lower is on tmpfs. tmpfs inode
    numbers are allocated sequentially since boot, so they will practially
    never use the high inode number bits.
    
    For compatibility with applications that expect 32bit inodes, the feature
    can be disabled with "xino=off". The option "xino=auto" automatically
    detects underlying filesystem that use 32bit inodes and enables the
    feature. The Kconfig option OVERLAY_FS_XINO_AUTO and module parameter of
    the same name, determine if the default mode for overlayfs mount is
    "xino=auto" or "xino=off".
    Signed-off-by: 's avatarAmir Goldstein <amir73il@gmail.com>
    Signed-off-by: 's avatarMiklos Szeredi <mszeredi@redhat.com>
    795939a9