Lines Matching refs:sb
39 static void ext3_get_group_no_and_offset(struct super_block *sb, in ext3_get_group_no_and_offset() argument
42 struct ext3_super_block *es = EXT3_SB(sb)->s_es; in ext3_get_group_no_and_offset()
46 *offsetp = blocknr % EXT3_BLOCKS_PER_GROUP(sb); in ext3_get_group_no_and_offset()
48 *blockgrpp = blocknr / EXT3_BLOCKS_PER_GROUP(sb); in ext3_get_group_no_and_offset()
58 struct ext3_group_desc * ext3_get_group_desc(struct super_block * sb, in ext3_get_group_desc() argument
65 struct ext3_sb_info *sbi = EXT3_SB(sb); in ext3_get_group_desc()
68 ext3_error (sb, "ext3_get_group_desc", in ext3_get_group_desc()
77 group_desc = block_group >> EXT3_DESC_PER_BLOCK_BITS(sb); in ext3_get_group_desc()
78 offset = block_group & (EXT3_DESC_PER_BLOCK(sb) - 1); in ext3_get_group_desc()
80 ext3_error (sb, "ext3_get_group_desc", in ext3_get_group_desc()
93 static int ext3_valid_block_bitmap(struct super_block *sb, in ext3_valid_block_bitmap() argument
103 group_first_block = ext3_group_first_block_no(sb, block_group); in ext3_valid_block_bitmap()
123 offset + EXT3_SB(sb)->s_itb_per_group, in ext3_valid_block_bitmap()
125 if (next_zero_bit >= offset + EXT3_SB(sb)->s_itb_per_group) in ext3_valid_block_bitmap()
130 ext3_error(sb, __func__, in ext3_valid_block_bitmap()
148 read_block_bitmap(struct super_block *sb, unsigned int block_group) in read_block_bitmap() argument
154 desc = ext3_get_group_desc(sb, block_group, NULL); in read_block_bitmap()
157 trace_ext3_read_block_bitmap(sb, block_group); in read_block_bitmap()
159 bh = sb_getblk(sb, bitmap_blk); in read_block_bitmap()
161 ext3_error(sb, __func__, in read_block_bitmap()
172 ext3_error(sb, __func__, in read_block_bitmap()
178 ext3_valid_block_bitmap(sb, desc, block_group, bh); in read_block_bitmap()
273 unsigned int group, struct super_block * sb) in goal_in_my_reservation() argument
277 group_first_block = ext3_group_first_block_no(sb, group); in goal_in_my_reservation()
278 group_last_block = group_first_block + (EXT3_BLOCKS_PER_GROUP(sb) - 1); in goal_in_my_reservation()
337 void ext3_rsv_window_add(struct super_block *sb, in ext3_rsv_window_add() argument
340 struct rb_root *root = &EXT3_SB(sb)->s_rsv_window_root; in ext3_rsv_window_add()
348 trace_ext3_rsv_window_add(sb, rsv); in ext3_rsv_window_add()
377 static void rsv_window_remove(struct super_block *sb, in rsv_window_remove() argument
383 rb_erase(&rsv->rsv_node, &EXT3_SB(sb)->s_rsv_window_root); in rsv_window_remove()
423 struct super_block *sb = inode->i_sb; in ext3_init_block_alloc_info() local
437 if (!test_opt(sb, RESERVATION)) in ext3_init_block_alloc_info()
490 void ext3_free_blocks_sb(handle_t *handle, struct super_block *sb, in ext3_free_blocks_sb() argument
507 sbi = EXT3_SB(sb); in ext3_free_blocks_sb()
512 ext3_error (sb, "ext3_free_blocks", in ext3_free_blocks_sb()
523 EXT3_BLOCKS_PER_GROUP(sb); in ext3_free_blocks_sb()
525 EXT3_BLOCKS_PER_GROUP(sb); in ext3_free_blocks_sb()
530 if (bit + count > EXT3_BLOCKS_PER_GROUP(sb)) { in ext3_free_blocks_sb()
531 overflow = bit + count - EXT3_BLOCKS_PER_GROUP(sb); in ext3_free_blocks_sb()
535 bitmap_bh = read_block_bitmap(sb, block_group); in ext3_free_blocks_sb()
538 desc = ext3_get_group_desc (sb, block_group, &gd_bh); in ext3_free_blocks_sb()
548 ext3_error (sb, "ext3_free_blocks", in ext3_free_blocks_sb()
585 debug_bh = sb_find_get_block(sb, block + i); in ext3_free_blocks_sb()
635 ext3_error(sb, __func__, in ext3_free_blocks_sb()
669 ext3_std_error(sb, err); in ext3_free_blocks_sb()
683 struct super_block *sb = inode->i_sb; in ext3_free_blocks() local
687 ext3_free_blocks_sb(handle, sb, block, count, &dquot_freed_blocks); in ext3_free_blocks()
876 ext3_try_to_allocate(struct super_block *sb, handle_t *handle, int group, in ext3_try_to_allocate() argument
886 group_first_block = ext3_group_first_block_no(sb, group); in ext3_try_to_allocate()
893 if (end > EXT3_BLOCKS_PER_GROUP(sb)) in ext3_try_to_allocate()
895 end = EXT3_BLOCKS_PER_GROUP(sb); in ext3_try_to_allocate()
905 end = EXT3_BLOCKS_PER_GROUP(sb); in ext3_try_to_allocate()
908 BUG_ON(start > EXT3_BLOCKS_PER_GROUP(sb)); in ext3_try_to_allocate()
927 if (!claim_block(sb_bgl_lock(EXT3_SB(sb), group), in ext3_try_to_allocate()
943 && claim_block(sb_bgl_lock(EXT3_SB(sb), group), in ext3_try_to_allocate()
993 struct super_block * sb, in find_next_reservable_window() argument
1056 rsv_window_remove(sb, my_rsv); in find_next_reservable_window()
1070 ext3_rsv_window_add(sb, my_rsv); in find_next_reservable_window()
1113 ext3_grpblk_t grp_goal, struct super_block *sb, in alloc_new_reservation() argument
1119 struct rb_root *fs_rsv_root = &EXT3_SB(sb)->s_rsv_window_root; in alloc_new_reservation()
1122 spinlock_t *rsv_lock = &EXT3_SB(sb)->s_rsv_window_lock; in alloc_new_reservation()
1124 group_first_block = ext3_group_first_block_no(sb, group); in alloc_new_reservation()
1125 group_end_block = group_first_block + (EXT3_BLOCKS_PER_GROUP(sb) - 1); in alloc_new_reservation()
1132 trace_ext3_alloc_new_reservation(sb, start_block); in alloc_new_reservation()
1184 ret = find_next_reservable_window(search_head, my_rsv, sb, in alloc_new_reservation()
1189 rsv_window_remove(sb, my_rsv); in alloc_new_reservation()
1217 rsv_window_remove(sb, my_rsv); in alloc_new_reservation()
1229 trace_ext3_reserved(sb, start_block, my_rsv); in alloc_new_reservation()
1261 struct super_block *sb, int size) in try_to_extend_reservation() argument
1265 spinlock_t *rsv_lock = &EXT3_SB(sb)->s_rsv_window_lock; in try_to_extend_reservation()
1315 ext3_try_to_allocate_with_rsv(struct super_block *sb, handle_t *handle, in ext3_try_to_allocate_with_rsv() argument
1347 ret = ext3_try_to_allocate(sb, handle, group, bitmap_bh, in ext3_try_to_allocate_with_rsv()
1357 group_first_block = ext3_group_first_block_no(sb, group); in ext3_try_to_allocate_with_rsv()
1358 group_last_block = group_first_block + (EXT3_BLOCKS_PER_GROUP(sb) - 1); in ext3_try_to_allocate_with_rsv()
1378 grp_goal, group, sb)) { in ext3_try_to_allocate_with_rsv()
1381 ret = alloc_new_reservation(my_rsv, grp_goal, sb, in ext3_try_to_allocate_with_rsv()
1387 grp_goal, group, sb)) in ext3_try_to_allocate_with_rsv()
1394 try_to_extend_reservation(my_rsv, sb, in ext3_try_to_allocate_with_rsv()
1400 rsv_window_dump(&EXT3_SB(sb)->s_rsv_window_root, 1); in ext3_try_to_allocate_with_rsv()
1403 ret = ext3_try_to_allocate(sb, handle, group, bitmap_bh, in ext3_try_to_allocate_with_rsv()
1462 int ext3_should_retry_alloc(struct super_block *sb, int *retries) in ext3_should_retry_alloc() argument
1464 if (!ext3_has_free_blocks(EXT3_SB(sb), 0) || (*retries)++ > 3) in ext3_should_retry_alloc()
1467 jbd_debug(1, "%s: retrying operation after ENOSPC\n", sb->s_id); in ext3_should_retry_alloc()
1469 return journal_force_commit_nested(EXT3_SB(sb)->s_journal); in ext3_should_retry_alloc()
1500 struct super_block *sb; in ext3_new_blocks() local
1514 sb = inode->i_sb; in ext3_new_blocks()
1527 sbi = EXT3_SB(sb); in ext3_new_blocks()
1554 EXT3_BLOCKS_PER_GROUP(sb); in ext3_new_blocks()
1557 gdp = ext3_get_group_desc(sb, group_no, &gdp_bh); in ext3_new_blocks()
1573 EXT3_BLOCKS_PER_GROUP(sb)); in ext3_new_blocks()
1574 bitmap_bh = read_block_bitmap(sb, group_no); in ext3_new_blocks()
1577 grp_alloc_blk = ext3_try_to_allocate_with_rsv(sb, handle, in ext3_new_blocks()
1586 ngroups = EXT3_SB(sb)->s_groups_count; in ext3_new_blocks()
1597 gdp = ext3_get_group_desc(sb, group_no, &gdp_bh); in ext3_new_blocks()
1616 bitmap_bh = read_block_bitmap(sb, group_no); in ext3_new_blocks()
1622 grp_alloc_blk = ext3_try_to_allocate_with_rsv(sb, handle, in ext3_new_blocks()
1657 ret_block = grp_alloc_blk + ext3_group_first_block_no(sb, group_no); in ext3_new_blocks()
1662 EXT3_SB(sb)->s_itb_per_group) || in ext3_new_blocks()
1664 EXT3_SB(sb)->s_itb_per_group)) { in ext3_new_blocks()
1665 ext3_error(sb, "ext3_new_block", in ext3_new_blocks()
1683 debug_bh = sb_find_get_block(sb, ret_block); in ext3_new_blocks()
1709 ext3_error(sb, "ext3_new_block", in ext3_new_blocks()
1752 ext3_std_error(sb, fatal); in ext3_new_blocks()
1777 ext3_fsblk_t ext3_count_free_blocks(struct super_block *sb) in ext3_count_free_blocks() argument
1782 unsigned long ngroups = EXT3_SB(sb)->s_groups_count; in ext3_count_free_blocks()
1789 es = EXT3_SB(sb)->s_es; in ext3_count_free_blocks()
1796 gdp = ext3_get_group_desc(sb, i, NULL); in ext3_count_free_blocks()
1801 bitmap_bh = read_block_bitmap(sb, i); in ext3_count_free_blocks()
1805 x = ext3_count_free(bitmap_bh, sb->s_blocksize); in ext3_count_free_blocks()
1820 gdp = ext3_get_group_desc(sb, i, NULL); in ext3_count_free_blocks()
1857 int ext3_bg_has_super(struct super_block *sb, int group) in ext3_bg_has_super() argument
1859 if (EXT3_HAS_RO_COMPAT_FEATURE(sb, in ext3_bg_has_super()
1866 static unsigned long ext3_bg_num_gdb_meta(struct super_block *sb, int group) in ext3_bg_num_gdb_meta() argument
1868 unsigned long metagroup = group / EXT3_DESC_PER_BLOCK(sb); in ext3_bg_num_gdb_meta()
1869 unsigned long first = metagroup * EXT3_DESC_PER_BLOCK(sb); in ext3_bg_num_gdb_meta()
1870 unsigned long last = first + EXT3_DESC_PER_BLOCK(sb) - 1; in ext3_bg_num_gdb_meta()
1877 static unsigned long ext3_bg_num_gdb_nometa(struct super_block *sb, int group) in ext3_bg_num_gdb_nometa() argument
1879 return ext3_bg_has_super(sb, group) ? EXT3_SB(sb)->s_gdb_count : 0; in ext3_bg_num_gdb_nometa()
1891 unsigned long ext3_bg_num_gdb(struct super_block *sb, int group) in ext3_bg_num_gdb() argument
1894 le32_to_cpu(EXT3_SB(sb)->s_es->s_first_meta_bg); in ext3_bg_num_gdb()
1895 unsigned long metagroup = group / EXT3_DESC_PER_BLOCK(sb); in ext3_bg_num_gdb()
1897 if (!EXT3_HAS_INCOMPAT_FEATURE(sb,EXT3_FEATURE_INCOMPAT_META_BG) || in ext3_bg_num_gdb()
1899 return ext3_bg_num_gdb_nometa(sb,group); in ext3_bg_num_gdb()
1901 return ext3_bg_num_gdb_meta(sb,group); in ext3_bg_num_gdb()
1920 static ext3_grpblk_t ext3_trim_all_free(struct super_block *sb, in ext3_trim_all_free() argument
1936 handle = ext3_journal_start_sb(sb, 2); in ext3_trim_all_free()
1940 bitmap_bh = read_block_bitmap(sb, group); in ext3_trim_all_free()
1951 gdp = ext3_get_group_desc(sb, group, &gdp_bh); in ext3_trim_all_free()
1963 sbi = EXT3_SB(sb); in ext3_trim_all_free()
1987 ext3_group_first_block_no(sb, group); in ext3_trim_all_free()
2000 trace_ext3_discard_blocks(sb, discard_block, next - start); in ext3_trim_all_free()
2002 err = sb_issue_discard(sb, discard_block, next - start, in ext3_trim_all_free()
2015 ext3_error(sb, __func__, in ext3_trim_all_free()
2033 ext3_warning(sb, __func__, "Discard command " in ext3_trim_all_free()
2085 int ext3_trim_fs(struct super_block *sb, struct fstrim_range *range) in ext3_trim_fs() argument
2090 struct ext3_super_block *es = EXT3_SB(sb)->s_es; in ext3_trim_fs()
2093 le32_to_cpu(EXT3_SB(sb)->s_es->s_first_data_block); in ext3_trim_fs()
2097 start = range->start >> sb->s_blocksize_bits; in ext3_trim_fs()
2098 end = start + (range->len >> sb->s_blocksize_bits) - 1; in ext3_trim_fs()
2099 minlen = range->minlen >> sb->s_blocksize_bits; in ext3_trim_fs()
2101 if (minlen > EXT3_BLOCKS_PER_GROUP(sb) || in ext3_trim_fs()
2103 range->len < sb->s_blocksize) in ext3_trim_fs()
2115 ext3_get_group_no_and_offset(sb, (ext3_fsblk_t) start, in ext3_trim_fs()
2117 ext3_get_group_no_and_offset(sb, (ext3_fsblk_t) end, in ext3_trim_fs()
2121 end = EXT3_BLOCKS_PER_GROUP(sb) - 1; in ext3_trim_fs()
2124 gdp = ext3_get_group_desc(sb, group, NULL); in ext3_trim_fs()
2138 ret = ext3_trim_all_free(sb, group, first_block, in ext3_trim_fs()
2156 range->len = trimmed * sb->s_blocksize; in ext3_trim_fs()