MFC r261538:
Make CTL block backend return proper error code for operations unsupposed by the underlying device.
This commit is contained in:
parent
cf0fa484f9
commit
6e3a96834a
@ -512,6 +512,7 @@ ctl_be_block_biodone(struct bio *bio)
|
||||
struct ctl_be_block_io *beio;
|
||||
struct ctl_be_block_lun *be_lun;
|
||||
union ctl_io *io;
|
||||
int error;
|
||||
|
||||
beio = bio->bio_caller1;
|
||||
be_lun = beio->lun;
|
||||
@ -519,8 +520,9 @@ ctl_be_block_biodone(struct bio *bio)
|
||||
|
||||
DPRINTF("entered\n");
|
||||
|
||||
error = bio->bio_error;
|
||||
mtx_lock(&be_lun->lock);
|
||||
if (bio->bio_error != 0)
|
||||
if (error != 0)
|
||||
beio->num_errors++;
|
||||
|
||||
beio->num_bios_done++;
|
||||
@ -552,7 +554,9 @@ ctl_be_block_biodone(struct bio *bio)
|
||||
* entire I/O with a medium error.
|
||||
*/
|
||||
if (beio->num_errors > 0) {
|
||||
if (beio->bio_cmd == BIO_FLUSH) {
|
||||
if (error == EOPNOTSUPP) {
|
||||
ctl_set_invalid_opcode(&io->scsiio);
|
||||
} else if (beio->bio_cmd == BIO_FLUSH) {
|
||||
/* XXX KDM is there is a better error here? */
|
||||
ctl_set_internal_failure(&io->scsiio,
|
||||
/*sks_valid*/ 1,
|
||||
|
Loading…
x
Reference in New Issue
Block a user