examples/nvme/identify: set features valid flag to false before getting new value
features are global variable and can be used for different controllers, e.g: there are 2 controllers, the first one can support Arbitration feature, and the second controller can't support Arbitration feature, the value from features[fid].valid may contain the first drive's old value. Change-Id: If020a0413a8a32e2be25ecccb5baf0a82d99371b Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/463480 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
5de38f9543
commit
0d9279c596
@ -57,7 +57,7 @@ struct feature {
|
|||||||
bool valid;
|
bool valid;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct feature features[256];
|
static struct feature features[256] = {};
|
||||||
|
|
||||||
static struct spdk_nvme_error_information_entry error_page[256];
|
static struct spdk_nvme_error_information_entry error_page[256];
|
||||||
|
|
||||||
@ -180,11 +180,14 @@ static int
|
|||||||
get_feature(struct spdk_nvme_ctrlr *ctrlr, uint8_t fid)
|
get_feature(struct spdk_nvme_ctrlr *ctrlr, uint8_t fid)
|
||||||
{
|
{
|
||||||
struct spdk_nvme_cmd cmd = {};
|
struct spdk_nvme_cmd cmd = {};
|
||||||
|
struct feature *feature = &features[fid];
|
||||||
|
|
||||||
|
feature->valid = false;
|
||||||
|
|
||||||
cmd.opc = SPDK_NVME_OPC_GET_FEATURES;
|
cmd.opc = SPDK_NVME_OPC_GET_FEATURES;
|
||||||
cmd.cdw10 = fid;
|
cmd.cdw10 = fid;
|
||||||
|
|
||||||
return spdk_nvme_ctrlr_cmd_admin_raw(ctrlr, &cmd, NULL, 0, get_feature_completion, &features[fid]);
|
return spdk_nvme_ctrlr_cmd_admin_raw(ctrlr, &cmd, NULL, 0, get_feature_completion, feature);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user