Re: [PATCH] md/raid0: avoid RAID0 data corruption due to layout confusion.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 9/10/19 5:45 PM, Song Liu wrote:


On Sep 10, 2019, at 12:33 AM, NeilBrown <neilb@xxxxxxx> wrote:

On Mon, Sep 09 2019, Song Liu wrote:

Hi Neil,

On Sep 9, 2019, at 7:57 AM, NeilBrown <neilb@xxxxxxx> wrote:


If the drives in a RAID0 are not all the same size, the array is
divided into zones.
The first zone covers all drives, to the size of the smallest.
The second zone covers all drives larger than the smallest, up to
the size of the second smallest - etc.

A change in Linux 3.14 unintentionally changed the layout for the
second and subsequent zones.  All the correct data is still stored, but
each chunk may be assigned to a different device than in pre-3.14 kernels.
This can lead to data corruption.

It is not possible to determine what layout to use - it depends which
kernel the data was written by.
So we add a module parameter to allow the old (0) or new (1) layout to be
specified, and refused to assemble an affected array if that parameter is
not set.

Fixes: 20d0189b1012 ("block: Introduce new bio_split()")
cc: stable@xxxxxxxxxxxxxxx (3.14+)
Signed-off-by: NeilBrown <neilb@xxxxxxx>

Thanks for the patches. They look great. However, I am having problem
apply them (not sure whether it is a problem on my side). Could you
please push it somewhere so I can use cherry-pick instead?

I rebased them on block/for-next, fixed the problems that Guoqing found,
and pushed them to
  https://github.com/neilbrown/linux md/raid0

NeilBrown

Thanks Neil!

Thanks for the explanation about set the flag.


Guoqing, if this looks good, please reply with your Reviewed-by
or Acked-by.

No more comments from my side, but I am not sure if it is better/possible to use one
sysfs node to control the behavior instead of module parameter, then we can support
different raid0 layout dynamically.

Anyway, Acked-by: Guoqing Jiang <guoqing.jiang@xxxxxxxxxxxxxxx>

Thanks,
Guoqing



[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux