linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] lightnvm: pblk: add support for chunk metadata on erase
@ 2018-08-31 13:34 Javier González
  2018-08-31 13:34 ` [PATCH 1/4] lightnvm: use right address format on 1.2 path Javier González
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Javier González @ 2018-08-31 13:34 UTC (permalink / raw)
  To: mb; +Cc: linux-block, linux-kernel, Javier González

Matias,

This patchset implements support for retrieving chunk metadata when
submitting a reset/erase command. Patches 0 and 1 are small fixes that
can be directly merged into your patch:
  
  lightnvm: move bad block and chunk state logic to core

Also, note that these do not apply on top of your for-4.20/core due them
depending on patches that I sent before that you have not picked up yet.
You can see them though in for-4.20/pblk. I'll rebase as patches in the
list appear in your tree.

Thanks,
Javier

Javier González (4):
  lightnvm: use right address format on 1.2 path
  lightnvm: assign block address before slba
  lightnvm: pblk: add helper for printing chunk state
  lightnvm: pblk: retrieve chunk metadata on erase

 drivers/lightnvm/core.c      | 51 +++++++++++++++++++++++++++++++++++++++-----
 drivers/lightnvm/pblk-core.c | 47 ++++++++++++++++++++++++++++++----------
 drivers/lightnvm/pblk.h      |  9 ++++++++
 3 files changed, 91 insertions(+), 16 deletions(-)

-- 
2.7.4


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/4] lightnvm: use right address format on 1.2 path
  2018-08-31 13:34 [PATCH 0/4] lightnvm: pblk: add support for chunk metadata on erase Javier González
@ 2018-08-31 13:34 ` Javier González
  2018-08-31 13:34 ` [PATCH 2/4] lightnvm: assign block address before slba Javier González
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Javier González @ 2018-08-31 13:34 UTC (permalink / raw)
  To: mb; +Cc: linux-block, linux-kernel, Javier González

struct ppa_addr defines different address formats. When we are in the
1.2 path, use 1.2 addressing, even when the generic format works too.
This improves readability.

Signed-off-by: Javier González <javier@cnexlabs.com>
---
 drivers/lightnvm/core.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c
index f7154398ba38..e9f14c67f4f3 100644
--- a/drivers/lightnvm/core.c
+++ b/drivers/lightnvm/core.c
@@ -998,8 +998,8 @@ static int nvm_get_bb_meta(struct nvm_dev *dev, sector_t slba,
 				goto done;
 
 			ppa_gen.ppa = 0;
-			ppa_gen.a.ch = ch;
-			ppa_gen.a.lun = lun;
+			ppa_gen.g.ch = ch;
+			ppa_gen.g.lun = lun;
 			ppa_dev = generic_to_dev_addr(dev, ppa_gen);
 
 			ret = dev->ops->get_bb_tbl(dev, ppa_dev, blks);
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/4] lightnvm: assign block address before slba
  2018-08-31 13:34 [PATCH 0/4] lightnvm: pblk: add support for chunk metadata on erase Javier González
  2018-08-31 13:34 ` [PATCH 1/4] lightnvm: use right address format on 1.2 path Javier González
