Drain the read buffer of DevFuseReader
Drain the read buffer of DevFuseReader

In some circumstances, it's possible that the buffered data isn't fully
consumed by the filesystem. Before handling the next request, we need to
drain the residual.

This change also moves the reader/writer/mapper out of the loop, since
we intend to not duplicate the FDs for each interation, and prefer to
reuse the buffer / avoid re-allocation anyway. This allows us to
implement `drain` in DevFuseReader.

BUG=b:196264590
TEST=fsverity measure a filesystem without ioctl impl, the filesystem
     does not crash any more

Cq-Depend: chromium:3105916
Change-Id: Ib758c98e6d7b4ce1391c51db19c120a4cec09dff
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3092409
Tested-by: kokoro <2ac7b1f3fa578934c95181d4272be0d3bca00121@google.com>
Commit-Queue: Victor Hsieh <e50b749460aecb2d84d38a0c40b84707be8ae902@chromium.org>
Reviewed-by: Chirantan Ekbote <35787c0e27de5c48735e07f8324823b765e8bcbc@chromium.org>

google/crosvm,google/crosvm,google/crosvm,google/crosvm