1. 17 Oct, 2018 5 commits
  2. 12 Oct, 2018 6 commits
  3. 11 Oct, 2018 1 commit
    • Dan Williams's avatar
      libnvdimm, dimm: Maximize label transfer size · d11cf4a7
      Dan Williams authored
      Use kvzalloc() to bypass the arbitrary PAGE_SIZE limit of label transfer
      operations. Given the expense of calling into firmware, maximize the
      amount of label data we transfer per call to be up to the total label
      space if allowed by the firmware.
      
      Instead of limiting based on PAGE_SIZE we can instead simply limit the
      maximum size based on either the config_size int he case of the get
      operation, or the length of the write based on the set operation.
      
      On a system with 24 NVDIMM modules each with a config_size of 128K and a
      maximum transfer size of 64K - 4, this patch reduces the init time for the
      label data from around 24 seconds down to between 4-5 seconds.
      Reviewed-by: default avatarToshi Kani <toshi.kani@hpe.com>
      Signed-off-by: default avatarAlexander Duyck <alexander.h.duyck@linux.intel.com>
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      d11cf4a7
  4. 09 Oct, 2018 1 commit
  5. 02 Oct, 2018 1 commit
  6. 28 Sep, 2018 2 commits
    • Dan Williams's avatar
      libnvdimm, region: Fail badblocks listing for inactive regions · 5d394eee
      Dan Williams authored
      While experimenting with region driver loading the following backtrace
      was triggered:
      
       INFO: trying to register non-static key.
       the code is fine but needs lockdep annotation.
       turning off the locking correctness validator.
       [..]
       Call Trace:
        dump_stack+0x85/0xcb
        register_lock_class+0x571/0x580
        ? __lock_acquire+0x2ba/0x1310
        ? kernfs_seq_start+0x2a/0x80
        __lock_acquire+0xd4/0x1310
        ? dev_attr_show+0x1c/0x50
        ? __lock_acquire+0x2ba/0x1310
        ? kernfs_seq_start+0x2a/0x80
        ? lock_acquire+0x9e/0x1a0
        lock_acquire+0x9e/0x1a0
        ? dev_attr_show+0x1c/0x50
        badblocks_show+0x70/0x190
        ? dev_attr_show+0x1c/0x50
        dev_attr_show+0x1c/0x50
      
      This results from a missing successful call to devm_init_badblocks()
      from nd_region_probe(). Block attempts to show badblocks while the
      region is not enabled.
      
      Fixes: 6a6bef90 ("libnvdimm: add mechanism to publish badblocks...")
      Cc: <stable@vger.kernel.org>
      Reviewed-by: default avatarJohannes Thumshirn <jthumshirn@suse.de>
      Reviewed-by: default avatarDave Jiang <dave.jiang@intel.com>
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      5d394eee
    • Vishal Verma's avatar
      libnvdimm, pfn: during init, clear errors in the metadata area · 48af2f7e
      Vishal Verma authored
      If there are badblocks present in the 'struct page' area for pfn
      namespaces, until now, the only way to clear them has been to force the
      namespace into raw mode, clear the errors, and re-enable the fsdax mode.
      This is clunky, given that it should be easy enough for the pfn driver
      to do the same.
      
      Add a new helper that uses the most recently available badblocks list to
      check whether there are any badblocks that lie in the volatile struct
      page area. If so, before initializing the struct pages, send down
      targeted writes via nvdimm_write_bytes to write zeroes to the affected
      blocks, and thus clear errors.
      
      Cc: Dan Williams <dan.j.williams@intel.com>
      Signed-off-by: default avatarVishal Verma <vishal.l.verma@intel.com>
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      48af2f7e
  7. 26 Sep, 2018 3 commits
  8. 16 Sep, 2018 2 commits
  9. 15 Sep, 2018 8 commits
  10. 14 Sep, 2018 11 commits