What is the purpose of the bdrv_check_request() call in bdrv_co_discard? It seems a frontend cant possibly know what the limit is in the qemu-of-the-day, I found no interface to propagate BDRV_REQUEST_MAX_SECTORS into the guest.
I think to handle nb_sectors > BDRV_REQUEST_MAX_SECTORS bdrv_co_discard has to split the request into smaller chunks, just as it does a few lines down in the function. Olaf