1 #ifndef _AFFS_FS_SB 2 #define _AFFS_FS_SB 3 4 /* 5 * super-block data in memory 6 * 7 * Block numbers are adjusted for their actual size 8 * 9 */ 10 11 #include <linux/amigaffs.h> 12 13 #define MAX_ZONES 8 14 #define AFFS_DATA_MIN_FREE 30 /* Percentage of free blocks needed for a data zone */ 15 #define AFFS_HDR_MIN_FREE 10 /* Same for header blocks */ 16 17 struct affs_bm_info { 18 struct buffer_head *bm_bh; /* Buffer for bitmap. */ 19 int bm_free; /* Free blocks. */ 20 int bm_size; /* Size in bits, rounded to multiple of 32. */ 21 int bm_firstblk; /* Block number of first bit in this map */ 22 }; 23 24 struct affs_zone { 25 unsigned long z_ino; /* Associated inode number */ 26 struct affs_bm_info *z_bm; /* Zone lies in this bitmap */ 27 int z_start; /* Index of first word in bitmap */ 28 int z_zone_no; /* Zone number */ 29 unsigned long z_lru_time; /* Time of last usage */ 30 }; 31 32 struct affs_sb_info { 33 int s_partition_size; /* Partition size in blocks. */ 34 int s_root_block; /* FFS root block number. */ 35 int s_hashsize; /* Size of hash table. */ 36 unsigned long s_flags; /* See below. */ 37 short s_uid; /* uid to override */ 38 short s_gid; /* gid to override */ 39 umode_t s_mode; /* mode to override */ 40 int s_reserved; /* Number of reserved blocks. */ 41 struct buffer_head *s_root_bh; /* Cached root block. */ 42 struct affs_bm_info *s_bitmap; /* Bitmap infos. */ 43 int s_bm_count; /* Number of bitmap blocks. */ 44 int s_nextzone; /* Next zone to look for free blocks. */ 45 int s_num_zones; /* Total number of zones. */ 46 struct affs_zone *s_zones; /* The zones themselfes. */ 47 char *s_zonemap; /* Bitmap for zones. */ 48 char *s_prefix; /* Prefix for volumes and assignes. */ 49 int s_prefix_len; /* Length of prefix. */ 50 char s_volume[32]; /* Volume prefix for absolute symlinks. */ 51 }; 52 53 #define SF_INTL 0x0001 /* International filesystem. */ 54 #define SF_BM_VALID 0x0002 /* Bitmap is valid. */ 55 #define SF_IMMUTABLE 0x0004 /* Protection bits cannot be changed */ 56 #define SF_QUIET 0x0008 /* chmod errors will be not reported */ 57 #define SF_SETUID 0x0010 /* Ignore Amiga uid */ 58 #define SF_SETGID 0x0020 /* Ignore Amiga gid */ 59 #define SF_SETMODE 0x0040 /* Ignore Amiga protection bits */ 60 #define SF_USE_MP 0x0080 /* Use uid and gid from mount point */ 61 #define SF_MUFS 0x0100 /* Use MUFS uid/gid mapping */ 62 #define SF_OFS 0x0200 /* Old filesystem */ 63 #define SF_PREFIX 0x0400 /* Buffer for prefix is allocated */ 64 #define SF_VERBOSE 0x0800 /* Talk about fs when mounting */ 65 66 #endif