blkno_t s_tfree;
uint16_t s_tinode;
uint8_t s_shift; /* Extent size */
+} filesys, *fsptr;
+
+/*
+ * Superblock with userspace fields that are not kept in the kernel
+ * mount table.
+ */
+struct filesys_user {
+ struct filesys s_fs;
+ /* Allow for some kernel expansion */
uint8_t s_reserved;
+ uint16_t s_reserved2[16];
+ /* This is only used by userspace */
uint16_t s_props; /* Property bits indicating which are valid */
+#define S_PROP_LABEL 1
+#define S_PROP_GEO 2
/* For now only one property set - geometry. We'll eventually use this
when we don't know physical geometry and need to handle stuff with
tools etc */
+ uint8_t s_label_name[32];
+
uint16_t s_geo_heads; /* If 0/0/0 is specified and valid it means */
uint16_t s_geo_cylinders; /* pure LBA - no idea of geometry */
uint16_t s_geo_sectors;
uint8_t s_geo_skew; /* Soft skew if present (for hard sectored media) */
/* Gives the skew (1/2/3/4/5/... etc) */
uint8_t s_geo_secsize;/* Physical sector size in log2 form*/
-} filesys, *fsptr;
+};
typedef struct oft {
off_t o_ptr; /* File position pointer */