diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2020-04-04 00:44:48 +0300 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2020-04-04 00:44:48 +0300 |
commit | de3c913c6e9d8bbf8b2d3caaed55ff3e40a62e56 (patch) | |
tree | 70db3c29fef1f565fa9fb904c695b043694f5b32 /drivers/md | |
parent | 86f26a77cb0cf532a92be18d2c065f5158e1a545 (diff) | |
parent | 8267d8fb4819afa76b2a54dca48efdda6f0b1910 (diff) | |
download | linux-de3c913c6e9d8bbf8b2d3caaed55ff3e40a62e56.tar.xz |
Merge tag 'for-5.7/dm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm
Pull device mapper fixes from Mike Snitzer:
- Fix excessive bio splitting that caused performance regressions
- Fix logic bug in DM integrity discard support's integrity tag testing
- Fix DM integrity warning on ppc64le due to missing cast
* tag 'for-5.7/dm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
dm integrity: fix logic bug in integrity tag testing
Revert "dm: always call blk_queue_split() in dm_process_bio()"
dm integrity: fix ppc64le warning
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/dm-integrity.c | 4 | ||||
-rw-r--r-- | drivers/md/dm.c | 5 |
2 files changed, 5 insertions, 4 deletions
diff --git a/drivers/md/dm-integrity.c b/drivers/md/dm-integrity.c index b989d109d55d..4094c47eca7f 100644 --- a/drivers/md/dm-integrity.c +++ b/drivers/md/dm-integrity.c @@ -1333,7 +1333,7 @@ static int dm_integrity_rw_tag(struct dm_integrity_c *ic, unsigned char *tag, se if (likely(is_power_of_2(ic->tag_size))) { if (unlikely(memcmp(dp, tag, to_copy))) if (unlikely(!ic->discard) || - unlikely(!memchr_inv(dp, DISCARD_FILLER, to_copy))) { + unlikely(memchr_inv(dp, DISCARD_FILLER, to_copy) != NULL)) { goto thorough_test; } } else { @@ -3069,7 +3069,7 @@ static void dm_integrity_status(struct dm_target *ti, status_type_t type, switch (type) { case STATUSTYPE_INFO: DMEMIT("%llu %llu", - atomic64_read(&ic->number_of_mismatches), + (unsigned long long)atomic64_read(&ic->number_of_mismatches), ic->provided_data_sectors); if (ic->sb->flags & cpu_to_le32(SB_FLAG_RECALCULATING)) DMEMIT(" %llu", le64_to_cpu(ic->sb->recalc_sector)); diff --git a/drivers/md/dm.c b/drivers/md/dm.c index 753302e83910..21c0207e3207 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c @@ -1740,8 +1740,9 @@ static blk_qc_t dm_process_bio(struct mapped_device *md, * won't be imposed. */ if (current->bio_list) { - blk_queue_split(md->queue, &bio); - if (!is_abnormal_io(bio)) + if (is_abnormal_io(bio)) + blk_queue_split(md->queue, &bio); + else dm_queue_split(md, ti, &bio); } |