Lines Matching +full:usb3 +full:- +full:if
1 // SPDX-License-Identifier: GPL-2.0-only
16 * Laboratoire MASI - Institut Blaise Pascal
25 * Big-endian to little-endian byte-swapping/bitmaps by
35 * Adrian Rodriguez (adrian@franklins-tower.rutgers.edu)
48 * Francois-Rene Rideau <fare@tunes.org>
52 * on code by Martin von Loewis <martin@mira.isdn.cs.tu-berlin.de>.
84 #include <linux/backing-dev.h>
101 struct ufs_sb_private_info *uspi = UFS_SB(sb)->s_uspi; in ufs_nfs_get_inode()
104 if (ino < UFS_ROOTINO || ino > (u64)uspi->s_ncg * uspi->s_ipg) in ufs_nfs_get_inode()
105 return ERR_PTR(-ESTALE); in ufs_nfs_get_inode()
108 if (IS_ERR(inode)) in ufs_nfs_get_inode()
110 if (generation && inode->i_generation != generation) { in ufs_nfs_get_inode()
112 return ERR_PTR(-ESTALE); in ufs_nfs_get_inode()
134 if (!ino) in ufs_get_parent()
135 return ERR_PTR(-ENOENT); in ufs_get_parent()
136 return d_obtain_alias(ufs_iget(child->d_sb, ino)); in ufs_get_parent()
153 struct ufs_super_block_third *usb3) in ufs_print_super_stuff() argument
155 u32 magic = fs32_to_cpu(sb, usb3->fs_magic); in ufs_print_super_stuff()
159 if (fs32_to_cpu(sb, usb3->fs_magic) == UFS2_MAGIC) { in ufs_print_super_stuff()
161 fs64_to_cpu(sb, usb3->fs_un1.fs_u2.fs_size)); in ufs_print_super_stuff()
163 fs64_to_cpu(sb, usb3->fs_un1.fs_u2.fs_dsize)); in ufs_print_super_stuff()
165 fs32_to_cpu(sb, usb1->fs_bsize)); in ufs_print_super_stuff()
167 fs32_to_cpu(sb, usb1->fs_fsize)); in ufs_print_super_stuff()
168 pr_debug(" fs_volname: %s\n", usb2->fs_un.fs_u2.fs_volname); in ufs_print_super_stuff()
170 fs64_to_cpu(sb, usb2->fs_un.fs_u2.fs_sblockloc)); in ufs_print_super_stuff()
172 fs64_to_cpu(sb, usb2->fs_un.fs_u2.cs_ndir)); in ufs_print_super_stuff()
175 fs64_to_cpu(sb, usb2->fs_un.fs_u2.cs_nbfree)); in ufs_print_super_stuff()
178 fs64_to_cpu(sb, usb3->fs_un1.fs_u2.cs_nifree)); in ufs_print_super_stuff()
181 fs64_to_cpu(sb, usb3->fs_un1.fs_u2.cs_nffree)); in ufs_print_super_stuff()
183 fs32_to_cpu(sb, usb3->fs_un2.fs_44.fs_maxsymlinklen)); in ufs_print_super_stuff()
185 pr_debug(" sblkno: %u\n", fs32_to_cpu(sb, usb1->fs_sblkno)); in ufs_print_super_stuff()
186 pr_debug(" cblkno: %u\n", fs32_to_cpu(sb, usb1->fs_cblkno)); in ufs_print_super_stuff()
187 pr_debug(" iblkno: %u\n", fs32_to_cpu(sb, usb1->fs_iblkno)); in ufs_print_super_stuff()
188 pr_debug(" dblkno: %u\n", fs32_to_cpu(sb, usb1->fs_dblkno)); in ufs_print_super_stuff()
190 fs32_to_cpu(sb, usb1->fs_cgoffset)); in ufs_print_super_stuff()
192 ~fs32_to_cpu(sb, usb1->fs_cgmask)); in ufs_print_super_stuff()
193 pr_debug(" size: %u\n", fs32_to_cpu(sb, usb1->fs_size)); in ufs_print_super_stuff()
194 pr_debug(" dsize: %u\n", fs32_to_cpu(sb, usb1->fs_dsize)); in ufs_print_super_stuff()
195 pr_debug(" ncg: %u\n", fs32_to_cpu(sb, usb1->fs_ncg)); in ufs_print_super_stuff()
196 pr_debug(" bsize: %u\n", fs32_to_cpu(sb, usb1->fs_bsize)); in ufs_print_super_stuff()
197 pr_debug(" fsize: %u\n", fs32_to_cpu(sb, usb1->fs_fsize)); in ufs_print_super_stuff()
198 pr_debug(" frag: %u\n", fs32_to_cpu(sb, usb1->fs_frag)); in ufs_print_super_stuff()
200 fs32_to_cpu(sb, usb1->fs_fragshift)); in ufs_print_super_stuff()
201 pr_debug(" ~fmask: %u\n", ~fs32_to_cpu(sb, usb1->fs_fmask)); in ufs_print_super_stuff()
202 pr_debug(" fshift: %u\n", fs32_to_cpu(sb, usb1->fs_fshift)); in ufs_print_super_stuff()
203 pr_debug(" sbsize: %u\n", fs32_to_cpu(sb, usb1->fs_sbsize)); in ufs_print_super_stuff()
204 pr_debug(" spc: %u\n", fs32_to_cpu(sb, usb1->fs_spc)); in ufs_print_super_stuff()
205 pr_debug(" cpg: %u\n", fs32_to_cpu(sb, usb1->fs_cpg)); in ufs_print_super_stuff()
206 pr_debug(" ipg: %u\n", fs32_to_cpu(sb, usb1->fs_ipg)); in ufs_print_super_stuff()
207 pr_debug(" fpg: %u\n", fs32_to_cpu(sb, usb1->fs_fpg)); in ufs_print_super_stuff()
208 pr_debug(" csaddr: %u\n", fs32_to_cpu(sb, usb1->fs_csaddr)); in ufs_print_super_stuff()
209 pr_debug(" cssize: %u\n", fs32_to_cpu(sb, usb1->fs_cssize)); in ufs_print_super_stuff()
210 pr_debug(" cgsize: %u\n", fs32_to_cpu(sb, usb1->fs_cgsize)); in ufs_print_super_stuff()
212 fs32_to_cpu(sb, usb1->fs_fsbtodb)); in ufs_print_super_stuff()
213 pr_debug(" nrpos: %u\n", fs32_to_cpu(sb, usb3->fs_nrpos)); in ufs_print_super_stuff()
215 fs32_to_cpu(sb, usb1->fs_cstotal.cs_ndir)); in ufs_print_super_stuff()
217 fs32_to_cpu(sb, usb1->fs_cstotal.cs_nifree)); in ufs_print_super_stuff()
219 fs32_to_cpu(sb, usb1->fs_cstotal.cs_nbfree)); in ufs_print_super_stuff()
221 fs32_to_cpu(sb, usb1->fs_cstotal.cs_nffree)); in ufs_print_super_stuff()
234 pr_debug(" magic: %x\n", fs32_to_cpu(sb, cg->cg_magic)); in ufs_print_cylinder_stuff()
235 pr_debug(" time: %u\n", fs32_to_cpu(sb, cg->cg_time)); in ufs_print_cylinder_stuff()
236 pr_debug(" cgx: %u\n", fs32_to_cpu(sb, cg->cg_cgx)); in ufs_print_cylinder_stuff()
237 pr_debug(" ncyl: %u\n", fs16_to_cpu(sb, cg->cg_ncyl)); in ufs_print_cylinder_stuff()
238 pr_debug(" niblk: %u\n", fs16_to_cpu(sb, cg->cg_niblk)); in ufs_print_cylinder_stuff()
239 pr_debug(" ndblk: %u\n", fs32_to_cpu(sb, cg->cg_ndblk)); in ufs_print_cylinder_stuff()
240 pr_debug(" cs_ndir: %u\n", fs32_to_cpu(sb, cg->cg_cs.cs_ndir)); in ufs_print_cylinder_stuff()
241 pr_debug(" cs_nbfree: %u\n", fs32_to_cpu(sb, cg->cg_cs.cs_nbfree)); in ufs_print_cylinder_stuff()
242 pr_debug(" cs_nifree: %u\n", fs32_to_cpu(sb, cg->cg_cs.cs_nifree)); in ufs_print_cylinder_stuff()
243 pr_debug(" cs_nffree: %u\n", fs32_to_cpu(sb, cg->cg_cs.cs_nffree)); in ufs_print_cylinder_stuff()
244 pr_debug(" rotor: %u\n", fs32_to_cpu(sb, cg->cg_rotor)); in ufs_print_cylinder_stuff()
245 pr_debug(" frotor: %u\n", fs32_to_cpu(sb, cg->cg_frotor)); in ufs_print_cylinder_stuff()
246 pr_debug(" irotor: %u\n", fs32_to_cpu(sb, cg->cg_irotor)); in ufs_print_cylinder_stuff()
248 fs32_to_cpu(sb, cg->cg_frsum[0]), fs32_to_cpu(sb, cg->cg_frsum[1]), in ufs_print_cylinder_stuff()
249 fs32_to_cpu(sb, cg->cg_frsum[2]), fs32_to_cpu(sb, cg->cg_frsum[3]), in ufs_print_cylinder_stuff()
250 fs32_to_cpu(sb, cg->cg_frsum[4]), fs32_to_cpu(sb, cg->cg_frsum[5]), in ufs_print_cylinder_stuff()
251 fs32_to_cpu(sb, cg->cg_frsum[6]), fs32_to_cpu(sb, cg->cg_frsum[7])); in ufs_print_cylinder_stuff()
252 pr_debug(" btotoff: %u\n", fs32_to_cpu(sb, cg->cg_btotoff)); in ufs_print_cylinder_stuff()
253 pr_debug(" boff: %u\n", fs32_to_cpu(sb, cg->cg_boff)); in ufs_print_cylinder_stuff()
254 pr_debug(" iuseoff: %u\n", fs32_to_cpu(sb, cg->cg_iusedoff)); in ufs_print_cylinder_stuff()
255 pr_debug(" freeoff: %u\n", fs32_to_cpu(sb, cg->cg_freeoff)); in ufs_print_cylinder_stuff()
256 pr_debug(" nextfreeoff: %u\n", fs32_to_cpu(sb, cg->cg_nextfreeoff)); in ufs_print_cylinder_stuff()
258 fs32_to_cpu(sb, cg->cg_u.cg_44.cg_clustersumoff)); in ufs_print_cylinder_stuff()
260 fs32_to_cpu(sb, cg->cg_u.cg_44.cg_clusteroff)); in ufs_print_cylinder_stuff()
262 fs32_to_cpu(sb, cg->cg_u.cg_44.cg_nclusterblks)); in ufs_print_cylinder_stuff()
266 # define ufs_print_super_stuff(sb, usb1, usb2, usb3) /**/ argument
280 uspi = UFS_SB(sb)->s_uspi; in ufs_error()
283 if (!sb_rdonly(sb)) { in ufs_error()
284 usb1->fs_clean = UFS_FSBAD; in ufs_error()
287 sb->s_flags |= SB_RDONLY; in ufs_error()
292 switch (UFS_SB(sb)->s_on_err) { in ufs_error()
295 sb->s_id, function, &vaf); in ufs_error()
301 sb->s_id, function, &vaf); in ufs_error()
314 uspi = UFS_SB(sb)->s_uspi; in ufs_panic()
317 if (!sb_rdonly(sb)) { in ufs_panic()
318 usb1->fs_clean = UFS_FSBAD; in ufs_panic()
325 sb->s_flags |= SB_RDONLY; in ufs_panic()
327 sb->s_id, function, &vaf); in ufs_panic()
341 sb->s_id, function, &vaf); in ufs_warning()
356 {"nextstep-cd", UFS_MOUNT_UFSTYPE_NEXTSTEP_CD},
382 struct ufs_fs_context *ctx = fc->fs_private; in ufs_parse_param()
389 if (opt < 0) in ufs_parse_param()
394 if (ctx->flavour == result.uint_32) /* no-op */ in ufs_parse_param()
396 if (fc->purpose == FS_CONTEXT_FOR_RECONFIGURE) { in ufs_parse_param()
398 return -EINVAL; in ufs_parse_param()
400 if (ctx->flavour) { in ufs_parse_param()
402 return -EINVAL; in ufs_parse_param()
404 ctx->flavour = result.uint_32; in ufs_parse_param()
407 ctx->on_err = result.uint_32; in ufs_parse_param()
410 return -EINVAL; in ufs_parse_param()
423 struct ufs_sb_private_info *uspi = sbi->s_uspi; in ufs_setup_cstotal()
426 struct ufs_super_block_third *usb3; in ufs_setup_cstotal() local
427 unsigned mtype = sbi->s_flavour; in ufs_setup_cstotal()
432 usb3 = ubh_get_usb_third(uspi); in ufs_setup_cstotal()
434 if ((mtype == UFS_MOUNT_UFSTYPE_44BSD && in ufs_setup_cstotal()
435 (usb2->fs_un.fs_u2.fs_maxbsize == usb1->fs_bsize)) || in ufs_setup_cstotal()
438 uspi->cs_total.cs_ndir = fs64_to_cpu(sb, usb2->fs_un.fs_u2.cs_ndir); in ufs_setup_cstotal()
439 uspi->cs_total.cs_nbfree = fs64_to_cpu(sb, usb2->fs_un.fs_u2.cs_nbfree); in ufs_setup_cstotal()
440 uspi->cs_total.cs_nifree = fs64_to_cpu(sb, usb3->fs_un1.fs_u2.cs_nifree); in ufs_setup_cstotal()
441 uspi->cs_total.cs_nffree = fs64_to_cpu(sb, usb3->fs_un1.fs_u2.cs_nffree); in ufs_setup_cstotal()
443 uspi->cs_total.cs_ndir = fs32_to_cpu(sb, usb1->fs_cstotal.cs_ndir); in ufs_setup_cstotal()
444 uspi->cs_total.cs_nbfree = fs32_to_cpu(sb, usb1->fs_cstotal.cs_nbfree); in ufs_setup_cstotal()
445 uspi->cs_total.cs_nifree = fs32_to_cpu(sb, usb1->fs_cstotal.cs_nifree); in ufs_setup_cstotal()
446 uspi->cs_total.cs_nffree = fs32_to_cpu(sb, usb1->fs_cstotal.cs_nffree); in ufs_setup_cstotal()
452 * Read on-disk structures associated with cylinder groups
457 struct ufs_sb_private_info *uspi = sbi->s_uspi; in ufs_read_cylinder_structures()
467 size = uspi->s_cssize; in ufs_read_cylinder_structures()
468 blks = (size + uspi->s_fsize - 1) >> uspi->s_fshift; in ufs_read_cylinder_structures()
470 if (!base) in ufs_read_cylinder_structures()
472 sbi->s_csp = (struct ufs_csum *)space; in ufs_read_cylinder_structures()
474 struct buffer_head *bh = sb_bread(sb, uspi->s_csaddr + i); in ufs_read_cylinder_structures()
475 if (!bh) in ufs_read_cylinder_structures()
477 memcpy(space, bh->b_data, uspi->s_fsize); in ufs_read_cylinder_structures()
478 space += uspi->s_fsize; in ufs_read_cylinder_structures()
486 sbi->s_ucg = kmalloc_array(uspi->s_ncg, sizeof(struct buffer_head *), in ufs_read_cylinder_structures()
488 if (!sbi->s_ucg) in ufs_read_cylinder_structures()
490 for (i = 0; i < uspi->s_ncg; i++) in ufs_read_cylinder_structures()
491 sbi->s_ucg[i] = NULL; in ufs_read_cylinder_structures()
493 sbi->s_ucpi[i] = NULL; in ufs_read_cylinder_structures()
494 sbi->s_cgno[i] = UFS_CGNO_EMPTY; in ufs_read_cylinder_structures()
496 for (i = 0; i < uspi->s_ncg; i++) { in ufs_read_cylinder_structures()
498 if (!(sbi->s_ucg[i] = sb_bread(sb, ufs_cgcmin(i)))) in ufs_read_cylinder_structures()
500 if (!ufs_cg_chkmagic (sb, (struct ufs_cylinder_group *) sbi->s_ucg[i]->b_data)) in ufs_read_cylinder_structures()
503 ufs_print_cylinder_stuff(sb, (struct ufs_cylinder_group *) sbi->s_ucg[i]->b_data); in ufs_read_cylinder_structures()
506 if (!(sbi->s_ucpi[i] = kmalloc (sizeof(struct ufs_cg_private_info), GFP_NOFS))) in ufs_read_cylinder_structures()
508 sbi->s_cgno[i] = UFS_CGNO_EMPTY; in ufs_read_cylinder_structures()
510 sbi->s_cg_loaded = 0; in ufs_read_cylinder_structures()
516 if (sbi->s_ucg) { in ufs_read_cylinder_structures()
517 for (i = 0; i < uspi->s_ncg; i++) in ufs_read_cylinder_structures()
518 if (sbi->s_ucg[i]) in ufs_read_cylinder_structures()
519 brelse (sbi->s_ucg[i]); in ufs_read_cylinder_structures()
520 kfree (sbi->s_ucg); in ufs_read_cylinder_structures()
522 kfree (sbi->s_ucpi[i]); in ufs_read_cylinder_structures()
533 unsigned mtype = UFS_SB(sb)->s_flavour; in ufs_put_cstotal()
534 struct ufs_sb_private_info *uspi = UFS_SB(sb)->s_uspi; in ufs_put_cstotal()
537 struct ufs_super_block_third *usb3; in ufs_put_cstotal() local
542 usb3 = ubh_get_usb_third(uspi); in ufs_put_cstotal()
544 if (mtype == UFS_MOUNT_UFSTYPE_UFS2) { in ufs_put_cstotal()
546 usb2->fs_un.fs_u2.cs_ndir = in ufs_put_cstotal()
547 cpu_to_fs64(sb, uspi->cs_total.cs_ndir); in ufs_put_cstotal()
548 usb2->fs_un.fs_u2.cs_nbfree = in ufs_put_cstotal()
549 cpu_to_fs64(sb, uspi->cs_total.cs_nbfree); in ufs_put_cstotal()
550 usb3->fs_un1.fs_u2.cs_nifree = in ufs_put_cstotal()
551 cpu_to_fs64(sb, uspi->cs_total.cs_nifree); in ufs_put_cstotal()
552 usb3->fs_un1.fs_u2.cs_nffree = in ufs_put_cstotal()
553 cpu_to_fs64(sb, uspi->cs_total.cs_nffree); in ufs_put_cstotal()
557 if (mtype == UFS_MOUNT_UFSTYPE_44BSD && in ufs_put_cstotal()
558 (usb2->fs_un.fs_u2.fs_maxbsize == usb1->fs_bsize)) { in ufs_put_cstotal()
560 usb2->fs_un.fs_u2.cs_ndir = in ufs_put_cstotal()
561 cpu_to_fs64(sb, uspi->cs_total.cs_ndir); in ufs_put_cstotal()
562 usb2->fs_un.fs_u2.cs_nbfree = in ufs_put_cstotal()
563 cpu_to_fs64(sb, uspi->cs_total.cs_nbfree); in ufs_put_cstotal()
564 usb3->fs_un1.fs_u2.cs_nifree = in ufs_put_cstotal()
565 cpu_to_fs64(sb, uspi->cs_total.cs_nifree); in ufs_put_cstotal()
566 usb3->fs_un1.fs_u2.cs_nffree = in ufs_put_cstotal()
567 cpu_to_fs64(sb, uspi->cs_total.cs_nffree); in ufs_put_cstotal()
569 usb1->fs_cstotal.cs_ndir = cpu_to_fs32(sb, uspi->cs_total.cs_ndir); in ufs_put_cstotal()
570 usb1->fs_cstotal.cs_nbfree = cpu_to_fs32(sb, uspi->cs_total.cs_nbfree); in ufs_put_cstotal()
571 usb1->fs_cstotal.cs_nifree = cpu_to_fs32(sb, uspi->cs_total.cs_nifree); in ufs_put_cstotal()
572 usb1->fs_cstotal.cs_nffree = cpu_to_fs32(sb, uspi->cs_total.cs_nffree); in ufs_put_cstotal()
575 ufs_print_super_stuff(sb, usb1, usb2, usb3); in ufs_put_cstotal()
580 * ufs_put_super_internal() - put on-disk intrenal structures
582 * Put on-disk structures associated with cylinder groups
588 struct ufs_sb_private_info *uspi = sbi->s_uspi; in ufs_put_super_internal()
596 size = uspi->s_cssize; in ufs_put_super_internal()
597 blks = (size + uspi->s_fsize - 1) >> uspi->s_fshift; in ufs_put_super_internal()
598 base = space = (char*) sbi->s_csp; in ufs_put_super_internal()
599 for (i = 0; i < blks; i++, space += uspi->s_fsize) { in ufs_put_super_internal()
600 struct buffer_head *bh = sb_bread(sb, uspi->s_csaddr + i); in ufs_put_super_internal()
602 if (unlikely(!bh)) { // better than an oops... in ufs_put_super_internal()
607 memcpy(bh->b_data, space, uspi->s_fsize); in ufs_put_super_internal()
611 for (i = 0; i < sbi->s_cg_loaded; i++) { in ufs_put_super_internal()
613 kfree (sbi->s_ucpi[i]); in ufs_put_super_internal()
616 kfree (sbi->s_ucpi[i]); in ufs_put_super_internal()
617 for (i = 0; i < uspi->s_ncg; i++) in ufs_put_super_internal()
618 brelse (sbi->s_ucg[i]); in ufs_put_super_internal()
619 kfree (sbi->s_ucg); in ufs_put_super_internal()
629 struct ufs_super_block_third * usb3; in ufs_sync_fs() local
632 mutex_lock(&UFS_SB(sb)->s_lock); in ufs_sync_fs()
636 flags = UFS_SB(sb)->s_flags; in ufs_sync_fs()
637 uspi = UFS_SB(sb)->s_uspi; in ufs_sync_fs()
639 usb3 = ubh_get_usb_third(uspi); in ufs_sync_fs()
641 usb1->fs_time = ufs_get_seconds(sb); in ufs_sync_fs()
642 if ((flags & UFS_ST_MASK) == UFS_ST_SUN || in ufs_sync_fs()
645 ufs_set_fs_state(sb, usb1, usb3, in ufs_sync_fs()
646 UFS_FSOK - fs32_to_cpu(sb, usb1->fs_time)); in ufs_sync_fs()
650 mutex_unlock(&UFS_SB(sb)->s_lock); in ufs_sync_fs()
661 spin_lock(&sbi->work_lock); in delayed_sync_fs()
662 sbi->work_queued = 0; in delayed_sync_fs()
663 spin_unlock(&sbi->work_lock); in delayed_sync_fs()
665 ufs_sync_fs(sbi->sb, 1); in delayed_sync_fs()
673 spin_lock(&sbi->work_lock); in ufs_mark_sb_dirty()
674 if (!sbi->work_queued) { in ufs_mark_sb_dirty()
676 queue_delayed_work(system_long_wq, &sbi->sync_work, delay); in ufs_mark_sb_dirty()
677 sbi->work_queued = 1; in ufs_mark_sb_dirty()
679 spin_unlock(&sbi->work_lock); in ufs_mark_sb_dirty()
688 if (!sb_rdonly(sb)) in ufs_put_super()
690 cancel_delayed_work_sync(&sbi->sync_work); in ufs_put_super()
692 ubh_brelse_uspi (sbi->s_uspi); in ufs_put_super()
693 kfree (sbi->s_uspi); in ufs_put_super()
695 sb->s_fs_info = NULL; in ufs_put_super()
702 struct ufs_sb_private_info *uspi = UFS_SB(sb)->s_uspi; in ufs_max_bytes()
703 int bits = uspi->s_apbshift; in ufs_max_bytes()
706 if (bits > 21) in ufs_max_bytes()
712 if (res >= (MAX_LFS_FILESIZE >> uspi->s_bshift)) in ufs_max_bytes()
714 return res << uspi->s_bshift; in ufs_max_bytes()
719 struct ufs_fs_context *ctx = fc->fs_private; in ufs_fill_super()
720 int silent = fc->sb_flags & SB_SILENT; in ufs_fill_super()
725 struct ufs_super_block_third * usb3; in ufs_fill_super() local
732 int ret = -EINVAL; in ufs_fill_super()
741 if (!sb_rdonly(sb)) { in ufs_fill_super()
742 pr_err("ufs was compiled with read-only support, can't be mounted as read-write\n"); in ufs_fill_super()
743 return -EROFS; in ufs_fill_super()
748 if (!sbi) in ufs_fill_super()
750 sb->s_fs_info = sbi; in ufs_fill_super()
751 sbi->sb = sb; in ufs_fill_super()
755 mutex_init(&sbi->s_lock); in ufs_fill_super()
756 spin_lock_init(&sbi->work_lock); in ufs_fill_super()
757 INIT_DELAYED_WORK(&sbi->sync_work, delayed_sync_fs); in ufs_fill_super()
759 sbi->s_flavour = ctx->flavour; in ufs_fill_super()
760 sbi->s_on_err = ctx->on_err; in ufs_fill_super()
762 if (!sbi->s_flavour) { in ufs_fill_super()
763 if (!silent) in ufs_fill_super()
765 "mount -t ufs -o ufstype=" in ufs_fill_super()
766 "sun|sunx86|44bsd|ufs2|5xbsd|old|hp|nextstep|nextstep-cd|openstep ...\n\n" in ufs_fill_super()
769 sbi->s_flavour = UFS_MOUNT_UFSTYPE_OLD; in ufs_fill_super()
773 sbi->s_uspi = uspi; in ufs_fill_super()
774 if (!uspi) in ufs_fill_super()
776 uspi->s_dirblksize = UFS_SECTOR_SIZE; in ufs_fill_super()
779 sb->s_maxbytes = MAX_LFS_FILESIZE; in ufs_fill_super()
781 sb->s_time_gran = NSEC_PER_SEC; in ufs_fill_super()
782 sb->s_time_min = S32_MIN; in ufs_fill_super()
783 sb->s_time_max = S32_MAX; in ufs_fill_super()
785 switch (sbi->s_flavour) { in ufs_fill_super()
788 uspi->s_fsize = block_size = 512; in ufs_fill_super()
789 uspi->s_fmask = ~(512 - 1); in ufs_fill_super()
790 uspi->s_fshift = 9; in ufs_fill_super()
791 uspi->s_sbsize = super_block_size = 1536; in ufs_fill_super()
792 uspi->s_sbbase = 0; in ufs_fill_super()
798 uspi->s_fsize = block_size = 512; in ufs_fill_super()
799 uspi->s_fmask = ~(512 - 1); in ufs_fill_super()
800 uspi->s_fshift = 9; in ufs_fill_super()
801 uspi->s_sbsize = super_block_size = 1536; in ufs_fill_super()
802 uspi->s_sbbase = 0; in ufs_fill_super()
803 sb->s_time_gran = 1; in ufs_fill_super()
804 sb->s_time_min = S64_MIN; in ufs_fill_super()
805 sb->s_time_max = S64_MAX; in ufs_fill_super()
811 uspi->s_fsize = block_size = 1024; in ufs_fill_super()
812 uspi->s_fmask = ~(1024 - 1); in ufs_fill_super()
813 uspi->s_fshift = 10; in ufs_fill_super()
814 uspi->s_sbsize = super_block_size = 2048; in ufs_fill_super()
815 uspi->s_sbbase = 0; in ufs_fill_super()
816 uspi->s_maxsymlinklen = 0; /* Not supported on disk */ in ufs_fill_super()
822 uspi->s_fsize = block_size = 1024; in ufs_fill_super()
823 uspi->s_fmask = ~(1024 - 1); in ufs_fill_super()
824 uspi->s_fshift = 10; in ufs_fill_super()
825 uspi->s_sbsize = 2048; in ufs_fill_super()
827 uspi->s_sbbase = 0; in ufs_fill_super()
828 uspi->s_maxsymlinklen = 0; /* Not supported on disk */ in ufs_fill_super()
834 uspi->s_fsize = block_size = 1024; in ufs_fill_super()
835 uspi->s_fmask = ~(1024 - 1); in ufs_fill_super()
836 uspi->s_fshift = 10; in ufs_fill_super()
837 uspi->s_sbsize = super_block_size = 2048; in ufs_fill_super()
838 uspi->s_sbbase = 0; in ufs_fill_super()
839 uspi->s_maxsymlinklen = 0; /* Not supported on disk */ in ufs_fill_super()
845 uspi->s_fsize = block_size = 1024; in ufs_fill_super()
846 uspi->s_fmask = ~(1024 - 1); in ufs_fill_super()
847 uspi->s_fshift = 10; in ufs_fill_super()
848 uspi->s_sbsize = super_block_size = 2048; in ufs_fill_super()
849 uspi->s_sbbase = 0; in ufs_fill_super()
851 if (!sb_rdonly(sb)) { in ufs_fill_super()
852 if (!silent) in ufs_fill_super()
853 pr_info("ufstype=old is supported read-only\n"); in ufs_fill_super()
854 sb->s_flags |= SB_RDONLY; in ufs_fill_super()
860 uspi->s_fsize = block_size = 1024; in ufs_fill_super()
861 uspi->s_fmask = ~(1024 - 1); in ufs_fill_super()
862 uspi->s_fshift = 10; in ufs_fill_super()
863 uspi->s_sbsize = super_block_size = 2048; in ufs_fill_super()
864 uspi->s_sbbase = 0; in ufs_fill_super()
865 uspi->s_dirblksize = 1024; in ufs_fill_super()
867 if (!sb_rdonly(sb)) { in ufs_fill_super()
868 if (!silent) in ufs_fill_super()
869 pr_info("ufstype=nextstep is supported read-only\n"); in ufs_fill_super()
870 sb->s_flags |= SB_RDONLY; in ufs_fill_super()
875 UFSD("ufstype=nextstep-cd\n"); in ufs_fill_super()
876 uspi->s_fsize = block_size = 2048; in ufs_fill_super()
877 uspi->s_fmask = ~(2048 - 1); in ufs_fill_super()
878 uspi->s_fshift = 11; in ufs_fill_super()
879 uspi->s_sbsize = super_block_size = 2048; in ufs_fill_super()
880 uspi->s_sbbase = 0; in ufs_fill_super()
881 uspi->s_dirblksize = 1024; in ufs_fill_super()
883 if (!sb_rdonly(sb)) { in ufs_fill_super()
884 if (!silent) in ufs_fill_super()
885 pr_info("ufstype=nextstep-cd is supported read-only\n"); in ufs_fill_super()
886 sb->s_flags |= SB_RDONLY; in ufs_fill_super()
892 uspi->s_fsize = block_size = 1024; in ufs_fill_super()
893 uspi->s_fmask = ~(1024 - 1); in ufs_fill_super()
894 uspi->s_fshift = 10; in ufs_fill_super()
895 uspi->s_sbsize = super_block_size = 2048; in ufs_fill_super()
896 uspi->s_sbbase = 0; in ufs_fill_super()
897 uspi->s_dirblksize = 1024; in ufs_fill_super()
899 if (!sb_rdonly(sb)) { in ufs_fill_super()
900 if (!silent) in ufs_fill_super()
901 pr_info("ufstype=openstep is supported read-only\n"); in ufs_fill_super()
902 sb->s_flags |= SB_RDONLY; in ufs_fill_super()
908 uspi->s_fsize = block_size = 1024; in ufs_fill_super()
909 uspi->s_fmask = ~(1024 - 1); in ufs_fill_super()
910 uspi->s_fshift = 10; in ufs_fill_super()
911 uspi->s_sbsize = super_block_size = 2048; in ufs_fill_super()
912 uspi->s_sbbase = 0; in ufs_fill_super()
914 if (!sb_rdonly(sb)) { in ufs_fill_super()
915 if (!silent) in ufs_fill_super()
916 pr_info("ufstype=hp is supported read-only\n"); in ufs_fill_super()
917 sb->s_flags |= SB_RDONLY; in ufs_fill_super()
921 if (!silent) in ufs_fill_super()
927 if (!sb_set_blocksize(sb, block_size)) { in ufs_fill_super()
936 ubh = ubh_bread_uspi(uspi, sb, uspi->s_sbbase + super_block_offset/block_size, super_block_size); in ufs_fill_super()
938 if (!ubh) in ufs_fill_super()
943 usb3 = ubh_get_usb_third(uspi); in ufs_fill_super()
946 uspi->s_postblformat = fs32_to_cpu(sb, usb3->fs_postblformat); in ufs_fill_super()
947 if (((flags & UFS_ST_MASK) == UFS_ST_SUNOS) && in ufs_fill_super()
948 (uspi->s_postblformat != UFS_42POSTBLFMT)) { in ufs_fill_super()
953 if ((flags & UFS_ST_MASK) == UFS_ST_44BSD && in ufs_fill_super()
954 uspi->s_postblformat == UFS_42POSTBLFMT) { in ufs_fill_super()
955 if (!silent) in ufs_fill_super()
963 sbi->s_bytesex = BYTESEX_LE; in ufs_fill_super()
964 switch ((uspi->fs_magic = fs32_to_cpu(sb, usb3->fs_magic))) { in ufs_fill_super()
973 sbi->s_bytesex = BYTESEX_BE; in ufs_fill_super()
974 switch ((uspi->fs_magic = fs32_to_cpu(sb, usb3->fs_magic))) { in ufs_fill_super()
984 if ((sbi->s_flavour == UFS_MOUNT_UFSTYPE_NEXTSTEP in ufs_fill_super()
985 || sbi->s_flavour == UFS_MOUNT_UFSTYPE_NEXTSTEP_CD in ufs_fill_super()
986 || sbi->s_flavour == UFS_MOUNT_UFSTYPE_OPENSTEP) in ufs_fill_super()
987 && uspi->s_sbbase < 256) { in ufs_fill_super()
990 uspi->s_sbbase += 8; in ufs_fill_super()
993 if (!silent) in ufs_fill_super()
1001 uspi->s_bsize = fs32_to_cpu(sb, usb1->fs_bsize); in ufs_fill_super()
1002 uspi->s_fsize = fs32_to_cpu(sb, usb1->fs_fsize); in ufs_fill_super()
1003 uspi->s_sbsize = fs32_to_cpu(sb, usb1->fs_sbsize); in ufs_fill_super()
1004 uspi->s_fmask = fs32_to_cpu(sb, usb1->fs_fmask); in ufs_fill_super()
1005 uspi->s_fshift = fs32_to_cpu(sb, usb1->fs_fshift); in ufs_fill_super()
1007 if (!is_power_of_2(uspi->s_fsize)) { in ufs_fill_super()
1009 __func__, uspi->s_fsize); in ufs_fill_super()
1012 if (uspi->s_fsize < 512) { in ufs_fill_super()
1014 __func__, uspi->s_fsize); in ufs_fill_super()
1017 if (uspi->s_fsize > 4096) { in ufs_fill_super()
1019 __func__, uspi->s_fsize); in ufs_fill_super()
1022 if (!is_power_of_2(uspi->s_bsize)) { in ufs_fill_super()
1024 __func__, uspi->s_bsize); in ufs_fill_super()
1027 if (uspi->s_bsize < 4096) { in ufs_fill_super()
1029 __func__, uspi->s_bsize); in ufs_fill_super()
1032 if (uspi->s_bsize / uspi->s_fsize > 8) { in ufs_fill_super()
1034 __func__, uspi->s_bsize / uspi->s_fsize); in ufs_fill_super()
1037 if (uspi->s_fsize != block_size || uspi->s_sbsize != super_block_size) { in ufs_fill_super()
1040 block_size = uspi->s_fsize; in ufs_fill_super()
1041 super_block_size = uspi->s_sbsize; in ufs_fill_super()
1046 sbi->s_flags = flags;/*after that line some functions use s_flags*/ in ufs_fill_super()
1047 ufs_print_super_stuff(sb, usb1, usb2, usb3); in ufs_fill_super()
1050 * Check, if file system was correctly unmounted. in ufs_fill_super()
1051 * If not, make it read only. in ufs_fill_super()
1053 if (((flags & UFS_ST_MASK) == UFS_ST_44BSD) || in ufs_fill_super()
1058 (ufs_get_fs_state(sb, usb1, usb3) == (UFS_FSOK - fs32_to_cpu(sb, usb1->fs_time))))) { in ufs_fill_super()
1059 switch(usb1->fs_clean) { in ufs_fill_super()
1074 sb->s_flags |= SB_RDONLY; in ufs_fill_super()
1078 sb->s_flags |= SB_RDONLY; in ufs_fill_super()
1082 __func__, usb1->fs_clean); in ufs_fill_super()
1083 sb->s_flags |= SB_RDONLY; in ufs_fill_super()
1088 sb->s_flags |= SB_RDONLY; in ufs_fill_super()
1094 sb->s_op = &ufs_super_ops; in ufs_fill_super()
1095 sb->s_export_op = &ufs_export_ops; in ufs_fill_super()
1097 sb->s_magic = fs32_to_cpu(sb, usb3->fs_magic); in ufs_fill_super()
1099 uspi->s_sblkno = fs32_to_cpu(sb, usb1->fs_sblkno); in ufs_fill_super()
1100 uspi->s_cblkno = fs32_to_cpu(sb, usb1->fs_cblkno); in ufs_fill_super()
1101 uspi->s_iblkno = fs32_to_cpu(sb, usb1->fs_iblkno); in ufs_fill_super()
1102 uspi->s_dblkno = fs32_to_cpu(sb, usb1->fs_dblkno); in ufs_fill_super()
1103 uspi->s_cgoffset = fs32_to_cpu(sb, usb1->fs_cgoffset); in ufs_fill_super()
1104 uspi->s_cgmask = fs32_to_cpu(sb, usb1->fs_cgmask); in ufs_fill_super()
1106 if ((flags & UFS_TYPE_MASK) == UFS_TYPE_UFS2) { in ufs_fill_super()
1107 uspi->s_size = fs64_to_cpu(sb, usb3->fs_un1.fs_u2.fs_size); in ufs_fill_super()
1108 uspi->s_dsize = fs64_to_cpu(sb, usb3->fs_un1.fs_u2.fs_dsize); in ufs_fill_super()
1110 uspi->s_size = fs32_to_cpu(sb, usb1->fs_size); in ufs_fill_super()
1111 uspi->s_dsize = fs32_to_cpu(sb, usb1->fs_dsize); in ufs_fill_super()
1114 uspi->s_ncg = fs32_to_cpu(sb, usb1->fs_ncg); in ufs_fill_super()
1117 uspi->s_fpb = fs32_to_cpu(sb, usb1->fs_frag); in ufs_fill_super()
1118 uspi->s_minfree = fs32_to_cpu(sb, usb1->fs_minfree); in ufs_fill_super()
1119 uspi->s_bmask = fs32_to_cpu(sb, usb1->fs_bmask); in ufs_fill_super()
1120 uspi->s_fmask = fs32_to_cpu(sb, usb1->fs_fmask); in ufs_fill_super()
1121 uspi->s_bshift = fs32_to_cpu(sb, usb1->fs_bshift); in ufs_fill_super()
1122 uspi->s_fshift = fs32_to_cpu(sb, usb1->fs_fshift); in ufs_fill_super()
1123 UFSD("uspi->s_bshift = %d,uspi->s_fshift = %d", uspi->s_bshift, in ufs_fill_super()
1124 uspi->s_fshift); in ufs_fill_super()
1125 uspi->s_fpbshift = fs32_to_cpu(sb, usb1->fs_fragshift); in ufs_fill_super()
1126 uspi->s_fsbtodb = fs32_to_cpu(sb, usb1->fs_fsbtodb); in ufs_fill_super()
1128 uspi->s_csmask = fs32_to_cpu(sb, usb1->fs_csmask); in ufs_fill_super()
1129 uspi->s_csshift = fs32_to_cpu(sb, usb1->fs_csshift); in ufs_fill_super()
1130 uspi->s_nindir = fs32_to_cpu(sb, usb1->fs_nindir); in ufs_fill_super()
1131 uspi->s_inopb = fs32_to_cpu(sb, usb1->fs_inopb); in ufs_fill_super()
1132 uspi->s_nspf = fs32_to_cpu(sb, usb1->fs_nspf); in ufs_fill_super()
1133 uspi->s_npsect = ufs_get_fs_npsect(sb, usb1, usb3); in ufs_fill_super()
1134 uspi->s_interleave = fs32_to_cpu(sb, usb1->fs_interleave); in ufs_fill_super()
1135 uspi->s_trackskew = fs32_to_cpu(sb, usb1->fs_trackskew); in ufs_fill_super()
1137 if (uspi->fs_magic == UFS2_MAGIC) in ufs_fill_super()
1138 uspi->s_csaddr = fs64_to_cpu(sb, usb3->fs_un1.fs_u2.fs_csaddr); in ufs_fill_super()
1140 uspi->s_csaddr = fs32_to_cpu(sb, usb1->fs_csaddr); in ufs_fill_super()
1142 uspi->s_cssize = fs32_to_cpu(sb, usb1->fs_cssize); in ufs_fill_super()
1143 uspi->s_cgsize = fs32_to_cpu(sb, usb1->fs_cgsize); in ufs_fill_super()
1144 uspi->s_ntrak = fs32_to_cpu(sb, usb1->fs_ntrak); in ufs_fill_super()
1145 uspi->s_nsect = fs32_to_cpu(sb, usb1->fs_nsect); in ufs_fill_super()
1146 uspi->s_spc = fs32_to_cpu(sb, usb1->fs_spc); in ufs_fill_super()
1147 uspi->s_ipg = fs32_to_cpu(sb, usb1->fs_ipg); in ufs_fill_super()
1148 uspi->s_fpg = fs32_to_cpu(sb, usb1->fs_fpg); in ufs_fill_super()
1149 uspi->s_cpc = fs32_to_cpu(sb, usb2->fs_un.fs_u1.fs_cpc); in ufs_fill_super()
1150 uspi->s_contigsumsize = fs32_to_cpu(sb, usb3->fs_un2.fs_44.fs_contigsumsize); in ufs_fill_super()
1151 uspi->s_qbmask = ufs_get_fs_qbmask(sb, usb3); in ufs_fill_super()
1152 uspi->s_qfmask = ufs_get_fs_qfmask(sb, usb3); in ufs_fill_super()
1153 uspi->s_nrpos = fs32_to_cpu(sb, usb3->fs_nrpos); in ufs_fill_super()
1154 uspi->s_postbloff = fs32_to_cpu(sb, usb3->fs_postbloff); in ufs_fill_super()
1155 uspi->s_rotbloff = fs32_to_cpu(sb, usb3->fs_rotbloff); in ufs_fill_super()
1157 uspi->s_root_blocks = mul_u64_u32_div(uspi->s_dsize, in ufs_fill_super()
1158 uspi->s_minfree, 100); in ufs_fill_super()
1159 if (uspi->s_minfree <= 5) { in ufs_fill_super()
1160 uspi->s_time_to_space = ~0ULL; in ufs_fill_super()
1161 uspi->s_space_to_time = 0; in ufs_fill_super()
1162 usb1->fs_optim = cpu_to_fs32(sb, UFS_OPTSPACE); in ufs_fill_super()
1164 uspi->s_time_to_space = (uspi->s_root_blocks / 2) + 1; in ufs_fill_super()
1165 uspi->s_space_to_time = mul_u64_u32_div(uspi->s_dsize, in ufs_fill_super()
1166 uspi->s_minfree - 2, 100) - 1; in ufs_fill_super()
1172 uspi->s_fpbmask = uspi->s_fpb - 1; in ufs_fill_super()
1173 if ((flags & UFS_TYPE_MASK) == UFS_TYPE_UFS2) in ufs_fill_super()
1174 uspi->s_apbshift = uspi->s_bshift - 3; in ufs_fill_super()
1176 uspi->s_apbshift = uspi->s_bshift - 2; in ufs_fill_super()
1178 uspi->s_apb = 1 << uspi->s_apbshift; in ufs_fill_super()
1179 uspi->s_apbmask = uspi->s_apb - 1; in ufs_fill_super()
1180 uspi->s_nspfshift = uspi->s_fshift - UFS_SECTOR_BITS; in ufs_fill_super()
1181 uspi->s_nspb = uspi->s_nspf << uspi->s_fpbshift; in ufs_fill_super()
1182 uspi->s_inopf = uspi->s_inopb >> uspi->s_fpbshift; in ufs_fill_super()
1183 uspi->s_bpf = uspi->s_fsize << 3; in ufs_fill_super()
1184 uspi->s_bpfshift = uspi->s_fshift + 3; in ufs_fill_super()
1185 uspi->s_bpfmask = uspi->s_bpf - 1; in ufs_fill_super()
1186 if (sbi->s_flavour == UFS_MOUNT_UFSTYPE_44BSD || in ufs_fill_super()
1187 sbi->s_flavour == UFS_MOUNT_UFSTYPE_UFS2) in ufs_fill_super()
1188 uspi->s_maxsymlinklen = in ufs_fill_super()
1189 fs32_to_cpu(sb, usb3->fs_un2.fs_44.fs_maxsymlinklen); in ufs_fill_super()
1191 if (uspi->fs_magic == UFS2_MAGIC) in ufs_fill_super()
1195 if (uspi->s_maxsymlinklen > maxsymlen) { in ufs_fill_super()
1197 "fast symlink size (%u)\n", uspi->s_maxsymlinklen); in ufs_fill_super()
1198 uspi->s_maxsymlinklen = maxsymlen; in ufs_fill_super()
1200 sb->s_maxbytes = ufs_max_bytes(sb); in ufs_fill_super()
1201 sb->s_max_links = UFS_LINK_MAX; in ufs_fill_super()
1204 if (IS_ERR(inode)) { in ufs_fill_super()
1208 sb->s_root = d_make_root(inode); in ufs_fill_super()
1209 if (!sb->s_root) { in ufs_fill_super()
1210 ret = -ENOMEM; in ufs_fill_super()
1218 if (!sb_rdonly(sb)) in ufs_fill_super()
1219 if (!ufs_read_cylinder_structures(sb)) in ufs_fill_super()
1226 if (ubh) in ufs_fill_super()
1230 sb->s_fs_info = NULL; in ufs_fill_super()
1236 return -ENOMEM; in ufs_fill_super()
1243 struct ufs_super_block_third * usb3; in ufs_reconfigure() local
1244 struct ufs_fs_context *ctx = fc->fs_private; in ufs_reconfigure()
1245 struct super_block *sb = fc->root->d_sb; in ufs_reconfigure()
1250 mutex_lock(&UFS_SB(sb)->s_lock); in ufs_reconfigure()
1251 uspi = UFS_SB(sb)->s_uspi; in ufs_reconfigure()
1252 flags = UFS_SB(sb)->s_flags; in ufs_reconfigure()
1254 usb3 = ubh_get_usb_third(uspi); in ufs_reconfigure()
1256 ufstype = UFS_SB(sb)->s_flavour; in ufs_reconfigure()
1258 if ((bool)(fc->sb_flags & SB_RDONLY) == sb_rdonly(sb)) { in ufs_reconfigure()
1259 UFS_SB(sb)->s_on_err = ctx->on_err; in ufs_reconfigure()
1260 mutex_unlock(&UFS_SB(sb)->s_lock); in ufs_reconfigure()
1267 if (fc->sb_flags & SB_RDONLY) { in ufs_reconfigure()
1269 usb1->fs_time = ufs_get_seconds(sb); in ufs_reconfigure()
1270 if ((flags & UFS_ST_MASK) == UFS_ST_SUN in ufs_reconfigure()
1273 ufs_set_fs_state(sb, usb1, usb3, in ufs_reconfigure()
1274 UFS_FSOK - fs32_to_cpu(sb, usb1->fs_time)); in ufs_reconfigure()
1276 sb->s_flags |= SB_RDONLY; in ufs_reconfigure()
1282 pr_err("ufs was compiled with read-only support, can't be mounted as read-write\n"); in ufs_reconfigure()
1283 mutex_unlock(&UFS_SB(sb)->s_lock); in ufs_reconfigure()
1284 return -EINVAL; in ufs_reconfigure()
1286 if (ufstype != UFS_MOUNT_UFSTYPE_SUN && in ufs_reconfigure()
1291 pr_err("this ufstype is read-only supported\n"); in ufs_reconfigure()
1292 mutex_unlock(&UFS_SB(sb)->s_lock); in ufs_reconfigure()
1293 return -EINVAL; in ufs_reconfigure()
1295 if (!ufs_read_cylinder_structures(sb)) { in ufs_reconfigure()
1297 mutex_unlock(&UFS_SB(sb)->s_lock); in ufs_reconfigure()
1298 return -EPERM; in ufs_reconfigure()
1300 sb->s_flags &= ~SB_RDONLY; in ufs_reconfigure()
1303 UFS_SB(sb)->s_on_err = ctx->on_err; in ufs_reconfigure()
1304 mutex_unlock(&UFS_SB(sb)->s_lock); in ufs_reconfigure()
1310 struct ufs_sb_info *sbi = UFS_SB(root->d_sb); in ufs_show_options()
1311 unsigned mval = sbi->s_flavour; in ufs_show_options()
1315 while (tp->value && tp->value != mval) in ufs_show_options()
1317 seq_printf(seq, ",ufstype=%s", tp->name); in ufs_show_options()
1320 mval = sbi->s_on_err; in ufs_show_options()
1321 while (tp->value && tp->value != mval) in ufs_show_options()
1323 seq_printf(seq, ",onerror=%s", tp->name); in ufs_show_options()
1330 struct super_block *sb = dentry->d_sb; in ufs_statfs()
1331 struct ufs_sb_private_info *uspi= UFS_SB(sb)->s_uspi; in ufs_statfs()
1332 unsigned flags = UFS_SB(sb)->s_flags; in ufs_statfs()
1333 u64 id = huge_encode_dev(sb->s_bdev->bd_dev); in ufs_statfs()
1335 mutex_lock(&UFS_SB(sb)->s_lock); in ufs_statfs()
1337 if ((flags & UFS_TYPE_MASK) == UFS_TYPE_UFS2) in ufs_statfs()
1338 buf->f_type = UFS2_MAGIC; in ufs_statfs()
1340 buf->f_type = UFS_MAGIC; in ufs_statfs()
1342 buf->f_blocks = uspi->s_dsize; in ufs_statfs()
1343 buf->f_bfree = ufs_freefrags(uspi); in ufs_statfs()
1344 buf->f_ffree = uspi->cs_total.cs_nifree; in ufs_statfs()
1345 buf->f_bsize = sb->s_blocksize; in ufs_statfs()
1346 buf->f_bavail = (buf->f_bfree > uspi->s_root_blocks) in ufs_statfs()
1347 ? (buf->f_bfree - uspi->s_root_blocks) : 0; in ufs_statfs()
1348 buf->f_files = uspi->s_ncg * uspi->s_ipg; in ufs_statfs()
1349 buf->f_namelen = UFS_MAXNAMLEN; in ufs_statfs()
1350 buf->f_fsid = u64_to_fsid(id); in ufs_statfs()
1352 mutex_unlock(&UFS_SB(sb)->s_lock); in ufs_statfs()
1364 if (!ei) in ufs_alloc_inode()
1367 inode_set_iversion(&ei->vfs_inode, 1); in ufs_alloc_inode()
1368 seqlock_init(&ei->meta_lock); in ufs_alloc_inode()
1369 mutex_init(&ei->truncate_mutex); in ufs_alloc_inode()
1370 return &ei->vfs_inode; in ufs_alloc_inode()
1382 inode_init_once(&ei->vfs_inode); in init_once()
1394 if (ufs_inode_cachep == NULL) in init_inodecache()
1395 return -ENOMEM; in init_inodecache()
1427 kfree(fc->fs_private); in ufs_free_fc()
1442 if (!ctx) in ufs_init_fs_context()
1443 return -ENOMEM; in ufs_init_fs_context()
1445 if (fc->purpose == FS_CONTEXT_FOR_RECONFIGURE) { in ufs_init_fs_context()
1446 struct super_block *sb = fc->root->d_sb; in ufs_init_fs_context()
1449 ctx->flavour = sbi->s_flavour; in ufs_init_fs_context()
1450 ctx->on_err = sbi->s_on_err; in ufs_init_fs_context()
1452 ctx->flavour = 0; in ufs_init_fs_context()
1453 ctx->on_err = UFS_MOUNT_ONERROR_LOCK; in ufs_init_fs_context()
1456 fc->fs_private = ctx; in ufs_init_fs_context()
1457 fc->ops = &ufs_context_ops; in ufs_init_fs_context()
1475 if (err) in init_ufs_fs()
1478 if (err) in init_ufs_fs()