[dm-devel] flood of "dm-X: error: dax access failed" due to 5.9 commit 231609785cbfb

Coly Li colyli at suse.de
Thu Sep 3 05:05:13 UTC 2020


On 2020/9/3 00:51, Mike Snitzer wrote:
> On Wed, Sep 02 2020 at 12:46pm -0400,
> Coly Li <colyli at suse.de> wrote:
> 
>> On 2020/9/3 00:44, Mike Snitzer wrote:
>>> On Wed, Sep 02 2020 at 12:40pm -0400,
>>> Coly Li <colyli at suse.de> wrote:
>>>
>>>> On 2020/9/3 00:04, Mike Snitzer wrote:
>>>>> 5.9 commit 231609785cbfb ("dax: print error message by pr_info() in
>>>>> __generic_fsdax_supported()") switched from pr_debug() to pr_info().
>>>>>
>>>>> The justification in the commit header is really inadequate.  If there
>>>>> is a problem that you need to drill in on, repeat the testing after
>>>>> enabling the dynamic debugging.
>>>>>
>>>>> Otherwise, now all DM devices that aren't layered on DAX capable devices
>>>>> spew really confusing noise to users when they simply activate their
>>>>> non-DAX DM devices:
>>>>>
>>>>> [66567.129798] dm-6: error: dax access failed (-5)
>>>>> [66567.134400] dm-6: error: dax access failed (-5)
>>>>> [66567.139152] dm-6: error: dax access failed (-5)
>>>>> [66567.314546] dm-2: error: dax access failed (-95)
>>>>> [66567.319380] dm-2: error: dax access failed (-95)
>>>>> [66567.324254] dm-2: error: dax access failed (-95)
>>>>> [66567.479025] dm-2: error: dax access failed (-95)
>>>>> [66567.483713] dm-2: error: dax access failed (-95)
>>>>> [66567.488722] dm-2: error: dax access failed (-95)
>>>>> [66567.494061] dm-2: error: dax access failed (-95)
>>>>> [66567.498823] dm-2: error: dax access failed (-95)
>>>>> [66567.503693] dm-2: error: dax access failed (-95)
>>>>>
>>>>> commit 231609785cbfb must be reverted.
>>>>>
>>>>> Please advise, thanks.
>>>>
>>>> Adrian Huang from Lenovo posted a patch, which titled: dax: do not print
>>>> error message for non-persistent memory block device
>>>>
>>>> It fixes the issue, but no response for now. Maybe we should take this fix.
>>>
>>> OK, yes sounds like it.  It was merged and is commit c2affe920b0e066
>>> ("dax: do not print error message for non-persistent memory block
>>> device")
>>
>> Thanks for informing me this patch is merged, I am going to update my
>> local one :-)
> 
> So the thing is I'm running v5.9-rc3 (which includes this commit) but
> I'm still seeing all these warnings when I run the lvm2 testsuite.  The
> reason _seems_ to be because the lvm2 testsuite uses brd devices for
> test devices.  So there is something about the brd device that shows
> commit c2affe920b0e066 isn't enough :(

Could you please apply and test this attached patch based on v5.9-rc3 ?

It seems the pointer dax_dev of __generic_fsdax_supported() parameter is
not initialized (IMHO this is not a dm bug), therefore the && should be
|| to check the dax support state.

Also I add two pr_info() to print the variables value, let's see whether
my guess makes sense.

Thanks.

Coly Li

-------------- next part --------------
From 3714b91362669c4d3e281acfe197e922a1dd1b4a Mon Sep 17 00:00:00 2001
From: Coly Li <colyli at suse.de>
Date: Thu, 3 Sep 2020 12:25:13 +0800
Subject: [PATCH] dax: fix for do not print error message for non-persistent
 memory block device

When calling __generic_fsdax_supported(), a dax-unsupported device may
not have dax_dev as NULL. Therefore even dax_dev is not NULL, it is
still necessary to call bdev_dax_supported() to check whether the device
supports dax.

Signed-off-by: Coly Li <colyli at suse.de>
---
 drivers/dax/super.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/dax/super.c b/drivers/dax/super.c
index 32642634c1bb..a5bdfca0529a 100644
--- a/drivers/dax/super.c
+++ b/drivers/dax/super.c
@@ -100,7 +100,9 @@ bool __generic_fsdax_supported(struct dax_device *dax_dev,
 		return false;
 	}
 
-	if (!dax_dev && !bdev_dax_supported(bdev, blocksize)) {
+	pr_info("dax_dev: %p\n", dax_dev);
+	pr_info("bdev_dax_supported(): %d\n", bdev_dax_supported(bdev, blocksize));
+	if (!dax_dev || !bdev_dax_supported(bdev, blocksize)) {
 		pr_debug("%s: error: dax unsupported by block device\n",
 				bdevname(bdev, buf));
 		return false;
-- 
2.26.2



More information about the dm-devel mailing list