diff mbox series

[1/1] dax: do not print error message for non-persistent memory block device

Message ID 20200819154236.24191-1-adrianhuang0701@gmail.com (mailing list archive)
State Mainlined
Commit c2affe920b0e0669650943ac086215cf6519be34
Headers show
Series [1/1] dax: do not print error message for non-persistent memory block device | expand

Commit Message

Adrian Huang Aug. 19, 2020, 3:42 p.m. UTC
From: Adrian Huang <ahuang12@lenovo.com>

From: Adrian Huang <ahuang12@lenovo.com>

Commit 231609785cbf ("dax: print error message by pr_info()
in __generic_fsdax_supported()") happens to print the following
error message during booting when the non-persistent memory block
devices are configured by device mapper. Those error messages are
caused by the variable 'dax_dev' is NULL. Users might be confused
with those error messages since they do not use the persistent
memory device. Moreover, users might scare about "what's wrong
with my disks" because they see the 'error' and 'failed' keywords.

  # dmesg | grep fail
  sdk3: error: dax access failed (-95)
  sdk3: error: dax access failed (-95)
  sdk3: error: dax access failed (-95)
  sdk3: error: dax access failed (-95)
  sdk3: error: dax access failed (-95)
  sdk3: error: dax access failed (-95)
  sdk3: error: dax access failed (-95)
  sdk3: error: dax access failed (-95)
  sdk3: error: dax access failed (-95)
  sdb3: error: dax access failed (-95)
  sdb3: error: dax access failed (-95)
  sdb3: error: dax access failed (-95)
  sdb3: error: dax access failed (-95)
  sdb3: error: dax access failed (-95)
  sdb3: error: dax access failed (-95)
  sdb3: error: dax access failed (-95)
  sdb3: error: dax access failed (-95)
  sdb3: error: dax access failed (-95)

  # lsblk
  NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
  sda               8:0    0   1.1T  0 disk
  ├─sda1            8:1    0   156M  0 part
  ├─sda2            8:2    0    40G  0 part
  └─sda3            8:3    0   1.1T  0 part
  sdb               8:16   0   1.1T  0 disk
  ├─sdb1            8:17   0   600M  0 part
  ├─sdb2            8:18   0     1G  0 part
  └─sdb3            8:19   0   1.1T  0 part
    ├─rhel00-swap 254:3    0     4G  0 lvm
    ├─rhel00-home 254:4    0     1T  0 lvm
    └─rhel00-root 254:5    0    50G  0 lvm
  sdc               8:32   0   1.1T  0 disk
  sdd               8:48   0   1.1T  0 disk
  sde               8:64   0   1.1T  0 disk
  sdf               8:80   0   1.1T  0 disk
  sdg               8:96   0   1.1T  0 disk
  sdh               8:112  0   3.3T  0 disk
  ├─sdh1            8:113  0   500M  0 part /boot/efi
  ├─sdh2            8:114  0    40G  0 part /
  ├─sdh3            8:115  0   2.9T  0 part /home
  └─sdh4            8:116  0 314.6G  0 part [SWAP]
  sdi               8:128  0   1.1T  0 disk
  sdj               8:144  0   3.3T  0 disk
  ├─sdj1            8:145  0   512M  0 part
  └─sdj2            8:146  0   3.3T  0 part
  sdk               8:160  0 119.2G  0 disk
  ├─sdk1            8:161  0   200M  0 part
  ├─sdk2            8:162  0     1G  0 part
  └─sdk3            8:163  0   118G  0 part
    ├─rhel-swap   254:0    0     4G  0 lvm
    ├─rhel-home   254:1    0    64G  0 lvm
    └─rhel-root   254:2    0    50G  0 lvm
  sdl               8:176  0 119.2G  0 disk

The call path is shown as follows:
  dm_table_determine_type
    dm_table_supports_dax
     device_supports_dax
       generic_fsdax_supported
        __generic_fsdax_supported

With the disk configuration listing from the command 'lsblk',
the member 'dev->dax_dev' of the block devices 'sdb3' and 'sdk3'
(configured by device mapper) is NULL in function
generic_fsdax_supported() because the member is configured in
function open_table_device().

To prevent the confusing error messages in this scenario (this is
normal behavior), just print those error messages by pr_debug()
by checking if dax_dev is NULL and the block device does not support
DAX.

Fixes: 231609785cbf ("dax: print error message by pr_info() in __generic_fsdax_supported()")
Cc: Coly Li <colyli@suse.de>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Alasdair Kergon <agk@redhat.com>
Cc: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Adrian Huang <ahuang12@lenovo.com>
---
 drivers/dax/super.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Coly Li Aug. 19, 2020, 3:54 p.m. UTC | #1
On 2020/8/19 23:42, Adrian Huang wrote:
> From: Adrian Huang <ahuang12@lenovo.com>
> 
> From: Adrian Huang <ahuang12@lenovo.com>
> 
> Commit 231609785cbf ("dax: print error message by pr_info()
> in __generic_fsdax_supported()") happens to print the following
> error message during booting when the non-persistent memory block
> devices are configured by device mapper. Those error messages are
> caused by the variable 'dax_dev' is NULL. Users might be confused
> with those error messages since they do not use the persistent
> memory device. Moreover, users might scare about "what's wrong
> with my disks" because they see the 'error' and 'failed' keywords.
> 
>   # dmesg | grep fail
>   sdk3: error: dax access failed (-95)
>   sdk3: error: dax access failed (-95)
>   sdk3: error: dax access failed (-95)
>   sdk3: error: dax access failed (-95)
>   sdk3: error: dax access failed (-95)
>   sdk3: error: dax access failed (-95)
>   sdk3: error: dax access failed (-95)
>   sdk3: error: dax access failed (-95)
>   sdk3: error: dax access failed (-95)
>   sdb3: error: dax access failed (-95)
>   sdb3: error: dax access failed (-95)
>   sdb3: error: dax access failed (-95)
>   sdb3: error: dax access failed (-95)
>   sdb3: error: dax access failed (-95)
>   sdb3: error: dax access failed (-95)
>   sdb3: error: dax access failed (-95)
>   sdb3: error: dax access failed (-95)
>   sdb3: error: dax access failed (-95)
> 
>   # lsblk
>   NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
>   sda               8:0    0   1.1T  0 disk
>   ├─sda1            8:1    0   156M  0 part
>   ├─sda2            8:2    0    40G  0 part
>   └─sda3            8:3    0   1.1T  0 part
>   sdb               8:16   0   1.1T  0 disk
>   ├─sdb1            8:17   0   600M  0 part
>   ├─sdb2            8:18   0     1G  0 part
>   └─sdb3            8:19   0   1.1T  0 part
>     ├─rhel00-swap 254:3    0     4G  0 lvm
>     ├─rhel00-home 254:4    0     1T  0 lvm
>     └─rhel00-root 254:5    0    50G  0 lvm
>   sdc               8:32   0   1.1T  0 disk
>   sdd               8:48   0   1.1T  0 disk
>   sde               8:64   0   1.1T  0 disk
>   sdf               8:80   0   1.1T  0 disk
>   sdg               8:96   0   1.1T  0 disk
>   sdh               8:112  0   3.3T  0 disk
>   ├─sdh1            8:113  0   500M  0 part /boot/efi
>   ├─sdh2            8:114  0    40G  0 part /
>   ├─sdh3            8:115  0   2.9T  0 part /home
>   └─sdh4            8:116  0 314.6G  0 part [SWAP]
>   sdi               8:128  0   1.1T  0 disk
>   sdj               8:144  0   3.3T  0 disk
>   ├─sdj1            8:145  0   512M  0 part
>   └─sdj2            8:146  0   3.3T  0 part
>   sdk               8:160  0 119.2G  0 disk
>   ├─sdk1            8:161  0   200M  0 part
>   ├─sdk2            8:162  0     1G  0 part
>   └─sdk3            8:163  0   118G  0 part
>     ├─rhel-swap   254:0    0     4G  0 lvm
>     ├─rhel-home   254:1    0    64G  0 lvm
>     └─rhel-root   254:2    0    50G  0 lvm
>   sdl               8:176  0 119.2G  0 disk
> 
> The call path is shown as follows:
>   dm_table_determine_type
>     dm_table_supports_dax
>      device_supports_dax
>        generic_fsdax_supported
>         __generic_fsdax_supported
> 
> With the disk configuration listing from the command 'lsblk',
> the member 'dev->dax_dev' of the block devices 'sdb3' and 'sdk3'
> (configured by device mapper) is NULL in function
> generic_fsdax_supported() because the member is configured in
> function open_table_device().
> 
> To prevent the confusing error messages in this scenario (this is
> normal behavior), just print those error messages by pr_debug()
> by checking if dax_dev is NULL and the block device does not support
> DAX.
> 
> Fixes: 231609785cbf ("dax: print error message by pr_info() in __generic_fsdax_supported()")
> Cc: Coly Li <colyli@suse.de>
> Cc: Dan Williams <dan.j.williams@intel.com>
> Cc: Alasdair Kergon <agk@redhat.com>
> Cc: Mike Snitzer <snitzer@redhat.com>
> Signed-off-by: Adrian Huang <ahuang12@lenovo.com>

It makes sense to me. Thanks for the fix up.

Acked-by: Coly Li <colyli@suse.de>


Coly Li


> ---
>  drivers/dax/super.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/dax/super.c b/drivers/dax/super.c
> index c82cbcb64202..32642634c1bb 100644
> --- a/drivers/dax/super.c
> +++ b/drivers/dax/super.c
> @@ -100,6 +100,12 @@ bool __generic_fsdax_supported(struct dax_device *dax_dev,
>  		return false;
>  	}
>  
> +	if (!dax_dev && !bdev_dax_supported(bdev, blocksize)) {
> +		pr_debug("%s: error: dax unsupported by block device\n",
> +				bdevname(bdev, buf));
> +		return false;
> +	}
> +
>  	id = dax_read_lock();
>  	len = dax_direct_access(dax_dev, pgoff, 1, &kaddr, &pfn);
>  	len2 = dax_direct_access(dax_dev, pgoff_end, 1, &end_kaddr, &end_pfn);
>
diff mbox series

Patch

diff --git a/drivers/dax/super.c b/drivers/dax/super.c
index c82cbcb64202..32642634c1bb 100644
--- a/drivers/dax/super.c
+++ b/drivers/dax/super.c
@@ -100,6 +100,12 @@  bool __generic_fsdax_supported(struct dax_device *dax_dev,
 		return false;
 	}
 
+	if (!dax_dev && !bdev_dax_supported(bdev, blocksize)) {
+		pr_debug("%s: error: dax unsupported by block device\n",
+				bdevname(bdev, buf));
+		return false;
+	}
+
 	id = dax_read_lock();
 	len = dax_direct_access(dax_dev, pgoff, 1, &kaddr, &pfn);
 	len2 = dax_direct_access(dax_dev, pgoff_end, 1, &end_kaddr, &end_pfn);