[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Querying the size of devdax devices from userspace
From: |
Dan Williams |
Subject: |
Re: [Qemu-devel] Querying the size of devdax devices from userspace |
Date: |
Mon, 4 Feb 2019 00:06:32 -0800 |
On Sun, Feb 3, 2019 at 11:56 PM Stefan Hajnoczi <address@hidden> wrote:
>
> How can userspace applications query the size of devdax character
> devices?
>
> stat(1) doesn't know how large the device is:
>
> # stat /dev/dax0.0
> File: /dev/dax0.0
> Size: 0 Blocks: 0 IO Block: 4096 character special
> file
> Device: 6h/6d Inode: 56764 Links: 1 Device type: fa,d
>
> ndctl(1) finds out by digging in /sys:
>
> # ndctl list
> [
> {
> "dev":"namespace0.0",
> "mode":"devdax",
> "map":"dev",
> "size":2111832064,
> "uuid":"235acf4d-503f-46be-bf64-f26faf9777ef",
> "chardev":"dax0.0"
> }
> ]
>
> I'm not sure how to do it without enumerating all nvdimms in /sys. Is
> there a mapping from devdax major/minor number to a /sys path?
>
> The use case I have in mind is that QEMU currently takes the size as a
> command-line parameter. The failure mode is ugly when users get this
> value wrong: the guest gets a softlockup and there is no error message
> on the host side.
>
> I'd like QEMU to detect the size or at least reject size values that are
> too large. In order to do that userspace needs a convenient way of
> querying the size. Any ideas?
You're looking for /sys/dev/char. That will wake you from major:minor
to sysfs. Perhaps borrow fio's implementation for the same:
http://git.kernel.dk/cgit/fio/tree/engines/dev-dax.c#n258