Commit de3c913c authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'for-5.7/dm-fixes' of...

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
parents 86f26a77 8267d8fb
...@@ -1333,7 +1333,7 @@ static int dm_integrity_rw_tag(struct dm_integrity_c *ic, unsigned char *tag, se ...@@ -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 (likely(is_power_of_2(ic->tag_size))) {
if (unlikely(memcmp(dp, tag, to_copy))) if (unlikely(memcmp(dp, tag, to_copy)))
if (unlikely(!ic->discard) || if (unlikely(!ic->discard) ||
unlikely(!memchr_inv(dp, DISCARD_FILLER, to_copy))) { unlikely(memchr_inv(dp, DISCARD_FILLER, to_copy) != NULL)) {
goto thorough_test; goto thorough_test;
} }
} else { } else {
...@@ -3069,7 +3069,7 @@ static void dm_integrity_status(struct dm_target *ti, status_type_t type, ...@@ -3069,7 +3069,7 @@ static void dm_integrity_status(struct dm_target *ti, status_type_t type,
switch (type) { switch (type) {
case STATUSTYPE_INFO: case STATUSTYPE_INFO:
DMEMIT("%llu %llu", DMEMIT("%llu %llu",
atomic64_read(&ic->number_of_mismatches), (unsigned long long)atomic64_read(&ic->number_of_mismatches),
ic->provided_data_sectors); ic->provided_data_sectors);
if (ic->sb->flags & cpu_to_le32(SB_FLAG_RECALCULATING)) if (ic->sb->flags & cpu_to_le32(SB_FLAG_RECALCULATING))
DMEMIT(" %llu", le64_to_cpu(ic->sb->recalc_sector)); DMEMIT(" %llu", le64_to_cpu(ic->sb->recalc_sector));
......
...@@ -1740,8 +1740,9 @@ static blk_qc_t dm_process_bio(struct mapped_device *md, ...@@ -1740,8 +1740,9 @@ static blk_qc_t dm_process_bio(struct mapped_device *md,
* won't be imposed. * won't be imposed.
*/ */
if (current->bio_list) { 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); dm_queue_split(md, ti, &bio);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment