Lines Matching refs:osb
79 static int ocfs2_block_group_alloc(struct ocfs2_super *osb,
118 static int ocfs2_reserve_clusters_with_limit(struct ocfs2_super *osb,
323 static void ocfs2_bg_discontig_add_extent(struct ocfs2_super *osb, in ocfs2_bg_discontig_add_extent() argument
331 BUG_ON(!ocfs2_supports_discontig_bg(osb)); in ocfs2_bg_discontig_add_extent()
333 el->l_count = cpu_to_le16(ocfs2_extent_recs_per_gd(osb->sb)); in ocfs2_bg_discontig_add_extent()
354 struct ocfs2_super *osb = OCFS2_SB(alloc_inode->i_sb); in ocfs2_block_group_fill() local
377 bg->bg_generation = cpu_to_le32(osb->fs_generation); in ocfs2_block_group_fill()
379 osb->s_feature_incompat)); in ocfs2_block_group_fill()
387 ocfs2_bg_discontig_add_extent(osb, bg, cl, group_blkno, in ocfs2_block_group_fill()
422 ocfs2_block_group_alloc_contig(struct ocfs2_super *osb, handle_t *handle, in ocfs2_block_group_alloc_contig() argument
443 bg_blkno = ocfs2_clusters_to_blocks(osb->sb, bit_off); in ocfs2_block_group_alloc_contig()
447 bg_bh = sb_getblk(osb->sb, bg_blkno); in ocfs2_block_group_alloc_contig()
466 static int ocfs2_block_group_claim_bits(struct ocfs2_super *osb, in ocfs2_block_group_claim_bits() argument
494 struct ocfs2_super *osb = OCFS2_SB(alloc_inode->i_sb); in ocfs2_block_group_grow_discontig() local
516 status = ocfs2_block_group_claim_bits(osb, handle, ac, in ocfs2_block_group_grow_discontig()
524 p_blkno = ocfs2_clusters_to_blocks(osb->sb, p_cpos); in ocfs2_block_group_grow_discontig()
525 ocfs2_bg_discontig_add_extent(osb, bg, cl, p_blkno, in ocfs2_block_group_grow_discontig()
590 struct ocfs2_super *osb = OCFS2_SB(alloc_inode->i_sb); in ocfs2_block_group_alloc_discontig() local
592 if (!ocfs2_supports_discontig_bg(osb)) { in ocfs2_block_group_alloc_discontig()
598 ocfs2_calc_bg_discontig_credits(osb->sb)); in ocfs2_block_group_alloc_discontig()
613 status = ocfs2_block_group_claim_bits(osb, handle, ac, min_bits, in ocfs2_block_group_alloc_discontig()
623 bg_blkno = ocfs2_clusters_to_blocks(osb->sb, bit_off); in ocfs2_block_group_alloc_discontig()
627 bg_bh = sb_getblk(osb->sb, bg_blkno); in ocfs2_block_group_alloc_discontig()
656 static int ocfs2_block_group_alloc(struct ocfs2_super *osb, in ocfs2_block_group_alloc() argument
675 status = ocfs2_reserve_clusters_with_limit(osb, in ocfs2_block_group_alloc()
684 credits = ocfs2_calc_group_alloc_credits(osb->sb, in ocfs2_block_group_alloc()
686 handle = ocfs2_start_trans(osb, credits); in ocfs2_block_group_alloc()
700 bg_bh = ocfs2_block_group_alloc_contig(osb, handle, alloc_inode, in ocfs2_block_group_alloc()
757 ocfs2_commit_trans(osb, handle); in ocfs2_block_group_alloc()
769 static int ocfs2_reserve_suballoc_bits(struct ocfs2_super *osb, in ocfs2_reserve_suballoc_bits() argument
783 alloc_inode = ocfs2_get_system_file_inode(osb, type, slot); in ocfs2_reserve_suballoc_bits()
835 status = ocfs2_block_group_alloc(osb, alloc_inode, bh, in ocfs2_reserve_suballoc_bits()
843 atomic_inc(&osb->alloc_stats.bg_extends); in ocfs2_reserve_suballoc_bits()
861 static void ocfs2_init_inode_steal_slot(struct ocfs2_super *osb) in ocfs2_init_inode_steal_slot() argument
863 spin_lock(&osb->osb_lock); in ocfs2_init_inode_steal_slot()
864 osb->s_inode_steal_slot = OCFS2_INVALID_SLOT; in ocfs2_init_inode_steal_slot()
865 spin_unlock(&osb->osb_lock); in ocfs2_init_inode_steal_slot()
866 atomic_set(&osb->s_num_inodes_stolen, 0); in ocfs2_init_inode_steal_slot()
869 static void ocfs2_init_meta_steal_slot(struct ocfs2_super *osb) in ocfs2_init_meta_steal_slot() argument
871 spin_lock(&osb->osb_lock); in ocfs2_init_meta_steal_slot()
872 osb->s_meta_steal_slot = OCFS2_INVALID_SLOT; in ocfs2_init_meta_steal_slot()
873 spin_unlock(&osb->osb_lock); in ocfs2_init_meta_steal_slot()
874 atomic_set(&osb->s_num_meta_stolen, 0); in ocfs2_init_meta_steal_slot()
877 void ocfs2_init_steal_slots(struct ocfs2_super *osb) in ocfs2_init_steal_slots() argument
879 ocfs2_init_inode_steal_slot(osb); in ocfs2_init_steal_slots()
880 ocfs2_init_meta_steal_slot(osb); in ocfs2_init_steal_slots()
883 static void __ocfs2_set_steal_slot(struct ocfs2_super *osb, int slot, int type) in __ocfs2_set_steal_slot() argument
885 spin_lock(&osb->osb_lock); in __ocfs2_set_steal_slot()
887 osb->s_inode_steal_slot = (u16)slot; in __ocfs2_set_steal_slot()
889 osb->s_meta_steal_slot = (u16)slot; in __ocfs2_set_steal_slot()
890 spin_unlock(&osb->osb_lock); in __ocfs2_set_steal_slot()
893 static int __ocfs2_get_steal_slot(struct ocfs2_super *osb, int type) in __ocfs2_get_steal_slot() argument
897 spin_lock(&osb->osb_lock); in __ocfs2_get_steal_slot()
899 slot = osb->s_inode_steal_slot; in __ocfs2_get_steal_slot()
901 slot = osb->s_meta_steal_slot; in __ocfs2_get_steal_slot()
902 spin_unlock(&osb->osb_lock); in __ocfs2_get_steal_slot()
907 static int ocfs2_get_inode_steal_slot(struct ocfs2_super *osb) in ocfs2_get_inode_steal_slot() argument
909 return __ocfs2_get_steal_slot(osb, INODE_ALLOC_SYSTEM_INODE); in ocfs2_get_inode_steal_slot()
912 static int ocfs2_get_meta_steal_slot(struct ocfs2_super *osb) in ocfs2_get_meta_steal_slot() argument
914 return __ocfs2_get_steal_slot(osb, EXTENT_ALLOC_SYSTEM_INODE); in ocfs2_get_meta_steal_slot()
917 static int ocfs2_steal_resource(struct ocfs2_super *osb, in ocfs2_steal_resource() argument
922 int slot = __ocfs2_get_steal_slot(osb, type); in ocfs2_steal_resource()
926 slot = osb->slot_num + 1; in ocfs2_steal_resource()
928 for (i = 0; i < osb->max_slots; i++, slot++) { in ocfs2_steal_resource()
929 if (slot == osb->max_slots) in ocfs2_steal_resource()
932 if (slot == osb->slot_num) in ocfs2_steal_resource()
935 status = ocfs2_reserve_suballoc_bits(osb, ac, in ocfs2_steal_resource()
940 __ocfs2_set_steal_slot(osb, slot, type); in ocfs2_steal_resource()
950 static int ocfs2_steal_inode(struct ocfs2_super *osb, in ocfs2_steal_inode() argument
953 return ocfs2_steal_resource(osb, ac, INODE_ALLOC_SYSTEM_INODE); in ocfs2_steal_inode()
956 static int ocfs2_steal_meta(struct ocfs2_super *osb, in ocfs2_steal_meta() argument
959 return ocfs2_steal_resource(osb, ac, EXTENT_ALLOC_SYSTEM_INODE); in ocfs2_steal_meta()
962 int ocfs2_reserve_new_metadata_blocks(struct ocfs2_super *osb, in ocfs2_reserve_new_metadata_blocks() argument
967 int slot = ocfs2_get_meta_steal_slot(osb); in ocfs2_reserve_new_metadata_blocks()
981 atomic_read(&osb->s_num_meta_stolen) < OCFS2_MAX_TO_STEAL) in ocfs2_reserve_new_metadata_blocks()
984 atomic_set(&osb->s_num_meta_stolen, 0); in ocfs2_reserve_new_metadata_blocks()
985 status = ocfs2_reserve_suballoc_bits(osb, (*ac), in ocfs2_reserve_new_metadata_blocks()
987 (u32)osb->slot_num, NULL, in ocfs2_reserve_new_metadata_blocks()
994 ocfs2_init_meta_steal_slot(osb); in ocfs2_reserve_new_metadata_blocks()
1004 status = ocfs2_steal_meta(osb, *ac); in ocfs2_reserve_new_metadata_blocks()
1005 atomic_inc(&osb->s_num_meta_stolen); in ocfs2_reserve_new_metadata_blocks()
1024 int ocfs2_reserve_new_metadata(struct ocfs2_super *osb, in ocfs2_reserve_new_metadata() argument
1028 return ocfs2_reserve_new_metadata_blocks(osb, in ocfs2_reserve_new_metadata()
1033 int ocfs2_reserve_new_inode(struct ocfs2_super *osb, in ocfs2_reserve_new_inode() argument
1037 int slot = ocfs2_get_inode_steal_slot(osb); in ocfs2_reserve_new_inode()
1057 if (!(osb->s_mount_opt & OCFS2_MOUNT_INODE64)) in ocfs2_reserve_new_inode()
1070 atomic_read(&osb->s_num_inodes_stolen) < OCFS2_MAX_TO_STEAL) in ocfs2_reserve_new_inode()
1073 atomic_set(&osb->s_num_inodes_stolen, 0); in ocfs2_reserve_new_inode()
1074 alloc_group = osb->osb_inode_alloc_group; in ocfs2_reserve_new_inode()
1075 status = ocfs2_reserve_suballoc_bits(osb, *ac, in ocfs2_reserve_new_inode()
1077 (u32)osb->slot_num, in ocfs2_reserve_new_inode()
1084 spin_lock(&osb->osb_lock); in ocfs2_reserve_new_inode()
1085 osb->osb_inode_alloc_group = alloc_group; in ocfs2_reserve_new_inode()
1086 spin_unlock(&osb->osb_lock); in ocfs2_reserve_new_inode()
1095 ocfs2_init_inode_steal_slot(osb); in ocfs2_reserve_new_inode()
1105 status = ocfs2_steal_inode(osb, *ac); in ocfs2_reserve_new_inode()
1106 atomic_inc(&osb->s_num_inodes_stolen); in ocfs2_reserve_new_inode()
1127 int ocfs2_reserve_cluster_bitmap_bits(struct ocfs2_super *osb, in ocfs2_reserve_cluster_bitmap_bits() argument
1135 status = ocfs2_reserve_suballoc_bits(osb, ac, in ocfs2_reserve_cluster_bitmap_bits()
1148 static int ocfs2_reserve_clusters_with_limit(struct ocfs2_super *osb, in ocfs2_reserve_clusters_with_limit() argument
1168 ocfs2_alloc_should_use_local(osb, bits_wanted)) { in ocfs2_reserve_clusters_with_limit()
1169 status = ocfs2_reserve_local_alloc_bits(osb, in ocfs2_reserve_clusters_with_limit()
1180 status = ocfs2_reserve_cluster_bitmap_bits(osb, *ac); in ocfs2_reserve_clusters_with_limit()
1187 ret = ocfs2_try_to_free_truncate_log(osb, bits_wanted); in ocfs2_reserve_clusters_with_limit()
1226 int ocfs2_reserve_clusters(struct ocfs2_super *osb, in ocfs2_reserve_clusters() argument
1230 return ocfs2_reserve_clusters_with_limit(osb, bits_wanted, 0, in ocfs2_reserve_clusters()
1302 static int ocfs2_block_group_find_clear_bits(struct ocfs2_super *osb, in ocfs2_block_group_find_clear_bits() argument
1378 struct ocfs2_super *osb = OCFS2_SB(alloc_inode->i_sb); in ocfs2_block_group_set_bits() local
1428 ocfs2_local_alloc_seen_free_bits(osb, max_contig_bits); in ocfs2_block_group_set_bits()
1541 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_cluster_group_search() local
1571 ret = ocfs2_block_group_find_clear_bits(osb, in ocfs2_cluster_group_search()
2334 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_desc_bitmap_to_cluster_off() local
2339 if (bg_blkno != osb->first_cluster_group_blkno) in ocfs2_desc_bitmap_to_cluster_off()
2349 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_which_cluster_group() local
2354 group_no = cluster / osb->bitmap_cpg; in ocfs2_which_cluster_group()
2356 return osb->first_cluster_group_blkno; in ocfs2_which_cluster_group()
2358 group_no * osb->bitmap_cpg); in ocfs2_which_cluster_group()
2368 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_block_to_cluster_group() local
2369 u32 data_cluster = ocfs2_blocks_to_clusters(osb->sb, data_blkno); in ocfs2_block_to_cluster_group()
2376 if (*bg_blkno == osb->first_cluster_group_blkno) in ocfs2_block_to_cluster_group()
2379 *bg_bit_off = (u16) ocfs2_blocks_to_clusters(osb->sb, in ocfs2_block_to_cluster_group()
2399 struct ocfs2_super *osb = OCFS2_SB(ac->ac_inode->i_sb); in __ocfs2_claim_clusters() local
2410 status = ocfs2_claim_local_alloc_bits(osb, in __ocfs2_claim_clusters()
2417 atomic_inc(&osb->alloc_stats.local_data); in __ocfs2_claim_clusters()
2419 if (min_clusters > (osb->bitmap_cpg - 1)) { in __ocfs2_claim_clusters()
2424 osb->bitmap_cpg); in __ocfs2_claim_clusters()
2429 if (bits_wanted > (osb->bitmap_cpg - 1)) in __ocfs2_claim_clusters()
2430 bits_wanted = osb->bitmap_cpg - 1; in __ocfs2_claim_clusters()
2443 atomic_inc(&osb->alloc_stats.bitmap_data); in __ocfs2_claim_clusters()
2742 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); in ocfs2_lock_allocators() local
2771 (ocfs2_sparse_alloc(osb) && num_free_extents < max_recs_needed)) { in ocfs2_lock_allocators()
2772 ret = ocfs2_reserve_new_metadata(osb, et->et_root_el, meta_ac); in ocfs2_lock_allocators()
2783 ret = ocfs2_reserve_clusters(osb, clusters_to_add, data_ac); in ocfs2_lock_allocators()
2809 static int ocfs2_get_suballoc_slot_bit(struct ocfs2_super *osb, u64 blkno, in ocfs2_get_suballoc_slot_bit() argument
2820 status = ocfs2_read_blocks_sync(osb, blkno, 1, &inode_bh); in ocfs2_get_suballoc_slot_bit()
2836 (u32)le16_to_cpu(inode_fe->i_suballoc_slot) > osb->max_slots - 1) { in ocfs2_get_suballoc_slot_bit()
2866 static int ocfs2_test_suballoc_bit(struct ocfs2_super *osb, in ocfs2_test_suballoc_bit() argument
2924 int ocfs2_test_inode_bit(struct ocfs2_super *osb, u64 blkno, int *res) in ocfs2_test_inode_bit() argument
2934 status = ocfs2_get_suballoc_slot_bit(osb, blkno, &suballoc_slot, in ocfs2_test_inode_bit()
2942 inode_alloc_inode = ocfs2_get_system_file_inode(osb, in ocfs2_test_inode_bit()
2945 inode_alloc_inode = ocfs2_get_system_file_inode(osb, in ocfs2_test_inode_bit()
2966 status = ocfs2_test_suballoc_bit(osb, inode_alloc_inode, alloc_bh, in ocfs2_test_inode_bit()