Linux bio结构-bi_扇区在写入时发生更改
我试图理解并修改Linux网络块设备驱动程序(/drivers/block/nbd.c) 当设备收到读取请求时,我将记录作为该请求一部分的bio结构的“bi_扇区” 例如,我得到7860224作为bio结构的扇区号。通过阅读有关bio struct的文档,我了解到该扇区号是该bio将在其中启动操作的硬件起始扇区号。我也正在打印此bio中单个bio_vec中单个物理页面中包含的数据。我能够看到我正在阅读的文件的内容Linux bio结构-bi_扇区在写入时发生更改,linux,linux-kernel,block-device,Linux,Linux Kernel,Block Device,我试图理解并修改Linux网络块设备驱动程序(/drivers/block/nbd.c) 当设备收到读取请求时,我将记录作为该请求一部分的bio结构的“bi_扇区” 例如,我得到7860224作为bio结构的扇区号。通过阅读有关bio struct的文档,我了解到该扇区号是该bio将在其中启动操作的硬件起始扇区号。我也正在打印此bio中单个bio_vec中单个物理页面中包含的数据。我能够看到我正在阅读的文件的内容 现在,我正在替换文件中的几个字符,然后保存文件。写入请求到达驱动程序,我想记录写入
现在,我正在替换文件中的几个字符,然后保存文件。写入请求到达驱动程序,我想记录写入bio结构的BIU扇区。我希望它应该和前一个一样-7860224。但事实并非如此。我得到的扇区号是7880704。现在,如果我再次读取该文件,我将获得7880704作为扇区号。我不知道发生了什么事。我的理解是,如果我写的是与我读的相同的块,那么我应该在bio结构中看到相同的扇区号。这种理解有缺陷吗 您正在哪个文件系统上运行测试?(如果是花式的,可以尝试简单的。)