こんにちは私はOS161を使用していて、iノード構造を拡張してディスクに書き込むときにファイルデータの最初のチャンクを実際のiノード構造に書き込むようにしています。構造が無駄になります。
struct sfs_inode {
u_int32_t sfi_size; /* Size of this file (bytes) */
u_int16_t sfi_type; /* One of SFS_TYPE_* above */
u_int16_t sfi_linkcount; /* Number of hard links to this file */
u_int32_t sfi_direct[SFS_NDIRECT]; /* Direct blocks */
u_int32_t sfi_indirect; /* Indirect block */
u_int32_t sfi_waste[128-3-SFS_NDIRECT]; /* unused space */
};
上記のsfi_wasteをcharsfi_inlinedata[INLINE_SIZE]に置き換えたいと思います。これにより、ディスクioは常にデータの最初のINLINE_SIZEをsfs_inode構造体に書き込み/読み取ります。以下は、関連するio関数のソースです。ここで、オフセットがio関数の実際のアドレスにマップされる方法を変更する必要があることはわかっていますが、具体的な解決策を思い付くのに苦労しています。 https://github.com/rbui/projectJailBait/blob/master/os161-1.11/kern/fs/sfs/sfs_vnode.c
どんな助けでも大歓迎です!