From: Guoqing Jiang <guoqing.jiang@xxxxxxxxxxxxxxx> Major changes: 1. rename 0002 patch and change the patch header accordingly. 2. show "n/a" for non raid1 in serialize_policy_show in 0003. 3. 0004 patch is introduced to make two scenarios (both of them could enable serialization) can coexists. 4. use generical rb interval tree and introduce struct serial_in_rdev in 0007. ----------------------------------- v1 -------------------------------------- Hi, If asynchronous write io happened in raid1 array, data could be inconsistent among member devices though usually people would think the data should always be the same in each devices for raid1. And since we had addressed data inconsistency issue for write behind device if it is a multiqueue device, then it is possible and straightforward to extend the same mechanism to address similar issue. with this patchset, we can enable io serialization for write. Of course, the performance is not better than before, it could drop around 10% during my tests. Patch 1 just renames all the write-behind stuffs, no function change. Patch 2 adds is_force parameter to mddev_create/destroy_serial_pool. Patch 3 serialize_policy sysfs node is added to enable/disable serialization. Patch 4 serializes the overlap write. Patch 5 makes serial_info_pool still available if serialize_policy is true. Patch 6 replaces list with rb tree for performance reason. Patch 7 uses bucket based mechanism to improve performance further. Patch 8 reorgnizes code. Thanks, Guoqing Guoqing Jiang (9): md: rename wb stuffs md: prepare for enable raid1 io serialization md: add serialize_policy sysfs node for raid1 md: reorgnize mddev_create/destroy_serial_pool raid1: serialize the overlap write md: don't destroy serial_info_pool if serialize_policy is true md: introduce a new struct for IO serialization md/raid1: use bucket based mechanism for IO serialization md/raid1: introduce wait_for_serialization drivers/md/md-bitmap.c | 20 ++-- drivers/md/md.c | 249 ++++++++++++++++++++++++++++++++--------- drivers/md/md.h | 45 +++++--- drivers/md/raid1.c | 111 +++++++++--------- 4 files changed, 295 insertions(+), 130 deletions(-) -- 2.17.1