@ 2018-08-31 13:34 ` Javier González
  2018-09-04 10:09   ` Matias Bjørling
  2018-08-31 13:34 ` [PATCH 3/4] lightnvm: pblk: add helper for printing chunk state Javier González
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 10+ messages in thread
From: Javier González @ 2018-08-31 13:34 UTC (permalink / raw)
  To: mb; +Cc: linux-block, linux-kernel, Javier González

In 1.2, the chunk slba is set to the physical representation of the
block. Thus, assigning the block to the ppa must occur before the slba
is assign.

Signed-off-by: Javier González <javier@cnexlabs.com>
---
 drivers/lightnvm/core.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c
index e9f14c67f4f3..efb976a863d2 100644
--- a/drivers/lightnvm/core.c
+++ b/drivers/lightnvm/core.c
@@ -945,6 +945,8 @@ static int nvm_bb_to_chunk(struct nvm_dev *dev, struct ppa_addr ppa,
 			}
 		}
 
+		ppa.g.blk = blk;
+
 		meta->wp = 0;
 		meta->type = NVM_CHK_TP_W_SEQ;
 		meta->wi = 0;
@@ -952,7 +954,6 @@ static int nvm_bb_to_chunk(struct nvm_dev *dev, struct ppa_addr ppa,
 		meta->cnlb = dev->geo.clba;
 
 		if (blktype == NVM_BLK_T_FREE) {
-			ppa.a.blk = blk;
 			ret = nvm_bb_chunk_scan(dev, ppa, meta);
 			if (ret)
 				return ret;
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 3/4] lightnvm: pblk: add helper for printing chunk state
  2018-08-31 13:34 [PATCH 0/4] lightnvm: pblk: add support for chunk metadata on erase Javier González
  2018-08-31 13:34 ` [PATCH 1/4] lightnvm: use right address format on 1.2 path Javier González
  2018-08-31 13:34 ` [PATCH 2/4] lightnvm: assign block address before slba Javier González
@ 2018-08-31 13:34 ` Javier González
  2018-08-31 13:34 ` [PATCH 4/4] lightnvm: pblk: retrieve chunk metadata on erase Javier González
  2018-08-31 13:57 ` [PATCH 0/4] lightnvm: pblk: add support for " Matias Bjørling
  4 siblings, 0 replies; 10+ messages in thread
From: Javier González @ 2018-08-31 13:34 UTC (permalink / raw)
  To: mb; +Cc: linux-block, linux-kernel, Javier González

Implement pblk helper for printing chunk state.

Signed-off-by: Javier González <javier@cnexlabs.com>
---
 drivers/lightnvm/pblk.h | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/lightnvm/pblk.h b/drivers/lightnvm/pblk.h
index bc852bb9e3f0..5c35dcd57395 100644
--- a/drivers/lightnvm/pblk.h
+++ b/drivers/lightnvm/pblk.h
@@ -1239,6 +1239,15 @@ static inline int pblk_io_aligned(struct pblk *pblk, int nr_secs)
 	return !(nr_secs % pblk->min_write_pgs);
 }
 
+static inline void print_chunk(struct pblk *pblk, struct nvm_chk_meta *chk,
+			       char *msg, int error)
+{
+	pblk_err(pblk, "chunk: (%s: %x) s:%d,t:%d,wi:%d,slba:%llu,cnlb:%llu,wp:%llu\n",
+			msg, error,
+			chk->state, chk->type, chk->wi,
+			chk->slba, chk->cnlb, chk->wp);
+}
+
 #ifdef CONFIG_NVM_PBLK_DEBUG
 static inline void print_ppa(struct pblk *pblk, struct ppa_addr *p,
 			     char *msg, int error)
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 4/4] lightnvm: pblk: retrieve chunk metadata on erase
  2018-08-31 13:34 [PATCH 0/4] lightnvm: pblk: add support for chunk metadata on erase Javier González
                   ` (2 preceding siblings ...)
  2018-08-31 13:34 ` [PATCH 3/4] lightnvm: pblk: add helper for printing chunk state Javier González
@ 2018-08-31 13:34 ` Javier González
  2018-08-31 13:57 ` [PATCH 0/4] lightnvm: pblk: add support for " Matias Bjørling
  4 siblings, 0 replies; 10+ messages in thread
From: Javier González @ 2018-08-31 13:34 UTC (permalink / raw)
  To: mb; +Cc: linux-block, linux-kernel, Javier González

On the OCSSD 2.0 spec, the device populates the metadata pointer (if
provided) when a chunk is reset. Implement this path in pblk and use it
for sanity chunk checks.

For 1.2, reset the write pointer and the state on core so that the erase
path is transparent to pblk wrt OCSSD version.

Signed-off-by: Javier González <javier@cnexlabs.com>
---
 drivers/lightnvm/core.c      | 44 +++++++++++++++++++++++++++++++++++++++--
 drivers/lightnvm/pblk-core.c | 47 +++++++++++++++++++++++++++++++++-----------
 2 files changed, 78 insertions(+), 13 deletions(-)

diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c
index efb976a863d2..dceaae4e795f 100644
--- a/drivers/lightnvm/core.c
+++ b/drivers/lightnvm/core.c
@@ -750,9 +750,40 @@ int nvm_submit_io(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd)
 }
 EXPORT_SYMBOL(nvm_submit_io);
 
