Commit 0595d539 authored by Vishal Verma's avatar Vishal Verma Committed by Dan Williams

libnvdimm, btt: refactor map entry operations with macros

Add helpers for converting a raw map entry to just the block number, or
either of the 'e' or 'z' flags in preparation for actually using the
error flag to mark blocks with media errors.
Signed-off-by: default avatarVishal Verma <vishal.l.verma@intel.com>
Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
parent 1db1f3ce
...@@ -106,7 +106,7 @@ static int btt_map_write(struct arena_info *arena, u32 lba, u32 mapping, ...@@ -106,7 +106,7 @@ static int btt_map_write(struct arena_info *arena, u32 lba, u32 mapping,
* This 'mapping' is supposed to be just the LBA mapping, without * This 'mapping' is supposed to be just the LBA mapping, without
* any flags set, so strip the flag bits. * any flags set, so strip the flag bits.
*/ */
mapping &= MAP_LBA_MASK; mapping = ent_lba(mapping);
ze = (z_flag << 1) + e_flag; ze = (z_flag << 1) + e_flag;
switch (ze) { switch (ze) {
...@@ -155,10 +155,10 @@ static int btt_map_read(struct arena_info *arena, u32 lba, u32 *mapping, ...@@ -155,10 +155,10 @@ static int btt_map_read(struct arena_info *arena, u32 lba, u32 *mapping,
raw_mapping = le32_to_cpu(in); raw_mapping = le32_to_cpu(in);
z_flag = (raw_mapping & MAP_TRIM_MASK) >> MAP_TRIM_SHIFT; z_flag = ent_z_flag(raw_mapping);
e_flag = (raw_mapping & MAP_ERR_MASK) >> MAP_ERR_SHIFT; e_flag = ent_e_flag(raw_mapping);
ze = (z_flag << 1) + e_flag; ze = (z_flag << 1) + e_flag;
postmap = raw_mapping & MAP_LBA_MASK; postmap = ent_lba(raw_mapping);
/* Reuse the {z,e}_flag variables for *trim and *error */ /* Reuse the {z,e}_flag variables for *trim and *error */
z_flag = 0; z_flag = 0;
......
...@@ -38,6 +38,10 @@ ...@@ -38,6 +38,10 @@
#define IB_FLAG_ERROR 0x00000001 #define IB_FLAG_ERROR 0x00000001
#define IB_FLAG_ERROR_MASK 0x00000001 #define IB_FLAG_ERROR_MASK 0x00000001
#define ent_lba(ent) (ent & MAP_LBA_MASK)
#define ent_e_flag(ent) (!!(ent & MAP_ERR_MASK))
#define ent_z_flag(ent) (!!(ent & MAP_TRIM_MASK))
enum btt_init_state { enum btt_init_state {
INIT_UNCHECKED = 0, INIT_UNCHECKED = 0,
INIT_NOTFOUND, INIT_NOTFOUND,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment