ubifs_scan() error handling
twebb
taliaferro62 at gmail.com
Fri Jan 28 12:13:20 EST 2011
> On Tue, 2010-07-13 at 07:28 +0300, Artem Bityutskiy wrote:
>> > Would it make sense and be acceptable to make this call any time
>> > ubifs_scan() returns an error?
>>
>> May be. I'll think and return to you.
>
> We can probably go for it, but the current recovery is not enough for
> MLC anyway. So I'd prefer to do the change you propose as a part of
> larger UBIFS on MLC patch-set.
>
> Please, analyse ubifs_recover_leb(), find out what should be changed
> there for MLC, send a patch-set.
>
It's been awhile but I wanted to reopen the discussion on this topic.
Could you take a look at this proposed patch? Essentially this change
results in the LEB being cleaned/recovered regardless of whether
is_last_write() is true or not. There may be a better way to do this
earlier in the same function, but I'm not familiar enough with it to
know the significance of the is_last_write() call.
diff -Naru a/fs/ubifs/recovery.c b/fs/ubifs/recovery.c
--- a/fs/ubifs/recovery.c 2011-01-26 16:08:04.000000000 -0500
+++ b/fs/ubifs/recovery.c 2011-01-26 16:08:25.000000000 -0500
@@ -665,19 +665,8 @@
}
if (!empty_chkd && !is_empty(buf, len)) {
- if (is_last_write(c, buf, offs)) {
- clean_buf(c, &buf, lnum, &offs, &len);
- need_clean = 1;
- } else {
- int corruption = first_non_ff(buf, len);
-
- ubifs_err("corrupt empty space LEB %d:%d, corruption "
- "starts at %d", lnum, offs, corruption);
- /* Make sure we dump interesting non-0xFF data */
- offs = corruption;
- buf += corruption;
- goto corrupted;
- }
+ clean_buf(c, &buf, lnum, &offs, &len);
+ need_clean = 1;
}
/* Drop nodes from incomplete group */
More information about the linux-mtd
mailing list