diff options
author | Vishal Verma <vishal.l.verma@intel.com> | 2015-07-29 14:58:08 -0600 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2015-08-14 13:43:04 -0400 |
commit | ab45e7632717b811e0786e46ca5ad279cb731b66 (patch) | |
tree | 84a669c9fb6c9889ba7b17976acf5b50c08bbd54 /drivers/nvdimm/btt.c | |
parent | fbde1414acc0440024083bf0c391b259bcfc4826 (diff) |
libnvdimm, btt: consolidate arena validation
Use arena_is_valid as a common routine for checking the validity of an
info block from both discover_arenas, and nd_btt_probe.
As a result, don't check for validity of the BTT's UUID, and lbasize.
The checksum in the BTT info block guarantees self-consistency, and when
we're called from nd_btt_probe, we don't have a valid uuid or lbasize
available to check against.
Also cleanup to return a bool instead of an int.
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/nvdimm/btt.c')
-rw-r--r-- | drivers/nvdimm/btt.c | 28 |
1 files changed, 1 insertions, 27 deletions
diff --git a/drivers/nvdimm/btt.c b/drivers/nvdimm/btt.c index 87e6a96a6c19..6567746aa315 100644 --- a/drivers/nvdimm/btt.c +++ b/drivers/nvdimm/btt.c @@ -583,32 +583,6 @@ static void free_arenas(struct btt *btt) } /* - * This function checks if the metadata layout is valid and error free - */ -static int arena_is_valid(struct nd_btt *nd_btt, struct btt_sb *super) -{ - u64 checksum; - - if (memcmp(super->uuid, nd_btt->uuid, 16)) - return 0; - - checksum = le64_to_cpu(super->checksum); - super->checksum = 0; - if (checksum != nd_btt_sb_checksum(super)) - return 0; - super->checksum = cpu_to_le64(checksum); - - if (nd_btt->lbasize != le32_to_cpu(super->external_lbasize)) - return 0; - - /* TODO: figure out action for this */ - if ((le32_to_cpu(super->flags) & IB_FLAG_ERROR_MASK) != 0) - dev_info(&nd_btt->dev, "Found arena with an error flag\n"); - - return 1; -} - -/* * This function reads an existing valid btt superblock and * populates the corresponding arena_info struct */ @@ -665,7 +639,7 @@ static int discover_arenas(struct btt *btt) if (ret) goto out; - if (!arena_is_valid(btt->nd_btt, super)) { + if (!nd_btt_arena_is_valid(btt->nd_btt, super)) { if (remaining == btt->rawsize) { btt->init_state = INIT_NOTFOUND; dev_info(to_dev(arena), "No existing arenas\n"); |