[PATCH v3 0/8] folio support for sync I/O in RAID
| Newsgroups | gmane.linux.kernel,gmane.linux.raid |
|---|---|
| Message-ID | <[email protected]> |
From: Li Nan <[email protected]> This patchset adds folio support to sync operations in raid1/10. Previously, we used 16 * 4K pages for 64K sync I/O. With this change, we'll use a single 64K folio instead. Using folios reduces resync/recovery time by 20% on HDD. This is the first step towards full folio support in RAID. Going forward, I will replace the remaining page-based usage with folio. The patchset was tested with mdadm. Additional fault injection stress tests were run under file systems. v3: - In patch 3/4/5, ntroduce safe_folio_put and use it for tmpfolio. - Merge Cleanup patch into patch 6. v2: - Remove patch "md: use folio for bb_folio". It will be included in a later patch set - In patch 5: 1) fix typo 2) rewrite the logic of copying data in process_checks() 3) rename resync_get_all_folio() to resync_get_folio() 4) s/resync_pages *rps/resync_folio *rfs/g in raid1_alloc_init_r1buf() and raid10_alloc_init_r10buf() - Subsequent patches: Adapting conflicts caused by patch 5 Li Nan (8): md/raid1,raid10: clean up of RESYNC_SECTORS md: introduce sync_folio_io for folio support in RAID md: introduce safe_put_folio for folio support in RAID md/raid1: use folio for tmppage md/raid10: use folio for tmppage md/raid1,raid10: use folio for sync path IO md/raid1: fix IO error at logical block size granularity md/raid10: fix IO error at logical block size granularity drivers/md/md.h | 10 +- drivers/md/raid1.h | 2 +- drivers/md/raid10.h | 2 +- drivers/md/md.c | 17 ++- drivers/md/raid1-10.c | 81 ++++------- drivers/md/raid1.c | 233 ++++++++++++++----------------- drivers/md/raid10.c | 312 ++++++++++++++++++++---------------------- 7 files changed, 297 insertions(+), 360 deletions(-) -- 2.39.2