if (unlikely(is_bad_pmem(&nsio->bb, sector, sz_align)))
return -EIO;
return memcpy_from_pmem(buf, nsio->addr + offset, size);
- } else {
-
- if (unlikely(is_bad_pmem(&nsio->bb, sector, sz_align))) {
- if (IS_ALIGNED(offset, 512) && IS_ALIGNED(size, 512)) {
- long cleared;
-
- cleared = nvdimm_clear_poison(&ndns->dev,
- offset, size);
- if (cleared != size) {
- size = cleared;
- rc = -EIO;
- }
-
- badblocks_clear(&nsio->bb, sector,
- cleared >> 9);
- } else
+ }
+
+ if (unlikely(is_bad_pmem(&nsio->bb, sector, sz_align))) {
+ if (IS_ALIGNED(offset, 512) && IS_ALIGNED(size, 512)) {
+ long cleared;
+
+ cleared = nvdimm_clear_poison(&ndns->dev, offset, size);
+ if (cleared != size) {
+ size = cleared;
rc = -EIO;
- }
+ }
- memcpy_to_pmem(nsio->addr + offset, buf, size);
- nvdimm_flush(to_nd_region(ndns->dev.parent));
+ badblocks_clear(&nsio->bb, sector, cleared >> 9);
+ } else
+ rc = -EIO;
}
+ memcpy_to_pmem(nsio->addr + offset, buf, size);
+ nvdimm_flush(to_nd_region(ndns->dev.parent));
+
return rc;
}