• Hou Tao's avatar
    erofs: check the uniqueness of fsid in shared domain in advance · 27f2a2dc
    Hou Tao authored
    When shared domain is enabled, doing mount twice with the same fsid and
    domain_id will trigger sysfs warning as shown below:
    
     sysfs: cannot create duplicate filename '/fs/erofs/d0,meta.bin'
     CPU: 15 PID: 1051 Comm: mount Not tainted 6.1.0-rc6+ #1
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996)
     Call Trace:
      <TASK>
      dump_stack_lvl+0x38/0x49
      dump_stack+0x10/0x12
      sysfs_warn_dup.cold+0x17/0x27
      sysfs_create_dir_ns+0xb8/0xd0
      kobject_add_internal+0xb1/0x240
      kobject_init_and_add+0x71/0xa0
      erofs_register_sysfs+0x89/0x110
      erofs_fc_fill_super+0x98c/0xaf0
      vfs_get_super+0x7d/0x100
      get_tree_nodev+0x16/0x20
      erofs_fc_get_tree+0x20/0x30
      vfs_get_tree+0x24/0xb0
      path_mount+0x2fa/0xa90
      do_mount+0x7c/0xa0
      __x64_sys_mount+0x8b/0xe0
      do_syscall_64+0x30/0x60
      entry_SYSCALL_64_after_hwframe+0x46/0xb0
    
    The reason is erofs_fscache_register_cookie() doesn't guarantee the primary
    data blob (aka fsid) is unique in the shared domain and
    erofs_register_sysfs() invoked by the second mount will fail due to the
    duplicated fsid in the shared domain and report warning.
    
    It would be better to check the uniqueness of fsid before doing
    erofs_register_sysfs(), so adding a new flags parameter for
    erofs_fscache_register_cookie() and doing the uniqueness check if
    EROFS_REG_COOKIE_NEED_NOEXIST is enabled.
    
    After the patch, the error in dmesg for the duplicated mount would be:
    
     erofs: ...: erofs_domain_register_cookie: XX already exists in domain YY
    Reviewed-by: default avatarJia Zhu <zhujia.zj@bytedance.com>
    Reviewed-by: default avatarJingbo Xu <jefflexu@linux.alibaba.com>
    Reviewed-by: default avatarChao Yu <chao@kernel.org>
    Signed-off-by: default avatarHou Tao <houtao1@huawei.com>
    Link: https://lore.kernel.org/r/20221125110822.3812942-1-houtao@huaweicloud.com
    Fixes: 7d419637 ("erofs: Support sharing cookies in the same domain")
    Signed-off-by: default avatarGao Xiang <hsiangkao@linux.alibaba.com>
    27f2a2dc
fscache.c 16.8 KB