Thank you for the detailed explanation, Peter. It makes a lot of things clear now.
I see that the virtio block device is accessing guest physical memory that is
not backed by a device. So that would mean, in the normal case, the guest physical memory is probably not being modified by virtqueue_unmap_sg() and address_space_unmap() functions. The only thing that unmap() is doing in this case, is invalidating and marking the corresponding memory as dirty (in case of writes).
Since I'm not doing a live migration, nor I am hot-unplugging the memory DIMM and I just want "used" virtqueue buffers be written to the guest memory, I can possibly just move forward without doing an unmap() in this case.