+/* Take only addresses in generic format */
+static void nvm_set_chunk_state_12(struct nvm_dev *dev, struct nvm_rq *rqd)
+{
+	struct ppa_addr *ppa_list = nvm_rq_to_ppa_list(rqd);
+	int i;
+
+	for (i = 0; i < rqd->nr_ppas; i++) {
+		struct ppa_addr ppa;
+		struct nvm_chk_meta *chunk;
+
+		chunk = ((struct nvm_chk_meta *)rqd->meta_list) + i;
+
+		if (rqd->error)
+			chunk->state = NVM_CHK_ST_OFFLINE;
+		else
+			chunk->state = NVM_CHK_ST_FREE;
+
+		chunk->wp = 0;
+		chunk->wi = 0;
+		chunk->type = NVM_CHK_TP_W_SEQ;
+		chunk->cnlb = dev->geo.clba;
+
+		/* recalculate slba for the chunk */
+		ppa = ppa_list[i];
+		ppa.g.pg = ppa.g.pl = ppa.g.sec = 0;
+
+		chunk->slba = generic_to_dev_addr(dev, ppa).ppa;
+	}
+}
+
 int nvm_submit_io_sync(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd)
 {
 	struct nvm_dev *dev = tgt_dev->parent;
+	struct nvm_geo *geo = &dev->geo;
 	int ret;
 
 	if (!dev->ops->submit_io_sync)
@@ -765,8 +796,12 @@ int nvm_submit_io_sync(struct nvm_tgt_dev *tgt_dev, struct nvm_rq *rqd)
 
 	/* In case of error, fail with right address format */
 	ret = dev->ops->submit_io_sync(dev, rqd);
+
 	nvm_rq_dev_to_tgt(tgt_dev, rqd);
 
+	if (geo->version == NVM_OCSSD_SPEC_12 && rqd->opcode == NVM_OP_ERASE)
+		nvm_set_chunk_state_12(dev, rqd);
+
 	return ret;
 }
 EXPORT_SYMBOL(nvm_submit_io_sync);
@@ -775,10 +810,15 @@ void nvm_end_io(struct nvm_rq *rqd)
 {
 	struct nvm_tgt_dev *tgt_dev = rqd->dev;
 
-	/* Convert address space */
-	if (tgt_dev)
+	if (tgt_dev) {
+		/* Convert address space */
 		nvm_rq_dev_to_tgt(tgt_dev, rqd);
 
+		if (tgt_dev->geo.version == NVM_OCSSD_SPEC_12 &&
+						rqd->opcode == NVM_OP_ERASE)
+			nvm_set_chunk_state_12(tgt_dev->parent, rqd);
+	}
+
 	if (rqd->end_io)
 		rqd->end_io(rqd);
 }
diff --git a/drivers/lightnvm/pblk-core.c b/drivers/lightnvm/pblk-core.c
index 9968100cb170..0bcea243db90 100644
--- a/drivers/lightnvm/pblk-core.c
+++ b/drivers/lightnvm/pblk-core.c
@@ -79,7 +79,7 @@ static void __pblk_end_io_erase(struct pblk *pblk, struct nvm_rq *rqd)
 {
 	struct nvm_tgt_dev *dev = pblk->dev;
 	struct nvm_geo *geo = &dev->geo;
-	struct nvm_chk_meta *chunk;
+	struct nvm_chk_meta *chunk, *dev_chunk;
 	struct pblk_line *line;
 	int pos;
 
@@ -89,22 +89,39 @@ static void __pblk_end_io_erase(struct pblk *pblk, struct nvm_rq *rqd)
 
 	atomic_dec(&line->left_seblks);
 
+	/* pblk submits a single erase per command */
+	dev_chunk = rqd->meta_list;
+
+	if (dev_chunk->slba != chunk->slba || dev_chunk->wp)
+		print_chunk(pblk, chunk, "corrupted erase chunk", 0);
+
+	memcpy(chunk, dev_chunk, sizeof(struct nvm_chk_meta));
+
 	if (rqd->error) {
 		trace_pblk_chunk_reset(pblk_disk_name(pblk),
 				&rqd->ppa_addr, PBLK_CHUNK_RESET_FAILED);
 
-		chunk->state = NVM_CHK_ST_OFFLINE;
+#ifdef CONFIG_NVM_PBLK_DEBUG
+		if (chunk->state != NVM_CHK_ST_OFFLINE)
+			print_chunk(pblk, chunk,
+					"corrupted erase chunk state", 0);
+#endif
 		pblk_mark_bb(pblk, line, rqd->ppa_addr);
 	} else {
 		trace_pblk_chunk_reset(pblk_disk_name(pblk),
 				&rqd->ppa_addr, PBLK_CHUNK_RESET_DONE);
 
-		chunk->state = NVM_CHK_ST_FREE;
+#ifdef CONFIG_NVM_PBLK_DEBUG
+		if (chunk->state != NVM_CHK_ST_FREE)
+			print_chunk(pblk, chunk,
+					"corrupted erase chunk state", 0);
+#endif
 	}
 
 	trace_pblk_chunk_state(pblk_disk_name(pblk), &rqd->ppa_addr,
 				chunk->state);
 
+	pblk_free_rqd_meta(pblk, rqd);
 	atomic_dec(&pblk->inflight_io);
 }
 
