public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Kani, Toshimitsu" <toshi.kani@hpe.com>
To: "dan.j.williams@intel.com" <dan.j.williams@intel.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"dave.jiang@intel.com" <dave.jiang@intel.com>,
	"linux-nvdimm@lists.01.org" <linux-nvdimm@ml01.01.org>
Subject: Re: [RFC PATCH] dax: add badblocks check to Device DAX
Date: Thu, 4 May 2017 14:08:12 +0000	[thread overview]
Message-ID: <1493906887.30303.57.camel@hpe.com> (raw)
In-Reply-To: <CAPcyv4i5_6gNRAipcuV2fk2OpfgXD1gY-Q-Zh-re7j=AODSLZA@mail.gmail.com>

On Wed, 2017-05-03 at 19:01 -0700, Dan Williams wrote:
> On Wed, May 3, 2017 at 4:36 PM, Kani, Toshimitsu <toshi.kani@hpe.com>
> wrote:
> > On Wed, 2017-05-03 at 17:25 -0600, Toshi Kani wrote:
> > > On Wed, 2017-05-03 at 16:08 -0700, Dan Williams wrote:
> > > > On Wed, May 3, 2017 at 3:51 PM, Dan Williams
> > > > <dan.j.williams@intel.com> wrote:
> > > > > On Wed, May 3, 2017 at 3:41 PM, Kani, Toshimitsu
> > > > > <toshi.kani@hpe.com> wrote:
> > > > > > On Wed, 2017-05-03 at 14:48 -0700, Dan Williams wrote:
> > > 
> > >  :
> > > > > 
> > > > > I believe we already have all the data needed to calculate
> > > > > the data offset. Given the following sysfs path:
> > > > > 
> > > > >     /sys/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0012:00/ndbus0/r
> > > > > egion1/dax1.1/dax/dax1.0
> > > > > 
> > > > > ...we can find the associated namespace device from that
> > > > > dax1.1.
> > > > > From there we have the base address of the namespace and the
> > > > > size device-dax instance.
> > > > > 
> > > > >     device_dax_data_offset == namespace_base + namespace_size
> > > > > -
> > > > > device_dax_size
> > > > 
> > > > Dave reminds me that we do have the data offset of the device-
> > > > dax instance at the libnvdimm level:
> > > > 
> > > >     /sys/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0012:00/ndbus0/reg
> > > > ion1/dax1.1/resource
> > > > 
> > > > ...in this example, which maps to ndctl_dax_get_resource().
> > > 
> > > Thanks for the info!  I noticed why I did not catch this info
> > > before.
> > > 
> > > # ll /dev/dax*
> > > crw------- 1 root root 251, 3 May  3 04:28 /dev/dax0.0
> > > 
> > > # pwd
> > > /sys/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0012:00/ndbus0/region0/d
> > > ax0.0
> > > 
> > > # grep . *
> > > align:2097152
> > > devtype:nd_dax
> > > modalias:nd:t7
> > > mode:none
> > > numa_node:0
> > > grep: power: Is a directory
> > > grep: resource: No such device or address
> > > grep: size: No such device or address
> > > grep: subsystem: Is a directory
> > > uevent:DEVTYPE=nd_dax
> > > uevent:MODALIAS=nd:t7
> > > 
> > > But I noticed that "resource" and "size" that are under
> > > ".../region0/dax0.1" work.  Is this intended?
> 
> You mean that region0/dax0.1 and region0/dax0.1/dax/dax0.0 are
> functional, but region0/dax0.0 is not? Yes, that is expected the
> libnvdimm "struct nd_dax" device is on a different device numbering
> scheme than the "struct dev_dax" instance. Depending on load and
> namespace reconfiguration order you can expect those names to not
> match. The dev_dax instance name is "dax region id"."sub-division
> instance"

Oh, I see. You are right. Looks like I can use the symbolic link under
"class/dax" to avoid this numbering issue.

# ll /sys/class/dax/dax0.0
lrwxrwxrwx 1 root root 0 May  4 02:55 /sys/class/dax/dax0.0 ->
../../devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0012:00/ndbus0/region0/dax0.1
/dax/dax0.0

> > 
> > Here is an output from dax0.1 (I removed the size value).  Noticed
> > that mode is different.
> > 
> > # pwd
> > /sys/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0012:00/ndbus0/region0/dax
> > 0.1
> > 
> > # grep . *
> > align:2097152
> > grep: dax: Is a directory
> > grep: dax_region: Is a directory
> > devtype:nd_dax
> > grep: driver: Is a directory
> > modalias:nd:t7
> > mode:pmem
> > namespace:namespace0.0
> > numa_node:0
> > grep: power: Is a directory
> > resource:0x250200000
> > size:(size value)
> > grep: subsystem: Is a directory
> > uevent:DEVTYPE=nd_dax
> > uevent:DRIVER=dax_pmem
> > uevent:MODALIAS=nd:t7
> > uuid:8c71811f-260d-4788-8487-db88d829d393
> 
> The "mode" in this instance is the mode for the struct page
> allocation, i.e. whether it is coming from main memory "mem" or the
> persistent memory itself "pmem" in this case.

Right. I was totally confused by the numbering of these files...

Thanks!
-Toshi

      reply	other threads:[~2017-05-04 14:08 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-03 15:31 [RFC PATCH] dax: add badblocks check to Device DAX Toshi Kani
2017-05-03 15:52 ` Dan Williams
2017-05-03 16:09   ` Kani, Toshimitsu
2017-05-03 16:30     ` Dan Williams
2017-05-03 18:46       ` Kani, Toshimitsu
2017-05-03 21:48         ` Dan Williams
2017-05-03 21:56           ` Dave Jiang
2017-05-03 22:41           ` Kani, Toshimitsu
2017-05-03 22:51             ` Dan Williams
2017-05-03 23:08               ` Dan Williams
2017-05-03 23:25                 ` Kani, Toshimitsu
2017-05-03 23:36                   ` Kani, Toshimitsu
2017-05-04  2:01                     ` Dan Williams
2017-05-04 14:08                       ` Kani, Toshimitsu [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1493906887.30303.57.camel@hpe.com \
    --to=toshi.kani@hpe.com \
    --cc=dan.j.williams@intel.com \
    --cc=dave.jiang@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nvdimm@ml01.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox