Lines Matching defs:sbi

48 static void detected_xenix(struct sysv_sb_info *sbi, unsigned *max_links)
50 struct buffer_head *bh1 = sbi->s_bh1;
51 struct buffer_head *bh2 = sbi->s_bh2;
64 sbi->s_fic_size = XENIX_NICINOD;
65 sbi->s_flc_size = XENIX_NICFREE;
66 sbi->s_sbd1 = (char *)sbd1;
67 sbi->s_sbd2 = (char *)sbd2;
68 sbi->s_sb_fic_count = &sbd1->s_ninode;
69 sbi->s_sb_fic_inodes = &sbd1->s_inode[0];
70 sbi->s_sb_total_free_inodes = &sbd2->s_tinode;
71 sbi->s_bcache_count = &sbd1->s_nfree;
72 sbi->s_bcache = &sbd1->s_free[0];
73 sbi->s_free_blocks = &sbd2->s_tfree;
74 sbi->s_sb_time = &sbd2->s_time;
75 sbi->s_firstdatazone = fs16_to_cpu(sbi, sbd1->s_isize);
76 sbi->s_nzones = fs32_to_cpu(sbi, sbd1->s_fsize);
79 static void detected_sysv4(struct sysv_sb_info *sbi, unsigned *max_links)
82 struct buffer_head *bh1 = sbi->s_bh1;
83 struct buffer_head *bh2 = sbi->s_bh2;
91 sbi->s_fic_size = SYSV_NICINOD;
92 sbi->s_flc_size = SYSV_NICFREE;
93 sbi->s_sbd1 = (char *)sbd;
94 sbi->s_sbd2 = (char *)sbd;
95 sbi->s_sb_fic_count = &sbd->s_ninode;
96 sbi->s_sb_fic_inodes = &sbd->s_inode[0];
97 sbi->s_sb_total_free_inodes = &sbd->s_tinode;
98 sbi->s_bcache_count = &sbd->s_nfree;
99 sbi->s_bcache = &sbd->s_free[0];
100 sbi->s_free_blocks = &sbd->s_tfree;
101 sbi->s_sb_time = &sbd->s_time;
102 sbi->s_sb_state = &sbd->s_state;
103 sbi->s_firstdatazone = fs16_to_cpu(sbi, sbd->s_isize);
104 sbi->s_nzones = fs32_to_cpu(sbi, sbd->s_fsize);
107 static void detected_sysv2(struct sysv_sb_info *sbi, unsigned *max_links)
110 struct buffer_head *bh1 = sbi->s_bh1;
111 struct buffer_head *bh2 = sbi->s_bh2;
119 sbi->s_fic_size = SYSV_NICINOD;
120 sbi->s_flc_size = SYSV_NICFREE;
121 sbi->s_sbd1 = (char *)sbd;
122 sbi->s_sbd2 = (char *)sbd;
123 sbi->s_sb_fic_count = &sbd->s_ninode;
124 sbi->s_sb_fic_inodes = &sbd->s_inode[0];
125 sbi->s_sb_total_free_inodes = &sbd->s_tinode;
126 sbi->s_bcache_count = &sbd->s_nfree;
127 sbi->s_bcache = &sbd->s_free[0];
128 sbi->s_free_blocks = &sbd->s_tfree;
129 sbi->s_sb_time = &sbd->s_time;
130 sbi->s_sb_state = &sbd->s_state;
131 sbi->s_firstdatazone = fs16_to_cpu(sbi, sbd->s_isize);
132 sbi->s_nzones = fs32_to_cpu(sbi, sbd->s_fsize);
135 static void detected_coherent(struct sysv_sb_info *sbi, unsigned *max_links)
138 struct buffer_head *bh1 = sbi->s_bh1;
143 sbi->s_fic_size = COH_NICINOD;
144 sbi->s_flc_size = COH_NICFREE;
145 sbi->s_sbd1 = (char *)sbd;
146 sbi->s_sbd2 = (char *)sbd;
147 sbi->s_sb_fic_count = &sbd->s_ninode;
148 sbi->s_sb_fic_inodes = &sbd->s_inode[0];
149 sbi->s_sb_total_free_inodes = &sbd->s_tinode;
150 sbi->s_bcache_count = &sbd->s_nfree;
151 sbi->s_bcache = &sbd->s_free[0];
152 sbi->s_free_blocks = &sbd->s_tfree;
153 sbi->s_sb_time = &sbd->s_time;
154 sbi->s_firstdatazone = fs16_to_cpu(sbi, sbd->s_isize);
155 sbi->s_nzones = fs32_to_cpu(sbi, sbd->s_fsize);
158 static void detected_v7(struct sysv_sb_info *sbi, unsigned *max_links)
160 struct buffer_head *bh2 = sbi->s_bh2;
164 sbi->s_fic_size = V7_NICINOD;
165 sbi->s_flc_size = V7_NICFREE;
166 sbi->s_sbd1 = (char *)sbd;
167 sbi->s_sbd2 = (char *)sbd;
168 sbi->s_sb_fic_count = &sbd->s_ninode;
169 sbi->s_sb_fic_inodes = &sbd->s_inode[0];
170 sbi->s_sb_total_free_inodes = &sbd->s_tinode;
171 sbi->s_bcache_count = &sbd->s_nfree;
172 sbi->s_bcache = &sbd->s_free[0];
173 sbi->s_free_blocks = &sbd->s_tfree;
174 sbi->s_sb_time = &sbd->s_time;
175 sbi->s_firstdatazone = fs16_to_cpu(sbi, sbd->s_isize);
176 sbi->s_nzones = fs32_to_cpu(sbi, sbd->s_fsize);
179 static int detect_xenix(struct sysv_sb_info *sbi, struct buffer_head *bh)
183 sbi->s_bytesex = BYTESEX_LE;
185 sbi->s_bytesex = BYTESEX_BE;
188 switch (fs32_to_cpu(sbi, sbd->s_type)) {
190 sbi->s_type = FSTYPE_XENIX;
193 sbi->s_type = FSTYPE_XENIX;
200 static int detect_sysv(struct sysv_sb_info *sbi, struct buffer_head *bh)
202 struct super_block *sb = sbi->s_sb;
209 sbi->s_bytesex = BYTESEX_LE;
211 sbi->s_bytesex = BYTESEX_BE;
215 type = fs32_to_cpu(sbi, sbd->s_type);
217 if (fs16_to_cpu(sbi, sbd->s_nfree) == 0xffff) {
218 sbi->s_type = FSTYPE_AFS;
219 sbi->s_forced_ro = 1;
228 if (fs32_to_cpu(sbi, sbd->s_time) < JAN_1_1980) {
232 sbi->s_type = FSTYPE_SYSV2;
246 sbi->s_forced_ro = 1;
249 sbi->s_type = FSTYPE_SYSV4;
253 static int detect_coherent(struct sysv_sb_info *sbi, struct buffer_head *bh)
261 sbi->s_bytesex = BYTESEX_PDP;
262 sbi->s_type = FSTYPE_COH;
266 static int detect_sysv_odd(struct sysv_sb_info *sbi, struct buffer_head *bh)
268 int size = detect_sysv(sbi, bh);
305 struct sysv_sb_info *sbi = SYSV_SB(sb);
307 char *found = flavour_names[sbi->s_type];
312 sbi->s_firstinodezone = 2;
314 flavour_setup[sbi->s_type](sbi, &sb->s_max_links);
315 if (sbi->s_firstdatazone < sbi->s_firstinodezone)
318 sbi->s_ndatazones = sbi->s_nzones - sbi->s_firstdatazone;
319 sbi->s_inodes_per_block = bsize >> 6;
320 sbi->s_inodes_per_block_1 = (bsize >> 6)-1;
321 sbi->s_inodes_per_block_bits = n_bits-6;
322 sbi->s_ind_per_block = bsize_4;
323 sbi->s_ind_per_block_2 = bsize_4*bsize_4;
324 sbi->s_toobig_block = 10 + bsize_4 * (1 + bsize_4 * (1 + bsize_4));
325 sbi->s_ind_per_block_bits = n_bits-2;
327 sbi->s_ninodes = (sbi->s_firstdatazone - sbi->s_firstinodezone)
328 << sbi->s_inodes_per_block_bits;
334 sb->s_magic = SYSV_MAGIC_BASE + sbi->s_type;
337 if (sbi->s_forced_ro)
355 struct sysv_sb_info *sbi;
365 sbi = kzalloc(sizeof(struct sysv_sb_info), GFP_KERNEL);
366 if (!sbi)
369 sbi->s_sb = sb;
370 sbi->s_block_base = 0;
371 mutex_init(&sbi->s_lock);
372 sb->s_fs_info = sbi;
410 sbi->s_bh1 = bh1;
411 sbi->s_bh2 = bh;
421 kfree(sbi);
443 struct sysv_sb_info *sbi;
445 sbi = sb->s_fs_info;
449 if (fs16_to_cpu(sbi, v7sb->s_nfree) > V7_NICFREE ||
450 fs16_to_cpu(sbi, v7sb->s_ninode) > V7_NICINOD ||
451 fs32_to_cpu(sbi, v7sb->s_fsize) > V7_MAXSIZE)
461 if ((fs16_to_cpu(sbi, v7i->i_mode) & ~0777) != S_IFDIR ||
462 (fs32_to_cpu(sbi, v7i->i_size) == 0) ||
463 (fs32_to_cpu(sbi, v7i->i_size) & 017) ||
464 (fs32_to_cpu(sbi, v7i->i_size) > V7_NFILES *
476 struct sysv_sb_info *sbi;
482 sbi = kzalloc(sizeof(struct sysv_sb_info), GFP_KERNEL);
483 if (!sbi)
486 sbi->s_sb = sb;
487 sbi->s_block_base = 0;
488 sbi->s_type = FSTYPE_V7;
489 mutex_init(&sbi->s_lock);
490 sb->s_fs_info = sbi;
504 sbi->s_bytesex = BYTESEX_PDP;
509 sbi->s_bytesex = BYTESEX_LE;
516 sbi->s_bh1 = bh;
517 sbi->s_bh2 = bh;
525 kfree(sbi);