need_more_space
if (!need_more_space(data_ring, head_lpos, next_lpos)) {
while (need_more_space(data_ring, lpos_begin, lpos_end)) {
while (need_more_space(data_ring, tail_lpos, lpos)) {