diff options
| author | tim szeto <Tim.Szeto@Sun.COM> | 2009-02-19 13:08:57 -0700 |
|---|---|---|
| committer | tim szeto <Tim.Szeto@Sun.COM> | 2009-02-19 13:08:57 -0700 |
| commit | e17f3b2227c590f1d761b9ec4613cfb05982e6ab (patch) | |
| tree | f06ec63b47e773122f7b03f25db9c1c6d5f5a288 /usr/src/cmd/stmfadm | |
| parent | 858ec50c451301d1e3daa797384232a5a3a62585 (diff) | |
| download | illumos-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.c | 90 |
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)); } |
