为什么在Linux虚拟文件系统中,s_blocksize_bits比普通二进制文件少一位?

问题描述

struct super_block结构定义的一部分如下所示:

git@github.com:gothinkster/react-redux-realworld-example-app.git

struct super_block { //... dev_t s_dev; /* identifier */ unsigned char s_blocksize_bits; /* block size in bits */ unsigned long s_blocksize; /* block size in bytes */ unsigned char s_dirt; /* dirty flag */ loff_t s_maxbytes; /* max file size */ struct file_system_type *s_type; /* filesystem type */ struct super_operations *s_op; /* superblock methods */ //... unsigned long s_flags; /* mount flags */ unsigned long s_magic; /* filesystem’s magic number */ struct dentry *s_root; /* directory mount point */ //... char s_id[32]; /* informational name */ void *s_fs_info; /* filesystem private info */ }; 字段中,我有些困惑。例如,如果我设置s_blocksize_bits,则正确的书写方式是设置s_blocksize=512。但是512的二进制表示是1000000000,这意味着它需要10位存储它。为什么Linux内核要求少一点。

这里我在Linux内核中附加了十六进制转换的源代码

s_blocksize_bits=9

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)