diff options
author | mav <mav@FreeBSD.org> | 2014-12-18 08:38:07 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2014-12-18 08:38:07 +0000 |
commit | 4ff47ae9abedf70df85d191c50e4130adbdea839 (patch) | |
tree | 493e69933075582f0f9d4d1a850896cee12710af /sys/cam/ctl/ctl_backend_ramdisk.c | |
parent | 251a95deec1d0bdb97ae02542b701f42eb54476a (diff) | |
download | FreeBSD-src-4ff47ae9abedf70df85d191c50e4130adbdea839.zip FreeBSD-src-4ff47ae9abedf70df85d191c50e4130adbdea839.tar.gz |
MFC r275474: Add GET LBA STATUS command support to CTL.
It is implemented for LUNs backed by ZVOLs in "dev" mode and files.
GEOM has no such API, so for LUNs backed by raw devices all LBAs will
be reported as mapped/unknown.
Sponsored by: iXsystems, Inc.
Diffstat (limited to 'sys/cam/ctl/ctl_backend_ramdisk.c')
-rw-r--r-- | sys/cam/ctl/ctl_backend_ramdisk.c | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/sys/cam/ctl/ctl_backend_ramdisk.c b/sys/cam/ctl/ctl_backend_ramdisk.c index 9b3b14a..adace4f 100644 --- a/sys/cam/ctl/ctl_backend_ramdisk.c +++ b/sys/cam/ctl/ctl_backend_ramdisk.c @@ -967,8 +967,31 @@ ctl_backend_ramdisk_config_write(union ctl_io *io) static int ctl_backend_ramdisk_config_read(union ctl_io *io) { - /* - * XXX KDM need to implement!! - */ - return (0); + int retval = 0; + + switch (io->scsiio.cdb[0]) { + case SERVICE_ACTION_IN: + if (io->scsiio.cdb[1] == SGLS_SERVICE_ACTION) { + /* We have nothing to tell, leave default data. */ + ctl_config_read_done(io); + retval = CTL_RETVAL_COMPLETE; + break; + } + ctl_set_invalid_field(&io->scsiio, + /*sks_valid*/ 1, + /*command*/ 1, + /*field*/ 1, + /*bit_valid*/ 1, + /*bit*/ 4); + ctl_config_read_done(io); + retval = CTL_RETVAL_COMPLETE; + break; + default: + ctl_set_invalid_opcode(&io->scsiio); + ctl_config_read_done(io); + retval = CTL_RETVAL_COMPLETE; + break; + } + + return (retval); } |