Lines Matching refs:sb
99 static struct inode *ufs_nfs_get_inode(struct super_block *sb, u64 ino, u32 generation)
101 struct ufs_sb_private_info *uspi = UFS_SB(sb)->s_uspi;
107 inode = ufs_iget(sb, ino);
117 static struct dentry *ufs_fh_to_dentry(struct super_block *sb, struct fid *fid,
120 return generic_fh_to_dentry(sb, fid, fh_len, fh_type, ufs_nfs_get_inode);
123 static struct dentry *ufs_fh_to_parent(struct super_block *sb, struct fid *fid,
126 return generic_fh_to_parent(sb, fid, fh_len, fh_type, ufs_nfs_get_inode);
149 static void ufs_print_super_stuff(struct super_block *sb,
154 u32 magic = fs32_to_cpu(sb, usb3->fs_magic);
158 if (fs32_to_cpu(sb, usb3->fs_magic) == UFS2_MAGIC) {
160 fs64_to_cpu(sb, usb3->fs_un1.fs_u2.fs_size));
162 fs64_to_cpu(sb, usb3->fs_un1.fs_u2.fs_dsize));
164 fs32_to_cpu(sb, usb1->fs_bsize));
166 fs32_to_cpu(sb, usb1->fs_fsize));
169 fs64_to_cpu(sb, usb2->fs_un.fs_u2.fs_sblockloc));
171 fs64_to_cpu(sb, usb2->fs_un.fs_u2.cs_ndir));
174 fs64_to_cpu(sb, usb2->fs_un.fs_u2.cs_nbfree));
177 fs64_to_cpu(sb, usb3->fs_un1.fs_u2.cs_nifree));
180 fs64_to_cpu(sb, usb3->fs_un1.fs_u2.cs_nffree));
182 fs32_to_cpu(sb, usb3->fs_un2.fs_44.fs_maxsymlinklen));
184 pr_debug(" sblkno: %u\n", fs32_to_cpu(sb, usb1->fs_sblkno));
185 pr_debug(" cblkno: %u\n", fs32_to_cpu(sb, usb1->fs_cblkno));
186 pr_debug(" iblkno: %u\n", fs32_to_cpu(sb, usb1->fs_iblkno));
187 pr_debug(" dblkno: %u\n", fs32_to_cpu(sb, usb1->fs_dblkno));
189 fs32_to_cpu(sb, usb1->fs_cgoffset));
191 ~fs32_to_cpu(sb, usb1->fs_cgmask));
192 pr_debug(" size: %u\n", fs32_to_cpu(sb, usb1->fs_size));
193 pr_debug(" dsize: %u\n", fs32_to_cpu(sb, usb1->fs_dsize));
194 pr_debug(" ncg: %u\n", fs32_to_cpu(sb, usb1->fs_ncg));
195 pr_debug(" bsize: %u\n", fs32_to_cpu(sb, usb1->fs_bsize));
196 pr_debug(" fsize: %u\n", fs32_to_cpu(sb, usb1->fs_fsize));
197 pr_debug(" frag: %u\n", fs32_to_cpu(sb, usb1->fs_frag));
199 fs32_to_cpu(sb, usb1->fs_fragshift));
200 pr_debug(" ~fmask: %u\n", ~fs32_to_cpu(sb, usb1->fs_fmask));
201 pr_debug(" fshift: %u\n", fs32_to_cpu(sb, usb1->fs_fshift));
202 pr_debug(" sbsize: %u\n", fs32_to_cpu(sb, usb1->fs_sbsize));
203 pr_debug(" spc: %u\n", fs32_to_cpu(sb, usb1->fs_spc));
204 pr_debug(" cpg: %u\n", fs32_to_cpu(sb, usb1->fs_cpg));
205 pr_debug(" ipg: %u\n", fs32_to_cpu(sb, usb1->fs_ipg));
206 pr_debug(" fpg: %u\n", fs32_to_cpu(sb, usb1->fs_fpg));
207 pr_debug(" csaddr: %u\n", fs32_to_cpu(sb, usb1->fs_csaddr));
208 pr_debug(" cssize: %u\n", fs32_to_cpu(sb, usb1->fs_cssize));
209 pr_debug(" cgsize: %u\n", fs32_to_cpu(sb, usb1->fs_cgsize));
211 fs32_to_cpu(sb, usb1->fs_fsbtodb));
212 pr_debug(" nrpos: %u\n", fs32_to_cpu(sb, usb3->fs_nrpos));
214 fs32_to_cpu(sb, usb1->fs_cstotal.cs_ndir));
216 fs32_to_cpu(sb, usb1->fs_cstotal.cs_nifree));
218 fs32_to_cpu(sb, usb1->fs_cstotal.cs_nbfree));
220 fs32_to_cpu(sb, usb1->fs_cstotal.cs_nffree));
228 static void ufs_print_cylinder_stuff(struct super_block *sb,
233 pr_debug(" magic: %x\n", fs32_to_cpu(sb, cg->cg_magic));
234 pr_debug(" time: %u\n", fs32_to_cpu(sb, cg->cg_time));
235 pr_debug(" cgx: %u\n", fs32_to_cpu(sb, cg->cg_cgx));
236 pr_debug(" ncyl: %u\n", fs16_to_cpu(sb, cg->cg_ncyl));
237 pr_debug(" niblk: %u\n", fs16_to_cpu(sb, cg->cg_niblk));
238 pr_debug(" ndblk: %u\n", fs32_to_cpu(sb, cg->cg_ndblk));
239 pr_debug(" cs_ndir: %u\n", fs32_to_cpu(sb, cg->cg_cs.cs_ndir));
240 pr_debug(" cs_nbfree: %u\n", fs32_to_cpu(sb, cg->cg_cs.cs_nbfree));
241 pr_debug(" cs_nifree: %u\n", fs32_to_cpu(sb, cg->cg_cs.cs_nifree));
242 pr_debug(" cs_nffree: %u\n", fs32_to_cpu(sb, cg->cg_cs.cs_nffree));
243 pr_debug(" rotor: %u\n", fs32_to_cpu(sb, cg->cg_rotor));
244 pr_debug(" frotor: %u\n", fs32_to_cpu(sb, cg->cg_frotor));
245 pr_debug(" irotor: %u\n", fs32_to_cpu(sb, cg->cg_irotor));
247 fs32_to_cpu(sb, cg->cg_frsum[0]), fs32_to_cpu(sb, cg->cg_frsum[1]),
248 fs32_to_cpu(sb, cg->cg_frsum[2]), fs32_to_cpu(sb, cg->cg_frsum[3]),
249 fs32_to_cpu(sb, cg->cg_frsum[4]), fs32_to_cpu(sb, cg->cg_frsum[5]),
250 fs32_to_cpu(sb, cg->cg_frsum[6]), fs32_to_cpu(sb, cg->cg_frsum[7]));
251 pr_debug(" btotoff: %u\n", fs32_to_cpu(sb, cg->cg_btotoff));
252 pr_debug(" boff: %u\n", fs32_to_cpu(sb, cg->cg_boff));
253 pr_debug(" iuseoff: %u\n", fs32_to_cpu(sb, cg->cg_iusedoff));
254 pr_debug(" freeoff: %u\n", fs32_to_cpu(sb, cg->cg_freeoff));
255 pr_debug(" nextfreeoff: %u\n", fs32_to_cpu(sb, cg->cg_nextfreeoff));
257 fs32_to_cpu(sb, cg->cg_u.cg_44.cg_clustersumoff));
259 fs32_to_cpu(sb, cg->cg_u.cg_44.cg_clusteroff));
261 fs32_to_cpu(sb, cg->cg_u.cg_44.cg_nclusterblks));
265 # define ufs_print_super_stuff(sb, usb1, usb2, usb3) /**/
266 # define ufs_print_cylinder_stuff(sb, cg) /**/
271 void ufs_error (struct super_block * sb, const char * function,
279 uspi = UFS_SB(sb)->s_uspi;
282 if (!sb_rdonly(sb)) {
285 ufs_mark_sb_dirty(sb);
286 sb->s_flags |= SB_RDONLY;
291 switch (UFS_SB(sb)->s_mount_opt & UFS_MOUNT_ONERROR) {
294 sb->s_id, function, &vaf);
300 sb->s_id, function, &vaf);
305 void ufs_panic (struct super_block * sb, const char * function,
313 uspi = UFS_SB(sb)->s_uspi;
316 if (!sb_rdonly(sb)) {
319 ufs_mark_sb_dirty(sb);
324 sb->s_flags |= SB_RDONLY;
326 sb->s_id, function, &vaf);
330 void ufs_warning (struct super_block * sb, const char * function,
340 sb->s_id, function, &vaf);
469 static void ufs_setup_cstotal(struct super_block *sb)
471 struct ufs_sb_info *sbi = UFS_SB(sb);
487 uspi->cs_total.cs_ndir = fs64_to_cpu(sb, usb2->fs_un.fs_u2.cs_ndir);
488 uspi->cs_total.cs_nbfree = fs64_to_cpu(sb, usb2->fs_un.fs_u2.cs_nbfree);
489 uspi->cs_total.cs_nifree = fs64_to_cpu(sb, usb3->fs_un1.fs_u2.cs_nifree);
490 uspi->cs_total.cs_nffree = fs64_to_cpu(sb, usb3->fs_un1.fs_u2.cs_nffree);
492 uspi->cs_total.cs_ndir = fs32_to_cpu(sb, usb1->fs_cstotal.cs_ndir);
493 uspi->cs_total.cs_nbfree = fs32_to_cpu(sb, usb1->fs_cstotal.cs_nbfree);
494 uspi->cs_total.cs_nifree = fs32_to_cpu(sb, usb1->fs_cstotal.cs_nifree);
495 uspi->cs_total.cs_nffree = fs32_to_cpu(sb, usb1->fs_cstotal.cs_nffree);
503 static int ufs_read_cylinder_structures(struct super_block *sb)
505 struct ufs_sb_info *sbi = UFS_SB(sb);
528 ubh = ubh_bread(sb, uspi->s_csaddr + i, size);
556 if (!(sbi->s_ucg[i] = sb_bread(sb, ufs_cgcmin(i))))
558 if (!ufs_cg_chkmagic (sb, (struct ufs_cylinder_group *) sbi->s_ucg[i]->b_data))
561 ufs_print_cylinder_stuff(sb, (struct ufs_cylinder_group *) sbi->s_ucg[i]->b_data);
589 static void ufs_put_cstotal(struct super_block *sb)
591 unsigned mtype = UFS_SB(sb)->s_mount_opt & UFS_MOUNT_UFSTYPE;
592 struct ufs_sb_private_info *uspi = UFS_SB(sb)->s_uspi;
605 cpu_to_fs64(sb, uspi->cs_total.cs_ndir);
607 cpu_to_fs64(sb, uspi->cs_total.cs_nbfree);
609 cpu_to_fs64(sb, uspi->cs_total.cs_nifree);
611 cpu_to_fs64(sb, uspi->cs_total.cs_nffree);
619 cpu_to_fs64(sb, uspi->cs_total.cs_ndir);
621 cpu_to_fs64(sb, uspi->cs_total.cs_nbfree);
623 cpu_to_fs64(sb, uspi->cs_total.cs_nifree);
625 cpu_to_fs64(sb, uspi->cs_total.cs_nffree);
627 usb1->fs_cstotal.cs_ndir = cpu_to_fs32(sb, uspi->cs_total.cs_ndir);
628 usb1->fs_cstotal.cs_nbfree = cpu_to_fs32(sb, uspi->cs_total.cs_nbfree);
629 usb1->fs_cstotal.cs_nifree = cpu_to_fs32(sb, uspi->cs_total.cs_nifree);
630 usb1->fs_cstotal.cs_nffree = cpu_to_fs32(sb, uspi->cs_total.cs_nffree);
633 ufs_print_super_stuff(sb, usb1, usb2, usb3);
639 * @sb: pointer to super_block structure
643 static void ufs_put_super_internal(struct super_block *sb)
645 struct ufs_sb_info *sbi = UFS_SB(sb);
654 ufs_put_cstotal(sb);
663 ubh = ubh_bread(sb, uspi->s_csaddr + i, size);
672 ufs_put_cylinder (sb, i);
685 static int ufs_sync_fs(struct super_block *sb, int wait)
692 mutex_lock(&UFS_SB(sb)->s_lock);
696 flags = UFS_SB(sb)->s_flags;
697 uspi = UFS_SB(sb)->s_uspi;
701 usb1->fs_time = ufs_get_seconds(sb);
705 ufs_set_fs_state(sb, usb1, usb3,
706 UFS_FSOK - fs32_to_cpu(sb, usb1->fs_time));
707 ufs_put_cstotal(sb);
710 mutex_unlock(&UFS_SB(sb)->s_lock);
725 ufs_sync_fs(sbi->sb, 1);
728 void ufs_mark_sb_dirty(struct super_block *sb)
730 struct ufs_sb_info *sbi = UFS_SB(sb);
742 static void ufs_put_super(struct super_block *sb)
744 struct ufs_sb_info * sbi = UFS_SB(sb);
748 if (!sb_rdonly(sb))
749 ufs_put_super_internal(sb);
755 sb->s_fs_info = NULL;
760 static u64 ufs_max_bytes(struct super_block *sb)
762 struct ufs_sb_private_info *uspi = UFS_SB(sb)->s_uspi;
777 static int ufs_fill_super(struct super_block *sb, void *data, int silent)
799 if (!sb_rdonly(sb)) {
808 sb->s_fs_info = sbi;
809 sbi->sb = sb;
811 UFSD("flag %u\n", (int)(sb_rdonly(sb)));
843 sb->s_maxbytes = MAX_LFS_FILESIZE;
845 sb->s_time_gran = NSEC_PER_SEC;
846 sb->s_time_min = S32_MIN;
847 sb->s_time_max = S32_MAX;
867 sb->s_time_gran = 1;
868 sb->s_time_min = S64_MIN;
869 sb->s_time_max = S64_MAX;
915 if (!sb_rdonly(sb)) {
918 sb->s_flags |= SB_RDONLY;
931 if (!sb_rdonly(sb)) {
934 sb->s_flags |= SB_RDONLY;
947 if (!sb_rdonly(sb)) {
950 sb->s_flags |= SB_RDONLY;
963 if (!sb_rdonly(sb)) {
966 sb->s_flags |= SB_RDONLY;
978 if (!sb_rdonly(sb)) {
981 sb->s_flags |= SB_RDONLY;
991 if (!sb_set_blocksize(sb, block_size)) {
1000 ubh = ubh_bread_uspi(uspi, sb, uspi->s_sbbase + super_block_offset/block_size, super_block_size);
1010 uspi->s_postblformat = fs32_to_cpu(sb, usb3->fs_postblformat);
1028 switch ((uspi->fs_magic = fs32_to_cpu(sb, usb3->fs_magic))) {
1038 switch ((uspi->fs_magic = fs32_to_cpu(sb, usb3->fs_magic))) {
1065 uspi->s_bsize = fs32_to_cpu(sb, usb1->fs_bsize);
1066 uspi->s_fsize = fs32_to_cpu(sb, usb1->fs_fsize);
1067 uspi->s_sbsize = fs32_to_cpu(sb, usb1->fs_sbsize);
1068 uspi->s_fmask = fs32_to_cpu(sb, usb1->fs_fmask);
1069 uspi->s_fshift = fs32_to_cpu(sb, usb1->fs_fshift);
1111 ufs_print_super_stuff(sb, usb1, usb2, usb3);
1122 (ufs_get_fs_state(sb, usb1, usb3) == (UFS_FSOK - fs32_to_cpu(sb, usb1->fs_time))))) {
1138 sb->s_flags |= SB_RDONLY;
1142 sb->s_flags |= SB_RDONLY;
1147 sb->s_flags |= SB_RDONLY;
1152 sb->s_flags |= SB_RDONLY;
1158 sb->s_op = &ufs_super_ops;
1159 sb->s_export_op = &ufs_export_ops;
1161 sb->s_magic = fs32_to_cpu(sb, usb3->fs_magic);
1163 uspi->s_sblkno = fs32_to_cpu(sb, usb1->fs_sblkno);
1164 uspi->s_cblkno = fs32_to_cpu(sb, usb1->fs_cblkno);
1165 uspi->s_iblkno = fs32_to_cpu(sb, usb1->fs_iblkno);
1166 uspi->s_dblkno = fs32_to_cpu(sb, usb1->fs_dblkno);
1167 uspi->s_cgoffset = fs32_to_cpu(sb, usb1->fs_cgoffset);
1168 uspi->s_cgmask = fs32_to_cpu(sb, usb1->fs_cgmask);
1171 uspi->s_size = fs64_to_cpu(sb, usb3->fs_un1.fs_u2.fs_size);
1172 uspi->s_dsize = fs64_to_cpu(sb, usb3->fs_un1.fs_u2.fs_dsize);
1174 uspi->s_size = fs32_to_cpu(sb, usb1->fs_size);
1175 uspi->s_dsize = fs32_to_cpu(sb, usb1->fs_dsize);
1178 uspi->s_ncg = fs32_to_cpu(sb, usb1->fs_ncg);
1181 uspi->s_fpb = fs32_to_cpu(sb, usb1->fs_frag);
1182 uspi->s_minfree = fs32_to_cpu(sb, usb1->fs_minfree);
1183 uspi->s_bmask = fs32_to_cpu(sb, usb1->fs_bmask);
1184 uspi->s_fmask = fs32_to_cpu(sb, usb1->fs_fmask);
1185 uspi->s_bshift = fs32_to_cpu(sb, usb1->fs_bshift);
1186 uspi->s_fshift = fs32_to_cpu(sb, usb1->fs_fshift);
1189 uspi->s_fpbshift = fs32_to_cpu(sb, usb1->fs_fragshift);
1190 uspi->s_fsbtodb = fs32_to_cpu(sb, usb1->fs_fsbtodb);
1192 uspi->s_csmask = fs32_to_cpu(sb, usb1->fs_csmask);
1193 uspi->s_csshift = fs32_to_cpu(sb, usb1->fs_csshift);
1194 uspi->s_nindir = fs32_to_cpu(sb, usb1->fs_nindir);
1195 uspi->s_inopb = fs32_to_cpu(sb, usb1->fs_inopb);
1196 uspi->s_nspf = fs32_to_cpu(sb, usb1->fs_nspf);
1197 uspi->s_npsect = ufs_get_fs_npsect(sb, usb1, usb3);
1198 uspi->s_interleave = fs32_to_cpu(sb, usb1->fs_interleave);
1199 uspi->s_trackskew = fs32_to_cpu(sb, usb1->fs_trackskew);
1202 uspi->s_csaddr = fs64_to_cpu(sb, usb3->fs_un1.fs_u2.fs_csaddr);
1204 uspi->s_csaddr = fs32_to_cpu(sb, usb1->fs_csaddr);
1206 uspi->s_cssize = fs32_to_cpu(sb, usb1->fs_cssize);
1207 uspi->s_cgsize = fs32_to_cpu(sb, usb1->fs_cgsize);
1208 uspi->s_ntrak = fs32_to_cpu(sb, usb1->fs_ntrak);
1209 uspi->s_nsect = fs32_to_cpu(sb, usb1->fs_nsect);
1210 uspi->s_spc = fs32_to_cpu(sb, usb1->fs_spc);
1211 uspi->s_ipg = fs32_to_cpu(sb, usb1->fs_ipg);
1212 uspi->s_fpg = fs32_to_cpu(sb, usb1->fs_fpg);
1213 uspi->s_cpc = fs32_to_cpu(sb, usb2->fs_un.fs_u1.fs_cpc);
1214 uspi->s_contigsumsize = fs32_to_cpu(sb, usb3->fs_un2.fs_44.fs_contigsumsize);
1215 uspi->s_qbmask = ufs_get_fs_qbmask(sb, usb3);
1216 uspi->s_qfmask = ufs_get_fs_qfmask(sb, usb3);
1217 uspi->s_nrpos = fs32_to_cpu(sb, usb3->fs_nrpos);
1218 uspi->s_postbloff = fs32_to_cpu(sb, usb3->fs_postbloff);
1219 uspi->s_rotbloff = fs32_to_cpu(sb, usb3->fs_rotbloff);
1226 usb1->fs_optim = cpu_to_fs32(sb, UFS_OPTSPACE);
1257 fs32_to_cpu(sb, usb3->fs_un2.fs_44.fs_maxsymlinklen);
1264 ufs_warning(sb, __func__, "ufs_read_super: excessive maximum "
1268 sb->s_maxbytes = ufs_max_bytes(sb);
1269 sb->s_max_links = UFS_LINK_MAX;
1271 inode = ufs_iget(sb, UFS_ROOTINO);
1276 sb->s_root = d_make_root(inode);
1277 if (!sb->s_root) {
1282 ufs_setup_cstotal(sb);
1286 if (!sb_rdonly(sb))
1287 if (!ufs_read_cylinder_structures(sb))
1298 sb->s_fs_info = NULL;
1307 static int ufs_remount (struct super_block *sb, int *mount_flags, char *data)
1315 sync_filesystem(sb);
1316 mutex_lock(&UFS_SB(sb)->s_lock);
1317 uspi = UFS_SB(sb)->s_uspi;
1318 flags = UFS_SB(sb)->s_flags;
1326 ufstype = UFS_SB(sb)->s_mount_opt & UFS_MOUNT_UFSTYPE;
1330 mutex_unlock(&UFS_SB(sb)->s_lock);
1337 mutex_unlock(&UFS_SB(sb)->s_lock);
1341 if ((bool)(*mount_flags & SB_RDONLY) == sb_rdonly(sb)) {
1342 UFS_SB(sb)->s_mount_opt = new_mount_opt;
1343 mutex_unlock(&UFS_SB(sb)->s_lock);
1351 ufs_put_super_internal(sb);
1352 usb1->fs_time = ufs_get_seconds(sb);
1356 ufs_set_fs_state(sb, usb1, usb3,
1357 UFS_FSOK - fs32_to_cpu(sb, usb1->fs_time));
1359 sb->s_flags |= SB_RDONLY;
1366 mutex_unlock(&UFS_SB(sb)->s_lock);
1375 mutex_unlock(&UFS_SB(sb)->s_lock);
1378 if (!ufs_read_cylinder_structures(sb)) {
1380 mutex_unlock(&UFS_SB(sb)->s_lock);
1383 sb->s_flags &= ~SB_RDONLY;
1386 UFS_SB(sb)->s_mount_opt = new_mount_opt;
1387 mutex_unlock(&UFS_SB(sb)->s_lock);
1413 struct super_block *sb = dentry->d_sb;
1414 struct ufs_sb_private_info *uspi= UFS_SB(sb)->s_uspi;
1415 unsigned flags = UFS_SB(sb)->s_flags;
1416 u64 id = huge_encode_dev(sb->s_bdev->bd_dev);
1418 mutex_lock(&UFS_SB(sb)->s_lock);
1428 buf->f_bsize = sb->s_blocksize;
1435 mutex_unlock(&UFS_SB(sb)->s_lock);
1442 static struct inode *ufs_alloc_inode(struct super_block *sb)
1446 ei = alloc_inode_sb(sb, ufs_inode_cachep, GFP_NOFS);