summaryrefslogtreecommitdiff
path: root/usr/src/cmd/stmfadm
diff options
context:
space:
mode:
authortim szeto <Tim.Szeto@Sun.COM>2009-02-19 13:08:57 -0700
committertim szeto <Tim.Szeto@Sun.COM>2009-02-19 13:08:57 -0700
commite17f3b2227c590f1d761b9ec4613cfb05982e6ab (patch)
treef06ec63b47e773122f7b03f25db9c1c6d5f5a288 /usr/src/cmd/stmfadm
parent858ec50c451301d1e3daa797384232a5a3a62585 (diff)
downloadillumos-joyent-e17f3b2227c590f1d761b9ec4613cfb05982e6ab.tar.gz
6795700 COMSTAR framework should have DTrace Probes
6804929 after "svcadm disable stmf", can still enable targets and LUs manually
Diffstat (limited to 'usr/src/cmd/stmfadm')
-rw-r--r--usr/src/cmd/stmfadm/stmfadm.c90
1 files changed, 60 insertions, 30 deletions
diff --git a/usr/src/cmd/stmfadm/stmfadm.c b/usr/src/cmd/stmfadm/stmfadm.c
index f169800922..7be85c5796 100644
--- a/usr/src/cmd/stmfadm/stmfadm.c
+++ b/usr/src/cmd/stmfadm/stmfadm.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -1453,6 +1453,39 @@ printSessionProps(stmfSessionList *sessionList)
}
}
+static int
+getStmfState(stmfState *state)
+{
+ int ret;
+
+ ret = stmfGetState(state);
+ switch (ret) {
+ case STMF_STATUS_SUCCESS:
+ break;
+ case STMF_ERROR_PERM:
+ (void) fprintf(stderr, "%s: %s\n", cmdName,
+ gettext("permission denied"));
+ break;
+ case STMF_ERROR_SERVICE_NOT_FOUND:
+ (void) fprintf(stderr, "%s: %s\n", cmdName,
+ gettext("STMF service not found"));
+ break;
+ case STMF_ERROR_BUSY:
+ (void) fprintf(stderr, "%s: %s\n", cmdName,
+ gettext("resource busy"));
+ break;
+ case STMF_ERROR_SERVICE_DATA_VERSION:
+ (void) fprintf(stderr, "%s: %s\n", cmdName,
+ gettext("STMF service version incorrect"));
+ break;
+ default:
+ (void) fprintf(stderr, "%s: %s\n", cmdName,
+ gettext("unknown error"));
+ break;
+ }
+ return (ret);
+}
+
/*
* listStateFunc
*
@@ -1467,35 +1500,8 @@ listStateFunc(int operandLen, char *operands[], cmdOptions_t *options,
int ret;
stmfState state;
- if ((ret = stmfGetState(&state)) != STMF_STATUS_SUCCESS) {
- switch (ret) {
- case STMF_ERROR_PERM:
- (void) fprintf(stderr, "%s: %s\n", cmdName,
- gettext("permission denied"));
- ret++;
- break;
- case STMF_ERROR_SERVICE_NOT_FOUND:
- (void) fprintf(stderr, "%s: %s\n", cmdName,
- gettext("STMF service not found"));
- ret++;
- break;
- case STMF_ERROR_BUSY:
- (void) fprintf(stderr, "%s: %s\n", cmdName,
- gettext("resource busy"));
- break;
- case STMF_ERROR_SERVICE_DATA_VERSION:
- (void) fprintf(stderr, "%s: %s\n", cmdName,
- gettext("STMF service version incorrect"));
- ret++;
- break;
- default:
- (void) fprintf(stderr, "%s: %s\n", cmdName,
- gettext("unknown error"));
- ret++;
- break;
- }
- return (1);
- }
+ if ((ret = getStmfState(&state)) != STMF_STATUS_SUCCESS)
+ return (ret);
(void) printf("%-18s: ", "Operational Status");
switch (state.operationalState) {
@@ -1898,6 +1904,18 @@ static int
onlineLuFunc(int operandLen, char *operands[], cmdOptions_t *options,
void *args)
{
+ int ret;
+ stmfState state;
+
+ ret = getStmfState(&state);
+ if (ret != STMF_STATUS_SUCCESS)
+ return (ret);
+ if (state.operationalState == STMF_SERVICE_STATE_OFFLINE ||
+ state.operationalState == STMF_SERVICE_STATE_OFFLINING) {
+ (void) fprintf(stderr, "%s: %s\n", cmdName,
+ gettext("STMF service is offline"));
+ return (1);
+ }
return (onlineOfflineLu(operands[0], ONLINE_LU));
}
@@ -1979,6 +1997,18 @@ static int
onlineTargetFunc(int operandLen, char *operands[], cmdOptions_t *options,
void *args)
{
+ int ret;
+ stmfState state;
+
+ ret = getStmfState(&state);
+ if (ret != STMF_STATUS_SUCCESS)
+ return (ret);
+ if (state.operationalState == STMF_SERVICE_STATE_OFFLINE ||
+ state.operationalState == STMF_SERVICE_STATE_OFFLINING) {
+ (void) fprintf(stderr, "%s: %s\n", cmdName,
+ gettext("STMF service is offline"));
+ return (1);
+ }
return (onlineOfflineTarget(operands[0], ONLINE_TARGET));
}