mbox series

[v3,00/10] lightnvm: next set of improvements for 5.2

Message ID 20190327123901.12323-1-igor.j.konopko@intel.com (mailing list archive)
Headers show
Series lightnvm: next set of improvements for 5.2 | expand

Message

Igor Konopko March 27, 2019, 12:38 p.m. UTC
This is another set of fixes and improvements to both pblk and lightnvm
core. 

First & second patches are the most crutial, since they changes the approach
to the partial read path, so detailed review is needed especially here.

Other patches are my other findings related to some bugs or potential
improvements, mostly related to some corner cases.

Changes v2 -> v3;
-dropped some not needed patches
-dropped patches which were already pulled into for-5.2/core branch
-commit messages cleanup

Changes v1 -> v2:
-dropped some not needed patches
-review feedback incorporated for some of the patches
-partial read path changes patch splitted into two patches

Igor Konopko (10):
  lightnvm: pblk: IO path reorganization
  lightnvm: pblk: simplify partial read path
  lightnvm: pblk: propagate errors when reading meta
  lightnvm: pblk: recover only written metadata
  lightnvm: pblk: wait for inflight IOs in recovery
  lightnvm: pblk: remove internal IO timeout
  lightnvm: pblk: store multiple copies of smeta
  lightnvm: pblk: GC error handling
  lightnvm: pblk: use nvm_rq_to_ppa_list()
  lightnvm: track inflight target creations

 drivers/lightnvm/core.c          |  19 ++-
 drivers/lightnvm/pblk-cache.c    |   8 +-
 drivers/lightnvm/pblk-core.c     | 179 +++++++++++++++++----
 drivers/lightnvm/pblk-gc.c       |   5 +-
 drivers/lightnvm/pblk-init.c     |  37 +++--
 drivers/lightnvm/pblk-read.c     | 336 +++++++++++----------------------------
 drivers/lightnvm/pblk-recovery.c |  69 ++++----
 drivers/lightnvm/pblk-rl.c       |   3 +-
 drivers/lightnvm/pblk.h          |  31 ++--
 include/linux/lightnvm.h         |   2 +
 10 files changed, 343 insertions(+), 346 deletions(-)

Comments

Hans Holmberg April 3, 2019, 7:12 a.m. UTC | #1
On Wed, Mar 27, 2019 at 1:41 PM Igor Konopko <igor.j.konopko@intel.com> wrote:
>
> This is another set of fixes and improvements to both pblk and lightnvm
> core.
>
> First & second patches are the most crutial, since they changes the approach
> to the partial read path, so detailed review is needed especially here.
>
> Other patches are my other findings related to some bugs or potential
> improvements, mostly related to some corner cases.
>
> Changes v2 -> v3;
> -dropped some not needed patches
> -dropped patches which were already pulled into for-5.2/core branch
> -commit messages cleanup
>
> Changes v1 -> v2:
> -dropped some not needed patches
> -review feedback incorporated for some of the patches
> -partial read path changes patch splitted into two patches
>

Hi Igor,

I ran the quick xfstests and generic/247 hangs with this patchset on qemu:

FSTYP         -- xfs (non-debug)
PLATFORM      -- Linux/x86_64 u1804-qatd 5.0.0-rc6_for-5.2/core_igor_v3

generic/247 95s ...
<hang>

Note: If i run it with Matias 5.2 core branch with my biovec fix, it
completes successfully, but with this in dmesg:

[  358.028158] Page cache invalidation failure on direct I/O.
Possible data corruption due to collision with buffered I/O!
[  358.030768] File: /mnt/247 PID: 4431 Comm: dd

(I have not looked into that any further)

Best regards,
Hans


> Igor Konopko (10):
>   lightnvm: pblk: IO path reorganization
>   lightnvm: pblk: simplify partial read path
>   lightnvm: pblk: propagate errors when reading meta
>   lightnvm: pblk: recover only written metadata
>   lightnvm: pblk: wait for inflight IOs in recovery
>   lightnvm: pblk: remove internal IO timeout
>   lightnvm: pblk: store multiple copies of smeta
>   lightnvm: pblk: GC error handling
>   lightnvm: pblk: use nvm_rq_to_ppa_list()
>   lightnvm: track inflight target creations
>
>  drivers/lightnvm/core.c          |  19 ++-
>  drivers/lightnvm/pblk-cache.c    |   8 +-
>  drivers/lightnvm/pblk-core.c     | 179 +++++++++++++++++----
>  drivers/lightnvm/pblk-gc.c       |   5 +-
>  drivers/lightnvm/pblk-init.c     |  37 +++--
>  drivers/lightnvm/pblk-read.c     | 336 +++++++++++----------------------------
>  drivers/lightnvm/pblk-recovery.c |  69 ++++----
>  drivers/lightnvm/pblk-rl.c       |   3 +-
>  drivers/lightnvm/pblk.h          |  31 ++--
>  include/linux/lightnvm.h         |   2 +
>  10 files changed, 343 insertions(+), 346 deletions(-)
>
> --
> 2.9.5
>
Igor Konopko April 5, 2019, 6:31 a.m. UTC | #2
On 03.04.2019 09:12, Hans Holmberg wrote:
> On Wed, Mar 27, 2019 at 1:41 PM Igor Konopko <igor.j.konopko@intel.com> wrote:
>>
>> This is another set of fixes and improvements to both pblk and lightnvm
>> core.
>>
>> First & second patches are the most crutial, since they changes the approach
>> to the partial read path, so detailed review is needed especially here.
>>
>> Other patches are my other findings related to some bugs or potential
>> improvements, mostly related to some corner cases.
>>
>> Changes v2 -> v3;
>> -dropped some not needed patches
>> -dropped patches which were already pulled into for-5.2/core branch
>> -commit messages cleanup
>>
>> Changes v1 -> v2:
>> -dropped some not needed patches
>> -review feedback incorporated for some of the patches
>> -partial read path changes patch splitted into two patches
>>
> 
> Hi Igor,
> 
> I ran the quick xfstests and generic/247 hangs with this patchset on qemu:
> 
> FSTYP         -- xfs (non-debug)
> PLATFORM      -- Linux/x86_64 u1804-qatd 5.0.0-rc6_for-5.2/core_igor_v3
> 
> generic/247 95s ...
> <hang>
> 
> Note: If i run it with Matias 5.2 core branch with my biovec fix, it
> completes successfully, but with this in dmesg:
> 
> [  358.028158] Page cache invalidation failure on direct I/O.
> Possible data corruption due to collision with buffered I/O!
> [  358.030768] File: /mnt/247 PID: 4431 Comm: dd
> 
> (I have not looked into that any further)
> 

