> On 16 Jun 2018, at 00.27, Igor Konopko wrote:
>
> This series of patches introduce some more flexibility in pblk
> related to OOB meta:
> -ability to use different sizes of metadata (previously fixed 16b)
> -ability to use pblk on drives without metadata
> -ensuring that extended (interleaved) metadata is not in use
>
> I belive that most of this patches, maybe except of number 4 (Support
> for packed metadata) are rather simple, so waiting for comments
> especially about this one.
>
> Igor Konopko (5):
> lightnvm: pblk: Helpers for OOB metadata
> lightnvm: pblk: Remove resv field for sec meta
> lightnvm: Flexible DMA pool entry size
> lightnvm: pblk: Support for packed metadata in pblk.
> lightnvm: pblk: Disable interleaved metadata in pblk
>
> drivers/lightnvm/core.c | 33 ++-
> drivers/lightnvm/pblk-core.c | 86 +++-
> drivers/lightnvm/pblk-init.c | 52 +++-
> drivers/lightnvm/pblk-map.c | 21 ++
> drivers/lightnvm/pblk-rb.c | 3 ++
> drivers/lightnvm/pblk-read.c | 85 +--
> drivers/lightnvm/pblk-recovery.c | 67 +--
> drivers/lightnvm/pblk-sysfs.c| 7
> drivers/lightnvm/pblk-write.c| 22 ++
> drivers/lightnvm/pblk.h | 46 +++--
> drivers/nvme/host/lightnvm.c | 7 +++-
> include/linux/lightnvm.h | 9 +++--
> 12 files changed, 333 insertions(+), 105 deletions(-)
>
> --
> 2.14.3
I get a number of errors when running the series. A simple bisect points
to the first patch being the one introducing the (first) regression.
Here you have the trace attached. I could easily reproduce it mounting
ext4 and running a RocksDB's db_bench.
[ 80.302731] Workqueue: pblk-read-end-wq pblk_line_put_ws
[ 80.302733] RIP: 0010:__pblk_line_put+0xc3/0xd0
[ 80.302733] Code: 89 55 70 48 89 4b 20 48 89 43 28 48 89 10 83 45 64 01 c6
07 00 0f 1f 40 00 48 89 de 4c 89 ef 5b 5d 41 5c 41 5d e9 5d a5 00 00 <0f> 0b e9
60 ff ff ff 66 0f 1f 44 00 00 0f 1f 44 00 00 55 53 48 89
[ 80.302755] RSP: 0018:b17102733e40 EFLAGS: 00010293
[ 80.302756] RAX: RBX: 8d34529003e8 RCX: 8d3467068020
[ 80.302757] RDX: 0001 RSI: 8d34529003e8 RDI: 8d34529004a8
[ 80.302758] RBP: 8d34622ae800 R08: R09: 8080808080808080
[ 80.302758] R10: 0018 R11: fefefefefefefeff R12: 8d34529004a8
[ 80.302759] R13: R14: 8d346532c600 R15: 08d345f59990
[ 80.302760] FS: () GS:8d34778c()
knlGS:
[ 80.302761] CS: 0010 DS: ES: CR0: 80050033
[ 80.302762] CR2: 7f4d37e0 CR3: 00020780a002 CR4: 003606e0
[ 80.302763] DR0: DR1: DR2:
[ 80.302764] DR3: DR6: fffe0ff0 DR7: 0400
[ 80.302764] Call Trace:
[ 80.302768] pblk_line_put_ws+0x1a/0x30
[ 80.302771] process_one_work+0x15e/0x3d0
[ 80.302773] worker_thread+0x4c/0x440
[ 80.302774] kthread+0xf8/0x130
[ 80.302776] ? rescuer_thread+0x350/0x350
[ 80.302777] ? kthread_associate_blkcg+0x90/0x90
[ 80.302779] ret_from_fork+0x35/0x40
[ 80.302781] ---[ end trace c4ab4ef1527265f6 ]---
[ 81.551907] WARNING: CPU: 6 PID: 5045 at drivers/lightnvm/pblk-core.c:162
__pblk_map_invalidate+0x10b/0x130
[ 81.551908] Modules linked in:
[ 81.551910] CPU: 6 PID: 5045 Comm: rocksdb:bg0 Tainted: GW
4.17.0--00884b2fb689 #2569
[ 81.551911] Hardware name: Supermicro Super Server/X11SSH-F, BIOS 2.1
12/11/2017
[ 81.551912] RIP: 0010:__pblk_map_invalidate+0x10b/0x130
[ 81.551912] Code: 48 89 de 4c 89 e7 e8 f4 fd ff ff 49 89 c5 e9 62 ff ff ff
48 c7 c7 ec 8e 5e a4 c6 05 50 65 10 01 01 e8 29 eb 88 ff 0f 0b eb c5 <0f> 0b e9
1b ff ff ff c6 07 00 0f 1f 40 00 4c 89 e7 c6 07 00 0f 1f
[ 81.551927] RSP: 0018:b17106d23808 EFLAGS: 00010246
[ 81.551928] RAX: RBX: 8d34529003e8 RCX: 0300
[ 81.551929] RDX: 0001 RSI: 8d34529003e8 RDI: 8d34529004a8
[ 81.551929] RBP: 8d34529004a8 R08: 0018 R09: 8d345d6e96d0
[ 81.551930] R10: b17106d237c8 R11: 0040 R12: 8d34622ae800
[ 81.551930] R13: 0b40 R14: 8d34622aec10 R15: b1710615d7c0
[ 81.551931] FS: 7f4d6707e700() GS:8d347798()
knlGS:
[ 81.551932] CS: 0010 DS: ES: CR0: 80050033
[ 81.551932] CR2: 7f4d57e0 CR3: 00040c204006 CR4: 003606e0
[ 81.551933] DR0: DR1: DR2:
[ 81.551933] DR3: DR6: fffe0ff0 DR7: 0400
[ 81.551934] Call Trace:
[ 81.551937] pblk_update_map_dev+0x69/0x370
[ 81.551938] __pblk_rb_update_l2p+0x52/0x160
[ 81.551939]