The problem turns out to be that q->backing_dev_info.memory_backed is not
initialized, leaving it to be whatever was there before. The end result is
that my "driver" never saw write requests, but reads came through fine.
Took a while to figure out that one...
Here's the fix, for what it's worth. (I had, BTW, tried just zeroing the
whole structure in blk_init_queue(), but that makes IDE oops at boot - it
sets q->queuedata early).