Fix added in 4.19-rc6:

commit 41c9b1be335b5afc3b5fb71c5d16f9d5939cd13f
Author: Dave Jiang <[email protected]>
Date: Mon Sep 10 16:18:29 2018 -0700

device-dax: Add missing address_space_operations

With address_space_operations missing for device dax, namely the
.set_page_dirty, we hit a kernel warning when running destructive
ndctl unit test: make TESTS=device-dax check

WARNING: CPU: 3 PID: 7380 at fs/buffer.c:581 __set_page_dirty+0xb1/0xc0

Setting address_space_operations to noop_set_page_dirty and
noop_invalidatepage for device dax to prevent fallback to
__set_page_dirty_buffers() and block_invalidatepage() respectively.

Fixes: 2232c6382a ("device-dax: Enable page_mapping()")

Acked-by: Jeff Moyer <[email protected]>
Reported-by: Vishal Verma <[email protected]>
Signed-off-by: Dave Jiang <[email protected]>
Signed-off-by: Dan Williams <[email protected]>

** Also affects: linux (Ubuntu)
   Importance: Undecided
       Status: New

** Changed in: linux (Ubuntu)
       Status: New => Fix Released

** Changed in: intel
       Status: New => Fix Released

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1801246

Title:
  [AEP]WARN triggered by the device-dax unit test with 4.19-rc1

Status in intel:
  Fix Released
Status in linux package in Ubuntu:
  Fix Released

Bug description:
  Description
  [ +0.003470] WARNING: CPU: 3 PID: 7380 at fs/buffer.c:581 
__set_page_dirty+0xb1/0xc0
  [ +0.001177] Modules linked in: nd_pmem(O) dax_pmem(O) device_dax(O) 
nd_btt(O) nd_e820(O) nfit(O) libnvdimm(O) nfit_test_iomap(O)
  [ 0.001941] CPU: 3 PID: 7380 Comm: lt-device-dax Tainted: G O 4.19.0-rc1 #3
  [ +0.001423] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 
rel-1.11.1-0-g0551a4be2c-prebuilt.qemu-project.org 04/01/2014
  [ +0.002023] RIP: 0010:__set_page_dirty+0xb1/0xc0
  [ +0.000789] Code: 80 00 5b 4c 89 e6 48 89 ef 5d 41 5c 41 5d 41 5e e9 a4 ac 
82 00 48 8b 00 f6 c4 02 74 d7 48 89 df e8 54 bb f6 ff 48 89 c6 eb ce <0f> 0b eb 
92 90 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 41 55
  [ +0.003122] RSP: 0018:ffffc90001bbba38 EFLAGS: 00010046
  [ +0.000911] RAX: 007fff8000000815 RBX: ffffea0008108000 RCX: eb851eb851eb851f
  [ +0.001212] RDX: 0000000000000000 RSI: ffff880310c51560 RDI: 0000000000000046
  [ +0.001203] RBP: ffff880310c51548 R08: 0000000000000000 R09: 0000000000000001
  [ +0.001220] R10: ffffc90001bbb9a8 R11: 000000000000b200 R12: 0000000000000246
  [ +0.001202] R13: ffff880310c51540 R14: 0000000000000001 R15: ffff88016dd68040
  [ +0.001205] FS: 00007f418f6cf780(0000) GS:ffff880311a00000(0000) 
knlGS:0000000000000000
  [ +0.001363] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
  [ +0.000975] CR2: 00007f418f6ee000 CR3: 00000001a1a36003 CR4: 00000000001606e0
  [ +0.001217] Call Trace:
  [ +0.000435] __set_page_dirty_buffers+0xad/0x100
  [ +0.000791] set_page_dirty_lock+0x41/0x60
  [ +0.000709] dio_bio_complete+0x12c/0x160
  [ +0.000693] ? do_blockdev_direct_IO+0x1c8b/0x2b60
  [ +0.000825] do_blockdev_direct_IO+0x1d29/0x2b60
  [ +0.000827] ? ext4_dio_get_block_unwritten_sync+0x50/0x50
  [ +0.000944] ? ext4_direct_IO+0x15a/0x790
  [ +0.000681] ext4_direct_IO+0x15a/0x790
  [ +0.000672] ? touch_atime+0xc6/0xd0
  [ +0.000621] generic_file_read_iter+0xbb/0xd40
  [ +0.000762] ? up_write+0x1c/0x80
  [ +0.000565] ? ext4_file_write_iter+0x20d/0x400
  [ +0.000789] __vfs_read+0x112/0x190
  [ +0.000619] vfs_read+0x9e/0x150
  [ +0.000418] ksys_pread64+0x74/0x90
  [ +0.000505] do_syscall_64+0x60/0x210
  [ +0.000466] entry_SYSCALL_64_after_hwframe+0x49/0xbe
  [ +0.000618] RIP: 0033:0x7f418e7a1f63
  [ +0.000437] Code: f3 a9 f2 ff e8 4e 5b 02 00 66 2e 0f 1f 84 00 00 00 00 00 