@@ -952,14 +969,16 @@ int pblk_line_emeta_read(struct pblk *pblk, struct pblk_line *line,
 	return ret;
 }
 
-static void pblk_setup_e_rq(struct pblk *pblk, struct nvm_rq *rqd,
-			    struct ppa_addr ppa)
+static int pblk_setup_e_rq(struct pblk *pblk, struct nvm_rq *rqd,
+			   struct ppa_addr ppa)
 {
 	rqd->opcode = NVM_OP_ERASE;
 	rqd->ppa_addr = ppa;
 	rqd->nr_ppas = 1;
 	rqd->is_seq = 1;
 	rqd->bio = NULL;
+
+	return pblk_alloc_rqd_meta(pblk, rqd);
 }
 
 static int pblk_blk_erase_sync(struct pblk *pblk, struct ppa_addr ppa)
@@ -967,7 +986,9 @@ static int pblk_blk_erase_sync(struct pblk *pblk, struct ppa_addr ppa)
 	struct nvm_rq rqd = {NULL};
 	int ret;
 
-	pblk_setup_e_rq(pblk, &rqd, ppa);
+	ret = pblk_setup_e_rq(pblk, &rqd, ppa);
+	if (ret)
+		return ret;
 
 	trace_pblk_chunk_reset(pblk_disk_name(pblk),
 				&ppa, PBLK_CHUNK_RESET_START);
@@ -1774,11 +1795,15 @@ void pblk_line_put_wq(struct kref *ref)
 int pblk_blk_erase_async(struct pblk *pblk, struct ppa_addr ppa)
 {
 	struct nvm_rq *rqd;
-	int err;
+	int ret;
 
 	rqd = pblk_alloc_rqd(pblk, PBLK_ERASE);
 
-	pblk_setup_e_rq(pblk, rqd, ppa);
+	ret = pblk_setup_e_rq(pblk, rqd, ppa);
+	if (ret) {
+		pblk_free_rqd(pblk, rqd, PBLK_ERASE);
+		return ret;
+	}
 
 	rqd->end_io = pblk_end_io_erase;
 	rqd->private = pblk;
@@ -1789,8 +1814,8 @@ int pblk_blk_erase_async(struct pblk *pblk, struct ppa_addr ppa)
 	/* The write thread schedules erases so that it minimizes disturbances
 	 * with writes. Thus, there is no need to take the LUN semaphore.
 	 */
-	err = pblk_submit_io(pblk, rqd);
-	if (err) {
+	ret = pblk_submit_io(pblk, rqd);
+	if (ret) {
 		struct nvm_tgt_dev *dev = pblk->dev;
 		struct nvm_geo *geo = &dev->geo;
 
@@ -1799,7 +1824,7 @@ int pblk_blk_erase_async(struct pblk *pblk, struct ppa_addr ppa)
 					pblk_ppa_to_pos(geo, ppa));
 	}
 
-	return err;
+	return ret;
 }
 
 struct pblk_line *pblk_line_get_data(struct pblk *pblk)
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/4] lightnvm: pblk: add support for chunk metadata on erase
  2018-08-31 13:34 [PATCH 0/4] lightnvm: pblk: add support for chunk metadata on erase Javier González
                   ` (3 preceding siblings ...)
  2018-08-31 13:34 ` [PATCH 4/4] lightnvm: pblk: retrieve chunk metadata on erase Javier González
