• Linus Torvalds's avatar
    Merge tag 'libnvdimm-for-4.10' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm · 3be134e5
    Linus Torvalds authored
    Pull libnvdimm updates from Dan Williams:
     "The libnvdimm pull request is relatively small this time around due to
      some development topics being deferred to 4.11.
    
      As for this pull request the bulk of it has been in -next for several
      releases leading to one late fix being added (commit 868f036f
      ("libnvdimm: fix mishandled nvdimm_clear_poison() return value")). It
      has received a build success notification from the 0day-kbuild robot
      and passes the latest libnvdimm unit tests.
    
      Summary:
    
       - Dynamic label support: To date namespace label support has been
         limited to disambiguating cases where PMEM (direct load/store) and
         BLK (mmio aperture) accessed-capacity alias on the same DIMM. Since
         4.9 added support for multiple namespaces per PMEM-region there is
         value to support namespace labels even in the non-aliasing case.
         The presence of a valid namespace index block force-enables label
         support when the kernel would otherwise rely on region boundaries,
         and permits the region to be sub-divided.
    
       - Handle media errors in namespace metadata: Complement the error
         handling for media errors in namespace data areas with support for
         clearing errors on writes, and downgrading potential machine-check
         exceptions to simple i/o errors on read.
    
       - Device-DAX region attributes: Add 'align', 'id', and 'size' as
         attributes for device-dax regions. In particular this enables
         userspace tooling to generically size memory mapping and i/o
         operations. Prevent userspace from growing assumptions /
         dependencies about the parent device topology for a dax region. A
         libnvdimm namespace may not always be the parent device of a dax
         region.
    
       - Various cleanups and small fixes"
    
    * tag 'libnvdimm-for-4.10' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
      dax: add region 'id', 'size', and 'align' attributes
      libnvdimm: fix mishandled nvdimm_clear_poison() return value
      libnvdimm: replace mutex_is_locked() warnings with lockdep_assert_held
      libnvdimm, pfn: fix align attribute
      libnvdimm, e820: use module_platform_driver
      libnvdimm, namespace: use octal for permissions
      libnvdimm, namespace: avoid multiple sector calculations
      libnvdimm: remove else after return in nsio_rw_bytes()
      libnvdimm, namespace: fix the type of name variable
      libnvdimm: use consistent naming for request_mem_region()
      nvdimm: use the right length of "pmem"
      libnvdimm: check and clear poison before writing to pmem
      tools/testing/nvdimm: dynamic label support
      libnvdimm: allow a platform to force enable label support
      libnvdimm: use generic iostat interfaces
    3be134e5
dax.c 18.6 KB