• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/fs/ext4/

Lines Matching refs:sbi

664 static int ext4_blkdev_remove(struct ext4_sb_info *sbi)
669 bdev = sbi->journal_bdev;
672 sbi->journal_bdev = NULL;
682 static void dump_orphan_list(struct super_block *sb, struct ext4_sb_info *sbi)
687 le32_to_cpu(sbi->s_es->s_last_orphan));
690 list_for_each(l, &sbi->s_orphan) {
702 struct ext4_sb_info *sbi = EXT4_SB(sb);
703 struct ext4_super_block *es = sbi->s_es;
708 flush_workqueue(sbi->dio_unwritten_wq);
709 destroy_workqueue(sbi->dio_unwritten_wq);
716 if (sbi->s_journal) {
717 err = jbd2_journal_destroy(sbi->s_journal);
718 sbi->s_journal = NULL;
723 del_timer(&sbi->s_err_report);
731 es->s_state = cpu_to_le16(sbi->s_mount_state);
734 if (sbi->s_proc) {
737 kobject_del(&sbi->s_kobj);
739 for (i = 0; i < sbi->s_gdb_count; i++)
740 brelse(sbi->s_group_desc[i]);
741 kfree(sbi->s_group_desc);
742 if (is_vmalloc_addr(sbi->s_flex_groups))
743 vfree(sbi->s_flex_groups);
745 kfree(sbi->s_flex_groups);
746 percpu_counter_destroy(&sbi->s_freeblocks_counter);
747 percpu_counter_destroy(&sbi->s_freeinodes_counter);
748 percpu_counter_destroy(&sbi->s_dirs_counter);
749 percpu_counter_destroy(&sbi->s_dirtyblocks_counter);
750 brelse(sbi->s_sbh);
753 kfree(sbi->s_qf_names[i]);
760 if (!list_empty(&sbi->s_orphan))
761 dump_orphan_list(sb, sbi);
762 J_ASSERT(list_empty(&sbi->s_orphan));
765 if (sbi->journal_bdev && sbi->journal_bdev != sb->s_bdev) {
771 sync_blockdev(sbi->journal_bdev);
772 invalidate_bdev(sbi->journal_bdev);
773 ext4_blkdev_remove(sbi);
782 kobject_put(&sbi->s_kobj);
783 wait_for_completion(&sbi->s_kobj_unregister);
784 kfree(sbi->s_blockgroup_lock);
785 kfree(sbi);
888 struct ext4_sb_info *sbi = EXT4_SB(sb);
890 if (sbi->s_jquota_fmt) {
893 switch (sbi->s_jquota_fmt) {
907 if (sbi->s_qf_names[USRQUOTA])
908 seq_printf(seq, ",usrjquota=%s", sbi->s_qf_names[USRQUOTA]);
910 if (sbi->s_qf_names[GRPQUOTA])
911 seq_printf(seq, ",grpjquota=%s", sbi->s_qf_names[GRPQUOTA]);
931 struct ext4_sb_info *sbi = EXT4_SB(sb);
932 struct ext4_super_block *es = sbi->s_es;
937 if (sbi->s_sb_block != 1)
938 seq_printf(seq, ",sb=%llu", sbi->s_sb_block);
945 if (sbi->s_resuid != EXT4_DEF_RESUID ||
947 seq_printf(seq, ",resuid=%u", sbi->s_resuid);
949 if (sbi->s_resgid != EXT4_DEF_RESGID ||
951 seq_printf(seq, ",resgid=%u", sbi->s_resgid);
984 if (sbi->s_commit_interval != JBD2_DEFAULT_MAX_COMMIT_AGE*HZ) {
986 (unsigned) (sbi->s_commit_interval / HZ));
988 if (sbi->s_min_batch_time != EXT4_DEF_MIN_BATCH_TIME) {
990 (unsigned) sbi->s_min_batch_time);
992 if (sbi->s_max_batch_time != EXT4_DEF_MAX_BATCH_TIME) {
994 (unsigned) sbi->s_min_batch_time);
1014 if (sbi->s_stripe)
1015 seq_printf(seq, ",stripe=%lu", sbi->s_stripe);
1027 if (sbi->s_inode_readahead_blks != EXT4_DEF_INODE_READAHEAD_BLKS)
1029 sbi->s_inode_readahead_blks);
1327 struct ext4_sb_info *sbi = EXT4_SB(sb);
1331 !sbi->s_qf_names[qtype]) {
1343 if (sbi->s_qf_names[qtype] &&
1344 strcmp(sbi->s_qf_names[qtype], qname)) {
1350 sbi->s_qf_names[qtype] = qname;
1351 if (strchr(sbi->s_qf_names[qtype], '/')) {
1354 kfree(sbi->s_qf_names[qtype]);
1355 sbi->s_qf_names[qtype] = NULL;
1358 set_opt(sbi->s_mount_opt, QUOTA);
1365 struct ext4_sb_info *sbi = EXT4_SB(sb);
1368 sbi->s_qf_names[qtype]) {
1377 sbi->s_qf_names[qtype] = NULL;
1387 struct ext4_sb_info *sbi = EXT4_SB(sb);
1413 clear_opt(sbi->s_mount_opt, MINIX_DF);
1417 set_opt(sbi->s_mount_opt, MINIX_DF);
1422 set_opt(sbi->s_mount_opt, GRPID);
1427 clear_opt(sbi->s_mount_opt, GRPID);
1433 sbi->s_resuid = option;
1438 sbi->s_resgid = option;
1445 clear_opt(sbi->s_mount_opt, ERRORS_CONT);
1446 clear_opt(sbi->s_mount_opt, ERRORS_RO);
1447 set_opt(sbi->s_mount_opt, ERRORS_PANIC);
1450 clear_opt(sbi->s_mount_opt, ERRORS_CONT);
1451 clear_opt(sbi->s_mount_opt, ERRORS_PANIC);
1452 set_opt(sbi->s_mount_opt, ERRORS_RO);
1455 clear_opt(sbi->s_mount_opt, ERRORS_RO);
1456 clear_opt(sbi->s_mount_opt, ERRORS_PANIC);
1457 set_opt(sbi->s_mount_opt, ERRORS_CONT);
1460 set_opt(sbi->s_mount_opt, NO_UID32);
1463 set_opt(sbi->s_mount_opt, DEBUG);
1466 set_opt(sbi->s_mount_opt, OLDALLOC);
1469 clear_opt(sbi->s_mount_opt, OLDALLOC);
1473 set_opt(sbi->s_mount_opt, XATTR_USER);
1476 clear_opt(sbi->s_mount_opt, XATTR_USER);
1486 set_opt(sbi->s_mount_opt, POSIX_ACL);
1489 clear_opt(sbi->s_mount_opt, POSIX_ACL);
1507 set_opt(sbi->s_mount_opt, UPDATE_JOURNAL);
1520 set_opt(sbi->s_mount_opt, JOURNAL_CHECKSUM);
1523 set_opt(sbi->s_mount_opt, JOURNAL_ASYNC_COMMIT);
1524 set_opt(sbi->s_mount_opt, JOURNAL_CHECKSUM);
1527 set_opt(sbi->s_mount_opt, NOLOAD);
1536 sbi->s_commit_interval = HZ * option;
1545 sbi->s_max_batch_time = option;
1552 sbi->s_min_batch_time = option;
1570 clear_opt(sbi->s_mount_opt, DATA_FLAGS);
1571 sbi->s_mount_opt |= data_opt;
1575 set_opt(sbi->s_mount_opt, DATA_ERR_ABORT);
1578 clear_opt(sbi->s_mount_opt, DATA_ERR_ABORT);
1608 sbi->s_jquota_fmt != qfmt) {
1614 sbi->s_jquota_fmt = qfmt;
1618 set_opt(sbi->s_mount_opt, QUOTA);
1619 set_opt(sbi->s_mount_opt, USRQUOTA);
1622 set_opt(sbi->s_mount_opt, QUOTA);
1623 set_opt(sbi->s_mount_opt, GRPQUOTA);
1631 clear_opt(sbi->s_mount_opt, QUOTA);
1632 clear_opt(sbi->s_mount_opt, USRQUOTA);
1633 clear_opt(sbi->s_mount_opt, GRPQUOTA);
1656 sbi->s_mount_flags |= EXT4_MF_FS_ABORTED;
1659 clear_opt(sbi->s_mount_opt, BARRIER);
1668 set_opt(sbi->s_mount_opt, BARRIER);
1670 clear_opt(sbi->s_mount_opt, BARRIER);
1694 set_opt(sbi->s_mount_opt, I_VERSION);
1698 clear_opt(sbi->s_mount_opt, DELALLOC);
1705 sbi->s_stripe = option;
1708 set_opt(sbi->s_mount_opt, DELALLOC);
1711 set_opt(sbi->s_mount_opt, BLOCK_VALIDITY);
1714 clear_opt(sbi->s_mount_opt, BLOCK_VALIDITY);
1727 sbi->s_inode_readahead_blks = option;
1738 set_opt(sbi->s_mount_opt,NO_AUTO_DA_ALLOC);
1747 clear_opt(sbi->s_mount_opt, NO_AUTO_DA_ALLOC);
1749 set_opt(sbi->s_mount_opt,NO_AUTO_DA_ALLOC);
1752 set_opt(sbi->s_mount_opt, DISCARD);
1755 clear_opt(sbi->s_mount_opt, DISCARD);
1758 set_opt(sbi->s_mount_opt, DIOREAD_NOLOCK);
1761 clear_opt(sbi->s_mount_opt, DIOREAD_NOLOCK);
1771 if (sbi->s_qf_names[USRQUOTA] || sbi->s_qf_names[GRPQUOTA]) {
1772 if (test_opt(sb, USRQUOTA) && sbi->s_qf_names[USRQUOTA])
1773 clear_opt(sbi->s_mount_opt, USRQUOTA);
1775 if (test_opt(sb, GRPQUOTA) && sbi->s_qf_names[GRPQUOTA])
1776 clear_opt(sbi->s_mount_opt, GRPQUOTA);
1784 if (!sbi->s_jquota_fmt) {
1790 if (sbi->s_jquota_fmt) {
1804 struct ext4_sb_info *sbi = EXT4_SB(sb);
1814 if (!(sbi->s_mount_state & EXT4_VALID_FS))
1817 else if ((sbi->s_mount_state & EXT4_ERROR_FS))
1833 if (!sbi->s_journal)
1840 if (sbi->s_journal)
1848 sbi->s_groups_count,
1851 sbi->s_mount_opt);
1858 struct ext4_sb_info *sbi = EXT4_SB(sb);
1866 sbi->s_log_groups_per_flex = sbi->s_es->s_log_groups_per_flex;
1867 groups_per_flex = 1 << sbi->s_log_groups_per_flex;
1870 sbi->s_log_groups_per_flex = 0;
1875 flex_group_count = ((sbi->s_groups_count + groups_per_flex - 1) +
1876 ((le16_to_cpu(sbi->s_es->s_reserved_gdt_blocks) + 1) <<
1879 sbi->s_flex_groups = kzalloc(size, GFP_KERNEL);
1880 if (sbi->s_flex_groups == NULL) {
1881 sbi->s_flex_groups = vmalloc(size);
1882 if (sbi->s_flex_groups)
1883 memset(sbi->s_flex_groups, 0, size);
1885 if (sbi->s_flex_groups == NULL) {
1891 for (i = 0; i < sbi->s_groups_count; i++) {
1894 flex_group = ext4_flex_group(sbi, i);
1896 &sbi->s_flex_groups[flex_group].free_inodes);
1898 &sbi->s_flex_groups[flex_group].free_blocks);
1900 &sbi->s_flex_groups[flex_group].used_dirs);
1908 __le16 ext4_group_desc_csum(struct ext4_sb_info *sbi, __u32 block_group,
1913 if (sbi->s_es->s_feature_ro_compat &
1918 crc = crc16(~0, sbi->s_es->s_uuid, sizeof(sbi->s_es->s_uuid));
1923 if ((sbi->s_es->s_feature_incompat &
1925 offset < le16_to_cpu(sbi->s_es->s_desc_size))
1927 le16_to_cpu(sbi->s_es->s_desc_size) -
1934 int ext4_group_desc_csum_verify(struct ext4_sb_info *sbi, __u32 block_group,
1937 if ((sbi->s_es->s_feature_ro_compat &
1939 (gdp->bg_checksum != ext4_group_desc_csum(sbi, block_group, gdp)))
1948 struct ext4_sb_info *sbi = EXT4_SB(sb);
1949 ext4_fsblk_t first_block = le32_to_cpu(sbi->s_es->s_first_data_block);
1962 for (i = 0; i < sbi->s_groups_count; i++) {
1965 if (i == sbi->s_groups_count - 1 || flexbg_flag)
1966 last_block = ext4_blocks_count(sbi->s_es) - 1;
1987 inode_table + sbi->s_itb_per_group - 1 > last_block) {
1994 if (!ext4_group_desc_csum_verify(sbi, i, gdp)) {
1997 i, le16_to_cpu(ext4_group_desc_csum(sbi, i,
2009 ext4_free_blocks_count_set(sbi->s_es, ext4_count_free_blocks(sb));
2010 sbi->s_es->s_free_inodes_count =cpu_to_le32(ext4_count_free_inodes(sb));
2232 struct ext4_sb_info *sbi = EXT4_SB(sb);
2236 first_meta_bg = le32_to_cpu(sbi->s_es->s_first_meta_bg);
2241 bg = sbi->s_desc_per_block * nr;
2250 * @sbi: In memory super block info
2259 static unsigned long ext4_get_stripe_size(struct ext4_sb_info *sbi)
2261 unsigned long stride = le16_to_cpu(sbi->s_es->s_raid_stride);
2263 le32_to_cpu(sbi->s_es->s_raid_stripe_width);
2265 if (sbi->s_stripe && sbi->s_stripe <= sbi->s_blocks_per_group)
2266 return sbi->s_stripe;
2268 if (stripe_width <= sbi->s_blocks_per_group)
2271 if (stride <= sbi->s_blocks_per_group)
2301 struct ext4_sb_info *sbi,
2305 (s64) percpu_counter_sum(&sbi->s_dirtyblocks_counter));
2309 struct ext4_sb_info *sbi, char *buf)
2311 struct super_block *sb = sbi->s_buddy_cache->i_sb;
2317 sbi->s_sectors_written_start) >> 1);
2321 struct ext4_sb_info *sbi, char *buf)
2323 struct super_block *sb = sbi->s_buddy_cache->i_sb;
2328 (unsigned long long)(sbi->s_kbytes_written +
2334 struct ext4_sb_info *sbi,
2345 sbi->s_inode_readahead_blks = t;
2350 struct ext4_sb_info *sbi, char *buf)
2352 unsigned int *ui = (unsigned int *) (((char *) sbi) + a->offset);
2358 struct ext4_sb_info *sbi,
2361 unsigned int *ui = (unsigned int *) (((char *) sbi) + a->offset);
2419 struct ext4_sb_info *sbi = container_of(kobj, struct ext4_sb_info,
2423 return a->show ? a->show(a, sbi, buf) : 0;
2430 struct ext4_sb_info *sbi = container_of(kobj, struct ext4_sb_info,
2434 return a->store ? a->store(a, sbi, buf, len) : 0;
2439 struct ext4_sb_info *sbi = container_of(kobj, struct ext4_sb_info,
2441 complete(&sbi->s_kobj_unregister);
2506 struct ext4_sb_info *sbi;
2509 sbi = EXT4_SB(sb);
2510 es = sbi->s_es;
2543 mod_timer(&sbi->s_err_report, jiffies + 24*60*60*HZ); /* Once a day */
2553 struct ext4_sb_info *sbi;
2572 sbi = kzalloc(sizeof(*sbi), GFP_KERNEL);
2573 if (!sbi)
2576 sbi->s_blockgroup_lock =
2578 if (!sbi->s_blockgroup_lock) {
2579 kfree(sbi);
2582 sb->s_fs_info = sbi;
2583 sbi->s_mount_opt = 0;
2584 sbi->s_resuid = EXT4_DEF_RESUID;
2585 sbi->s_resgid = EXT4_DEF_RESGID;
2586 sbi->s_inode_readahead_blks = EXT4_DEF_INODE_READAHEAD_BLKS;
2587 sbi->s_sb_block = sb_block;
2589 sbi->s_sectors_written_start =
2625 sbi->s_es = es;
2629 sbi->s_kbytes_written = le64_to_cpu(es->s_kbytes_written);
2634 set_opt(sbi->s_mount_opt, DEBUG);
2638 set_opt(sbi->s_mount_opt, GRPID);
2641 set_opt(sbi->s_mount_opt, NO_UID32);
2644 set_opt(sbi->s_mount_opt, XATTR_USER);
2648 set_opt(sbi->s_mount_opt, POSIX_ACL);
2651 set_opt(sbi->s_mount_opt, JOURNAL_DATA);
2653 set_opt(sbi->s_mount_opt, ORDERED_DATA);
2655 set_opt(sbi->s_mount_opt, WRITEBACK_DATA);
2657 if (le16_to_cpu(sbi->s_es->s_errors) == EXT4_ERRORS_PANIC)
2658 set_opt(sbi->s_mount_opt, ERRORS_PANIC);
2659 else if (le16_to_cpu(sbi->s_es->s_errors) == EXT4_ERRORS_CONTINUE)
2660 set_opt(sbi->s_mount_opt, ERRORS_CONT);
2662 set_opt(sbi->s_mount_opt, ERRORS_RO);
2664 set_opt(sbi->s_mount_opt, BLOCK_VALIDITY);
2666 set_opt(sbi->s_mount_opt, DISCARD);
2668 sbi->s_resuid = le16_to_cpu(es->s_def_resuid);
2669 sbi->s_resgid = le16_to_cpu(es->s_def_resgid);
2670 sbi->s_commit_interval = JBD2_DEFAULT_MAX_COMMIT_AGE * HZ;
2671 sbi->s_min_batch_time = EXT4_DEF_MIN_BATCH_TIME;
2672 sbi->s_max_batch_time = EXT4_DEF_MAX_BATCH_TIME;
2675 set_opt(sbi->s_mount_opt, BARRIER);
2683 set_opt(sbi->s_mount_opt, DELALLOC);
2685 if (!parse_options((char *) sbi->s_es->s_mount_opts, sb,
2689 sbi->s_es->s_mount_opts);
2741 sbi->s_es = es;
2751 sbi->s_bitmap_maxbytes = ext4_max_bitmap_size(sb->s_blocksize_bits,
2756 sbi->s_inode_size = EXT4_GOOD_OLD_INODE_SIZE;
2757 sbi->s_first_ino = EXT4_GOOD_OLD_FIRST_INO;
2759 sbi->s_inode_size = le16_to_cpu(es->s_inode_size);
2760 sbi->s_first_ino = le32_to_cpu(es->s_first_ino);
2761 if ((sbi->s_inode_size < EXT4_GOOD_OLD_INODE_SIZE) ||
2762 (!is_power_of_2(sbi->s_inode_size)) ||
2763 (sbi->s_inode_size > blocksize)) {
2766 sbi->s_inode_size);
2769 if (sbi->s_inode_size > EXT4_GOOD_OLD_INODE_SIZE)
2773 sbi->s_desc_size = le16_to_cpu(es->s_desc_size);
2775 if (sbi->s_desc_size < EXT4_MIN_DESC_SIZE_64BIT ||
2776 sbi->s_desc_size > EXT4_MAX_DESC_SIZE ||
2777 !is_power_of_2(sbi->s_desc_size)) {
2780 sbi->s_desc_size);
2784 sbi->s_desc_size = EXT4_MIN_DESC_SIZE;
2786 sbi->s_blocks_per_group = le32_to_cpu(es->s_blocks_per_group);
2787 sbi->s_inodes_per_group = le32_to_cpu(es->s_inodes_per_group);
2791 sbi->s_inodes_per_block = blocksize / EXT4_INODE_SIZE(sb);
2792 if (sbi->s_inodes_per_block == 0)
2794 sbi->s_itb_per_group = sbi->s_inodes_per_group /
2795 sbi->s_inodes_per_block;
2796 sbi->s_desc_per_block = blocksize / EXT4_DESC_SIZE(sb);
2797 sbi->s_sbh = bh;
2798 sbi->s_mount_state = le16_to_cpu(es->s_state);
2799 sbi->s_addr_per_block_bits = ilog2(EXT4_ADDR_PER_BLOCK(sb));
2800 sbi->s_desc_per_block_bits = ilog2(EXT4_DESC_PER_BLOCK(sb));
2803 sbi->s_hash_seed[i] = le32_to_cpu(es->s_hash_seed[i]);
2804 sbi->s_def_hash_version = es->s_def_hash_version;
2807 sbi->s_hash_unsigned = 3;
2811 sbi->s_hash_unsigned = 3;
2818 if (sbi->s_blocks_per_group > blocksize * 8) {
2821 sbi->s_blocks_per_group);
2824 if (sbi->s_inodes_per_group > blocksize * 8) {
2827 sbi->s_inodes_per_group);
2877 "blocks per group %lu)", sbi->s_groups_count,
2883 sbi->s_groups_count = blocks_count;
2884 sbi->s_blockfile_groups = min_t(ext4_group_t, sbi->s_groups_count,
2886 db_count = (sbi->s_groups_count + EXT4_DESC_PER_BLOCK(sb) - 1) /
2888 sbi->s_group_desc = kmalloc(db_count * sizeof(struct buffer_head *),
2890 if (sbi->s_group_desc == NULL) {
2897 sbi->s_proc = proc_mkdir(sb->s_id, ext4_proc_root);
2900 bgl_lock_init(sbi->s_blockgroup_lock);
2904 sbi->s_group_desc[i] = sb_bread(sb, block);
2905 if (!sbi->s_group_desc[i]) {
2924 sbi->s_gdb_count = db_count;
2925 get_random_bytes(&sbi->s_next_generation, sizeof(u32));
2926 spin_lock_init(&sbi->s_next_gen_lock);
2928 sbi->s_stripe = ext4_get_stripe_size(sbi);
2929 sbi->s_max_writeback_mb_bump = 128;
2945 INIT_LIST_HEAD(&sbi->s_orphan); /* unlinked but open files */
2946 mutex_init(&sbi->s_orphan_lock);
2947 mutex_init(&sbi->s_resize_lock);
2969 clear_opt(sbi->s_mount_opt, DATA_FLAGS);
2970 set_opt(sbi->s_mount_opt, WRITEBACK_DATA);
2971 sbi->s_journal = NULL;
2984 jbd2_journal_set_features(sbi->s_journal,
2988 jbd2_journal_set_features(sbi->s_journal,
2990 jbd2_journal_clear_features(sbi->s_journal, 0, 0,
2993 jbd2_journal_clear_features(sbi->s_journal,
3007 (sbi->s_journal, 0, 0, JBD2_FEATURE_INCOMPAT_REVOKE))
3008 set_opt(sbi->s_mount_opt, ORDERED_DATA);
3010 set_opt(sbi->s_mount_opt, JOURNAL_DATA);
3016 (sbi->s_journal, 0, 0, JBD2_FEATURE_INCOMPAT_REVOKE)) {
3024 set_task_ioprio(sbi->s_journal->j_task, journal_ioprio);
3027 err = percpu_counter_init(&sbi->s_freeblocks_counter,
3030 err = percpu_counter_init(&sbi->s_freeinodes_counter,
3033 err = percpu_counter_init(&sbi->s_dirs_counter,
3036 err = percpu_counter_init(&sbi->s_dirtyblocks_counter, 0);
3075 if (sbi->s_inode_size > EXT4_GOOD_OLD_INODE_SIZE) {
3076 sbi->s_want_extra_isize = sizeof(struct ext4_inode) -
3080 if (sbi->s_want_extra_isize <
3082 sbi->s_want_extra_isize =
3084 if (sbi->s_want_extra_isize <
3086 sbi->s_want_extra_isize =
3091 if (EXT4_GOOD_OLD_INODE_SIZE + sbi->s_want_extra_isize >
3092 sbi->s_inode_size) {
3093 sbi->s_want_extra_isize = sizeof(struct ext4_inode) -
3103 clear_opt(sbi->s_mount_opt, DELALLOC);
3109 clear_opt(sbi->s_mount_opt, DIOREAD_NOLOCK);
3114 clear_opt(sbi->s_mount_opt, DIOREAD_NOLOCK);
3133 sbi->s_kobj.kset = ext4_kset;
3134 init_completion(&sbi->s_kobj_unregister);
3135 err = kobject_init_and_add(&sbi->s_kobj, &ext4_ktype, NULL,
3161 "Opts: %s%s%s", descr, sbi->s_es->s_mount_opts,
3162 *sbi->s_es->s_mount_opts ? "; " : "", orig_data);
3164 init_timer(&sbi->s_err_report);
3165 sbi->s_err_report.function = print_daily_error_info;
3166 sbi->s_err_report.data = (unsigned long) sb;
3168 mod_timer(&sbi->s_err_report, jiffies + 300*HZ); /* 5 minutes */
3184 if (sbi->s_journal) {
3185 jbd2_journal_destroy(sbi->s_journal);
3186 sbi->s_journal = NULL;
3188 percpu_counter_destroy(&sbi->s_freeblocks_counter);
3189 percpu_counter_destroy(&sbi->s_freeinodes_counter);
3190 percpu_counter_destroy(&sbi->s_dirs_counter);
3191 percpu_counter_destroy(&sbi->s_dirtyblocks_counter);
3193 if (sbi->s_flex_groups) {
3194 if (is_vmalloc_addr(sbi->s_flex_groups))
3195 vfree(sbi->s_flex_groups);
3197 kfree(sbi->s_flex_groups);
3201 brelse(sbi->s_group_desc[i]);
3202 kfree(sbi->s_group_desc);
3204 if (sbi->s_proc) {
3209 kfree(sbi->s_qf_names[i]);
3211 ext4_blkdev_remove(sbi);
3215 kfree(sbi->s_blockgroup_lock);
3216 kfree(sbi);
3230 struct ext4_sb_info *sbi = EXT4_SB(sb);
3232 journal->j_commit_interval = sbi->s_commit_interval;
3233 journal->j_min_batch_time = sbi->s_min_batch_time;
3234 journal->j_max_batch_time = sbi->s_max_batch_time;
3648 struct ext4_sb_info *sbi = EXT4_SB(sb);
3651 flush_workqueue(sbi->dio_unwritten_wq);
3652 if (jbd2_journal_start_commit(sbi->s_journal, &target)) {
3654 jbd2_log_wait_commit(sbi->s_journal, target);
3713 struct ext4_sb_info *sbi = EXT4_SB(sb);
3731 old_opts.s_mount_opt = sbi->s_mount_opt;
3732 old_opts.s_resuid = sbi->s_resuid;
3733 old_opts.s_resgid = sbi->s_resgid;
3734 old_opts.s_commit_interval = sbi->s_commit_interval;
3735 old_opts.s_min_batch_time = sbi->s_min_batch_time;
3736 old_opts.s_max_batch_time = sbi->s_max_batch_time;
3738 old_opts.s_jquota_fmt = sbi->s_jquota_fmt;
3740 old_opts.s_qf_names[i] = sbi->s_qf_names[i];
3742 if (sbi->s_journal && sbi->s_journal->j_task->io_context)
3743 journal_ioprio = sbi->s_journal->j_task->io_context->ioprio;
3754 if (sbi->s_mount_flags & EXT4_MF_FS_ABORTED)
3760 es = sbi->s_es;
3762 if (sbi->s_journal) {
3763 ext4_init_journal_params(sb, sbi->s_journal);
3764 set_task_ioprio(sbi->s_journal->j_task, journal_ioprio);
3769 if (sbi->s_mount_flags & EXT4_MF_FS_ABORTED) {
3791 (sbi->s_mount_state & EXT4_VALID_FS))
3792 es->s_state = cpu_to_le16(sbi->s_mount_state);
3794 if (sbi->s_journal)
3806 for (g = 0; g < sbi->s_groups_count; g++) {
3810 if (!ext4_group_desc_csum_verify(sbi, g, gdp)) {
3813 g, le16_to_cpu(ext4_group_desc_csum(sbi, g, gdp)),
3840 if (sbi->s_journal)
3842 sbi->s_mount_state = le16_to_cpu(es->s_state);
3851 if (sbi->s_journal == NULL)
3858 old_opts.s_qf_names[i] != sbi->s_qf_names[i])
3872 sbi->s_mount_opt = old_opts.s_mount_opt;
3873 sbi->s_resuid = old_opts.s_resuid;
3874 sbi->s_resgid = old_opts.s_resgid;
3875 sbi->s_commit_interval = old_opts.s_commit_interval;
3876 sbi->s_min_batch_time = old_opts.s_min_batch_time;
3877 sbi->s_max_batch_time = old_opts.s_max_batch_time;
3879 sbi->s_jquota_fmt = old_opts.s_jquota_fmt;
3881 if (sbi->s_qf_names[i] &&
3882 old_opts.s_qf_names[i] != sbi->s_qf_names[i])
3883 kfree(sbi->s_qf_names[i]);
3884 sbi->s_qf_names[i] = old_opts.s_qf_names[i];
3896 struct ext4_sb_info *sbi = EXT4_SB(sb);
3897 struct ext4_super_block *es = sbi->s_es;
3901 sbi->s_overhead_last = 0;
3902 } else if (sbi->s_blocks_last != ext4_blocks_count(es)) {
3933 overhead += ngroups * (2 + sbi->s_itb_per_group);
3934 sbi->s_overhead_last = overhead;
3936 sbi->s_blocks_last = ext4_blocks_count(es);
3941 buf->f_blocks = ext4_blocks_count(es) - sbi->s_overhead_last;
3942 buf->f_bfree = percpu_counter_sum_positive(&sbi->s_freeblocks_counter) -
3943 percpu_counter_sum_positive(&sbi->s_dirtyblocks_counter);
3948 buf->f_ffree = percpu_counter_sum_positive(&sbi->s_freeinodes_counter);