rem: config = zpool_get_config(zhp);
add: config = zpool_get_config(zhp, NULL);
context: status_callback(zpool_handle_t *zhp, void *data){	status_cbdata_t *cbp = data;	nvlist_t *config, *nvroot;	char *msgid;	int reason;	char *health;	config = zpool_get_config(zhp);	reason = zpool_get_status(zhp, &msgid);	cbp->cb_count++;	/*	 * If we were given 'zpool status -x', only report those pools with	 * problems.	 */	if (reason == ZPOOL_STATUS_OK && cbp->cb_explain)		return (0);	if (cbp->cb_first)		cbp->cb_first = FALSE;	else		(void) printf("\n");	verify(nvlist_lookup_string(config, ZPOOL_CONFIG_POOL_HEALTH,	    &health) == 0);	(void) printf(gettext("  pool: %s\n"), zpool_get_name(zhp));	(void) printf(gettext(" state: %s\n"), health);	switch (reason) {	case ZPOOL_STATUS_MISSING_DEV_R:		(void) printf(gettext("status: One or more devices could not "		    "be opened.  Sufficient replicas exist for\n\tthe pool to "		    "continue functioning in a degraded state.\n"));		(void) printf(gettext("action: Attach the missing device and "		    "online it using 'zpool online'.\n"));		break;	case ZPOOL_STATUS_MISSING_DEV_NR:		(void) printf(gettext("status: One or more devices could not "		    "be opened.  There are insufficient\n\treplicas for the "		    "pool to continue functioning.\n"));		(void) printf(gettext("action: Attach the missing device and "		    "online it using 'zpool online'.\n"));		break;	case ZPOOL_STATUS_CORRUPT_LABEL_R:		(void) printf(gettext("status: One or more devices could not "		    "be used because the label is missing or\n\tinvalid.  "		    "Sufficient replicas exist for the pool to continue\n\t"		    "functioning in a degraded state.\n"));		(void) printf(gettext("action: Replace the device using "		    "'zpool replace'.\n"));		break;	case ZPOOL_STATUS_CORRUPT_LABEL_NR:		(void) printf(gettext("status: One or more devices could not "		    "be used because the the label is missing \n\tor invalid.  "		    "There are insufficient replicas for the pool to "		    "continue\n\tfunctioning.\n"));		(void) printf(gettext("action: Destroy and re-create the pool "		    "from a backup source.\n"));		break;	case ZPOOL_STATUS_FAILING_DEV:		(void) printf(gettext("status: One or more devices has "		    "experienced an unrecoverable error.  An\n\tattempt was "		    "made to correct the error.  Applications are "		    "unaffected.\n"));		(void) printf(gettext("action: Determine if the device needs "		    "to be replaced, and clear the errors\n\tusing "		    "'zpool online' or replace the device with 'zpool "		    "replace'.\n"));		break;	case ZPOOL_STATUS_OFFLINE_DEV:		(void) printf(gettext("status: One or more devices has "		    "been taken offline by the adminstrator.\n\tSufficient "		    "replicas exist for the pool to continue functioning in "		    "a\n\tdegraded state.\n"));		(void) printf(gettext("action: Online the device using "		    "'zpool online' or replace the device with\n\t'zpool "		    "replace'.\n"));		break;	case ZPOOL_STATUS_RESILVERING:		(void) printf(gettext("status: One or more devices is "		    "currently being resilvered.  The pool will\n\tcontinue "		    "to function, possibly in a degraded state.\n"));		(void) printf(gettext("action: Wait for the resilver to "		    "complete.\n"));		break;	default:		/*		 * The remaining errors can't actually be generated, yet.		 */		assert(reason == ZPOOL_STATUS_OK);	}	if (msgid != NULL)		(void) printf(gettext("   see: http://www.sun.com/msg/%s\n"),		    msgid);	if (config != NULL) {		int namewidth;		verify(nvlist_lookup_nvlist(config, ZPOOL_CONFIG_VDEV_TREE,		    &nvroot) == 0);		(void) printf(gettext(" scrub: "));		print_scrub_status(nvroot);		namewidth = max_width(nvroot, 0, 0);		if (namewidth < 10)			namewidth = 10;		(void) printf(gettext("config:\n\n"));		(void) printf(gettext("\t%-*s  %-8s %5s %5s %5s\n"), namewidth,		    "NAME", "STATE", "READ", "WRITE", "CKSUM");		print_status_config(zpool_get_name(zhp), nvroot, namewidth, 0);	} else {		(void) printf(gettext("config: The configuration cannot be "		    "determined.\n"));	}	return (0);}