Linux ネットワーク ブロック デバイス ドライバー (/drivers/block/nbd.c) を理解し、変更しようとしています。
デバイスが読み取り要求を受け取ると、この要求の一部である bio 構造体の「bi_sector」をログに記録しています。
たとえば、バイオ構造体のセクター番号として 7860224 を取得しています。bio struct に関するドキュメントを読むと、このセクター番号は、この bio が操作を開始するハードウェア開始セクター番号であることがわかります。この略歴の単一の bio_vec の単一の物理ページに含まれるデータも印刷しています。実際に読んでいるファイルの内容を見ることができます。
現在、ファイル内のいくつかの文字を置き換えてから、ファイルを保存しています。書き込み要求がドライバーに送信され、書き込み bio 構造体の bi_sector をログに記録したいと考えています。以前のもの - 7860224 と同じであることを期待していますが、そうではありません。セクター番号を 7880704 として取得しています。ファイルを再度読み取ると、セクター番号として 7880704 が取得されます。何が起こっているのかわかりません。私の理解では、読んだのと同じブロックを書いている場合、バイオ構造体に同じセクター番号が表示されるはずです。この理解は間違っていますか?