0f 1f 40 00 83 3d e9 d8 2d 00 00 75 13 49 89 ca b8 11 00 00 00 0f 05 <48> 3d 01 
f0 ff ff 73 34 c3 48 83 ec 08 e8 6b 15 02 00 48 89 04 24
  [ +0.002233] RSP: 002b:00007ffc3fb777e8 EFLAGS: 00000246 ORIG_RAX: 
0000000000000011
  [ +0.000916] RAX: ffffffffffffffda RBX: 00007f418f6ea000 RCX: 00007f418e7a1f63
  [ +0.000879] RDX: 0000000000001000 RSI: 00007f418f6ea000 RDI: 0000000000000005
  [ +0.000896] RBP: 0000000000000000 R08: 000000000000001b R09: 0000000000000000
  [ +0.000884] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000005
  [ +0.000879] R13: 0000000000000000 R14: 0000000000000004 R15: 0000000000002000
  [ +0.000889] irq event stamp: 136672
  [ +0.000443] hardirqs last enabled at (136671): [<ffffffff81b2b232>] 
_raw_spin_unlock_irqrestore+0x32/0x60
  [ +0.001185] hardirqs last disabled at (136672): [<ffffffff81b2b912>] 
_raw_spin_lock_irqsave+0x22/0x80
  [ +0.001120] softirqs last enabled at (136542): [<ffffffff81e0032e>] 
__do_softirq+0x32e/0x428
  [ +0.001028] softirqs last disabled at (136535): [<ffffffff810bd4e6>] 
irq_exit+0xf6/0x100
  [ +0.000995] --[ end trace 2dbcab5579c2e08f ]--

  $ git bisect log 
  git bisect start

  good: [021c91791a5e7e85c567452f1be3e4c2c6cb6063] Linux 4.18-rc3
  git bisect good 021c91791a5e7e85c567452f1be3e4c2c6cb6063
  bad: [c953cc987ab87d180e1d5de2f1c217abe33aac77] libnvdimm, pmem: Restore page 
attributes when clearing errors
  git bisect bad c953cc987ab87d180e1d5de2f1c217abe33aac77
  bad: [2fa147bdbf672c53386a8f5f2c7fe358004c3ef8] mm, dev_pagemap: Do not clear 
->mapping on final put
  git bisect bad 2fa147bdbf672c53386a8f5f2c7fe358004c3ef8
  bad: [35de299547d1c3300e078f9f7c6eb01dadae47f9] device-dax: Set page->index
  git bisect bad 35de299547d1c3300e078f9f7c6eb01dadae47f9
  bad: [2232c6382a453db73d2e723df1b52030066e135e] device-dax: Enable 
page_mapping()
  git bisect bad 2232c6382a453db73d2e723df1b52030066e135e
  good: [226ab561075f6f8f3cd5f7b3b7544f3997aab51f] device-dax: Convert to 
vmf_insert_mixed and vm_fault_t
  git bisect good 226ab561075f6f8f3cd5f7b3b7544f3997aab51f
  first bad commit: [2232c6382a453db73d2e723df1b52030066e135e] device-dax: 
Enable page_mapping()
  commit 2232c6382a453db73d2e723df1b52030066e135e
  Author: Dan Williams <[email protected]>
  Date: Fri Jul 13 21:49:40 2018 -0700

  device-dax: Enable page_mapping()

  In support of enabling memory_failure() handling for device-dax
  mappings, set the ->mapping association of pages backing device-dax
  mappings. The rmap implementation requires page_mapping() to return the
  address_space hosting the vmas that map the page.

  The ->mapping pointer is never cleared. There is no possibility for the
  page to become associated with another address_space while the device is
  enabled. When the device is disabled the 'struct page' array for the
  device is destroyed / later reinitialized to zero.

  Reviewed-by: Jan Kara <[email protected]>
  Signed-off-by: Dan Williams <[email protected]>
  Signed-off-by: Dave Jiang <[email protected]>

  
  Target Kernel: 4.19
  Target Release: 19.04

To manage notifications about this bug go to:
https://bugs.launchpad.net/intel/+bug/1801246/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to