I've just changed last patch to new one that uses loop iteration instead of recursion. https://lists.gnu.org/archive/html/qemu-block/2016-04/msg00584.html
At first, a head of chain has checked it's status by bdrv_get_block_status in "convert_iteration_sectors". If this status is not BDRV_BLOCK_DATA nor BDRV_BLOCK_ZERO, then check backing files by using new function, get_backing_status. This function iterates backing files chain and return the status BDRV_BLOCK_DATA, BDRV_BLOCK_ZERO or error(< 0) caused by bdrv_get_block_status. When none of backing files has valid status(i.e. backing file which must have data doesn't exist), then return -1(< 0) and goto fail.