* [PATCH] [MTD] [OneNAND] Do not stop reading for ECC errors
@ 2007-11-02 11:30 Adrian Hunter
2007-11-05 13:25 ` Jörn Engel
0 siblings, 1 reply; 11+ messages in thread
From: Adrian Hunter @ 2007-11-02 11:30 UTC (permalink / raw)
To: linux-mtd; +Cc: kmpark
When an ECC error occurs, the read should be completed
anyway before returning -EBADMSG. Returning -EBADMSG
straight away is incorrect.
Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
---
drivers/mtd/onenand/onenand_base.c | 21 +++++++++++++++------
1 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c
index dd28355..616747c 100644
--- a/drivers/mtd/onenand/onenand_base.c
+++ b/drivers/mtd/onenand/onenand_base.c
@@ -855,6 +855,8 @@ static int onenand_read_ops_nolock(struct mtd_info *mtd, loff_t from,
this->command(mtd, ONENAND_CMD_READ, from, writesize);
ret = this->wait(mtd, FL_READING);
onenand_update_bufferram(mtd, from, !ret);
+ if (ret == -EBADMSG)
+ ret = 0;
}
}
@@ -913,6 +915,8 @@ static int onenand_read_ops_nolock(struct mtd_info *mtd, loff_t from,
/* Now wait for load */
ret = this->wait(mtd, FL_READING);
onenand_update_bufferram(mtd, from, !ret);
+ if (ret == -EBADMSG)
+ ret = 0;
}
/*
@@ -944,6 +948,7 @@ static int onenand_read_oob_nolock(struct mtd_info *mtd, loff_t from,
struct mtd_oob_ops *ops)
{
struct onenand_chip *this = mtd->priv;
+ struct mtd_ecc_stats stats;
int read = 0, thislen, column, oobsize;
size_t len = ops->ooblen;
mtd_oob_mode_t mode = ops->mode;
@@ -977,6 +982,8 @@ static int onenand_read_oob_nolock(struct mtd_info *mtd, loff_t from,
return -EINVAL;
}
+ stats = mtd->ecc_stats;
+
while (read < len) {
cond_resched();
@@ -988,18 +995,16 @@ static int onenand_read_oob_nolock(struct mtd_info *mtd, loff_t from,
onenand_update_bufferram(mtd, from, 0);
ret = this->wait(mtd, FL_READING);
- /* First copy data and check return value for ECC handling */
+ if (ret && ret != -EBADMSG) {
+ printk(KERN_ERR "onenand_read_oob_nolock: read failed = 0x%x\n", ret);
+ break;
+ }
if (mode == MTD_OOB_AUTO)
onenand_transfer_auto_oob(mtd, buf, column, thislen);
else
this->read_bufferram(mtd, ONENAND_SPARERAM, buf, column, thislen);
- if (ret) {
- printk(KERN_ERR "onenand_read_oob_nolock: read failed = 0x%x\n", ret);
- break;
- }
-
read += thislen;
if (read == len)
@@ -1016,6 +1021,10 @@ static int onenand_read_oob_nolock(struct mtd_info *mtd, loff_t from,
}
ops->oobretlen = read;
+
+ if (mtd->ecc_stats.failed - stats.failed)
+ return -EBADMSG;
+
return ret;
}
--
1.4.4.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH] [MTD] [OneNAND] Do not stop reading for ECC errors
2007-11-02 11:30 Adrian Hunter
@ 2007-11-05 13:25 ` Jörn Engel
2007-11-05 14:46 ` Adrian Hunter
0 siblings, 1 reply; 11+ messages in thread
From: Jörn Engel @ 2007-11-05 13:25 UTC (permalink / raw)
To: Adrian Hunter; +Cc: kmpark, linux-mtd
On Fri, 2 November 2007 13:30:04 +0200, Adrian Hunter wrote:
>
> diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c
> index dd28355..616747c 100644
> --- a/drivers/mtd/onenand/onenand_base.c
> +++ b/drivers/mtd/onenand/onenand_base.c
> @@ -855,6 +855,8 @@ static int onenand_read_ops_nolock(struct mtd_info *mtd, loff_t from,
> this->command(mtd, ONENAND_CMD_READ, from, writesize);
> ret = this->wait(mtd, FL_READING);
> onenand_update_bufferram(mtd, from, !ret);
> + if (ret == -EBADMSG)
> + ret = 0;
Why is -EBADMSG dropped here?
> @@ -988,18 +995,16 @@ static int onenand_read_oob_nolock(struct mtd_info *mtd, loff_t from,
> onenand_update_bufferram(mtd, from, 0);
>
> ret = this->wait(mtd, FL_READING);
> - /* First copy data and check return value for ECC handling */
> + if (ret && ret != -EBADMSG) {
> + printk(KERN_ERR "onenand_read_oob_nolock: read failed = 0x%x\n", ret);
> + break;
> + }
What about -EUCLEAN?
Jörn
--
It is better to die of hunger having lived without grief and fear,
than to live with a troubled spirit amid abundance.
-- Epictetus
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] [MTD] [OneNAND] Do not stop reading for ECC errors
2007-11-05 13:25 ` Jörn Engel
@ 2007-11-05 14:46 ` Adrian Hunter
2007-11-05 16:23 ` Jörn Engel
0 siblings, 1 reply; 11+ messages in thread
From: Adrian Hunter @ 2007-11-05 14:46 UTC (permalink / raw)
To: ext Jörn Engel; +Cc: linux-mtd, kmpark
ext Jörn Engel wrote:
> On Fri, 2 November 2007 13:30:04 +0200, Adrian Hunter wrote:
>> diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c
>> index dd28355..616747c 100644
>> --- a/drivers/mtd/onenand/onenand_base.c
>> +++ b/drivers/mtd/onenand/onenand_base.c
>> @@ -855,6 +855,8 @@ static int onenand_read_ops_nolock(struct mtd_info *mtd, loff_t from,
>> this->command(mtd, ONENAND_CMD_READ, from, writesize);
>> ret = this->wait(mtd, FL_READING);
>> onenand_update_bufferram(mtd, from, !ret);
>> + if (ret == -EBADMSG)
>> + ret = 0;
>
> Why is -EBADMSG dropped here?
-EBADMSG is an ECC error.
ret must be non-zero to indicate that the bufferram is invalid. Otherwise
if we read from the same location again, the data would be taken from bufferram
and no ECC error would be reported. However we need to keep reading (see nand_base.c)
so ret is set to zero as though no error occured. Finally mtd->ecc_stats.failed
is examined to determine ECC errors. i.e.
static int onenand_read(struct mtd_info *mtd, loff_t from, size_t len,
size_t *retlen, u_char *buf)
{
...
stats = mtd->ecc_stats;
...
while (!ret) {
...
ret = this->wait(mtd, FL_READING);
onenand_update_bufferram(mtd, from, !ret);
if (ret == -EBADMSG)
ret = 0;
}
*retlen = read;
if (mtd->ecc_stats.failed - stats.failed)
return -EBADMSG;
if (ret)
return ret;
return mtd->ecc_stats.corrected - stats.corrected ? -EUCLEAN : 0;
}
>
>> @@ -988,18 +995,16 @@ static int onenand_read_oob_nolock(struct mtd_info *mtd, loff_t from,
>> onenand_update_bufferram(mtd, from, 0);
>>
>> ret = this->wait(mtd, FL_READING);
>> - /* First copy data and check return value for ECC handling */
>> + if (ret && ret != -EBADMSG) {
>> + printk(KERN_ERR "onenand_read_oob_nolock: read failed = 0x%x\n", ret);
>> + break;
>> + }
>
> What about -EUCLEAN?
The wait function doesn't return -EUCLEAN. It increments mtd->ecc_stats.corrected and returns
zero for correctable ECC errors.
File systems (like say JFFS2 for example) don't expect -EUCLEAN from mtd->read_oob and would treat
it as a fatal error, so it must not be returned in this case.
>
> Jörn
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] [MTD] [OneNAND] Do not stop reading for ECC errors
2007-11-05 14:46 ` Adrian Hunter
@ 2007-11-05 16:23 ` Jörn Engel
2007-11-06 7:14 ` Adrian Hunter
2007-11-06 7:14 ` Adrian Hunter
0 siblings, 2 replies; 11+ messages in thread
From: Jörn Engel @ 2007-11-05 16:23 UTC (permalink / raw)
To: Adrian Hunter; +Cc: linux-mtd, ext Jörn Engel, kmpark
On Mon, 5 November 2007 16:46:13 +0200, Adrian Hunter wrote:
>
> -EBADMSG is an ECC error.
>
> ret must be non-zero to indicate that the bufferram is invalid. Otherwise
> if we read from the same location again, the data would be taken from
> bufferram
> and no ECC error would be reported. However we need to keep reading (see
> nand_base.c)
> so ret is set to zero as though no error occured. Finally
> mtd->ecc_stats.failed
> is examined to determine ECC errors. i.e.
Hmm.
> static int onenand_read(struct mtd_info *mtd, loff_t from, size_t len,
> size_t *retlen, u_char *buf)
> {
> ...
> stats = mtd->ecc_stats;
> ...
> while (!ret) {
> ...
> ret = this->wait(mtd, FL_READING);
> onenand_update_bufferram(mtd, from, !ret);
> if (ret == -EBADMSG)
> ret = 0;
> }
> *retlen = read;
> if (mtd->ecc_stats.failed - stats.failed)
> return -EBADMSG;
> if (ret)
> return ret;
Those two conditionals should have reversed order, imo.
> >What about -EUCLEAN?
>
> The wait function doesn't return -EUCLEAN. It increments
> mtd->ecc_stats.corrected and returns
> zero for correctable ECC errors.
>
> File systems (like say JFFS2 for example) don't expect -EUCLEAN from
> mtd->read_oob and would treat
> it as a fatal error, so it must not be returned in this case.
Such an interface sure looks strange. But since read_oob is strange
anyway I don't care very much either way.
Jörn
--
There's nothing that will change someone's moral outlook quicker
than cash in large sums.
-- Larry Flynt
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] [MTD] [OneNAND] Do not stop reading for ECC errors
2007-11-05 16:23 ` Jörn Engel
@ 2007-11-06 7:14 ` Adrian Hunter
2007-11-06 7:14 ` Adrian Hunter
1 sibling, 0 replies; 11+ messages in thread
From: Adrian Hunter @ 2007-11-06 7:14 UTC (permalink / raw)
To: ext Jörn Engel; +Cc: linux-mtd, kmpark
ext Jörn Engel wrote:
> On Mon, 5 November 2007 16:46:13 +0200, Adrian Hunter wrote:
>> -EBADMSG is an ECC error.
>>
>> ret must be non-zero to indicate that the bufferram is invalid. Otherwise
>> if we read from the same location again, the data would be taken from
>> bufferram
>> and no ECC error would be reported. However we need to keep reading (see
>> nand_base.c)
>> so ret is set to zero as though no error occured. Finally
>> mtd->ecc_stats.failed
>> is examined to determine ECC errors. i.e.
>
> Hmm.
>
>> static int onenand_read(struct mtd_info *mtd, loff_t from, size_t len,
>> size_t *retlen, u_char *buf)
>> {
>> ...
>> stats = mtd->ecc_stats;
>> ...
>> while (!ret) {
>> ...
>> ret = this->wait(mtd, FL_READING);
>> onenand_update_bufferram(mtd, from, !ret);
>> if (ret == -EBADMSG)
>> ret = 0;
>> }
>> *retlen = read;
>> if (mtd->ecc_stats.failed - stats.failed)
>> return -EBADMSG;
>> if (ret)
>> return ret;
>
> Those two conditionals should have reversed order, imo.
Very true. I have added that fix to the patch also - see next mail.
>
>>> What about -EUCLEAN?
>> The wait function doesn't return -EUCLEAN. It increments
>> mtd->ecc_stats.corrected and returns
>> zero for correctable ECC errors.
>>
>> File systems (like say JFFS2 for example) don't expect -EUCLEAN from
>> mtd->read_oob and would treat
>> it as a fatal error, so it must not be returned in this case.
>
> Such an interface sure looks strange. But since read_oob is strange
> anyway I don't care very much either way.
>
> Jörn
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH] [MTD] [OneNAND] Do not stop reading for ECC errors
2007-11-05 16:23 ` Jörn Engel
2007-11-06 7:14 ` Adrian Hunter
@ 2007-11-06 7:14 ` Adrian Hunter
1 sibling, 0 replies; 11+ messages in thread
From: Adrian Hunter @ 2007-11-06 7:14 UTC (permalink / raw)
To: ext Jörn Engel; +Cc: linux-mtd, kmpark
When an ECC error occurs, the read should be completed
anyway before returning -EBADMSG. Returning -EBADMSG
straight away is incorrect.
Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
---
drivers/mtd/onenand/onenand_base.c | 32 ++++++++++++++++++++++----------
1 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c
index dd28355..cedc154 100644
--- a/drivers/mtd/onenand/onenand_base.c
+++ b/drivers/mtd/onenand/onenand_base.c
@@ -855,6 +855,8 @@ static int onenand_read_ops_nolock(struct mtd_info *mtd, loff_t from,
this->command(mtd, ONENAND_CMD_READ, from, writesize);
ret = this->wait(mtd, FL_READING);
onenand_update_bufferram(mtd, from, !ret);
+ if (ret == -EBADMSG)
+ ret = 0;
}
}
@@ -913,6 +915,8 @@ static int onenand_read_ops_nolock(struct mtd_info *mtd, loff_t from,
/* Now wait for load */
ret = this->wait(mtd, FL_READING);
onenand_update_bufferram(mtd, from, !ret);
+ if (ret == -EBADMSG)
+ ret = 0;
}
/*
@@ -923,12 +927,12 @@ static int onenand_read_ops_nolock(struct mtd_info *mtd, loff_t from,
ops->retlen = read;
ops->oobretlen = oobread;
- if (mtd->ecc_stats.failed - stats.failed)
- return -EBADMSG;
-
if (ret)
return ret;
+ if (mtd->ecc_stats.failed - stats.failed)
+ return -EBADMSG;
+
return mtd->ecc_stats.corrected - stats.corrected ? -EUCLEAN : 0;
}
@@ -944,6 +948,7 @@ static int onenand_read_oob_nolock(struct mtd_info *mtd, loff_t from,
struct mtd_oob_ops *ops)
{
struct onenand_chip *this = mtd->priv;
+ struct mtd_ecc_stats stats;
int read = 0, thislen, column, oobsize;
size_t len = ops->ooblen;
mtd_oob_mode_t mode = ops->mode;
@@ -977,6 +982,8 @@ static int onenand_read_oob_nolock(struct mtd_info *mtd, loff_t from,
return -EINVAL;
}
+ stats = mtd->ecc_stats;
+
while (read < len) {
cond_resched();
@@ -988,18 +995,16 @@ static int onenand_read_oob_nolock(struct mtd_info *mtd, loff_t from,
onenand_update_bufferram(mtd, from, 0);
ret = this->wait(mtd, FL_READING);
- /* First copy data and check return value for ECC handling */
+ if (ret && ret != -EBADMSG) {
+ printk(KERN_ERR "onenand_read_oob_nolock: read failed = 0x%x\n", ret);
+ break;
+ }
if (mode == MTD_OOB_AUTO)
onenand_transfer_auto_oob(mtd, buf, column, thislen);
else
this->read_bufferram(mtd, ONENAND_SPARERAM, buf, column, thislen);
- if (ret) {
- printk(KERN_ERR "onenand_read_oob_nolock: read failed = 0x%x\n", ret);
- break;
- }
-
read += thislen;
if (read == len)
@@ -1016,7 +1021,14 @@ static int onenand_read_oob_nolock(struct mtd_info *mtd, loff_t from,
}
ops->oobretlen = read;
- return ret;
+
+ if (ret)
+ return ret;
+
+ if (mtd->ecc_stats.failed - stats.failed)
+ return -EBADMSG;
+
+ return 0;
}
/**
--
1.4.4.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH] [MTD] [OneNAND] Do not stop reading for ECC errors
@ 2007-11-06 7:17 Adrian Hunter
2007-11-06 8:26 ` Kyungmin Park
0 siblings, 1 reply; 11+ messages in thread
From: Adrian Hunter @ 2007-11-06 7:17 UTC (permalink / raw)
To: linux-mtd; +Cc: joern, kmpark
When an ECC error occurs, the read should be completed
anyway before returning -EBADMSG. Returning -EBADMSG
straight away is incorrect.
Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
---
drivers/mtd/onenand/onenand_base.c | 32 ++++++++++++++++++++++----------
1 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c
index dd28355..cedc154 100644
--- a/drivers/mtd/onenand/onenand_base.c
+++ b/drivers/mtd/onenand/onenand_base.c
@@ -855,6 +855,8 @@ static int onenand_read_ops_nolock(struct mtd_info *mtd, loff_t from,
this->command(mtd, ONENAND_CMD_READ, from, writesize);
ret = this->wait(mtd, FL_READING);
onenand_update_bufferram(mtd, from, !ret);
+ if (ret == -EBADMSG)
+ ret = 0;
}
}
@@ -913,6 +915,8 @@ static int onenand_read_ops_nolock(struct mtd_info *mtd, loff_t from,
/* Now wait for load */
ret = this->wait(mtd, FL_READING);
onenand_update_bufferram(mtd, from, !ret);
+ if (ret == -EBADMSG)
+ ret = 0;
}
/*
@@ -923,12 +927,12 @@ static int onenand_read_ops_nolock(struct mtd_info *mtd, loff_t from,
ops->retlen = read;
ops->oobretlen = oobread;
- if (mtd->ecc_stats.failed - stats.failed)
- return -EBADMSG;
-
if (ret)
return ret;
+ if (mtd->ecc_stats.failed - stats.failed)
+ return -EBADMSG;
+
return mtd->ecc_stats.corrected - stats.corrected ? -EUCLEAN : 0;
}
@@ -944,6 +948,7 @@ static int onenand_read_oob_nolock(struct mtd_info *mtd, loff_t from,
struct mtd_oob_ops *ops)
{
struct onenand_chip *this = mtd->priv;
+ struct mtd_ecc_stats stats;
int read = 0, thislen, column, oobsize;
size_t len = ops->ooblen;
mtd_oob_mode_t mode = ops->mode;
@@ -977,6 +982,8 @@ static int onenand_read_oob_nolock(struct mtd_info *mtd, loff_t from,
return -EINVAL;
}
+ stats = mtd->ecc_stats;
+
while (read < len) {
cond_resched();
@@ -988,18 +995,16 @@ static int onenand_read_oob_nolock(struct mtd_info *mtd, loff_t from,
onenand_update_bufferram(mtd, from, 0);
ret = this->wait(mtd, FL_READING);
- /* First copy data and check return value for ECC handling */
+ if (ret && ret != -EBADMSG) {
+ printk(KERN_ERR "onenand_read_oob_nolock: read failed = 0x%x\n", ret);
+ break;
+ }
if (mode == MTD_OOB_AUTO)
onenand_transfer_auto_oob(mtd, buf, column, thislen);
else
this->read_bufferram(mtd, ONENAND_SPARERAM, buf, column, thislen);
- if (ret) {
- printk(KERN_ERR "onenand_read_oob_nolock: read failed = 0x%x\n", ret);
- break;
- }
-
read += thislen;
if (read == len)
@@ -1016,7 +1021,14 @@ static int onenand_read_oob_nolock(struct mtd_info *mtd, loff_t from,
}
ops->oobretlen = read;
- return ret;
+
+ if (ret)
+ return ret;
+
+ if (mtd->ecc_stats.failed - stats.failed)
+ return -EBADMSG;
+
+ return 0;
}
/**
--
1.4.4.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* RE: [PATCH] [MTD] [OneNAND] Do not stop reading for ECC errors
2007-11-06 7:17 [PATCH] [MTD] [OneNAND] Do not stop reading for ECC errors Adrian Hunter
@ 2007-11-06 8:26 ` Kyungmin Park
2007-11-09 14:21 ` Adrian Hunter
0 siblings, 1 reply; 11+ messages in thread
From: Kyungmin Park @ 2007-11-06 8:26 UTC (permalink / raw)
To: 'Adrian Hunter', linux-mtd; +Cc: joern, kmpark
> Subject: [PATCH] [MTD] [OneNAND] Do not stop reading for ECC errors
>
> When an ECC error occurs, the read should be completed
> anyway before returning -EBADMSG. Returning -EBADMSG
> straight away is incorrect.
>
> Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] [MTD] [OneNAND] Do not stop reading for ECC errors
2007-11-06 8:26 ` Kyungmin Park
@ 2007-11-09 14:21 ` Adrian Hunter
2007-11-15 8:00 ` Adrian Hunter
0 siblings, 1 reply; 11+ messages in thread
From: Adrian Hunter @ 2007-11-09 14:21 UTC (permalink / raw)
Cc: dwmw2, linux-mtd
ext Kyungmin Park wrote:
>> Subject: [PATCH] [MTD] [OneNAND] Do not stop reading for ECC errors
>>
>> When an ECC error occurs, the read should be completed
>> anyway before returning -EBADMSG. Returning -EBADMSG
>> straight away is incorrect.
>>
>> Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
> Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
>
Please apply :-)
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] [MTD] [OneNAND] Do not stop reading for ECC errors
2007-11-09 14:21 ` Adrian Hunter
@ 2007-11-15 8:00 ` Adrian Hunter
2007-11-26 11:45 ` Adrian Hunter
0 siblings, 1 reply; 11+ messages in thread
From: Adrian Hunter @ 2007-11-15 8:00 UTC (permalink / raw)
To: dwmw2; +Cc: linux-mtd
ext Adrian Hunter wrote:
> ext Kyungmin Park wrote:
>>> Subject: [PATCH] [MTD] [OneNAND] Do not stop reading for ECC errors
>>>
>>> When an ECC error occurs, the read should be completed
>>> anyway before returning -EBADMSG. Returning -EBADMSG
>>> straight away is incorrect.
>>>
>>> Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
>> Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
>>
>
> Please apply :-)
...
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] [MTD] [OneNAND] Do not stop reading for ECC errors
2007-11-15 8:00 ` Adrian Hunter
@ 2007-11-26 11:45 ` Adrian Hunter
0 siblings, 0 replies; 11+ messages in thread
From: Adrian Hunter @ 2007-11-26 11:45 UTC (permalink / raw)
Cc: linux-mtd
ext Adrian Hunter wrote:
> ext Adrian Hunter wrote:
>> ext Kyungmin Park wrote:
>>>> Subject: [PATCH] [MTD] [OneNAND] Do not stop reading for ECC errors
>>>>
>>>> When an ECC error occurs, the read should be completed
>>>> anyway before returning -EBADMSG. Returning -EBADMSG
>>>> straight away is incorrect.
>>>>
>>>> Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
>>> Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
>>>
>> Please apply :-)
>
> ...
Please apply
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2007-11-26 12:21 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-06 7:17 [PATCH] [MTD] [OneNAND] Do not stop reading for ECC errors Adrian Hunter
2007-11-06 8:26 ` Kyungmin Park
2007-11-09 14:21 ` Adrian Hunter
2007-11-15 8:00 ` Adrian Hunter
2007-11-26 11:45 ` Adrian Hunter
-- strict thread matches above, loose matches on Subject: below --
2007-11-02 11:30 Adrian Hunter
2007-11-05 13:25 ` Jörn Engel
2007-11-05 14:46 ` Adrian Hunter
2007-11-05 16:23 ` Jörn Engel
2007-11-06 7:14 ` Adrian Hunter
2007-11-06 7:14 ` Adrian Hunter
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).