(with no NULL checking in btr_page_alloc and btr_page_split_and_insert -- atleast not for the return case, it is checked as
if (new_block) {
buf_block_dbg_add_level(new_block, SYNC_TREE_NODE_NEW);
}
)
fsp_try_extend_data_file will fail if there is no space or quota limits (ENOSPC or EDQUOT respectively).
Non-innodb code -- my_write in my_write.c handles this with a loop till space is available (with special handling for EDQUOT) whereas os_file_write_func doesn't do that and fails if ENOSPC/EDQUOT.
Based on the trace, the call stack is probably like: (in reverse order)
fsp_try_ extend_ data_file free_extents free_page_ general split_and_ insert
fsp_reserve_
fseg_alloc_
btr_page_alloc_low
btr_page_alloc
btr_page_
(with no NULL checking in btr_page_alloc and btr_page_ split_and_ insert -- atleast not for the return case, it is checked as
if (new_block) { dbg_add_ level(new_ block, SYNC_TREE_ NODE_NEW) ;
buf_block_
}
)
fsp_try_ extend_ data_file will fail if there is no space or quota limits (ENOSPC or EDQUOT respectively).
Non-innodb code -- my_write in my_write.c handles this with a loop till space is available (with special handling for EDQUOT) whereas os_file_write_func doesn't do that and fails if ENOSPC/EDQUOT.