1

嗨,我正在使用 OS161,我正在尝试扩展我的 inode 结构,以便当我写入磁盘时,我将第一块文件数据写入实际的 inode 结构,因为目前它的设置使得大量结构被浪费了。

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 */
};

我想用 char sfi_inlinedata[INLINE_SIZE]; 替换上面的 sfi_waste 这样我的磁盘 io 将始终将第一个 INLINE_SIZE 数据写入/读取到 sfs_inode 结构。以下是我为相关 io 功能工作的来源。我知道我需要在这里更改偏移量映射到 io 函数中实际地址的方式,但是我无法提出具体的解决方案。 https://github.com/rbui/projectJailBait/blob/master/os161-1.11/kern/fs/sfs/sfs_vnode.c

任何帮助将非常感激!

4

0 回答 0