@ 2018-08-31 13:57 ` Matias Bjørling
  2018-09-03  9:16   ` Javier Gonzalez
  4 siblings, 1 reply; 10+ messages in thread
From: Matias Bjørling @ 2018-08-31 13:57 UTC (permalink / raw)
  To: javier; +Cc: linux-block, linux-kernel, javier, hans.holmberg

On 08/31/2018 03:34 PM, Javier González wrote:
> Matias,
> 
> This patchset implements support for retrieving chunk metadata when
> submitting a reset/erase command. Patches 0 and 1 are small fixes that
> can be directly merged into your patch:
>    
>    lightnvm: move bad block and chunk state logic to core
> 
> Also, note that these do not apply on top of your for-4.20/core due them
> depending on patches that I sent before that you have not picked up yet.
> You can see them though in for-4.20/pblk. I'll rebase as patches in the
> list appear in your tree.

Thanks. It is really confusing when you guys maintains an implicit order 
and posts the patches separately. I will appreciate that patches that 
are related are posted together, such that I don't have to manually 
track what comes before another. That makes it less of a pain for me to 
keep track of and we can keep the reviews together.

This is the patches that I have in the pipeline (from before the e-mails 
from today):

   - This serie - Pending review
   - Serie: pblk: support variable OOB size - Waiting on review from Igor
   - lightnvm: pblk: recover open lines on 2.0 devices. Which doesn't 
apply due to the fixes to the pad distance patch.

> 
> Thanks,
> Javier
> 
> Javier González (4):
>    lightnvm: use right address format on 1.2 path
>    lightnvm: assign block address before slba
>    lightnvm: pblk: add helper for printing chunk state
>    lightnvm: pblk: retrieve chunk metadata on erase
> 
>   drivers/lightnvm/core.c      | 51 +++++++++++++++++++++++++++++++++++++++-----
>   drivers/lightnvm/pblk-core.c | 47 ++++++++++++++++++++++++++++++----------
>   drivers/lightnvm/pblk.h      |  9 ++++++++
>   3 files changed, 91 insertions(+), 16 deletions(-)
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/4] lightnvm: pblk: add support for chunk metadata on erase
  2018-08-31 13:57 ` [PATCH 0/4] lightnvm: pblk: add support for " Matias Bjørling
@ 2018-09-03  9:16   ` Javier Gonzalez
  2018-09-04  9:54     ` Matias Bjørling
  0 siblings, 1 reply; 10+ messages in thread
From: Javier Gonzalez @ 2018-09-03  9:16 UTC (permalink / raw)
  To: Matias Bjørling; +Cc: linux-block, linux-kernel, Hans Holmberg

[-- Attachment #1: Type: text/plain, Size: 1804 bytes --]

> On 31 Aug 2018, at 15.57, Matias Bjørling <mb@lightnvm.io> wrote:
> 
> On 08/31/2018 03:34 PM, Javier González wrote:
>> Matias,
>> This patchset implements support for retrieving chunk metadata when
>> submitting a reset/erase command. Patches 0 and 1 are small fixes that
>> can be directly merged into your patch:
>>      lightnvm: move bad block and chunk state logic to core
>> Also, note that these do not apply on top of your for-4.20/core due them
>> depending on patches that I sent before that you have not picked up yet.
>> You can see them though in for-4.20/pblk. I'll rebase as patches in the
>> list appear in your tree.
> 
> Thanks. It is really confusing when you guys maintains an implicit order and posts the patches separately. I will appreciate that patches that are related are posted together, such that I don't have to manually track what comes before another. That makes it less of a pain for me to keep track of and we can keep the reviews together.
> 
> This is the patches that I have in the pipeline (from before the e-mails from today):
> 
>  - This serie - Pending review
>  - Serie: pblk: support variable OOB size - Waiting on review from Igor
>  - lightnvm: pblk: recover open lines on 2.0 devices. Which doesn't apply due to the fixes to the pad distance patch.
> 

Yes, I know and I apologize - we should have a better flow. What do you
say that for windows like this, where we have a number of patches that
have dependencies that we post them in meaningful patchsets and point to
a branch where they are ordered, like in a PR? Then we can rebase and
propagate changes properly?

For this window, I'll rebase the rest of the patches in for-4.20/pblk on
top of your for-4.20/core, then we can propagate changes as they come.

Javier

[-- Attachment #2: Message signed with OpenPGP --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/4] lightnvm: pblk: add support for chunk metadata on erase
  2018-09-03  9:16   ` Javier Gonzalez
