Re: [PATCH v3 3/6] badblocks: improvement badblocks_set() for multiple ranges handling
From: Wols Lists <hidden>
Date: 2021-12-10 00:26:21
Also in:
linux-raid, nvdimm
On 09/12/2021 07:28, Geliang Tang wrote:
On Thu, Dec 02, 2021 at 08:52:41PM +0800, Coly Li wrote:quoted
Recently I received a bug report that current badblocks code does not
quoted
+ * +--------+----+ + * | S | E | + * +--------+----+ + * 2.2) The setting range size == already set range size + * 2.2.1) If S and E are both acked or unacked range, the setting range S can + * be merged into existing bad range E. The result is, + * +-------------+ + * | S | + * +-------------+ + * 2.2.2) If S is uncked setting and E is acked, the setting will be denied, anduncked -> unackedquoted
+ * the result is, + * +-------------+ + * | E | + * +-------------+ + * 2.2.3) If S is acked setting and E is unacked, range S can overwirte all of
overwirte -> overwrite
quoted
+ bad blocks range E. The result is, + * +-------------+ + * | S | + * +-------------+ + * 2.3) The setting range size > already set range size + * +-------------------+ + * | S | + * +-------------------+ + * +-------------+ + * | E | + * +-------------+ + * For such situation, the setting range S can be treated as two parts, the + * first part (S1) is as same size as the already set range E, the second + * part (S2) is the rest of setting range. + * +-------------+-----+ +-------------+ +-----+ + * | S1 | S2 | | S1 | | S2 | + * +-------------+-----+ ===> +-------------+ +-----+ + * +-------------+ +-------------+ + * | E | | E | + * +-------------+ +-------------+ + * Now we only focus on how to handle the setting range S1 and already set + * range E, which are already explained in 1.2), for the rest S2 it will be
Cheers, Wol