svn commit: r262299 - stable/10/sys/cam/ctl
Alexander Motin
mav at FreeBSD.org
Fri Feb 21 18:32:46 UTC 2014
Author: mav
Date: Fri Feb 21 18:32:45 2014
New Revision: 262299
URL: http://svnweb.freebsd.org/changeset/base/262299
Log:
MFC r261538:
Make CTL block backend return proper error code for operations unsupposed
by the underlying device.
Modified:
stable/10/sys/cam/ctl/ctl_backend_block.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/cam/ctl/ctl_backend_block.c
==============================================================================
--- stable/10/sys/cam/ctl/ctl_backend_block.c Fri Feb 21 16:14:40 2014 (r262298)
+++ stable/10/sys/cam/ctl/ctl_backend_block.c Fri Feb 21 18:32:45 2014 (r262299)
@@ -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,
More information about the svn-src-all
mailing list