[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <060a0bf0-cab2-0164-3a57-e8202986d1ac@nod.at>
Date: Mon, 8 May 2017 14:13:27 +0200
From: Richard Weinberger <richard@....at>
To: Boris Brezillon <boris.brezillon@...e-electrons.com>
Cc: Pavel Machek <pavel@....cz>, David Woodhouse <dwmw2@...radead.org>,
"linux-scsi@...r.kernel.org" <linux-scsi@...r.kernel.org>,
Hans de Goede <hdegoede@...hat.com>,
LKML <linux-kernel@...r.kernel.org>, linux-ide@...r.kernel.org,
"linux-mtd@...ts.infradead.org" <linux-mtd@...ts.infradead.org>,
Henrique de Moraes Holschuh <hmh@....eng.br>,
Tejun Heo <tj@...nel.org>
Subject: Re: Race to power off harming SATA SSDs
Boris,
Am 08.05.2017 um 13:48 schrieb Boris Brezillon:
>>> How do you handle the issue during regular write? Always ignore last
>>> successfully written block?
>
> I guess UBIFS can know what was written last, because of the log-based
> approach + the seqnum stored along with FS nodes, but I'm pretty sure
> UBIFS does not re-write the last written block in case of an unclean
> mount. Richard, am I wrong?
Yes. UBIFS has the machinery but uses it differently. When it faces ECC
errors while replying the journal it can recover good data from the LEB.
It assumes that an interrupted write leads always to ECC errors.
>>
>> The last page of a block is inspected and allowed to be corrupted.
>
> Actually, it's not really about corrupted pages, it's about pages that
> might become unreadable after a few reads.
As stated before, it assumes an ECC error from an interrupted read.
We could automatically re-write everything in UBIFS that was written last
but we don't have this information for data UBI itself wrote since UBI has
no journal.
If unstable bit can be triggered with current systems we can think of a clever
trick to deal with that. So far nobody was able to show me the problem.
Thanks,
//richard
Powered by blists - more mailing lists