linux-nvdimm.lists.01.org archive mirror
 help / color / mirror / Atom feed
* regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix detection of dax support for non-persistent memory block devices")
@ 2020-09-14 15:48 Mikulas Patocka
  2020-09-15  3:03 ` 回复:regression " colyli
  2020-09-15  8:03 ` [External] regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix detection of dax support for non-persistent memory block devices") Adrian Huang12
  0 siblings, 2 replies; 12+ messages in thread
From: Mikulas Patocka @ 2020-09-14 15:48 UTC (permalink / raw)
  To: Coly Li, Dan Williams, Dave Jiang
  Cc: Jan Kara, Adrian Huang, Mike Snitzer, Pankaj Gupta, linux-nvdimm

Hi

The patch 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix detection of 
dax support for non-persistent memory block devices") causes crash when 
attempting to mount the ext4 filesystem on /dev/pmem0 ("mkfs.ext4 
/dev/pmem0; mount -t ext4 /dev/pmem0 /mnt/test"). The device /dev/pmem0 is 
emulated using the "memmap" kernel parameter.

The patch causes infinite recursion and double-fault exception:

__generic_fsdax_supported
bdev_dax_supported
__bdev_dax_supported
dax_supported
dax_dev->ops->dax_supported
generic_fsdax_supported
__generic_fsdax_supported

Mikulas



[   17.500619] traps: PANIC: double fault, error_code: 0x0
[   17.500619] double fault: 0000 [#1] PREEMPT SMP
[   17.500620] CPU: 0 PID: 1326 Comm: mount Not tainted 5.9.0-rc1-bisect #10
[   17.500620] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
[   17.500621] RIP: 0010:__generic_fsdax_supported+0x6a/0x500
[   17.500622] Code: ff ff ff ff ff 7f 00 48 21 f3 48 01 c3 48 c1 e3 09 f6 c7 0e 0f 85 fa 01 00 00 48 85 ff 49 89 fd 74 11 be 00 10 00 00 4c 89 e7 <e8> b1 fe ff ff 84 c0 75 11 31 c0 48 83 c4 48 5b 5d 41 5c 41 5d 41
[   17.500623] RSP: 0018:ffff88940b4fdff8 EFLAGS: 00010286
[   17.500624] RAX: 0000000000000000 RBX: 00000007fffff000 RCX: 0000000000000000
[   17.500625] RDX: 0000000000001000 RSI: 0000000000001000 RDI: ffff88940b34c300
[   17.500625] RBP: 0000000000000000 R08: 0000000004000000 R09: 8080808080808080
[   17.500626] R10: 0000000000000000 R11: fefefefefefefeff R12: ffff88940b34c300
[   17.500626] R13: ffff88940b3dc000 R14: ffff88940badd000 R15: 0000000000000001
[   17.500627] FS:  00000000f7c25780(0000) GS:ffff88940fa00000(0000) knlGS:0000000000000000
[   17.500628] CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
[   17.500628] CR2: ffff88940b4fdfe8 CR3: 000000140bd15000 CR4: 00000000000006b0
[   17.500628] Call Trace:
[   17.500629] Modules linked in: uvesafb cfbfillrect cfbimgblt cn cfbcopyarea fb fbdev ipv6 tun autofs4 binfmt_misc configfs af_packet virtio_rng rng_core mousedev evdev pcspkr virtio_balloon button raid10 raid456 async_raid6_recov async_memcpy async_pq raid6_pq async_xor xor async_tx libcrc32c raid1 raid0 md_mod sd_mod t10_pi virtio_scsi virtio_net net_failover psmouse scsi_mod failover
[   17.500638] ---[ end trace 3c877fcb5b865459 ]---
[   17.500638] RIP: 0010:__generic_fsdax_supported+0x6a/0x500
[   17.500639] Code: ff ff ff ff ff 7f 00 48 21 f3 48 01 c3 48 c1 e3 09 f6 c7 0e 0f 85 fa 01 00 00 48 85 ff 49 89 fd 74 11 be 00 10 00 00 4c 89 e7 <e8> b1 fe ff ff 84 c0 75 11 31 c0 48 83 c4 48 5b 5d 41 5c 41 5d 41
[   17.500640] RSP: 0018:ffff88940b4fdff8 EFLAGS: 00010286
[   17.500641] RAX: 0000000000000000 RBX: 00000007fffff000 RCX: 0000000000000000
[   17.500641] RDX: 0000000000001000 RSI: 0000000000001000 RDI: ffff88940b34c300
[   17.500642] RBP: 0000000000000000 R08: 0000000004000000 R09: 8080808080808080
[   17.500642] R10: 0000000000000000 R11: fefefefefefefeff R12: ffff88940b34c300
[   17.500643] R13: ffff88940b3dc000 R14: ffff88940badd000 R15: 0000000000000001
[   17.500643] FS:  00000000f7c25780(0000) GS:ffff88940fa00000(0000) knlGS:0000000000000000
[   17.500644] CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
[   17.500644] CR2: ffff88940b4fdfe8 CR3: 000000140bd15000 CR4: 00000000000006b0
[   17.500645] Kernel panic - not syncing: Fatal exception in interrupt
[   17.500941] Kernel Offset: disabled
_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org

^ permalink raw reply	[flat|nested] 12+ messages in thread

* 回复:regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413  ("dax: fix detection of dax support for non-persistent memory block  devices")
  2020-09-14 15:48 regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix detection of dax support for non-persistent memory block devices") Mikulas Patocka
@ 2020-09-15  3:03 ` colyli
  2020-09-15  8:01   ` 回复:regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413?? ("dax: fix detection of dax support for non-persistent memory block?? devices") Jan Kara
  2020-09-15  8:03 ` [External] regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix detection of dax support for non-persistent memory block devices") Adrian Huang12
  1 sibling, 1 reply; 12+ messages in thread
From: colyli @ 2020-09-15  3:03 UTC (permalink / raw)
  To: Adrian Huang
  Cc: Jan Kara, Mike Snitzer, Pankaj Gupta, linux-nvdimm, Mikulas Patocka

[-- Attachment #1: Type: text/html, Size: 4915 bytes --]

[-- Attachment #2: Type: text/plain, Size: 167 bytes --]

_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 回复:regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413?? ("dax: fix detection of dax support for non-persistent memory block?? devices")
  2020-09-15  3:03 ` 回复:regression " colyli
@ 2020-09-15  8:01   ` Jan Kara
  2020-09-15 15:12     ` Verma, Vishal L
  2020-09-15 19:49     ` Dan Williams
  0 siblings, 2 replies; 12+ messages in thread
From: Jan Kara @ 2020-09-15  8:01 UTC (permalink / raw)
  To: colyli
  Cc: Adrian Huang, Jan Kara, Mike Snitzer, Pankaj Gupta, linux-nvdimm,
	Mikulas Patocka

Hi!

On Tue 15-09-20 11:03:29, colyli@suse.de wrote:
> Could you please to take a look? I am offline in the next two weeks.

I just had a look into this. IMHO the justification in 6180bb446a "dax: fix
detection of dax support for non-persistent memory block devices" is just
bogus and people got confused by the previous condition

if (!dax_dev && !bdev_dax_supported(bdev, blocksize))

which was bogus as well. bdev_dax_supported() always returns false for bdev
that doesn't have dax_dev (naturally so). So in the original condition
there was no point in calling bdev_dax_supported() if we know dax_dev is
NULL.

Then this was changed to:

if (!dax_dev || !bdev_dax_supported(bdev, blocksize))

which looks more sensible at the first sight. But only at the first sight -
if you look at wider context, __generic_fsdax_supported() is the bulk of
code that decides whether a device supports DAX so calling
bdev_dax_supported() from it indeed doesn't look as such a great idea. So
IMO the condition should be just:

if (!dax_dev)

I'll send a fix for this.

Also there's the process question how this patch could get to Linus when
any attempt to use DAX would immediately kill the machine like Mikulas
spotted. This shows the that patch was untested with DAX by anybody on the
path from the developer to Linus...

								Honza

> -------- 原始邮件 --------
> 发件人: Mikulas Patocka <mpatocka@redhat.com>
> 日期: 2020年9月14日周一半夜11:48
> 收件人: Coly Li <colyli@suse.de>, Dan Williams <dan.j.williams@intel.com>,
> Dave Jiang <dave.jiang@intel.com>
> 抄送: Jan Kara <jack@suse.com>, Vishal Verma <vishal.l.verma@intel.com>,
> Adrian Huang <ahuang12@lenovo.com>, Ira Weiny <ira.weiny@intel.com>, Mike
> Snitzer <snitzer@redhat.com>, Pankaj Gupta <pankaj.gupta.linux@gmail.com>,
> linux-nvdimm@lists.01.org
> 主题: regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413
> ("dax: fix detection of dax support for non-persistent memory block
> devices")
> 
>     Hi
> 
>     The patch 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix detection of
>     dax support for non-persistent memory block devices") causes crash when
>     attempting to mount the ext4 filesystem on /dev/pmem0 ("mkfs.ext4
>     /dev/pmem0; mount -t ext4 /dev/pmem0 /mnt/test"). The device /dev/pmem0 is
>     emulated using the "memmap" kernel parameter.
> 
>     The patch causes infinite recursion and double-fault exception:
> 
>     __generic_fsdax_supported
>     bdev_dax_supported
>     __bdev_dax_supported
>     dax_supported
>     dax_dev->ops->dax_supported
>     generic_fsdax_supported
>     __generic_fsdax_supported
> 
>     Mikulas
> 
> 
> 
>     [   17.500619] traps: PANIC: double fault, error_code: 0x0
>     [   17.500619] double fault: 0000 [#1] PREEMPT SMP
>     [   17.500620] CPU: 0 PID: 1326 Comm: mount Not tainted 5.9.0-rc1-bisect #
>     10
>     [   17.500620] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
>     [   17.500621] RIP: 0010:__generic_fsdax_supported+0x6a/0x500
>     [   17.500622] Code: ff ff ff ff ff 7f 00 48 21 f3 48 01 c3 48 c1 e3 09 f6
>     c7 0e 0f 85 fa 01 00 00 48 85 ff 49 89 fd 74 11 be 00 10 00 00 4c 89 e7
>     <e8> b1 fe ff ff 84 c0 75 11 31 c0 48 83 c4 48 5b 5d 41 5c 41 5d 41
>     [   17.500623] RSP: 0018:ffff88940b4fdff8 EFLAGS: 00010286
>     [   17.500624] RAX: 0000000000000000 RBX: 00000007fffff000 RCX:
>     0000000000000000
>     [   17.500625] RDX: 0000000000001000 RSI: 0000000000001000 RDI:
>     ffff88940b34c300
>     [   17.500625] RBP: 0000000000000000 R08: 0000000004000000 R09:
>     8080808080808080
>     [   17.500626] R10: 0000000000000000 R11: fefefefefefefeff R12:
>     ffff88940b34c300
>     [   17.500626] R13: ffff88940b3dc000 R14: ffff88940badd000 R15:
>     0000000000000001
>     [   17.500627] FS:  00000000f7c25780(0000) GS:ffff88940fa00000(0000)
>     knlGS:0000000000000000
>     [   17.500628] CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
>     [   17.500628] CR2: ffff88940b4fdfe8 CR3: 000000140bd15000 CR4:
>     00000000000006b0
>     [   17.500628] Call Trace:
>     [   17.500629] Modules linked in: uvesafb cfbfillrect cfbimgblt cn
>     cfbcopyarea fb fbdev ipv6 tun autofs4 binfmt_misc configfs af_packet
>     virtio_rng rng_core mousedev evdev pcspkr virtio_balloon button raid10
>     raid456 async_raid6_recov async_memcpy async_pq raid6_pq async_xor xor
>     async_tx libcrc32c raid1 raid0 md_mod sd_mod t10_pi virtio_scsi virtio_net
>     net_failover psmouse scsi_mod failover
>     [   17.500638] ---[ end trace 3c877fcb5b865459 ]---
>     [   17.500638] RIP: 0010:__generic_fsdax_supported+0x6a/0x500
>     [   17.500639] Code: ff ff ff ff ff 7f 00 48 21 f3 48 01 c3 48 c1 e3 09 f6
>     c7 0e 0f 85 fa 01 00 00 48 85 ff 49 89 fd 74 11 be 00 10 00 00 4c 89 e7
>     <e8> b1 fe ff ff 84 c0 75 11 31 c0 48 83 c4 48 5b 5d 41 5c 41 5d 41
>     [   17.500640] RSP: 0018:ffff88940b4fdff8 EFLAGS: 00010286
>     [   17.500641] RAX: 0000000000000000 RBX: 00000007fffff000 RCX:
>     0000000000000000
>     [   17.500641] RDX: 0000000000001000 RSI: 0000000000001000 RDI:
>     ffff88940b34c300
>     [   17.500642] RBP: 0000000000000000 R08: 0000000004000000 R09:
>     8080808080808080
>     [   17.500642] R10: 0000000000000000 R11: fefefefefefefeff R12:
>     ffff88940b34c300
>     [   17.500643] R13: ffff88940b3dc000 R14: ffff88940badd000 R15:
>     0000000000000001
>     [   17.500643] FS:  00000000f7c25780(0000) GS:ffff88940fa00000(0000)
>     knlGS:0000000000000000
>     [   17.500644] CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
>     [   17.500644] CR2: ffff88940b4fdfe8 CR3: 000000140bd15000 CR4:
>     00000000000006b0
>     [   17.500645] Kernel panic - not syncing: Fatal exception in interrupt
>     [   17.500941] Kernel Offset: disabled
> 
> 
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR
_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org

^ permalink raw reply	[flat|nested] 12+ messages in thread

* RE: [External]  regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix detection of dax support for non-persistent memory block devices")
  2020-09-14 15:48 regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix detection of dax support for non-persistent memory block devices") Mikulas Patocka
  2020-09-15  3:03 ` 回复:regression " colyli
@ 2020-09-15  8:03 ` Adrian Huang12
  2020-09-15  8:16   ` Adrian Huang12
  2020-09-15 11:09   ` Mikulas Patocka
  1 sibling, 2 replies; 12+ messages in thread
From: Adrian Huang12 @ 2020-09-15  8:03 UTC (permalink / raw)
  To: Mikulas Patocka, Coly Li, Dan Williams, Dave Jiang
  Cc: Jan Kara, Ira Weiny  <ira.weiny@intel.com>,
	Mike Snitzer <snitzer@redhat.com>,
	Pankaj Gupta, linux-nvdimm

Hi Mikulas,

> -----Original Message-----
> From: Mikulas Patocka <mpatocka@redhat.com>
> Sent: Monday, September 14, 2020 11:49 PM
> To: Coly Li <colyli@suse.de>; Dan Williams <dan.j.williams@intel.com>; Dave
> Jiang <dave.jiang@intel.com>
> Cc: Jan Kara <jack@suse.com>; Vishal Verma <vishal.l.verma@intel.com>;
> Adrian Huang12 <ahuang12@lenovo.com>; Ira Weiny <ira.weiny@intel.com>;
> Mike Snitzer <snitzer@redhat.com>; Pankaj Gupta
> <pankaj.gupta.linux@gmail.com>; linux-nvdimm@lists.01.org
> Subject: [External] regression caused by patch
> 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix detection of dax
> support for non-persistent memory block devices")
> 
> Hi
> 
> The patch 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix
> detection of dax support for non-persistent memory block devices") causes
> crash when attempting to mount the ext4 filesystem on /dev/pmem0
> ("mkfs.ext4 /dev/pmem0; mount -t ext4 /dev/pmem0 /mnt/test"). The device
> /dev/pmem0 is emulated using the "memmap" kernel parameter.
> 

Could you please test the following patch? Thanks.
https://lists.01.org/hyperkitty/list/linux-nvdimm@lists.01.org/thread/2JDBSE2WK75LSGCFEOY3RXRN3CNLBPB2/

 > The patch causes infinite recursion and double-fault exception:
> 
> __generic_fsdax_supported
> bdev_dax_supported
> __bdev_dax_supported
> dax_supported
> dax_dev->ops->dax_supported
> generic_fsdax_supported
> __generic_fsdax_supported
> 
> Mikulas
> 
> 
> 
> [   17.500619] traps: PANIC: double fault, error_code: 0x0
> [   17.500619] double fault: 0000 [#1] PREEMPT SMP
> [   17.500620] CPU: 0 PID: 1326 Comm: mount Not tainted 5.9.0-rc1-bisect #10
> [   17.500620] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
> [   17.500621] RIP: 0010:__generic_fsdax_supported+0x6a/0x500
> [   17.500622] Code: ff ff ff ff ff 7f 00 48 21 f3 48 01 c3 48 c1 e3 09 f6 c7 0e 0f
> 85 fa 01 00 00 48 85 ff 49 89 fd 74 11 be 00 10 00 00 4c 89 e7 <e8> b1 fe ff ff
> 84 c0 75 11 31 c0 48 83 c4 48 5b 5d 41 5c 41 5d 41
> [   17.500623] RSP: 0018:ffff88940b4fdff8 EFLAGS: 00010286
> [   17.500624] RAX: 0000000000000000 RBX: 00000007fffff000 RCX:
> 0000000000000000
> [   17.500625] RDX: 0000000000001000 RSI: 0000000000001000 RDI:
> ffff88940b34c300
> [   17.500625] RBP: 0000000000000000 R08: 0000000004000000 R09:
> 8080808080808080
> [   17.500626] R10: 0000000000000000 R11: fefefefefefefeff R12:
> ffff88940b34c300
> [   17.500626] R13: ffff88940b3dc000 R14: ffff88940badd000 R15:
> 0000000000000001
> [   17.500627] FS:  00000000f7c25780(0000) GS:ffff88940fa00000(0000)
> knlGS:0000000000000000
> [   17.500628] CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
> [   17.500628] CR2: ffff88940b4fdfe8 CR3: 000000140bd15000 CR4:
> 00000000000006b0
> [   17.500628] Call Trace:
> [   17.500629] Modules linked in: uvesafb cfbfillrect cfbimgblt cn cfbcopyarea fb
> fbdev ipv6 tun autofs4 binfmt_misc configfs af_packet virtio_rng rng_core
> mousedev evdev pcspkr virtio_balloon button raid10 raid456 async_raid6_recov
> async_memcpy async_pq raid6_pq async_xor xor async_tx libcrc32c raid1 raid0
> md_mod sd_mod t10_pi virtio_scsi virtio_net net_failover psmouse scsi_mod
> failover
> [   17.500638] ---[ end trace 3c877fcb5b865459 ]---
> [   17.500638] RIP: 0010:__generic_fsdax_supported+0x6a/0x500
> [   17.500639] Code: ff ff ff ff ff 7f 00 48 21 f3 48 01 c3 48 c1 e3 09 f6 c7 0e 0f
> 85 fa 01 00 00 48 85 ff 49 89 fd 74 11 be 00 10 00 00 4c 89 e7 <e8> b1 fe ff ff
> 84 c0 75 11 31 c0 48 83 c4 48 5b 5d 41 5c 41 5d 41
> [   17.500640] RSP: 0018:ffff88940b4fdff8 EFLAGS: 00010286
> [   17.500641] RAX: 0000000000000000 RBX: 00000007fffff000 RCX:
> 0000000000000000
> [   17.500641] RDX: 0000000000001000 RSI: 0000000000001000 RDI:
> ffff88940b34c300
> [   17.500642] RBP: 0000000000000000 R08: 0000000004000000 R09:
> 8080808080808080
> [   17.500642] R10: 0000000000000000 R11: fefefefefefefeff R12:
> ffff88940b34c300
> [   17.500643] R13: ffff88940b3dc000 R14: ffff88940badd000 R15:
> 0000000000000001
> [   17.500643] FS:  00000000f7c25780(0000) GS:ffff88940fa00000(0000)
> knlGS:0000000000000000
> [   17.500644] CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
> [   17.500644] CR2: ffff88940b4fdfe8 CR3: 000000140bd15000 CR4:
> 00000000000006b0
> [   17.500645] Kernel panic - not syncing: Fatal exception in interrupt
> [   17.500941] Kernel Offset: disabled
_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org

^ permalink raw reply	[flat|nested] 12+ messages in thread

* RE: [External]  regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix detection of dax support for non-persistent memory block devices")
  2020-09-15  8:03 ` [External] regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix detection of dax support for non-persistent memory block devices") Adrian Huang12
@ 2020-09-15  8:16   ` Adrian Huang12
  2020-09-15 11:09   ` Mikulas Patocka
  1 sibling, 0 replies; 12+ messages in thread
From: Adrian Huang12 @ 2020-09-15  8:16 UTC (permalink / raw)
  To: Mikulas Patocka, Coly Li, Dan Williams, Dave Jiang
  Cc: Jan Kara, Ira Weiny  <ira.weiny@intel.com>,
	Mike Snitzer <snitzer@redhat.com>,
	Pankaj Gupta, linux-nvdimm, Yi Zhang

> -----Original Message-----
> 
> Hi Mikulas,
> 
> > -----Original Message-----
> > From: Mikulas Patocka <mpatocka@redhat.com>
> >
> > Hi
> >
> > The patch 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix
> > detection of dax support for non-persistent memory block devices")
> > causes crash when attempting to mount the ext4 filesystem on
> > /dev/pmem0
> > ("mkfs.ext4 /dev/pmem0; mount -t ext4 /dev/pmem0 /mnt/test"). The
> > device
> > /dev/pmem0 is emulated using the "memmap" kernel parameter.
> >
> 
> Could you please test the following patch? Thanks.
> https://lists.01.org/hyperkitty/list/linux-
> nvdimm@lists.01.org/thread/2JDBSE2WK75LSGCFEOY3RXRN3CNLBPB2/
> 

BTW, I have verified this patch (https://lists.01.org/hyperkitty/list/linux-nvdimm@lists.01.org/thread/2JDBSE2WK75LSGCFEOY3RXRN3CNLBPB2/) on local box with the following tests:
1. mount fsdax pmem device
2. Run lvm2-testsuite
_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org

^ permalink raw reply	[flat|nested] 12+ messages in thread

* RE: [External]  regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix detection of dax support for non-persistent memory block devices")
  2020-09-15  8:03 ` [External] regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix detection of dax support for non-persistent memory block devices") Adrian Huang12
  2020-09-15  8:16   ` Adrian Huang12
@ 2020-09-15 11:09   ` Mikulas Patocka
  1 sibling, 0 replies; 12+ messages in thread
From: Mikulas Patocka @ 2020-09-15 11:09 UTC (permalink / raw)
  To: Adrian Huang12
  Cc: Coly Li, Jan Kara, Mike Snitzer, Pankaj Gupta, linux-nvdimm



On Tue, 15 Sep 2020, Adrian Huang12 wrote:

> Hi Mikulas,
> 
> > -----Original Message-----
> > From: Mikulas Patocka <mpatocka@redhat.com>
> > Sent: Monday, September 14, 2020 11:49 PM
> > To: Coly Li <colyli@suse.de>; Dan Williams <dan.j.williams@intel.com>; Dave
> > Jiang <dave.jiang@intel.com>
> > Cc: Jan Kara <jack@suse.com>; Vishal Verma <vishal.l.verma@intel.com>;
> > Adrian Huang12 <ahuang12@lenovo.com>; Ira Weiny <ira.weiny@intel.com>;
> > Mike Snitzer <snitzer@redhat.com>; Pankaj Gupta
> > <pankaj.gupta.linux@gmail.com>; linux-nvdimm@lists.01.org
> > Subject: [External] regression caused by patch
> > 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix detection of dax
> > support for non-persistent memory block devices")
> > 
> > Hi
> > 
> > The patch 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix
> > detection of dax support for non-persistent memory block devices") causes
> > crash when attempting to mount the ext4 filesystem on /dev/pmem0
> > ("mkfs.ext4 /dev/pmem0; mount -t ext4 /dev/pmem0 /mnt/test"). The device
> > /dev/pmem0 is emulated using the "memmap" kernel parameter.
> > 
> 
> Could you please test the following patch? Thanks.
> https://lists.01.org/hyperkitty/list/linux-nvdimm@lists.01.org/thread/2JDBSE2WK75LSGCFEOY3RXRN3CNLBPB2/

I tested it and it works.

Mikulas
_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 回复:regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413?? ("dax: fix detection of dax support for non-persistent memory block?? devices")
  2020-09-15  8:01   ` 回复:regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413?? ("dax: fix detection of dax support for non-persistent memory block?? devices") Jan Kara
@ 2020-09-15 15:12     ` Verma, Vishal L
  2020-09-16  9:17       ` Jan Kara
  2020-09-15 19:49     ` Dan Williams
  1 sibling, 1 reply; 12+ messages in thread
From: Verma, Vishal L @ 2020-09-15 15:12 UTC (permalink / raw)
  To: jack, colyli
  Cc: linux-nvdimm, jack, ahuang12, pankaj.gupta.linux, snitzer, mpatocka

On Tue, 2020-09-15 at 10:01 +0200, Jan Kara wrote:
> Hi!
> 
> On Tue 15-09-20 11:03:29, colyli@suse.de wrote:
> > Could you please to take a look? I am offline in the next two weeks.
> 
> I just had a look into this. IMHO the justification in 6180bb446a "dax: fix
> detection of dax support for non-persistent memory block devices" is just
> bogus and people got confused by the previous condition
> 
> if (!dax_dev && !bdev_dax_supported(bdev, blocksize))
> 
> which was bogus as well. bdev_dax_supported() always returns false for bdev
> that doesn't have dax_dev (naturally so). So in the original condition
> there was no point in calling bdev_dax_supported() if we know dax_dev is
> NULL.
> 
> Then this was changed to:
> 
> if (!dax_dev || !bdev_dax_supported(bdev, blocksize))
> 
> which looks more sensible at the first sight. But only at the first sight -
> if you look at wider context, __generic_fsdax_supported() is the bulk of
> code that decides whether a device supports DAX so calling
> bdev_dax_supported() from it indeed doesn't look as such a great idea. So
> IMO the condition should be just:
> 
> if (!dax_dev)
> 
> I'll send a fix for this.
> 
> Also there's the process question how this patch could get to Linus when
> any attempt to use DAX would immediately kill the machine like Mikulas
> spotted. This shows the that patch was untested with DAX by anybody on the
> path from the developer to Linus...

Hi Jan,

This was entirely my fault, and I apologize. I got confused as to what
state my branches were in, and I thought this had cleared our unit tests
etc, when it obviously hadn't. I'm going to take a harder look at my
personal branch/patch management process to make sure it doesn't happen
again!

Thanks for taking a look.

-Vishal

> 
> 								Honza
> 
> > -------- 原始邮件 --------
> > 发件人: Mikulas Patocka <mpatocka@redhat.com>
> > 日期: 2020年9月14日周一半夜11:48
> > 收件人: Coly Li <colyli@suse.de>, Dan Williams <dan.j.williams@intel.com>,
> > Dave Jiang <dave.jiang@intel.com>
> > 抄送: Jan Kara <jack@suse.com>, Vishal Verma <vishal.l.verma@intel.com>,
> > Adrian Huang <ahuang12@lenovo.com>, Ira Weiny <ira.weiny@intel.com>, Mike
> > Snitzer <snitzer@redhat.com>, Pankaj Gupta <pankaj.gupta.linux@gmail.com>,
> > linux-nvdimm@lists.01.org
> > 主题: regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413
> > ("dax: fix detection of dax support for non-persistent memory block
> > devices")
> > 
> >     Hi
> > 
> >     The patch 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix detection of
> >     dax support for non-persistent memory block devices") causes crash when
> >     attempting to mount the ext4 filesystem on /dev/pmem0 ("mkfs.ext4
> >     /dev/pmem0; mount -t ext4 /dev/pmem0 /mnt/test"). The device /dev/pmem0 is
> >     emulated using the "memmap" kernel parameter.
> > 
> >     The patch causes infinite recursion and double-fault exception:
> > 
> >     __generic_fsdax_supported
> >     bdev_dax_supported
> >     __bdev_dax_supported
> >     dax_supported
> >     dax_dev->ops->dax_supported
> >     generic_fsdax_supported
> >     __generic_fsdax_supported
> > 
> >     Mikulas
> > 
> > 
> > 
> >     [   17.500619] traps: PANIC: double fault, error_code: 0x0
> >     [   17.500619] double fault: 0000 [#1] PREEMPT SMP
> >     [   17.500620] CPU: 0 PID: 1326 Comm: mount Not tainted 5.9.0-rc1-bisect #
> >     10
> >     [   17.500620] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
> >     [   17.500621] RIP: 0010:__generic_fsdax_supported+0x6a/0x500
> >     [   17.500622] Code: ff ff ff ff ff 7f 00 48 21 f3 48 01 c3 48 c1 e3 09 f6
> >     c7 0e 0f 85 fa 01 00 00 48 85 ff 49 89 fd 74 11 be 00 10 00 00 4c 89 e7
> >     <e8> b1 fe ff ff 84 c0 75 11 31 c0 48 83 c4 48 5b 5d 41 5c 41 5d 41
> >     [   17.500623] RSP: 0018:ffff88940b4fdff8 EFLAGS: 00010286
> >     [   17.500624] RAX: 0000000000000000 RBX: 00000007fffff000 RCX:
> >     0000000000000000
> >     [   17.500625] RDX: 0000000000001000 RSI: 0000000000001000 RDI:
> >     ffff88940b34c300
> >     [   17.500625] RBP: 0000000000000000 R08: 0000000004000000 R09:
> >     8080808080808080
> >     [   17.500626] R10: 0000000000000000 R11: fefefefefefefeff R12:
> >     ffff88940b34c300
> >     [   17.500626] R13: ffff88940b3dc000 R14: ffff88940badd000 R15:
> >     0000000000000001
> >     [   17.500627] FS:  00000000f7c25780(0000) GS:ffff88940fa00000(0000)
> >     knlGS:0000000000000000
> >     [   17.500628] CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
> >     [   17.500628] CR2: ffff88940b4fdfe8 CR3: 000000140bd15000 CR4:
> >     00000000000006b0
> >     [   17.500628] Call Trace:
> >     [   17.500629] Modules linked in: uvesafb cfbfillrect cfbimgblt cn
> >     cfbcopyarea fb fbdev ipv6 tun autofs4 binfmt_misc configfs af_packet
> >     virtio_rng rng_core mousedev evdev pcspkr virtio_balloon button raid10
> >     raid456 async_raid6_recov async_memcpy async_pq raid6_pq async_xor xor
> >     async_tx libcrc32c raid1 raid0 md_mod sd_mod t10_pi virtio_scsi virtio_net
> >     net_failover psmouse scsi_mod failover
> >     [   17.500638] ---[ end trace 3c877fcb5b865459 ]---
> >     [   17.500638] RIP: 0010:__generic_fsdax_supported+0x6a/0x500
> >     [   17.500639] Code: ff ff ff ff ff 7f 00 48 21 f3 48 01 c3 48 c1 e3 09 f6
> >     c7 0e 0f 85 fa 01 00 00 48 85 ff 49 89 fd 74 11 be 00 10 00 00 4c 89 e7
> >     <e8> b1 fe ff ff 84 c0 75 11 31 c0 48 83 c4 48 5b 5d 41 5c 41 5d 41
> >     [   17.500640] RSP: 0018:ffff88940b4fdff8 EFLAGS: 00010286
> >     [   17.500641] RAX: 0000000000000000 RBX: 00000007fffff000 RCX:
> >     0000000000000000
> >     [   17.500641] RDX: 0000000000001000 RSI: 0000000000001000 RDI:
> >     ffff88940b34c300
> >     [   17.500642] RBP: 0000000000000000 R08: 0000000004000000 R09:
> >     8080808080808080
> >     [   17.500642] R10: 0000000000000000 R11: fefefefefefefeff R12:
> >     ffff88940b34c300
> >     [   17.500643] R13: ffff88940b3dc000 R14: ffff88940badd000 R15:
> >     0000000000000001
> >     [   17.500643] FS:  00000000f7c25780(0000) GS:ffff88940fa00000(0000)
> >     knlGS:0000000000000000
> >     [   17.500644] CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
> >     [   17.500644] CR2: ffff88940b4fdfe8 CR3: 000000140bd15000 CR4:
> >     00000000000006b0
> >     [   17.500645] Kernel panic - not syncing: Fatal exception in interrupt
> >     [   17.500941] Kernel Offset: disabled
> > 
> > 

_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 回复:regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413?? ("dax: fix detection of dax support for non-persistent memory block?? devices")
  2020-09-15  8:01   ` 回复:regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413?? ("dax: fix detection of dax support for non-persistent memory block?? devices") Jan Kara
  2020-09-15 15:12     ` Verma, Vishal L
@ 2020-09-15 19:49     ` Dan Williams
  2020-09-15 19:56       ` Mike Snitzer
  2020-09-16 11:24       ` Jan Kara
  1 sibling, 2 replies; 12+ messages in thread
From: Dan Williams @ 2020-09-15 19:49 UTC (permalink / raw)
  To: Jan Kara
  Cc: colyli, Adrian Huang, Jan Kara, Mike Snitzer, Pankaj Gupta,
	linux-nvdimm, Mikulas Patocka

On Tue, Sep 15, 2020 at 1:01 AM Jan Kara <jack@suse.cz> wrote:
>
> Hi!
>
> On Tue 15-09-20 11:03:29, colyli@suse.de wrote:
> > Could you please to take a look? I am offline in the next two weeks.
>
> I just had a look into this. IMHO the justification in 6180bb446a "dax: fix
> detection of dax support for non-persistent memory block devices" is just
> bogus and people got confused by the previous condition
>
> if (!dax_dev && !bdev_dax_supported(bdev, blocksize))
>
> which was bogus as well. bdev_dax_supported() always returns false for bdev
> that doesn't have dax_dev (naturally so). So in the original condition
> there was no point in calling bdev_dax_supported() if we know dax_dev is
> NULL.
>
> Then this was changed to:
>
> if (!dax_dev || !bdev_dax_supported(bdev, blocksize))
>
> which looks more sensible at the first sight. But only at the first sight -
> if you look at wider context, __generic_fsdax_supported() is the bulk of
> code that decides whether a device supports DAX so calling
> bdev_dax_supported() from it indeed doesn't look as such a great idea. So
> IMO the condition should be just:
>
> if (!dax_dev)
>
> I'll send a fix for this.

If you beat me to it, great, but you might be sleeping now. I agree
the original condition was bogus and looks to be a result of previous
non-thorough refactoring on my part. I think we can move that !dax_dev
into dax_supported(). I'll take a look.
_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 回复:regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413?? ("dax: fix detection of dax support for non-persistent memory block?? devices")
  2020-09-15 19:49     ` Dan Williams
@ 2020-09-15 19:56       ` Mike Snitzer
  2020-09-15 20:11         ` Dan Williams
  2020-09-16 11:24       ` Jan Kara
  1 sibling, 1 reply; 12+ messages in thread
From: Mike Snitzer @ 2020-09-15 19:56 UTC (permalink / raw)
  To: Dan Williams
  Cc: Jan Kara, colyli, Adrian Huang, Jan Kara, Pankaj Gupta,
	linux-nvdimm, Mikulas Patocka

On Tue, Sep 15 2020 at  3:49pm -0400,
Dan Williams <dan.j.williams@intel.com> wrote:

> On Tue, Sep 15, 2020 at 1:01 AM Jan Kara <jack@suse.cz> wrote:
> >
> > Hi!
> >
> > On Tue 15-09-20 11:03:29, colyli@suse.de wrote:
> > > Could you please to take a look? I am offline in the next two weeks.
> >
> > I just had a look into this. IMHO the justification in 6180bb446a "dax: fix
> > detection of dax support for non-persistent memory block devices" is just
> > bogus and people got confused by the previous condition
> >
> > if (!dax_dev && !bdev_dax_supported(bdev, blocksize))
> >
> > which was bogus as well. bdev_dax_supported() always returns false for bdev
> > that doesn't have dax_dev (naturally so). So in the original condition
> > there was no point in calling bdev_dax_supported() if we know dax_dev is
> > NULL.
> >
> > Then this was changed to:
> >
> > if (!dax_dev || !bdev_dax_supported(bdev, blocksize))
> >
> > which looks more sensible at the first sight. But only at the first sight -
> > if you look at wider context, __generic_fsdax_supported() is the bulk of
> > code that decides whether a device supports DAX so calling
> > bdev_dax_supported() from it indeed doesn't look as such a great idea. So
> > IMO the condition should be just:
> >
> > if (!dax_dev)
> >
> > I'll send a fix for this.
> 
> If you beat me to it, great, but you might be sleeping now. I agree
> the original condition was bogus and looks to be a result of previous
> non-thorough refactoring on my part. I think we can move that !dax_dev
> into dax_supported(). I'll take a look.

You trimmed the relevant portion of Jan's reply but: can you also
weigh-in one whether DM is using the wrong function to test for DAX?

Mike
_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 回复:regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413?? ("dax: fix detection of dax support for non-persistent memory block?? devices")
  2020-09-15 19:56       ` Mike Snitzer
@ 2020-09-15 20:11         ` Dan Williams
  0 siblings, 0 replies; 12+ messages in thread
From: Dan Williams @ 2020-09-15 20:11 UTC (permalink / raw)
  To: Mike Snitzer
  Cc: Jan Kara, colyli, Adrian Huang, Jan Kara, Pankaj Gupta,
	linux-nvdimm, Mikulas Patocka

On Tue, Sep 15, 2020 at 12:58 PM Mike Snitzer <snitzer@redhat.com> wrote:
>
> On Tue, Sep 15 2020 at  3:49pm -0400,
> Dan Williams <dan.j.williams@intel.com> wrote:
>
> > On Tue, Sep 15, 2020 at 1:01 AM Jan Kara <jack@suse.cz> wrote:
> > >
> > > Hi!
> > >
> > > On Tue 15-09-20 11:03:29, colyli@suse.de wrote:
> > > > Could you please to take a look? I am offline in the next two weeks.
> > >
> > > I just had a look into this. IMHO the justification in 6180bb446a "dax: fix
> > > detection of dax support for non-persistent memory block devices" is just
> > > bogus and people got confused by the previous condition
> > >
> > > if (!dax_dev && !bdev_dax_supported(bdev, blocksize))
> > >
> > > which was bogus as well. bdev_dax_supported() always returns false for bdev
> > > that doesn't have dax_dev (naturally so). So in the original condition
> > > there was no point in calling bdev_dax_supported() if we know dax_dev is
> > > NULL.
> > >
> > > Then this was changed to:
> > >
> > > if (!dax_dev || !bdev_dax_supported(bdev, blocksize))
> > >
> > > which looks more sensible at the first sight. But only at the first sight -
> > > if you look at wider context, __generic_fsdax_supported() is the bulk of
> > > code that decides whether a device supports DAX so calling
> > > bdev_dax_supported() from it indeed doesn't look as such a great idea. So
> > > IMO the condition should be just:
> > >
> > > if (!dax_dev)
> > >
> > > I'll send a fix for this.
> >
> > If you beat me to it, great, but you might be sleeping now. I agree
> > the original condition was bogus and looks to be a result of previous
> > non-thorough refactoring on my part. I think we can move that !dax_dev
> > into dax_supported(). I'll take a look.
>
> You trimmed the relevant portion of Jan's reply

Vishal already owned up to the process escape.

> but: can you also
> weigh-in one whether DM is using the wrong function to test for DAX?

That might be the original source of the bug because I would expect DM
to be using dax_supported() which should route to all the component
devices. I'll have a talk with whomever put that call to
generic_fsdax_supported() in DM:

git blame drivers/md/dm-table.c
...
7bf7eac8d6480 (Dan Williams         2019-05-16 13:26:29 -0700  865)
 return generic_fsdax_supported(dev->dax_dev, dev->bdev, blocksize,
...

oh...
_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 回复:regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413?? ("dax: fix detection of dax support for non-persistent memory block?? devices")
  2020-09-15 15:12     ` Verma, Vishal L
@ 2020-09-16  9:17       ` Jan Kara
  0 siblings, 0 replies; 12+ messages in thread
From: Jan Kara @ 2020-09-16  9:17 UTC (permalink / raw)
  To: Verma, Vishal L
  Cc: jack, colyli, linux-nvdimm, jack, ahuang12, pankaj.gupta.linux,
	snitzer, mpatocka

On Tue 15-09-20 15:12:21, Verma, Vishal L wrote:
> On Tue, 2020-09-15 at 10:01 +0200, Jan Kara wrote:
> > Hi!
> > 
> > On Tue 15-09-20 11:03:29, colyli@suse.de wrote:
> > > Could you please to take a look? I am offline in the next two weeks.
> > 
> > I just had a look into this. IMHO the justification in 6180bb446a "dax: fix
> > detection of dax support for non-persistent memory block devices" is just
> > bogus and people got confused by the previous condition
> > 
> > if (!dax_dev && !bdev_dax_supported(bdev, blocksize))
> > 
> > which was bogus as well. bdev_dax_supported() always returns false for bdev
> > that doesn't have dax_dev (naturally so). So in the original condition
> > there was no point in calling bdev_dax_supported() if we know dax_dev is
> > NULL.
> > 
> > Then this was changed to:
> > 
> > if (!dax_dev || !bdev_dax_supported(bdev, blocksize))
> > 
> > which looks more sensible at the first sight. But only at the first sight -
> > if you look at wider context, __generic_fsdax_supported() is the bulk of
> > code that decides whether a device supports DAX so calling
> > bdev_dax_supported() from it indeed doesn't look as such a great idea. So
> > IMO the condition should be just:
> > 
> > if (!dax_dev)
> > 
> > I'll send a fix for this.
> > 
> > Also there's the process question how this patch could get to Linus when
> > any attempt to use DAX would immediately kill the machine like Mikulas
> > spotted. This shows the that patch was untested with DAX by anybody on the
> > path from the developer to Linus...
> 
> This was entirely my fault, and I apologize. I got confused as to what
> state my branches were in, and I thought this had cleared our unit tests
> etc, when it obviously hadn't. I'm going to take a harder look at my
> personal branch/patch management process to make sure it doesn't happen
> again!

No worries. Bugs happen and this was still caught rather early without real
harm caused... I was just ranting to make sure testing does happen in the
future :)

								Honza

> > > -------- 原始邮件 --------
> > > 发件人: Mikulas Patocka <mpatocka@redhat.com>
> > > 日期: 2020年9月14日周一半夜11:48
> > > 收件人: Coly Li <colyli@suse.de>, Dan Williams <dan.j.williams@intel.com>,
> > > Dave Jiang <dave.jiang@intel.com>
> > > 抄送: Jan Kara <jack@suse.com>, Vishal Verma <vishal.l.verma@intel.com>,
> > > Adrian Huang <ahuang12@lenovo.com>, Ira Weiny <ira.weiny@intel.com>, Mike
> > > Snitzer <snitzer@redhat.com>, Pankaj Gupta <pankaj.gupta.linux@gmail.com>,
> > > linux-nvdimm@lists.01.org
> > > 主题: regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413
> > > ("dax: fix detection of dax support for non-persistent memory block
> > > devices")
> > > 
> > >     Hi
> > > 
> > >     The patch 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix detection of
> > >     dax support for non-persistent memory block devices") causes crash when
> > >     attempting to mount the ext4 filesystem on /dev/pmem0 ("mkfs.ext4
> > >     /dev/pmem0; mount -t ext4 /dev/pmem0 /mnt/test"). The device /dev/pmem0 is
> > >     emulated using the "memmap" kernel parameter.
> > > 
> > >     The patch causes infinite recursion and double-fault exception:
> > > 
> > >     __generic_fsdax_supported
> > >     bdev_dax_supported
> > >     __bdev_dax_supported
> > >     dax_supported
> > >     dax_dev->ops->dax_supported
> > >     generic_fsdax_supported
> > >     __generic_fsdax_supported
> > > 
> > >     Mikulas
> > > 
> > > 
> > > 
> > >     [   17.500619] traps: PANIC: double fault, error_code: 0x0
> > >     [   17.500619] double fault: 0000 [#1] PREEMPT SMP
> > >     [   17.500620] CPU: 0 PID: 1326 Comm: mount Not tainted 5.9.0-rc1-bisect #
> > >     10
> > >     [   17.500620] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
> > >     [   17.500621] RIP: 0010:__generic_fsdax_supported+0x6a/0x500
> > >     [   17.500622] Code: ff ff ff ff ff 7f 00 48 21 f3 48 01 c3 48 c1 e3 09 f6
> > >     c7 0e 0f 85 fa 01 00 00 48 85 ff 49 89 fd 74 11 be 00 10 00 00 4c 89 e7
> > >     <e8> b1 fe ff ff 84 c0 75 11 31 c0 48 83 c4 48 5b 5d 41 5c 41 5d 41
> > >     [   17.500623] RSP: 0018:ffff88940b4fdff8 EFLAGS: 00010286
> > >     [   17.500624] RAX: 0000000000000000 RBX: 00000007fffff000 RCX:
> > >     0000000000000000
> > >     [   17.500625] RDX: 0000000000001000 RSI: 0000000000001000 RDI:
> > >     ffff88940b34c300
> > >     [   17.500625] RBP: 0000000000000000 R08: 0000000004000000 R09:
> > >     8080808080808080
> > >     [   17.500626] R10: 0000000000000000 R11: fefefefefefefeff R12:
> > >     ffff88940b34c300
> > >     [   17.500626] R13: ffff88940b3dc000 R14: ffff88940badd000 R15:
> > >     0000000000000001
> > >     [   17.500627] FS:  00000000f7c25780(0000) GS:ffff88940fa00000(0000)
> > >     knlGS:0000000000000000
> > >     [   17.500628] CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
> > >     [   17.500628] CR2: ffff88940b4fdfe8 CR3: 000000140bd15000 CR4:
> > >     00000000000006b0
> > >     [   17.500628] Call Trace:
> > >     [   17.500629] Modules linked in: uvesafb cfbfillrect cfbimgblt cn
> > >     cfbcopyarea fb fbdev ipv6 tun autofs4 binfmt_misc configfs af_packet
> > >     virtio_rng rng_core mousedev evdev pcspkr virtio_balloon button raid10
> > >     raid456 async_raid6_recov async_memcpy async_pq raid6_pq async_xor xor
> > >     async_tx libcrc32c raid1 raid0 md_mod sd_mod t10_pi virtio_scsi virtio_net
> > >     net_failover psmouse scsi_mod failover
> > >     [   17.500638] ---[ end trace 3c877fcb5b865459 ]---
> > >     [   17.500638] RIP: 0010:__generic_fsdax_supported+0x6a/0x500
> > >     [   17.500639] Code: ff ff ff ff ff 7f 00 48 21 f3 48 01 c3 48 c1 e3 09 f6
> > >     c7 0e 0f 85 fa 01 00 00 48 85 ff 49 89 fd 74 11 be 00 10 00 00 4c 89 e7
> > >     <e8> b1 fe ff ff 84 c0 75 11 31 c0 48 83 c4 48 5b 5d 41 5c 41 5d 41
> > >     [   17.500640] RSP: 0018:ffff88940b4fdff8 EFLAGS: 00010286
> > >     [   17.500641] RAX: 0000000000000000 RBX: 00000007fffff000 RCX:
> > >     0000000000000000
> > >     [   17.500641] RDX: 0000000000001000 RSI: 0000000000001000 RDI:
> > >     ffff88940b34c300
> > >     [   17.500642] RBP: 0000000000000000 R08: 0000000004000000 R09:
> > >     8080808080808080
> > >     [   17.500642] R10: 0000000000000000 R11: fefefefefefefeff R12:
> > >     ffff88940b34c300
> > >     [   17.500643] R13: ffff88940b3dc000 R14: ffff88940badd000 R15:
> > >     0000000000000001
> > >     [   17.500643] FS:  00000000f7c25780(0000) GS:ffff88940fa00000(0000)
> > >     knlGS:0000000000000000
> > >     [   17.500644] CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
> > >     [   17.500644] CR2: ffff88940b4fdfe8 CR3: 000000140bd15000 CR4:
> > >     00000000000006b0
> > >     [   17.500645] Kernel panic - not syncing: Fatal exception in interrupt
> > >     [   17.500941] Kernel Offset: disabled
> > > 
> > > 
> 
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR
_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 回复:regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413?? ("dax: fix detection of dax support for non-persistent memory block?? devices")
  2020-09-15 19:49     ` Dan Williams
  2020-09-15 19:56       ` Mike Snitzer
@ 2020-09-16 11:24       ` Jan Kara
  1 sibling, 0 replies; 12+ messages in thread
From: Jan Kara @ 2020-09-16 11:24 UTC (permalink / raw)
  To: Dan Williams
  Cc: Jan Kara, colyli, Adrian Huang, Jan Kara, Mike Snitzer,
	Pankaj Gupta, linux-nvdimm, Mikulas Patocka

On Tue 15-09-20 12:49:10, Dan Williams wrote:
> On Tue, Sep 15, 2020 at 1:01 AM Jan Kara <jack@suse.cz> wrote:
> >
> > Hi!
> >
> > On Tue 15-09-20 11:03:29, colyli@suse.de wrote:
> > > Could you please to take a look? I am offline in the next two weeks.
> >
> > I just had a look into this. IMHO the justification in 6180bb446a "dax: fix
> > detection of dax support for non-persistent memory block devices" is just
> > bogus and people got confused by the previous condition
> >
> > if (!dax_dev && !bdev_dax_supported(bdev, blocksize))
> >
> > which was bogus as well. bdev_dax_supported() always returns false for bdev
> > that doesn't have dax_dev (naturally so). So in the original condition
> > there was no point in calling bdev_dax_supported() if we know dax_dev is
> > NULL.
> >
> > Then this was changed to:
> >
> > if (!dax_dev || !bdev_dax_supported(bdev, blocksize))
> >
> > which looks more sensible at the first sight. But only at the first sight -
> > if you look at wider context, __generic_fsdax_supported() is the bulk of
> > code that decides whether a device supports DAX so calling
> > bdev_dax_supported() from it indeed doesn't look as such a great idea. So
> > IMO the condition should be just:
> >
> > if (!dax_dev)
> >
> > I'll send a fix for this.
> 
> If you beat me to it, great, but you might be sleeping now. I agree
> the original condition was bogus and looks to be a result of previous
> non-thorough refactoring on my part. I think we can move that !dax_dev
> into dax_supported(). I'll take a look.

Adrian actually already submitted a fix here:

https://lore.kernel.org/linux-nvdimm/20200915075729.12518-1-adrianhuang0701@gmail.com/

so we're now refining the fix in that thread.

								Honza
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR
_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-leave@lists.01.org

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2020-09-16 11:24 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-14 15:48 regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix detection of dax support for non-persistent memory block devices") Mikulas Patocka
2020-09-15  3:03 ` 回复:regression " colyli
2020-09-15  8:01   ` 回复:regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413?? ("dax: fix detection of dax support for non-persistent memory block?? devices") Jan Kara
2020-09-15 15:12     ` Verma, Vishal L
2020-09-16  9:17       ` Jan Kara
2020-09-15 19:49     ` Dan Williams
2020-09-15 19:56       ` Mike Snitzer
2020-09-15 20:11         ` Dan Williams
2020-09-16 11:24       ` Jan Kara
2020-09-15  8:03 ` [External] regression caused by patch 6180bb446ab624b9ab8bf201ed251ca87f07b413 ("dax: fix detection of dax support for non-persistent memory block devices") Adrian Huang12
2020-09-15  8:16   ` Adrian Huang12
2020-09-15 11:09   ` Mikulas Patocka

This is a public inbox, see mirroring instructions
on how to clone and mirror all data and code used for this inbox