Lines Matching refs:sf
301 static void btrfsic_stack_frame_free(struct btrfsic_stack_frame *sf);
957 struct btrfsic_stack_frame *sf; in btrfsic_stack_frame_alloc() local
959 sf = kzalloc(sizeof(*sf), GFP_NOFS); in btrfsic_stack_frame_alloc()
960 if (NULL == sf) in btrfsic_stack_frame_alloc()
963 sf->magic = BTRFSIC_BLOCK_STACK_FRAME_MAGIC_NUMBER; in btrfsic_stack_frame_alloc()
964 return sf; in btrfsic_stack_frame_alloc()
967 static void btrfsic_stack_frame_free(struct btrfsic_stack_frame *sf) in btrfsic_stack_frame_free() argument
969 BUG_ON(!(NULL == sf || in btrfsic_stack_frame_free()
970 BTRFSIC_BLOCK_STACK_FRAME_MAGIC_NUMBER == sf->magic)); in btrfsic_stack_frame_free()
971 kfree(sf); in btrfsic_stack_frame_free()
981 struct btrfsic_stack_frame *sf; in btrfsic_process_metablock() local
987 sf = &initial_stack_frame; in btrfsic_process_metablock()
988 sf->error = 0; in btrfsic_process_metablock()
989 sf->i = -1; in btrfsic_process_metablock()
990 sf->limit_nesting = first_limit_nesting; in btrfsic_process_metablock()
991 sf->block = first_block; in btrfsic_process_metablock()
992 sf->block_ctx = first_block_ctx; in btrfsic_process_metablock()
993 sf->next_block = NULL; in btrfsic_process_metablock()
994 sf->hdr = first_hdr; in btrfsic_process_metablock()
995 sf->prev = NULL; in btrfsic_process_metablock()
998 sf->block->generation = le64_to_cpu(sf->hdr->generation); in btrfsic_process_metablock()
999 if (0 == sf->hdr->level) { in btrfsic_process_metablock()
1001 (struct btrfs_leaf *)sf->hdr; in btrfsic_process_metablock()
1003 if (-1 == sf->i) { in btrfsic_process_metablock()
1004 sf->nr = btrfs_stack_header_nritems(&leafhdr->header); in btrfsic_process_metablock()
1010 sf->block_ctx->start, sf->nr, in btrfsic_process_metablock()
1018 if (0 == sf->num_copies || sf->mirror_num > sf->num_copies) { in btrfsic_process_metablock()
1019 sf->i++; in btrfsic_process_metablock()
1020 sf->num_copies = 0; in btrfsic_process_metablock()
1023 if (sf->i < sf->nr) { in btrfsic_process_metablock()
1026 (uintptr_t)(leafhdr->items + sf->i) - in btrfsic_process_metablock()
1034 sf->block_ctx->len) { in btrfsic_process_metablock()
1038 sf->block_ctx->start, in btrfsic_process_metablock()
1039 sf->block_ctx->dev->name); in btrfsic_process_metablock()
1042 btrfsic_read_from_block_data(sf->block_ctx, in btrfsic_process_metablock()
1059 sf->block_ctx->len) in btrfsic_process_metablock()
1062 sf->block_ctx, &root_item, in btrfsic_process_metablock()
1067 sf->error = in btrfsic_process_metablock()
1070 sf->block, in btrfsic_process_metablock()
1071 sf->block_ctx, in btrfsic_process_metablock()
1073 sf->limit_nesting, in btrfsic_process_metablock()
1074 &sf->next_block_ctx, in btrfsic_process_metablock()
1075 &sf->next_block, in btrfsic_process_metablock()
1077 &sf->num_copies, in btrfsic_process_metablock()
1078 &sf->mirror_num, in btrfsic_process_metablock()
1082 if (sf->error) in btrfsic_process_metablock()
1085 if (NULL != sf->next_block) { in btrfsic_process_metablock()
1088 sf->next_block_ctx.datav[0]; in btrfsic_process_metablock()
1093 sf->error = -1; in btrfsic_process_metablock()
1095 &sf-> in btrfsic_process_metablock()
1101 next_stack->block = sf->next_block; in btrfsic_process_metablock()
1103 &sf->next_block_ctx; in btrfsic_process_metablock()
1107 sf->limit_nesting - 1; in btrfsic_process_metablock()
1108 next_stack->prev = sf; in btrfsic_process_metablock()
1109 sf = next_stack; in btrfsic_process_metablock()
1114 sf->error = btrfsic_handle_extent_data( in btrfsic_process_metablock()
1116 sf->block, in btrfsic_process_metablock()
1117 sf->block_ctx, in btrfsic_process_metablock()
1120 if (sf->error) in btrfsic_process_metablock()
1127 struct btrfs_node *const nodehdr = (struct btrfs_node *)sf->hdr; in btrfsic_process_metablock()
1129 if (-1 == sf->i) { in btrfsic_process_metablock()
1130 sf->nr = btrfs_stack_header_nritems(&nodehdr->header); in btrfsic_process_metablock()
1135 sf->block_ctx->start, in btrfsic_process_metablock()
1136 nodehdr->header.level, sf->nr, in btrfsic_process_metablock()
1144 if (0 == sf->num_copies || sf->mirror_num > sf->num_copies) { in btrfsic_process_metablock()
1145 sf->i++; in btrfsic_process_metablock()
1146 sf->num_copies = 0; in btrfsic_process_metablock()
1149 if (sf->i < sf->nr) { in btrfsic_process_metablock()
1154 key_ptr_offset = (uintptr_t)(nodehdr->ptrs + sf->i) - in btrfsic_process_metablock()
1157 sf->block_ctx->len) { in btrfsic_process_metablock()
1160 sf->block_ctx->start, in btrfsic_process_metablock()
1161 sf->block_ctx->dev->name); in btrfsic_process_metablock()
1165 sf->block_ctx, &key_ptr, key_ptr_offset, in btrfsic_process_metablock()
1169 sf->error = btrfsic_create_link_to_next_block( in btrfsic_process_metablock()
1171 sf->block, in btrfsic_process_metablock()
1172 sf->block_ctx, in btrfsic_process_metablock()
1174 sf->limit_nesting, in btrfsic_process_metablock()
1175 &sf->next_block_ctx, in btrfsic_process_metablock()
1176 &sf->next_block, in btrfsic_process_metablock()
1178 &sf->num_copies, in btrfsic_process_metablock()
1179 &sf->mirror_num, in btrfsic_process_metablock()
1182 if (sf->error) in btrfsic_process_metablock()
1185 if (NULL != sf->next_block) { in btrfsic_process_metablock()
1188 sf->next_block_ctx.datav[0]; in btrfsic_process_metablock()
1192 sf->error = -1; in btrfsic_process_metablock()
1197 next_stack->block = sf->next_block; in btrfsic_process_metablock()
1198 next_stack->block_ctx = &sf->next_block_ctx; in btrfsic_process_metablock()
1202 sf->limit_nesting - 1; in btrfsic_process_metablock()
1203 next_stack->prev = sf; in btrfsic_process_metablock()
1204 sf = next_stack; in btrfsic_process_metablock()
1213 if (NULL != sf->prev) { in btrfsic_process_metablock()
1214 struct btrfsic_stack_frame *const prev = sf->prev; in btrfsic_process_metablock()
1217 btrfsic_release_block_ctx(sf->block_ctx); in btrfsic_process_metablock()
1219 if (sf->error) { in btrfsic_process_metablock()
1220 prev->error = sf->error; in btrfsic_process_metablock()
1221 btrfsic_stack_frame_free(sf); in btrfsic_process_metablock()
1222 sf = prev; in btrfsic_process_metablock()
1226 btrfsic_stack_frame_free(sf); in btrfsic_process_metablock()
1227 sf = prev; in btrfsic_process_metablock()
1230 BUG_ON(&initial_stack_frame != sf); in btrfsic_process_metablock()
1233 return sf->error; in btrfsic_process_metablock()