All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Matias Bjørling" <mb@lightnvm.io>
To: "Javier González" <jg@lightnvm.io>
Cc: linux-kernel@vger.kernel.org, linux-block@vger.kernel.org
Subject: Re: [PATCH 1/4] lightnvm: add sync and close block I/O types
Date: Thu, 5 May 2016 12:08:40 +0200	[thread overview]
Message-ID: <572B1BA8.6070103@lightnvm.io> (raw)
In-Reply-To: <C8088E06-89AC-4B4A-B9D8-941A992C83C2@lightnvm.io>

On 05/05/2016 11:38 AM, Javier González wrote:
>
>> On 05 May 2016, at 11:21, Matias Bjørling <mb@lightnvm.io> wrote:
>>
>> On 05/04/2016 05:31 PM, Javier González wrote:
>>> Within a target, I/O requests stem from different paths, which might vary
>>> in terms of the data structures being allocated, context, etc. This
>>> might impact how the request is treated, or how memory is freed once
>>> the bio is completed.
>>>
>>> Add two different types of I/Os: (i) NVM_IOTYPE_SYNC, which indicates
>>> that the I/O is synchronous; and  (ii) NVM_IOTYPE_CLOSE_BLK, which
>>> indicates that the I/O closes the block to which all the ppas on the
>>> request belong to.
>>>
>>> Signed-off-by: Javier González <javier@cnexlabs.com>
>>> ---
>>>   include/linux/lightnvm.h | 2 ++
>>>   1 file changed, 2 insertions(+)
>>>
>>> diff --git a/include/linux/lightnvm.h b/include/linux/lightnvm.h
>>> index 29a6890..6c02209 100644
>>> --- a/include/linux/lightnvm.h
>>> +++ b/include/linux/lightnvm.h
>>> @@ -11,6 +11,8 @@ enum {
>>>
>>>   	NVM_IOTYPE_NONE = 0,
>>>   	NVM_IOTYPE_GC = 1,
>>> +	NVM_IOTYPE_SYNC = 2,
>>> +	NVM_IOTYPE_CLOSE_BLK = 4,
>>>   };
>>>
>>>   #define NVM_BLK_BITS (16)
>>
>> The sync should not be necessary when the read path is implemented
>> using bio_clone. Similarly for NVM_IOTYPE_CLOSE_BLK. The write
>> completion can be handled in the bio completion path.
>
> We need to know where the request comes from; we cannot do it just from
> having the bio. This is because we allocate different structures
> depending on the type of bio we send. It is not only which bio->end_io
> function we have, but which memory needs to be released. Sync is
> necessary for the read path when we have a partial bio (data both on
> write buffer and disk) that we need to fill up. Also for GC.. In this
> case, the bio is to be freed differently. In the case of close the case
> is similarly; we do not free memory on the end_io path, but on the caller.
>
> You can see how these flags are used on pblk. Maybe there is a better
> way of doing it that I could not see...
>

Use the bio completion path for both. For bio completion, free the data 
that is specific to the pblk flow and let the nvm_rq->end_io() 
completion path clean up the nvm_rq specific data. That will clean up 
the completion paths.

> Javier
>

      reply	other threads:[~2016-05-05 10:08 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-04 15:31 [PATCH 1/4] lightnvm: add sync and close block I/O types Javier González
2016-05-04 15:31 ` [PATCH 2/4] lightnvm: rename nr_pages to nr_ppas on nvm_rq Javier González
2016-05-05  9:34   ` Matias Bjørling
2016-05-04 15:31 ` [PATCH 3/4] lightnvm: eliminate redundant variable Javier González
2016-05-05  9:52   ` Matias Bjørling
2016-05-04 15:31 ` [PATCH 4/4] lightnvm: Precalculate max/min sectors per req Javier González
2016-05-05  9:54   ` Matias Bjørling
2016-05-05 10:02     ` Javier González
2016-05-05  9:21 ` [PATCH 1/4] lightnvm: add sync and close block I/O types Matias Bjørling
2016-05-05  9:38   ` Javier González
2016-05-05 10:08     ` Matias Bjørling [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=572B1BA8.6070103@lightnvm.io \
    --to=mb@lightnvm.io \
    --cc=jg@lightnvm.io \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.