@ 2018-09-04  9:54     ` Matias Bjørling
  2018-09-04 17:16       ` Javier Gonzalez
  0 siblings, 1 reply; 10+ messages in thread
From: Matias Bjørling @ 2018-09-04  9:54 UTC (permalink / raw)
  To: javier; +Cc: linux-block, linux-kernel, hans.holmberg

On 09/03/2018 11:16 AM, Javier Gonzalez wrote:
>> On 31 Aug 2018, at 15.57, Matias Bjørling <mb@lightnvm.io> wrote:
>>
>> On 08/31/2018 03:34 PM, Javier González wrote:
>>> Matias,
>>> This patchset implements support for retrieving chunk metadata when
>>> submitting a reset/erase command. Patches 0 and 1 are small fixes that
>>> can be directly merged into your patch:
>>>       lightnvm: move bad block and chunk state logic to core
>>> Also, note that these do not apply on top of your for-4.20/core due them
>>> depending on patches that I sent before that you have not picked up yet.
>>> You can see them though in for-4.20/pblk. I'll rebase as patches in the
>>> list appear in your tree.
>>
>> Thanks. It is really confusing when you guys maintains an implicit order and posts the patches separately. I will appreciate that patches that are related are posted together, such that I don't have to manually track what comes before another. That makes it less of a pain for me to keep track of and we can keep the reviews together.
>>
>> This is the patches that I have in the pipeline (from before the e-mails from today):
>>
>>   - This serie - Pending review
>>   - Serie: pblk: support variable OOB size - Waiting on review from Igor
>>   - lightnvm: pblk: recover open lines on 2.0 devices. Which doesn't apply due to the fixes to the pad distance patch.
>>
> 
> Yes, I know and I apologize - we should have a better flow. What do you
> say that for windows like this, where we have a number of patches that
> have dependencies that we post them in meaningful patchsets and point to
> a branch where they are ordered, like in a PR? Then we can rebase and
> propagate changes properly?

I am with the patchset posted, that should have the order. I just wanted 
to mention it. One thing that would be good, if you do have patches you 
have upstream, feel free to push them in smaller increments, so we can 
pull them in as we go. Only a nitpick, it is obviously up to you guys 
how you want to do it :)

> 
> For this window, I'll rebase the rest of the patches in for-4.20/pblk on
> top of your for-4.20/core, then we can propagate changes as they come.
> 
> Javier
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/4] lightnvm: assign block address before slba
  2018-08-31 13:34 ` [PATCH 2/4] lightnvm: assign block address before slba Javier González
@ 2018-09-04 10:09   ` Matias Bjørling
  0 siblings, 0 replies; 10+ messages in thread
From: Matias Bjørling @ 2018-09-04 10:09 UTC (permalink / raw)
  To: javier; +Cc: linux-block, linux-kernel, javier

