diff options
author | Brian Behlendorf <[email protected]> | 2010-08-26 14:24:34 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2010-08-26 14:24:34 -0700 |
commit | 572e285762521df27fe5b026f409ba1a21abb7ac (patch) | |
tree | f5d0e8e3bd3c0956d437251974b67d88fea46304 /cmd/zinject | |
parent | 1980602bfae0605d3231e79627b3e25c07991b0e (diff) |
Update to onnv_147
This is the last official OpenSolaris tag before the public
development tree was closed.
Diffstat (limited to 'cmd/zinject')
-rw-r--r-- | cmd/zinject/translate.c | 4 | ||||
-rw-r--r-- | cmd/zinject/zinject.c | 24 |
2 files changed, 19 insertions, 9 deletions
diff --git a/cmd/zinject/translate.c b/cmd/zinject/translate.c index cd967a845..87751e315 100644 --- a/cmd/zinject/translate.c +++ b/cmd/zinject/translate.c @@ -267,7 +267,7 @@ calculate_range(const char *dataset, err_type_t type, int level, char *range, } if (record->zi_object == 0) { - dn = os->os_meta_dnode; + dn = DMU_META_DNODE(os); } else { err = dnode_hold(os, record->zi_object, FTAG, &dn); if (err != 0) { @@ -318,7 +318,7 @@ calculate_range(const char *dataset, err_type_t type, int level, char *range, ret = 0; out: if (dn) { - if (dn != os->os_meta_dnode) + if (dn != DMU_META_DNODE(os)) dnode_rele(dn, FTAG); } if (os) diff --git a/cmd/zinject/zinject.c b/cmd/zinject/zinject.c index ab04e422a..60c53ceb3 100644 --- a/cmd/zinject/zinject.c +++ b/cmd/zinject/zinject.c @@ -233,7 +233,7 @@ usage(void) "\t\tInject a fault into a particular device or the device's\n" "\t\tlabel. Label injection can either be 'nvlist', 'uber',\n " "\t\t'pad1', or 'pad2'.\n" - "\t\t'errno' can either be 'nxio' (the default) or 'io'.\n" + "\t\t'errno' can be 'nxio' (the default), 'io', or 'dtl'.\n" "\n" "\tzinject -d device -A <degrade|fault> pool\n" "\t\tPerform a specific action on a particular device\n" @@ -395,17 +395,25 @@ print_panic_handler(int id, const char *pool, zinject_record_t *record, static int print_all_handlers(void) { - int count = 0; + int count = 0, total = 0; (void) iter_handlers(print_device_handler, &count); - (void) printf("\n"); - count = 0; + if (count > 0) { + total += count; + (void) printf("\n"); + count = 0; + } + (void) iter_handlers(print_data_handler, &count); - (void) printf("\n"); - count = 0; + if (count > 0) { + total += count; + (void) printf("\n"); + count = 0; + } + (void) iter_handlers(print_panic_handler, &count); - return (count); + return (count + total); } /* ARGSUSED */ @@ -627,6 +635,8 @@ main(int argc, char **argv) error = ECKSUM; } else if (strcasecmp(optarg, "nxio") == 0) { error = ENXIO; + } else if (strcasecmp(optarg, "dtl") == 0) { + error = ECHILD; } else { (void) fprintf(stderr, "invalid error type " "'%s': must be 'io', 'checksum' or " |