[stgt] [PATCH 2/3] SMC: Add an update argument "clear_slot" to force a storage element slot to become empty.
Ronnie Sahlberg
ronniesahlberg at gmail.com
Sat Jan 28 04:28:43 CET 2012
This new argument can be used for force an exiting storage element slot to become empty.
Example:
tgtadm --mode logicalunit --op update --tid 1 --lun 1 \
--params element_type=2,address=1025,clear_slot=1
Signed-off-by: Ronnie Sahlberg <ronniesahlberg at gmail.com>
---
doc/tgtadm.8.xml | 10 ++++++++++
usr/smc.c | 9 +++++++++
usr/smc.h | 4 +++-
3 files changed, 22 insertions(+), 1 deletions(-)
diff --git a/doc/tgtadm.8.xml b/doc/tgtadm.8.xml
index a2dd394..f0710ac 100644
--- a/doc/tgtadm.8.xml
+++ b/doc/tgtadm.8.xml
@@ -407,6 +407,16 @@ Slot types:
</listitem>
</varlistentry>
+ <varlistentry><term><option>clear_slot=<1></option></term>
+ <listitem>
+ <para>
+ This option is used to clear a storage element and remove any
+ media that may be present. Once this command completes
+ the storage element will show up as "Empty".
+ </para>
+ </listitem>
+ </varlistentry>
+
<varlistentry><term><option>barcode=<string></option></term>
<listitem>
<para>
diff --git a/usr/smc.c b/usr/smc.c
index c0f25d6..3e77f2a 100644
--- a/usr/smc.c
+++ b/usr/smc.c
@@ -672,6 +672,11 @@ static int config_slot(struct scsi_lu *lu, struct tmp_param *tmp)
s = slot_lookup(&smc->slots, tmp->element_type, tmp->address);
if (!s)
break; // Slot not found..
+ if (tmp->clear_slot) {
+ set_slot_empty(s);
+ ret = TGTADM_SUCCESS;
+ break;
+ }
strncpy(s->barcode, tmp->barcode, sizeof(s->barcode));
set_slot_full(s, 0, NULL);
ret = TGTADM_SUCCESS;
@@ -725,6 +730,10 @@ static int __smc_lu_config(struct scsi_lu *lu, char *params)
match_strncpy(buf, &args[0], sizeof(buf));
sv_param.sides = atoi(buf);
break;
+ case Opt_clear_slot:
+ match_strncpy(buf, &args[0], sizeof(buf));
+ sv_param.clear_slot = atoi(buf);
+ break;
case Opt_address:
match_strncpy(buf, &args[0], sizeof(buf));
sv_param.address = atoi(buf);
diff --git a/usr/smc.h b/usr/smc.h
index 0d216cd..eb50f45 100644
--- a/usr/smc.h
+++ b/usr/smc.h
@@ -75,7 +75,7 @@ struct smc_info {
enum {
Opt_element_type, Opt_start_address,
- Opt_quantity, Opt_sides,
+ Opt_quantity, Opt_sides, Opt_clear_slot,
Opt_address, Opt_barcode,
Opt_tid, Opt_lun,
Opt_type, Opt_dump,
@@ -88,6 +88,7 @@ static match_table_t tokens = {
{Opt_start_address, "start_address=%s"},
{Opt_quantity, "quantity=%s"},
{Opt_sides, "sides=%s"},
+ {Opt_clear_slot, "clear_slot=%s"},
{Opt_address, "address=%s"},
{Opt_barcode, "barcode=%s"},
{Opt_tid, "tid=%s"},
@@ -116,6 +117,7 @@ struct tmp_param {
uint64_t lun;
char barcode[20];
int sides;
+ int clear_slot;
} sv_param;
#endif // _SMC_H_
--
1.7.3.1
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
More information about the stgt
mailing list