- Fix 6.9 regression so that DM device removal is performed

synchronously by default. Asynchronous removal has always been
   possible but it isn't the default. It is important that synchronous
   removal be preserved, otherwise it is an interface change that
   breaks lvm2.
 
 - Remove errant semicolon in drivers/md/dm-vdo/murmurhash3.c
 -----BEGIN PGP SIGNATURE-----
 
 iQEzBAABCAAdFiEEJfWUX4UqZ4x1O2wixSPxCi2dA1oFAmYr08wACgkQxSPxCi2d
 A1qSXAgAsmfo5nV8/tNsrG3aBYN/rbGyEQaKl+m3eGK3T874WyrbW/On5qfGzEO1
 09O5jNEMhkEHBQq6tKu/Gp87xLVJroIOMLTYpmCg6nnlwVIifFy1uuaBFA1xgM9U
 xf7myg6fRj66Yjwv0y1WmTaQTX30s9alJ7f/PZQT1MJFhGIuHPIns3bsyZ43RcOl
 pNkS9jjdHkDpXK/cWseb9mz6TAISa8Fn2NYkDPvq6r/J/aIxhRiHlhlzFuQnnfkH
 Rg5GVg2R/yCZiGQpuA6IqfEX6eqc4HlZa5Ty2zj9BjUhmj+YbuLEKj+uMEB6wMPd
 uK7uWfkxZYvsBAdaFfSpU8XyTumaAA==
 =zK77
 -----END PGP SIGNATURE-----

Merge tag 'for-6.9/dm-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm

Pull device mapper fixes from Mike Snitzer:

 - Fix 6.9 regression so that DM device removal is performed
   synchronously by default.

   Asynchronous removal has always been possible but it isn't the
   default. It is important that synchronous removal be preserved,
   otherwise it is an interface change that breaks lvm2.

 - Remove errant semicolon in drivers/md/dm-vdo/murmurhash3.c

* tag 'for-6.9/dm-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
  dm: restore synchronous close of device mapper block device
  dm vdo murmurhash: remove unneeded semicolon
This commit is contained in:
Linus Torvalds 2024-04-26 11:17:24 -07:00
commit 08f0677dfc
2 changed files with 9 additions and 3 deletions

View file

@ -137,7 +137,7 @@ void murmurhash3_128(const void *key, const int len, const u32 seed, void *out)
break;
default:
break;
};
}
}
/* finalization */

View file

@ -765,7 +765,7 @@ static struct table_device *open_table_device(struct mapped_device *md,
return td;
out_blkdev_put:
fput(bdev_file);
__fput_sync(bdev_file);
out_free_td:
kfree(td);
return ERR_PTR(r);
@ -778,7 +778,13 @@ static void close_table_device(struct table_device *td, struct mapped_device *md
{
if (md->disk->slave_dir)
bd_unlink_disk_holder(td->dm_dev.bdev, md->disk);
fput(td->dm_dev.bdev_file);
/* Leverage async fput() if DMF_DEFERRED_REMOVE set */
if (unlikely(test_bit(DMF_DEFERRED_REMOVE, &md->flags)))
fput(td->dm_dev.bdev_file);
else
__fput_sync(td->dm_dev.bdev_file);
put_dax(td->dm_dev.dax_dev);
list_del(&td->list);
kfree(td);