xen/blkfront: improve protection against issuing unsupported REQ_FUA
authorVitaly Kuznetsov <vkuznets@redhat.com>
Mon, 1 Dec 2014 13:01:13 +0000 (14:01 +0100)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Wed, 10 Dec 2014 17:20:07 +0000 (12:20 -0500)
commitad42d391ae388bd4ce4d53e8d7b4089cfdcba411
tree3002687530aded859fba77ba63e5f7e1e73847fd
parent9af8785a38d4528d6675247f873b0f1ae29f3be8
xen/blkfront: improve protection against issuing unsupported REQ_FUA

Guard against issuing unsupported REQ_FUA and REQ_FLUSH was introduced
in d11e61583 and was factored out into blkif_request_flush_valid() in
0f1ca65ee. However:
1) This check in incomplete. In case we negotiated to feature_flush = REQ_FLUSH
   and flush_op = BLKIF_OP_FLUSH_DISKCACHE (so FUA is unsupported) FUA request
   will still pass the check.
2) blkif_request_flush_valid() is misnamed. It is bool but returns true when
   the request is invalid.
3) When blkif_request_flush_valid() fails -EIO is being returned. It seems that
   -EOPNOTSUPP is more appropriate here.
Fix all of the above issues.

This patch is based on the original patch by Laszlo Ersek and a comment by
Jeff Moyer.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
drivers/block/xen-blkfront.c