• Mickaël Salaün's avatar
    hostfs: Fix ephemeral inodes · 74ce793b
    Mickaël Salaün authored
    hostfs creates a new inode for each opened or created file, which
    created useless inode allocations and forbade identifying a host file
    with a kernel inode.
    
    Fix this uncommon filesystem behavior by tying kernel inodes to host
    file's inode and device IDs.  Even if the host filesystem inodes may be
    recycled, this cannot happen while a file referencing it is opened,
    which is the case with hostfs.  It should be noted that hostfs inode IDs
    may not be unique for the same hostfs superblock because multiple host's
    (backed) superblocks may be used.
    
    Delete inodes when dropping them to force backed host's file descriptors
    closing.
    
    This enables to entirely remove ARCH_EPHEMERAL_INODES, and then makes
    Landlock fully supported by UML.  This is very useful for testing
    changes.
    
    These changes also factor out and simplify some helpers thanks to the
    new hostfs_inode_update() and the hostfs_iget() revamp: read_name(),
    hostfs_create(), hostfs_lookup(), hostfs_mknod(), and
    hostfs_fill_sb_common().
    
    A following commit with new Landlock tests check this new hostfs inode
    consistency.
    
    Cc: Anton Ivanov <anton.ivanov@cambridgegreys.com>
    Cc: Johannes Berg <johannes@sipsolutions.net>
    Acked-by: default avatarRichard Weinberger <richard@nod.at>
    Link: https://lore.kernel.org/r/20230612191430.339153-2-mic@digikod.netSigned-off-by: default avatarMickaël Salaün <mic@digikod.net>
    74ce793b
hostfs_user.c 7.36 KB