diff options
| author | George Wilson <George.Wilson@Sun.COM> | 2010-04-26 00:23:10 -0700 |
|---|---|---|
| committer | George Wilson <George.Wilson@Sun.COM> | 2010-04-26 00:23:10 -0700 |
| commit | 98d1cbfec254295273b6a761bc1861c0374bdf02 (patch) | |
| tree | 003afc25bcc5022b2cbf75f7ad74ef8c4d869581 /usr/src/cmd | |
| parent | 96ea4e937aa9d4d9bcb316497c698a4f411380b7 (diff) | |
| download | illumos-joyent-98d1cbfec254295273b6a761bc1861c0374bdf02.tar.gz | |
6911420 ZFS device removal detection should work with SCSAv3
Diffstat (limited to 'usr/src/cmd')
| -rw-r--r-- | usr/src/cmd/zinject/translate.c | 8 | ||||
| -rw-r--r-- | usr/src/cmd/zinject/zinject.c | 18 | ||||
| -rw-r--r-- | usr/src/cmd/zinject/zinject.h | 7 |
3 files changed, 21 insertions, 12 deletions
diff --git a/usr/src/cmd/zinject/translate.c b/usr/src/cmd/zinject/translate.c index 219ee76bd9..ce5e2aa309 100644 --- a/usr/src/cmd/zinject/translate.c +++ b/usr/src/cmd/zinject/translate.c @@ -481,6 +481,14 @@ translate_device(const char *pool, const char *device, err_type_t label_type, record->zi_start = offsetof(vdev_label_t, vl_vdev_phys); record->zi_end = record->zi_start + VDEV_PHYS_SIZE - 1; break; + case TYPE_LABEL_PAD1: + record->zi_start = offsetof(vdev_label_t, vl_pad1); + record->zi_end = record->zi_start + VDEV_PAD_SIZE - 1; + break; + case TYPE_LABEL_PAD2: + record->zi_start = offsetof(vdev_label_t, vl_pad2); + record->zi_end = record->zi_start + VDEV_PAD_SIZE - 1; + break; } return (0); } diff --git a/usr/src/cmd/zinject/zinject.c b/usr/src/cmd/zinject/zinject.c index 30a3c26399..3d7083ba2c 100644 --- a/usr/src/cmd/zinject/zinject.c +++ b/usr/src/cmd/zinject/zinject.c @@ -19,8 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2010 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. */ /* @@ -42,12 +41,12 @@ * any attempt to read from the device will return EIO, but any attempt to * reopen the device will also return ENXIO. * For label faults, the -L option must be specified. This allows faults - * to be injected into either the nvlist or uberblock region of all the labels - * for the specified device. + * to be injected into either the nvlist, uberblock, pad1, or pad2 region + * of all the labels for the specified device. * * This form of the command looks like: * - * zinject -d device [-e errno] [-L <uber | nvlist>] pool + * zinject -d device [-e errno] [-L <uber | nvlist | pad1 | pad2>] pool * * * DATA FAULTS @@ -168,7 +167,9 @@ static const char *errtable[TYPE_INVAL] = { "spacemap", "errlog", "uber", - "nvlist" + "nvlist", + "pad1", + "pad2" }; static err_type_t @@ -227,10 +228,11 @@ usage(void) "\t\tfunctions which call spa_vdev_config_exit(), or \n" "\t\tspa_vdev_exit() will trigger a panic.\n" "\n" - "\tzinject -d device [-e errno] [-L <nvlist|uber>] [-F]\n" + "\tzinject -d device [-e errno] [-L <nvlist|uber|pad1|pad2>] [-F]\n" "\t [-T <read|write|free|claim|all> pool\n" "\t\tInject a fault into a particular device or the device's\n" - "\t\tlabel. Label injection can either be 'nvlist' or 'uber'.\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" "\n" "\tzinject -d device -A <degrade|fault> pool\n" diff --git a/usr/src/cmd/zinject/zinject.h b/usr/src/cmd/zinject/zinject.h index adc3efe804..bd05d651e3 100644 --- a/usr/src/cmd/zinject/zinject.h +++ b/usr/src/cmd/zinject/zinject.h @@ -19,15 +19,12 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. + * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. */ #ifndef _ZINJECT_H #define _ZINJECT_H -#pragma ident "%Z%%M% %I% %E% SMI" - #include <sys/zfs_ioctl.h> #ifdef __cplusplus @@ -46,6 +43,8 @@ typedef enum { TYPE_ERRLOG, /* persistent error log */ TYPE_LABEL_UBERBLOCK, /* label specific uberblock */ TYPE_LABEL_NVLIST, /* label specific nvlist */ + TYPE_LABEL_PAD1, /* label specific 8K pad1 area */ + TYPE_LABEL_PAD2, /* label specific 8K pad2 area */ TYPE_INVAL } err_type_t; |
