Lines Matching defs:sbi

177 	struct erofs_sb_info *sbi = EROFS_SB(sb);
188 if (!sbi->devs->flatdev && !dif->path) {
203 } else if (!sbi->devs->flatdev) {
215 sbi->total_blocks += dif->blocks;
223 struct erofs_sb_info *sbi = EROFS_SB(sb);
230 sbi->total_blocks = sbi->primarydevice_blocks;
231 if (!erofs_sb_has_device_table(sbi))
236 if (sbi->devs->extra_devices &&
237 ondisk_extradevs != sbi->devs->extra_devices) {
239 ondisk_extradevs, sbi->devs->extra_devices);
245 if (!sbi->devs->extra_devices && !erofs_is_fscache_mode(sb))
246 sbi->devs->flatdev = true;
248 sbi->device_id_mask = roundup_pow_of_two(ondisk_extradevs + 1) - 1;
250 down_read(&sbi->devs->rwsem);
251 if (sbi->devs->extra_devices) {
252 idr_for_each_entry(&sbi->devs->tree, dif, id) {
265 err = idr_alloc(&sbi->devs->tree, dif, 0, 0, GFP_KERNEL);
270 ++sbi->devs->extra_devices;
277 up_read(&sbi->devs->rwsem);
284 struct erofs_sb_info *sbi;
296 sbi = EROFS_SB(sb);
305 sbi->blkszbits = dsb->blkszbits;
306 if (sbi->blkszbits < 9 || sbi->blkszbits > PAGE_SHIFT) {
307 erofs_err(sb, "blkszbits %u isn't supported", sbi->blkszbits);
315 sbi->feature_compat = le32_to_cpu(dsb->feature_compat);
316 if (erofs_sb_has_sb_chksum(sbi)) {
326 sbi->sb_size = 128 + dsb->sb_extslots * EROFS_SB_EXTSLOT_SIZE;
327 if (sbi->sb_size > PAGE_SIZE - EROFS_SUPER_OFFSET) {
329 sbi->sb_size);
332 sbi->primarydevice_blocks = le32_to_cpu(dsb->blocks);
333 sbi->meta_blkaddr = le32_to_cpu(dsb->meta_blkaddr);
335 sbi->xattr_blkaddr = le32_to_cpu(dsb->xattr_blkaddr);
336 sbi->xattr_prefix_start = le32_to_cpu(dsb->xattr_prefix_start);
337 sbi->xattr_prefix_count = dsb->xattr_prefix_count;
338 sbi->xattr_filter_reserved = dsb->xattr_filter_reserved;
340 sbi->islotbits = ilog2(sizeof(struct erofs_inode_compact));
341 sbi->root_nid = le16_to_cpu(dsb->root_nid);
342 sbi->packed_nid = le64_to_cpu(dsb->packed_nid);
343 sbi->inos = le64_to_cpu(dsb->inos);
345 sbi->build_time = le64_to_cpu(dsb->build_time);
346 sbi->build_time_nsec = le32_to_cpu(dsb->build_time_nsec);
350 ret = strscpy(sbi->volume_name, dsb->volume_name,
373 static void erofs_default_options(struct erofs_sb_info *sbi)
376 sbi->opt.cache_strategy = EROFS_ZIP_CACHE_READAROUND;
377 sbi->opt.max_sync_decompress_pages = 3;
378 sbi->opt.sync_decompress = EROFS_SYNC_DECOMPRESS_AUTO;
381 set_opt(&sbi->opt, XATTR_USER);
384 set_opt(&sbi->opt, POSIX_ACL);
429 struct erofs_sb_info *sbi = fc->s_fs_info;
433 set_opt(&sbi->opt, DAX_ALWAYS);
434 clear_opt(&sbi->opt, DAX_NEVER);
437 set_opt(&sbi->opt, DAX_NEVER);
438 clear_opt(&sbi->opt, DAX_ALWAYS);
453 struct erofs_sb_info *sbi = fc->s_fs_info;
466 set_opt(&sbi->opt, XATTR_USER);
468 clear_opt(&sbi->opt, XATTR_USER);
476 set_opt(&sbi->opt, POSIX_ACL);
478 clear_opt(&sbi->opt, POSIX_ACL);
485 sbi->opt.cache_strategy = result.uint_32;
507 down_write(&sbi->devs->rwsem);
508 ret = idr_alloc(&sbi->devs->tree, dif, 0, 0, GFP_KERNEL);
509 up_write(&sbi->devs->rwsem);
515 ++sbi->devs->extra_devices;
519 kfree(sbi->fsid);
520 sbi->fsid = kstrdup(param->string, GFP_KERNEL);
521 if (!sbi->fsid)
525 kfree(sbi->domain_id);
526 sbi->domain_id = kstrdup(param->string, GFP_KERNEL);
527 if (!sbi->domain_id)
584 struct erofs_sb_info *sbi = EROFS_SB(sb);
592 sbi->blkszbits = PAGE_SHIFT;
610 sbi->dax_dev = fs_dax_get_by_bdev(sb->s_bdev,
611 &sbi->dax_part_off,
619 if (sb->s_blocksize_bits != sbi->blkszbits) {
624 if (!sb_set_blocksize(sb, 1 << sbi->blkszbits)) {
630 if (test_opt(&sbi->opt, DAX_ALWAYS)) {
631 if (!sbi->dax_dev) {
633 clear_opt(&sbi->opt, DAX_ALWAYS);
634 } else if (sbi->blkszbits != PAGE_SHIFT) {
636 clear_opt(&sbi->opt, DAX_ALWAYS);
644 if (test_opt(&sbi->opt, POSIX_ACL))
650 xa_init(&sbi->managed_pslots);
653 inode = erofs_iget(sb, sbi->root_nid);
659 sbi->root_nid, inode->i_mode);
669 if (erofs_sb_has_fragments(sbi) && sbi->packed_nid) {
670 sbi->packed_inode = erofs_iget(sb, sbi->packed_nid);
671 if (IS_ERR(sbi->packed_inode)) {
672 err = PTR_ERR(sbi->packed_inode);
673 sbi->packed_inode = NULL;
689 erofs_info(sb, "mounted with root inode @ nid %llu.", sbi->root_nid);
695 struct erofs_sb_info *sbi = fc->s_fs_info;
697 if (IS_ENABLED(CONFIG_EROFS_FS_ONDEMAND) && sbi->fsid)
706 struct erofs_sb_info *sbi = EROFS_SB(sb);
719 sbi->opt = new_sbi->opt;
750 struct erofs_sb_info *sbi = fc->s_fs_info;
752 if (!sbi)
755 erofs_free_dev_context(sbi->devs);
756 kfree(sbi->fsid);
757 kfree(sbi->domain_id);
758 kfree(sbi);
770 struct erofs_sb_info *sbi;
772 sbi = kzalloc(sizeof(*sbi), GFP_KERNEL);
773 if (!sbi)
776 sbi->devs = kzalloc(sizeof(struct erofs_dev_context), GFP_KERNEL);
777 if (!sbi->devs) {
778 kfree(sbi);
781 fc->s_fs_info = sbi;
783 idr_init(&sbi->devs->tree);
784 init_rwsem(&sbi->devs->rwsem);
785 erofs_default_options(sbi);
792 struct erofs_sb_info *sbi = EROFS_SB(sb);
794 if (IS_ENABLED(CONFIG_EROFS_FS_ONDEMAND) && sbi->fsid)
799 erofs_free_dev_context(sbi->devs);
800 fs_put_dax(sbi->dax_dev, NULL);
802 kfree(sbi->fsid);
803 kfree(sbi->domain_id);
804 kfree(sbi);
810 struct erofs_sb_info *const sbi = EROFS_SB(sb);
812 DBG_BUGON(!sbi);
818 iput(sbi->managed_cache);
819 sbi->managed_cache = NULL;
821 iput(sbi->packed_inode);
822 sbi->packed_inode = NULL;
823 erofs_free_dev_context(sbi->devs);
824 sbi->devs = NULL;
923 struct erofs_sb_info *sbi = EROFS_SB(sb);
927 buf->f_blocks = sbi->total_blocks;
930 buf->f_ffree = ULLONG_MAX - sbi->inos;
943 struct erofs_sb_info *sbi = EROFS_SB(root->d_sb);
944 struct erofs_mount_opts *opt = &sbi->opt;
971 if (sbi->fsid)
972 seq_printf(seq, ",fsid=%s", sbi->fsid);
973 if (sbi->domain_id)
974 seq_printf(seq, ",domain_id=%s", sbi->domain_id);