免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: qtdszws
打印 上一主题 下一主题

映射的冲突 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2007-06-21 12:41 |只看该作者
1)block 大小在EXT2是4K, 你用什么方法都可以知道,比如用lde看磁盘。或看__getblk的大小, 或找blkdev中的参数(估计有)。

2)读regluar file, 你读FAT分区上的一个block大小是512的文件内容看,page cache都有bh.


原帖由 zx_wing 于 2007-6-20 20:32 发表于 23楼  

>>没有bh的原因是block的大小等于page大小.

我想不是这样的,这个可以通过源码来证明。以读为例子,我们从regluar file的read操作中和page cache打交道的函数do_generic_mapping_read()开始(这里只 ...

论坛徽章:
0
32 [报告]
发表于 2007-06-21 13:55 |只看该作者
1)block 大小在EXT2是4K, 你用什么方法都可以知道,比如用lde看磁盘。或看__getblk的大小, 或找blkdev中的参数(估计有)。
__getblk使用的大小取决于传入的参数。希望版主能给出明确的证据,因为我对默认block大小1k的印象非常强烈,没有明确的证据我无法认为它是4k。并且我也想不出用4k的理由。不用4k的理由我上个帖子中已经给出。

2)读regluar file, 你读FAT分区上的一个block大小是512的文件内容看,page ca ...
如果版主坚持这么认为,我也没有办法。但我可以非常确定的在2.6内核中不是你说这样。上个回帖中已经给出了源码路径了,只要真去阅读了问题自然明了,这个问题就不争论了。

[ 本帖最后由 zx_wing 于 2007-6-21 14:07 编辑 ]

论坛徽章:
0
33 [报告]
发表于 2007-06-21 14:06 |只看该作者
我的也是2.6.13 KERNEL。盘是6G, 8G, 20G, ext2.
你是用什么看出block大小是1024的(也可能在你特定安装环境下就是)?


原帖由 zx_wing 于 2007-6-21 13:55 发表于 32楼  

如果版主坚持这么认为,我也没有办法。但我可以非常确定的在2.6内核中不是你说这样。

论坛徽章:
0
34 [报告]
发表于 2007-06-21 14:15 |只看该作者
原帖由 思一克 于 2007-6-21 14:06 发表于 33楼  
我的也是2.6.13 KERNEL。盘是6G, 8G, 20G, ext2.
你是用什么看出block大小是1024的(也可能在你特定安装环境下就是)?



这个是我印象中的大小,昨天我也查了不少资料,但没查到。源码跟了一遍,也没跟到默认值。所以我想知道版主说ext2上默认4k的大小是从哪儿得来的。
我记得block size在什么地方是可以改的,就是记不起来了

[ 本帖最后由 zx_wing 于 2007-6-21 14:21 编辑 ]

论坛徽章:
0
35 [报告]
发表于 2007-06-21 14:24 |只看该作者
你印象的那就不行了。也不用查资料。你下载可lde(linux disk editor)一看不就知道了。

block_dev 中的bd_block_size
sb 中的 s_blocksize 都是是这个数值。

可以printk出来看。


原帖由 zx_wing 于 2007-6-21 14:15 发表于 34楼  

这个是我印象中的大小,昨天我也查了不少资料,但没查到。源码跟了一遍,也没跟到默认值。所以我想知道版主说ext2上默认4k的大小是从哪儿得来的。

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
36 [报告]
发表于 2007-06-21 14:31 |只看该作者
blocksize应该是1024

在ext2_read_super中决定了块的大小

首先是默认的BLOCK_SIZE,定义于fs.h,是1<<10

论坛徽章:
0
37 [报告]
发表于 2007-06-21 14:31 |只看该作者
我不是坚持,也不是认为,
而是用程序实验了结论:读FAT分区的普通文件后,每一个page(cached)都有buffer_head.

读EXT2的文件后没有。
所以”读普通文件不用buffer_head"至少在读FAT分区文件是不对的。




读regluar file, 你读FAT分区上的一个block大小是512的文件内容看,page ca ...

”如果版主坚持这么认为,我也没有办法。但我可以非常确定的在2.6内核中不是你说这样。上个回帖中已经给出了源码路径了,只要真去阅读了问题自然明了,这个问题就不争论了。“