On 08/31/2018 03:34 PM, Javier González wrote:
> In 1.2, the chunk slba is set to the physical representation of the
> block. Thus, assigning the block to the ppa must occur before the slba
> is assign.
> 
> Signed-off-by: Javier González <javier@cnexlabs.com>
> ---
>   drivers/lightnvm/core.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c
> index e9f14c67f4f3..efb976a863d2 100644
> --- a/drivers/lightnvm/core.c
> +++ b/drivers/lightnvm/core.c
> @@ -945,6 +945,8 @@ static int nvm_bb_to_chunk(struct nvm_dev *dev, struct ppa_addr ppa,
>   			}
>   		}
>   
> +		ppa.g.blk = blk;
> +
>   		meta->wp = 0;
>   		meta->type = NVM_CHK_TP_W_SEQ;
>   		meta->wi = 0;
> @@ -952,7 +954,6 @@ static int nvm_bb_to_chunk(struct nvm_dev *dev, struct ppa_addr ppa,
>   		meta->cnlb = dev->geo.clba;
>   
>   		if (blktype == NVM_BLK_T_FREE) {
> -			ppa.a.blk = blk;
>   			ret = nvm_bb_chunk_scan(dev, ppa, meta);
>   			if (ret)
>   				return ret;
> 

Thanks. I've folded 1 & 2 into the bb patch.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/4] lightnvm: pblk: add support for chunk metadata on erase
  2018-09-04  9:54     ` Matias Bjørling
@ 2018-09-04 17:16       ` Javier Gonzalez
  0 siblings, 0 replies; 10+ messages in thread
From: Javier Gonzalez @ 2018-09-04 17:16 UTC (permalink / raw)
  To: Matias Bjørling; +Cc: linux-block, linux-kernel, Hans Holmberg

[-- Attachment #1: Type: text/plain, Size: 2242 bytes --]

> On 4 Sep 2018, at 02.54, Matias Bjørling <mb@lightnvm.io> wrote:
> 
> On 09/03/2018 11:16 AM, Javier Gonzalez wrote:
>>> On 31 Aug 2018, at 15.57, Matias Bjørling <mb@lightnvm.io> wrote:
>>> 
>>> On 08/31/2018 03:34 PM, Javier González wrote:
>>>> Matias,
>>>> This patchset implements support for retrieving chunk metadata when
>>>> submitting a reset/erase command. Patches 0 and 1 are small fixes that
>>>> can be directly merged into your patch:
>>>>      lightnvm: move bad block and chunk state logic to core
>>>> Also, note that these do not apply on top of your for-4.20/core due them
>>>> depending on patches that I sent before that you have not picked up yet.
>>>> You can see them though in for-4.20/pblk. I'll rebase as patches in the
>>>> list appear in your tree.
>>> 
>>> Thanks. It is really confusing when you guys maintains an implicit order and posts the patches separately. I will appreciate that patches that are related are posted together, such that I don't have to manually track what comes before another. That makes it less of a pain for me to keep track of and we can keep the reviews together.
>>> 
>>> This is the patches that I have in the pipeline (from before the e-mails from today):
>>> 
>>>  - This serie - Pending review
>>>  - Serie: pblk: support variable OOB size - Waiting on review from Igor
>>>  - lightnvm: pblk: recover open lines on 2.0 devices. Which doesn't apply due to the fixes to the pad distance patch.
>> Yes, I know and I apologize - we should have a better flow. What do you
>> say that for windows like this, where we have a number of patches that
>> have dependencies that we post them in meaningful patchsets and point to
>> a branch where they are ordered, like in a PR? Then we can rebase and
>> propagate changes properly?
> 
> I am with the patchset posted, that should have the order. I just
> wanted to mention it. One thing that would be good, if you do have
> patches you have upstream, feel free to push them in smaller
> increments, so we can pull them in as we go. Only a nitpick, it is
> obviously up to you guys how you want to do it :)
> 

Sure. If we can improve the workflow to make things easier for you, then
we should.


[-- Attachment #2: Message signed with OpenPGP --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2018-09-04 17:16 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-31 13:34 [PATCH 0/4] lightnvm: pblk: add support for chunk metadata on erase Javier González
2018-08-31 13:34 ` [PATCH 1/4] lightnvm: use right address format on 1.2 path Javier González
2018-08-31 13:34 ` [PATCH 2/4] lightnvm: assign block address before slba Javier González
2018-09-04 10:09   ` Matias Bjørling
2018-08-31 13:34 ` [PATCH 3/4] lightnvm: pblk: add helper for printing chunk state Javier González
2018-08-31 13:34 ` [PATCH 4/4] lightnvm: pblk: retrieve chunk metadata on erase Javier González
2018-08-31 13:57 ` [PATCH 0/4] lightnvm: pblk: add support for " Matias Bjørling
2018-09-03  9:16   ` Javier Gonzalez
2018-09-04  9:54     ` Matias Bjørling
2018-09-04 17:16       ` Javier Gonzalez

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).