> On 14 Mar 2019, at 17.04, Igor Konopko <igor.j.konopko@xxxxxxxxx> wrote: > > In case when mapping fails (called from writer thread) due to lack of > lines, currently we are calling pblk_pipeline_stop(), which waits > for pending write IOs, so it will lead to the deadlock. Switching > to __pblk_pipeline_stop() in that case instead will fix that. > > Signed-off-by: Igor Konopko <igor.j.konopko@xxxxxxxxx> > --- > drivers/lightnvm/pblk-map.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/lightnvm/pblk-map.c b/drivers/lightnvm/pblk-map.c > index 5408e32..afc10306 100644 > --- a/drivers/lightnvm/pblk-map.c > +++ b/drivers/lightnvm/pblk-map.c > @@ -46,7 +46,7 @@ static int pblk_map_page_data(struct pblk *pblk, unsigned int sentry, > pblk_line_close_meta(pblk, prev_line); > > if (!line) { > - pblk_pipeline_stop(pblk); > + __pblk_pipeline_stop(pblk); > return -ENOSPC; > } > > -- > 2.9.5 Have you seeing this problem? Before checking if there is a line, we are closing metadata for the previous line, so all inflight I/Os should be clear. Can you develop on the case in which this would happen?
Attachment:
signature.asc
Description: Message signed with OpenPGP