[ 本帖最后由 思一克 于 2007-6-21 14:36 编辑 ]

论坛徽章:
0
38 [报告]
发表于 2007-06-21 14:34 |只看该作者
你截获__getblk看size是多少,或用lde看。

在我的系统(普通的,2。6。13 笔记本),
ext2, ext3, tmpfs, usbfs, debugfs, rootfs, sysfs的blocksize都是4096。
FAT分区是512
bdev, proc, pipefs, sockfs, devpts才是1024.


原帖由 塑料袋 于 2007-6-21 14:31 发表于 36楼  
blocksize应该是1024

在ext2_read_super中决定了块的大小

首先是默认的BLOCK_SIZE,定义于fs.h,是1<<10

论坛徽章:
0
39 [报告]
发表于 2007-06-21 14:40 |只看该作者
原帖由 思一克 于 2007-6-21 14:24 发表于 35楼  
你印象的那就不行了。也不用查资料。你下载可lde(linux disk editor)一看不就知道了。

block_dev 中的bd_block_size
sb 中的 s_blocksize 都是是这个数值。

可以printk出来看。



好的,等忙完手上的工作,我会在block_size函数中加printk看看。
但我仍会试着找到有决定性证明的资料。因为这种通过“看”得到的信息不可靠,很可能换个平台就不一样了。例如我一直认为x86平台上linux默认的用户栈大小是4M,但昨天我看FC5发现它默认的大小是10M,所以还是能找到资料比较好。

论坛徽章:
0
40 [报告]
发表于 2007-06-21 14:40 |只看该作者
这是用一个程序输出的结果。

super blocks list for all file systems:
sb c12b8a00 type c03a8680        sysfs     -- blksize 4096 s_root c12b28c0 / bdev 00000000
sb c12b8800 type c03a9140       rootfs     -- blksize 4096 s_root c12b2830 / bdev 00000000
sb c12b8600 type c03a5700         bdev     -- blksize 1024 s_root c12b27a0 bdev: bdev 00000000
sb c12b8200 type c03a68a0         proc     -- blksize 1024 s_root c12b2710 / bdev 00000000
sb cfb84e00 type c03beba0       sockfs     -- blksize 1024 s_root cf6e0320 socket: bdev 00000000
sb cfeb5400 type c03a5c60       pipefs     -- blksize 1024 s_root cfc59cb0 pipe: bdev 00000000
sb cfc71c00 type c03a2b20      futexfs     -- blksize 1024 s_root cfc78dd0 futex bdev 00000000
sb cfc71800 type c03a54c0        tmpfs     -- blksize 4096 s_root cfc78d40 / bdev 00000000
sb cfc71000 type c03a6300    inotifyfs     -- blksize 1024 s_root cfc78cb0 inotify bdev 00000000
sb cfc8d600 type c03a63a0  eventpollfs     -- blksize 1024 s_root cfc78c20 eventpoll: bdev 00000000
sb cfc8d000 type c03a8820       devpts     -- blksize 1024 s_root cfc78b90 / bdev 00000000
sb cfc96800 type c03a9360    hugetlbfs     -- blksize 4194304 s_root cfc78b00 / bdev 00000000
sb cfc96200 type c03acea0       mqueue     -- blksize 4096 s_root cfc78a70 / bdev 00000000
sb cf261800 type c03a54c0        tmpfs     -- blksize 4096 s_root cf27ae60 / bdev 00000000
sb cecaf200 type c03a8dc0         ext2   hda6 blksize 4096 s_root cec4a290 / bdev c12b0480
sb cecaf800 type c03a54c0        tmpfs     -- blksize 4096 s_root cf3e9c20 / bdev 00000000
sb cf3d9600 type c03a54c0        tmpfs     -- blksize 4096 s_root cf3e2290 / bdev 00000000
sb cd081800 type c03ac960      debugfs     -- blksize 4096 s_root cce0f7a0 / bdev 00000000
sb cd081200 type d08fa5c0        usbfs     -- blksize 4096 s_root cce2bb00 / bdev 00000000
sb cecaf000 type c03a8dc0         ext2   hda8 blksize 4096 s_root cd3650e0 / bdev c12b0a80
sb c61ab800 type d0c7d6c0         vfat   hda5 blksize  512 s_root ced660e0 / bdev cf28d900
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP