bd3cde4571
Add primary cache management feature to libminixfs as mfs and ext2 currently do separately, remove cache code from mfs and ext2, and make them use the libminixfs interface. This makes all fields of the buf struct private to libminixfs and FS clients aren't supposed to access them at all. Only the opaque 'void *data' field (the FS block contents, used to be called bp) is to be accessed by the FS client. The main purpose is to implement the interface to the 2ndary vm cache just once, get rid of some code duplication, and add a little abstraction to reduce the code inertia of the whole caching business. Some minor sanity checking and prohibition done by mfs in this code as removed from the generic primary cache code as a result: - checking all inodes are not in use when allocating/resizing the cache - checking readonly filesystems aren't written to - checking the superblock isn't written to on mounted filesystems The minixfslib code relies on fs_blockstats() in the client filesystem to return some FS usage information.
31 lines
1.2 KiB
C
31 lines
1.2 KiB
C
#ifndef __MFS_TYPE_H__
|
|
#define __MFS_TYPE_H__
|
|
|
|
#include <minix/libminixfs.h>
|
|
|
|
/* Declaration of the V1 inode as it is on the disk (not in core). */
|
|
typedef struct { /* V1.x disk inode */
|
|
u16_t d1_mode; /* file type, protection, etc. */
|
|
i16_t d1_uid; /* user id of the file's owner */
|
|
i32_t d1_size; /* current file size in bytes */
|
|
i32_t d1_mtime; /* when was file data last changed */
|
|
u8_t d1_gid; /* group number */
|
|
u8_t d1_nlinks; /* how many links to this file */
|
|
u16_t d1_zone[V1_NR_TZONES]; /* block nums for direct, ind, and dbl ind */
|
|
} d1_inode;
|
|
|
|
/* Declaration of the V2 inode as it is on the disk (not in core). */
|
|
typedef struct { /* V2.x disk inode */
|
|
u16_t d2_mode; /* file type, protection, etc. */
|
|
u16_t d2_nlinks; /* how many links to this file. HACK! */
|
|
i16_t d2_uid; /* user id of the file's owner. */
|
|
u16_t d2_gid; /* group number HACK! */
|
|
i32_t d2_size; /* current file size in bytes */
|
|
i32_t d2_atime; /* when was file data last accessed */
|
|
i32_t d2_mtime; /* when was file data last changed */
|
|
i32_t d2_ctime; /* when was inode data last changed */
|
|
zone_t d2_zone[V2_NR_TZONES]; /* block nums for direct, ind, and dbl ind */
|
|
} d2_inode;
|
|
|
|
#endif
|
|
|