No description
  • C 98.2%
  • Assembly 1%
  • Makefile 0.3%
  • Shell 0.2%
  • Python 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Yufen Yu 696b50bbf6 md: no longer compare spare disk superblock events in super_load
[ Upstream commit 6a5cb53aaa4ef515ddeffa04ce18b771121127b4 ]

We have a test case as follow:

  mdadm -CR /dev/md1 -l 1 -n 4 /dev/sd[a-d] \
	--assume-clean --bitmap=internal
  mdadm -S /dev/md1
  mdadm -A /dev/md1 /dev/sd[b-c] --run --force

  mdadm --zero /dev/sda
  mdadm /dev/md1 -a /dev/sda

  echo offline > /sys/block/sdc/device/state
  echo offline > /sys/block/sdb/device/state
  sleep 5
  mdadm -S /dev/md1

  echo running > /sys/block/sdb/device/state
  echo running > /sys/block/sdc/device/state
  mdadm -A /dev/md1 /dev/sd[a-c] --run --force

When we readd /dev/sda to the array, it started to do recovery.
After offline the other two disks in md1, the recovery have
been interrupted and superblock update info cannot be written
to the offline disks. While the spare disk (/dev/sda) can continue
to update superblock info.

After stopping the array and assemble it, we found the array
run fail, with the follow kernel message:

[  172.986064] md: kicking non-fresh sdb from array!
[  173.004210] md: kicking non-fresh sdc from array!
[  173.022383] md/raid1:md1: active with 0 out of 4 mirrors
[  173.022406] md1: failed to create bitmap (-5)
[  173.023466] md: md1 stopped.

Since both sdb and sdc have the value of 'sb->events' smaller than
that in sda, they have been kicked from the array. However, the only
remained disk sda is in 'spare' state before stop and it cannot be
added to conf->mirrors[] array. In the end, raid array assemble
and run fail.

In fact, we can use the older disk sdb or sdc to assemble the array.
That means we should not choose the 'spare' disk as the fresh disk in
analyze_sbs().

To fix the problem, we do not compare superblock events when it is
a spare disk, as same as validate_super.

Signed-off-by: Yufen Yu <yuyufen@huawei.com>
Signed-off-by: Song Liu <songliubraving@fb.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-12-31 16:44:19 +01:00
arch x86/ioapic: Prevent inconsistent state when moving an interrupt 2019-12-31 16:44:15 +01:00
block block: fix "check bi_size overflow before merge" 2019-12-21 11:04:32 +01:00
certs
crypto crypto: aegis128/simd - build 32-bit ARM for v8 architecture explicitly 2019-12-31 16:43:57 +01:00
Documentation USB: documentation: flags on usb-storage versus UAS 2019-12-17 19:55:32 +01:00
drivers md: no longer compare spare disk superblock events in super_load 2019-12-31 16:44:19 +01:00
fs Btrfs: fix removal logic of the tree mod log that leads to use-after-free issues 2019-12-31 16:42:07 +01:00
include ipmi: Don't allow device module unload when in use 2019-12-31 16:44:14 +01:00
init
ipc
kernel bpf/stackmap: Fix deadlock with rq_lock in bpf_get_stack() 2019-12-31 16:44:09 +01:00
lib lib: raid6: fix awk build warnings 2019-12-17 19:56:09 +01:00
LICENSES
mm mm/shmem.c: cast the type of unmap_start to u64 2019-12-17 19:56:51 +01:00
net Bluetooth: hci_core: fix init for HCI_USER_CHANNEL 2019-12-31 16:44:09 +01:00
samples samples: pktgen: fix proc_cmd command result check logic 2019-12-31 16:43:45 +01:00
scripts
security
sound ASoC: soc-pcm: fixup dpcm_prune_paths() loop continue 2019-12-31 16:44:13 +01:00
tools selftests/bpf: Make a copy of subtest name 2019-12-31 16:44:12 +01:00
usr
virt
.clang-format
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS
Makefile Linux 5.4.6 2019-12-21 11:05:23 +01:00
README

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.