ファイルが書き込まれると、ファイルセグメントごとにinにwrite
対応する関数が呼び出されます。.write
fuse_operations
これは、より大きなファイル(たとえば、12720バイト)の場合、書き込み関数を4回呼び出すことができることを意味します。
1. size=4096, offset=0
2. size=4096, offset=4096
3. size=4096, offset=8192
4. size=432, offset=12288
最大セグメントサイズが4096バイトの4つのセグメントがあるためです。
関数内で、最後のセグメントサイズがいつnwrite
になるかを確認したいと思います。write
すべてのセグメントをバッファーに入れ、この最後に書き込まれたセグメントを使用して、バッファーにオブジェクト全体が含まれていることを通知し、別の場所(オブジェクトストアなど)に置くことができるようにします。書き込まれる前に書き込まれているオブジェクトのサイズを知ることにより、単純な等式テストfile_size == size + offset
を実行して、最後のセグメントがいつ書き込まれるかを判断できます。