Thanks Hans for testing that and reporting back. Will definitely look 
into that and resubmit when fixed.
Igor

> Best regards,
> Hans
> 
> 
>> Igor Konopko (10):
>>    lightnvm: pblk: IO path reorganization
>>    lightnvm: pblk: simplify partial read path
>>    lightnvm: pblk: propagate errors when reading meta
>>    lightnvm: pblk: recover only written metadata
>>    lightnvm: pblk: wait for inflight IOs in recovery
>>    lightnvm: pblk: remove internal IO timeout
>>    lightnvm: pblk: store multiple copies of smeta
>>    lightnvm: pblk: GC error handling
>>    lightnvm: pblk: use nvm_rq_to_ppa_list()
>>    lightnvm: track inflight target creations
>>
>>   drivers/lightnvm/core.c          |  19 ++-
>>   drivers/lightnvm/pblk-cache.c    |   8 +-
>>   drivers/lightnvm/pblk-core.c     | 179 +++++++++++++++++----
>>   drivers/lightnvm/pblk-gc.c       |   5 +-
>>   drivers/lightnvm/pblk-init.c     |  37 +++--
>>   drivers/lightnvm/pblk-read.c     | 336 +++++++++++----------------------------
>>   drivers/lightnvm/pblk-recovery.c |  69 ++++----
>>   drivers/lightnvm/pblk-rl.c       |   3 +-
>>   drivers/lightnvm/pblk.h          |  31 ++--
>>   include/linux/lightnvm.h         |   2 +
>>   10 files changed, 343 insertions(+), 346 deletions(-)
>>
>> --
>> 2.9.5
>>
Matias Bjorling April 5, 2019, 1:40 p.m. UTC | #3
On 3/27/19 1:38 PM, Igor Konopko wrote:
> This is another set of fixes and improvements to both pblk and lightnvm
> core.
> 
> First & second patches are the most crutial, since they changes the approach
> to the partial read path, so detailed review is needed especially here.
> 
> Other patches are my other findings related to some bugs or potential
> improvements, mostly related to some corner cases.
> 
> Changes v2 -> v3;
> -dropped some not needed patches
> -dropped patches which were already pulled into for-5.2/core branch
> -commit messages cleanup
> 
> Changes v1 -> v2:
> -dropped some not needed patches
> -review feedback incorporated for some of the patches
> -partial read path changes patch splitted into two patches
> 
> Igor Konopko (10):
>    lightnvm: pblk: IO path reorganization
>    lightnvm: pblk: simplify partial read path
>    lightnvm: pblk: propagate errors when reading meta
>    lightnvm: pblk: recover only written metadata
>    lightnvm: pblk: wait for inflight IOs in recovery
>    lightnvm: pblk: remove internal IO timeout
>    lightnvm: pblk: store multiple copies of smeta
>    lightnvm: pblk: GC error handling
>    lightnvm: pblk: use nvm_rq_to_ppa_list()
>    lightnvm: track inflight target creations
> 
>   drivers/lightnvm/core.c          |  19 ++-
>   drivers/lightnvm/pblk-cache.c    |   8 +-
>   drivers/lightnvm/pblk-core.c     | 179 +++++++++++++++++----
>   drivers/lightnvm/pblk-gc.c       |   5 +-
>   drivers/lightnvm/pblk-init.c     |  37 +++--
>   drivers/lightnvm/pblk-read.c     | 336 +++++++++++----------------------------
>   drivers/lightnvm/pblk-recovery.c |  69 ++++----
>   drivers/lightnvm/pblk-rl.c       |   3 +-
>   drivers/lightnvm/pblk.h          |  31 ++--
>   include/linux/lightnvm.h         |   2 +
>   10 files changed, 343 insertions(+), 346 deletions(-)
> 

Thanks Igor. I've picked up 5,6, and 8.

Hans will be resend his previous patch to fix the bvec bug. Then we have 
time to get to the right solution without the stress of the -rc window.