Re: [PATCH v2] romfs: use different way to generate fsid for BLOCK or MTD

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2016/12/28 下午5:44, Richard Weinberger wrote:
> CC'ing MTD
> 
> On Wed, Dec 28, 2016 at 9:53 AM, Coly Li <colyli@xxxxxxx> wrote:
>>  static struct kmem_cache *romfs_inode_cachep;
>> @@ -416,8 +417,14 @@ static void romfs_destroy_inode(struct inode *inode)
>>  static int romfs_statfs(struct dentry *dentry, struct kstatfs *buf)
>>  {
>>         struct super_block *sb = dentry->d_sb;
>> -       u64 id = huge_encode_dev(sb->s_bdev->bd_dev);
>> +       u64 id = 0;
>>
>> +#ifdef CONFIG_ROMFS_ON_BLOCK
>> +       id = huge_encode_dev(sb->s_bdev->bd_dev);
>> +#endif
>> +#ifdef  CONFIG_ROMFS_ON_MTD
>> +       id = huge_encode_dev(sb->s_dev);
>> +#endif
> 
> How is this supposed to work with CONFIG_ROMFS_BACKED_BY_BOTH=y?

Aha! Thanks for telling me this config option.
The purpose of f_fsid is to unify a file system volume, if
CONFIG_ROMFS_BACKED_BY_BOTH=y, it can firstly try sb->s_bdev->bd_dev. If
sb->s_bdev is NULL, then try sb->s_dev. If both failed, then f_fsid will
be 0.

> 
>>         buf->f_type = ROMFS_MAGIC;
>>         buf->f_namelen = ROMFS_MAXFN;
>>         buf->f_bsize = ROMBSIZE;
>> @@ -489,6 +496,13 @@ static int romfs_fill_super(struct super_block *sb, void *data, int silent)
>>         sb->s_flags |= MS_RDONLY | MS_NOATIME;
>>         sb->s_op = &romfs_super_ops;
>>
>> +#ifdef CONFIG_ROMFS_ON_MTD
>> +       /* Use same dev ID from the underlying mtdblock device */
>> +       if (sb->s_mtd)
>> +               sb->s_dev = MKDEV(MTD_BLOCK_MAJOR, sb->s_mtd->index);
>> +       else
>> +               sb->s_dev = MKDEV(MTD_BLOCK_MAJOR, 0);
> 
> Hmm, when there is no MTD, s_dev is still equal to mtd0, since mtd0 is
> ->index of
> value 0. This seems fishy to me.

You are right, if both CONFIG_ROMFS_ON_BLOCK and CONFIG_ROMFS_ON_MTD are
defined, here is buggy.

Thanks for your review, I will send out another version.

Coly
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux