Lines Matching defs:sbi

153 static int __es_shrink(struct ext4_sb_info *sbi, int nr_to_scan,
394 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
397 lblk_start = EXT4_LBLK_CMASK(sbi, lblk);
398 lblk_end = lblk_start + sbi->s_cluster_ratio - 1;
425 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
430 spin_lock(&sbi->s_es_lock);
432 list_add_tail(&ei->i_es_list, &sbi->s_es_list);
433 sbi->s_es_nr_inode++;
435 spin_unlock(&sbi->s_es_lock);
441 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
443 spin_lock(&sbi->s_es_lock);
446 sbi->s_es_nr_inode--;
447 WARN_ON_ONCE(sbi->s_es_nr_inode < 0);
449 spin_unlock(&sbi->s_es_lock);
854 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
886 revise_pending = sbi->s_cluster_ratio > 1 &&
1075 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
1086 if (sbi->s_cluster_ratio > 1) {
1117 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
1125 if (sbi->s_cluster_ratio == 1) {
1149 if (rc->partial && (rc->lclu != EXT4_B2C(sbi, i))) {
1158 if (EXT4_LBLK_COFF(sbi, i) != 0) {
1159 if (end >= EXT4_LBLK_CFILL(sbi, i)) {
1162 i = EXT4_LBLK_CFILL(sbi, i) + 1;
1170 if ((i + sbi->s_cluster_ratio - 1) <= end) {
1171 nclu = (end - i + 1) >> sbi->s_cluster_bits;
1173 i += nclu << sbi->s_cluster_bits;
1182 rc->lclu = EXT4_B2C(sbi, i);
1241 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
1249 if (sbi->s_cluster_ratio > 1) {
1257 first_lclu = EXT4_B2C(sbi, rc->first_do_lblk);
1258 last_lclu = EXT4_B2C(sbi, rc->last_do_lblk);
1269 EXT4_LBLK_CMASK(sbi, rc->first_do_lblk)) {
1289 EXT4_LBLK_CFILL(sbi, rc->last_do_lblk)) {
1541 static int __es_shrink(struct ext4_sb_info *sbi, int nr_to_scan,
1552 es_stats = &sbi->s_es_stats;
1556 spin_lock(&sbi->s_es_lock);
1557 nr_to_walk = sbi->s_es_nr_inode;
1559 if (list_empty(&sbi->s_es_list)) {
1560 spin_unlock(&sbi->s_es_lock);
1563 ei = list_first_entry(&sbi->s_es_list, struct ext4_inode_info,
1566 list_move_tail(&ei->i_es_list, &sbi->s_es_list);
1586 spin_unlock(&sbi->s_es_lock);
1593 spin_lock(&sbi->s_es_lock);
1595 spin_unlock(&sbi->s_es_lock);
1624 trace_ext4_es_shrink(sbi->s_sb, nr_shrunk, scan_time,
1633 struct ext4_sb_info *sbi;
1635 sbi = container_of(shrink, struct ext4_sb_info, s_es_shrinker);
1636 nr = percpu_counter_read_positive(&sbi->s_es_stats.es_stats_shk_cnt);
1637 trace_ext4_es_shrink_count(sbi->s_sb, sc->nr_to_scan, nr);
1644 struct ext4_sb_info *sbi = container_of(shrink,
1649 ret = percpu_counter_read_positive(&sbi->s_es_stats.es_stats_shk_cnt);
1650 trace_ext4_es_shrink_scan_enter(sbi->s_sb, nr_to_scan, ret);
1652 nr_shrunk = __es_shrink(sbi, nr_to_scan, NULL);
1654 ret = percpu_counter_read_positive(&sbi->s_es_stats.es_stats_shk_cnt);
1655 trace_ext4_es_shrink_scan_exit(sbi->s_sb, nr_shrunk, ret);
1661 struct ext4_sb_info *sbi = EXT4_SB((struct super_block *) seq->private);
1662 struct ext4_es_stats *es_stats = &sbi->s_es_stats;
1670 spin_lock(&sbi->s_es_lock);
1671 list_for_each_entry(ei, &sbi->s_es_list, i_es_list) {
1678 spin_unlock(&sbi->s_es_lock);
1702 int ext4_es_register_shrinker(struct ext4_sb_info *sbi)
1708 INIT_LIST_HEAD(&sbi->s_es_list);
1709 sbi->s_es_nr_inode = 0;
1710 spin_lock_init(&sbi->s_es_lock);
1711 sbi->s_es_stats.es_stats_shrunk = 0;
1712 err = percpu_counter_init(&sbi->s_es_stats.es_stats_cache_hits, 0,
1716 err = percpu_counter_init(&sbi->s_es_stats.es_stats_cache_misses, 0,
1720 sbi->s_es_stats.es_stats_scan_time = 0;
1721 sbi->s_es_stats.es_stats_max_scan_time = 0;
1722 err = percpu_counter_init(&sbi->s_es_stats.es_stats_all_cnt, 0, GFP_KERNEL);
1725 err = percpu_counter_init(&sbi->s_es_stats.es_stats_shk_cnt, 0, GFP_KERNEL);
1729 sbi->s_es_shrinker.scan_objects = ext4_es_scan;
1730 sbi->s_es_shrinker.count_objects = ext4_es_count;
1731 sbi->s_es_shrinker.seeks = DEFAULT_SEEKS;
1732 err = register_shrinker(&sbi->s_es_shrinker, "ext4-es:%s",
1733 sbi->s_sb->s_id);
1739 percpu_counter_destroy(&sbi->s_es_stats.es_stats_shk_cnt);
1741 percpu_counter_destroy(&sbi->s_es_stats.es_stats_all_cnt);
1743 percpu_counter_destroy(&sbi->s_es_stats.es_stats_cache_misses);
1745 percpu_counter_destroy(&sbi->s_es_stats.es_stats_cache_hits);
1749 void ext4_es_unregister_shrinker(struct ext4_sb_info *sbi)
1751 percpu_counter_destroy(&sbi->s_es_stats.es_stats_cache_hits);
1752 percpu_counter_destroy(&sbi->s_es_stats.es_stats_cache_misses);
1753 percpu_counter_destroy(&sbi->s_es_stats.es_stats_all_cnt);
1754 percpu_counter_destroy(&sbi->s_es_stats.es_stats_shk_cnt);
1755 unregister_shrinker(&sbi->s_es_shrinker);
1944 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
1952 lclu = EXT4_B2C(sbi, lblk);
1998 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
2002 pr = __get_pending(inode, EXT4_B2C(sbi, lblk));
2040 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
2045 ret = (bool)(__get_pending(inode, EXT4_B2C(sbi, lblk)) != NULL);
2149 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
2163 first_lclu = EXT4_B2C(sbi, start);
2165 first_lclu = EXT4_B2C(sbi, es->es_lblk);
2168 last_lclu = EXT4_B2C(sbi, end);
2170 last_lclu = EXT4_B2C(sbi, ext4_es_end(es));
2239 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
2261 if (EXT4_B2C(sbi, lblk) == EXT4_B2C(sbi, end)) {
2262 first = EXT4_LBLK_CMASK(sbi, lblk);
2271 last = EXT4_LBLK_CMASK(sbi, end) +
2272 sbi->s_cluster_ratio - 1;
2285 first = EXT4_LBLK_CMASK(sbi, lblk);
2296 last = EXT4_LBLK_CMASK(sbi, end) + sbi->s_cluster_ratio - 1;