android_kernel_sony_sdm845/drivers/md
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Guoqing Jiang 0e085b03e6 md-cluster: clear another node's suspend_area after the copy is finished
[ Upstream commit 010228e4a932ca1e8365e3b58c8e1e44c16ff793 ]

When one node leaves cluster or stops the resyncing
(resync or recovery) array, then other nodes need to
call recover_bitmaps to continue the unfinished task.

But we need to clear suspend_area later after other
nodes copy the resync information to their bitmap
(by call bitmap_copy_from_slot). Otherwise, all nodes
could write to the suspend_area even the suspend_area
is not handled by any node, because area_resyncing
returns 0 at the beginning of raid1_write_request.
Which means one node could write suspend_area while
another node is resyncing the same area, then data
could be inconsistent.

So let's clear suspend_area later to avoid above issue
with the protection of bm lock. Also it is straightforward
to clear suspend_area after nodes have copied the resync
info to bitmap.

Signed-off-by: Guoqing Jiang <gqjiang@suse.com>
Reviewed-by: NeilBrown <neilb@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-10-03 17:01:43 -07:00
..
bcache bcache: release dc->writeback_lock properly in bch_writeback_thread() 2018-09-09 20:01:25 +02:00
persistent-data dm btree: fix serious bug in btree_split_beneath() 2018-01-23 19:57:08 +01:00
bitmap.c md: free unused memory after bitmap resize 2017-12-16 16:25:47 +01:00
bitmap.h md-cluster: sync bitmap when node received RESYNCING msg 2016-05-04 12:39:35 -07:00
dm-bio-prison.c
dm-bio-prison.h
dm-bio-record.h
dm-bufio.c dm bufio: don't take the lock in dm_bufio_shrink_count 2018-07-11 16:26:46 +02:00
dm-bufio.h
dm-builtin.c dm: move request-based code out to dm-rq.[hc] 2016-06-10 15:15:44 -04:00
dm-cache-block-types.h
dm-cache-metadata.c dm cache metadata: save in-core policy_hint_size to on-disk superblock 2018-09-09 20:01:21 +02:00
dm-cache-metadata.h dm cache: make sure every metadata function checks fail_io 2016-03-10 17:12:12 -05:00
dm-cache-policy-cleaner.c dm cache: speed up writing of the hint array 2016-09-22 11:15:02 -04:00
dm-cache-policy-internal.h dm cache: speed up writing of the hint array 2016-09-22 11:15:02 -04:00
dm-cache-policy-smq.c dm cache policy smq: distribute entries to random levels when switching to smq 2016-09-22 11:15:03 -04:00
dm-cache-policy.c
dm-cache-policy.h dm cache: speed up writing of the hint array 2016-09-22 11:15:02 -04:00
dm-cache-target.c dm cache: fix corruption seen when using cache > 2TB 2017-03-12 06:41:44 +01:00
dm-core.h dm: allocate struct mapped_device with kvzalloc 2017-11-30 08:39:02 +00:00
dm-crypt.c dm crypt: mark key as invalid until properly loaded 2017-01-06 10:40:15 +01:00
dm-delay.c dm: rename target's per_bio_data_size to per_io_data_size 2016-02-22 22:34:37 -05:00
dm-era-target.c dm era: save spacemap metadata root after the pre-commit 2017-05-20 14:28:37 +02:00
dm-exception-store.c
dm-exception-store.h
dm-flakey.c dm flakey: return -EINVAL on interval bounds error in flakey_ctr() 2017-01-06 10:40:15 +01:00
dm-io.c dm io: fix duplicate bio completion due to missing ref count 2018-03-11 16:21:30 +01:00
dm-ioctl.c dm ioctl: remove double parentheses 2018-04-08 12:12:43 +02:00
dm-kcopyd.c dm kcopyd: avoid softlockup in run_complete_job 2018-09-15 09:42:59 +02:00
dm-linear.c libnvdimm for 4.8 2016-07-28 17:38:16 -07:00
dm-log-userspace-base.c
dm-log-userspace-transfer.c
dm-log-userspace-transfer.h
dm-log-writes.c Merge branch 'for-4.9/block' of git://git.kernel.dk/linux-block 2016-10-07 14:42:05 -07:00
dm-log.c dm log: fix unitialized bio operation flags 2016-08-24 21:55:05 -04:00
dm-mpath.c dm mpath: cleanup -Wbool-operation warning in choose_pgpath() 2017-07-27 15:07:55 -07:00
dm-mpath.h
dm-path-selector.c
dm-path-selector.h dm path selector: remove 'repeat_count' return from .select_path hook 2016-02-22 22:34:42 -05:00
dm-queue-length.c dm path selector: remove 'repeat_count' return from .select_path hook 2016-02-22 22:34:42 -05:00
dm-raid.c dm raid: fix NULL pointer dereference for raid1 without bitmap 2017-04-12 12:41:13 +02:00
dm-raid1.c dm mirror: use all available legs on multiple failures 2016-10-14 11:55:17 -04:00
dm-region-hash.c block: rename bio bi_rw to bi_opf 2016-08-07 14:41:02 -06:00
dm-round-robin.c dm round robin: revert "use percpu 'repeat_count' and 'current_path'" 2017-03-12 06:41:44 +01:00
dm-rq.c dm rq: check blk_mq_register_dev() return value in dm_mq_init_request_queue() 2017-05-20 14:28:37 +02:00
dm-rq.h dm rq: introduce dm_mq_kick_requeue_list() 2016-09-15 11:16:05 -04:00
dm-service-time.c dm path selector: remove 'repeat_count' return from .select_path hook 2016-02-22 22:34:42 -05:00
dm-snap-persistent.c dm: use bio op accessors 2016-06-07 13:41:38 -06:00
dm-snap-transient.c
dm-snap.c block: rename bio bi_rw to bi_opf 2016-08-07 14:41:02 -06:00
dm-stats.c dm stats: fix a leaked s->histogram_boundaries array 2017-03-12 06:41:44 +01:00
dm-stats.h
dm-stripe.c block: rename bio bi_rw to bi_opf 2016-08-07 14:41:02 -06:00
dm-switch.c
dm-sysfs.c dm: move request-based code out to dm-rq.[hc] 2016-06-10 15:15:44 -04:00
dm-table.c dm table: an 'all_blk_mq' table must be loaded for a blk-mq DM device 2017-01-06 10:40:15 +01:00
dm-target.c libnvdimm for 4.8 2016-07-28 17:38:16 -07:00
dm-thin-metadata.c dm thin metadata: THIN_MAX_CONCURRENT_LOCKS should be 6 2018-01-23 19:57:09 +01:00
dm-thin-metadata.h dm thin: fix a race condition between discarding and provisioning a block 2016-07-20 12:43:35 -04:00
dm-thin.c dm thin: stop no_space_timeout worker when switching to write-mode 2018-09-09 20:01:21 +02:00
dm-uevent.c
dm-uevent.h
dm-verity-fec.c dm verity fec: fix bufio leaks 2017-04-12 12:41:12 +02:00
dm-verity-fec.h dm verity fec: limit error correction recursion 2017-04-12 12:41:12 +02:00
dm-verity-target.c dm: rename target's per_bio_data_size to per_io_data_size 2016-02-22 22:34:37 -05:00
dm-verity.h
dm-zero.c block: rename bio bi_rw to bi_opf 2016-08-07 14:41:02 -06:00
dm.c dm: correctly handle chained bios in dec_pending() 2018-02-22 15:43:51 +01:00
dm.h dm: add infrastructure for DAX support 2016-07-20 23:49:49 -04:00
faulty.c
Kconfig dm raid: select the Kconfig option CONFIG_MD_RAID0 2017-05-25 15:44:33 +02:00
linear.c md/linear: shutup lockdep warnning 2017-10-21 17:21:35 +02:00
linear.h md linear: fix a race between linear_add() and linear_congested() 2017-03-12 06:41:52 +01:00
Makefile dm: move request-based code out to dm-rq.[hc] 2016-06-10 15:15:44 -04:00
md-cluster.c md-cluster: clear another node's suspend_area after the copy is finished 2018-10-03 17:01:43 -07:00
md-cluster.h md-cluster: gather resync infos and enable recv_thread after bitmap is ready 2016-05-09 09:24:03 -07:00
md.c md: fix NULL dereference of mddev->pers in remove_and_add_spares() 2018-08-03 07:55:20 +02:00
md.h md: changes for MD_STILL_CLOSED flag 2016-09-21 09:09:44 -07:00
multipath.c block: rename bio bi_rw to bi_opf 2016-08-07 14:41:02 -06:00
multipath.h
raid0.c block: rename bio bi_rw to bi_opf 2016-08-07 14:41:02 -06:00
raid0.h
raid1.c md/raid1: fix NULL pointer dereference 2018-05-30 07:50:31 +02:00
raid1.h
raid5-cache.c raid5-cache: correct condition for empty metadata write 2016-10-28 22:04:03 -07:00
raid5.c md/raid5: fix data corruption of replacements after originals dropped 2018-09-19 22:47:12 +02:00
raid5.h md/raid5: Convert to hotplug state machine 2016-09-06 18:30:23 +02:00
raid10.c md/raid10: fix that replacement cannot complete recovery after reassemble 2018-08-24 13:12:33 +02:00
raid10.h raid10: improve random reads performance 2016-07-19 15:20:28 -07:00