]> git.baikalelectronics.ru Git - kernel.git/commit
dm thin metadata: fix bug in dm_thin_remove_range()
authorJoe Thornber <ejt@redhat.com>
Wed, 2 Dec 2015 12:24:39 +0000 (12:24 +0000)
committerMike Snitzer <snitzer@redhat.com>
Wed, 2 Dec 2015 18:26:49 +0000 (13:26 -0500)
commit1bb5a088fdb2ea8725f01a67f855886c63a2da3c
tree271d69ac484060b565f25614cf25a5595b036a6c
parent9210c3afe179d918812af34c8d3a165486899ef0
dm thin metadata: fix bug in dm_thin_remove_range()

dm_btree_remove_leaves() only unmaps a contiguous region so we need a
loop, in __remove_range(), to handle ranges that contain multiple
regions.

A new btree function, dm_btree_lookup_next(), is introduced which is
more efficiently able to skip over regions of the thin device which
aren't mapped.  __remove_range() uses dm_btree_lookup_next() for each
iteration of __remove_range()'s loop.

Also, improve description of dm_btree_remove_leaves().

Fixes: 3f18609c ("dm thin metadata: add dm_thin_remove_range()")
Signed-off-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Cc: stable@vger.kernel.org # 4.1+
drivers/md/dm-thin-metadata.c
drivers/md/persistent-data/dm-btree.c
drivers/md/persistent-data/dm-btree.h