Merge tag 'dm-4.4-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm
Pull device mapper updates from Mike Snitzer:
"Smaller set of DM changes for this merge. I've based these changes on
Jens' for-4.4/reservations branch because the associated DM changes
required it.
- Revert a dm-multipath change that caused a regression for
unprivledged users (e.g. kvm guests) that issued ioctls when a
multipath device had no available paths.
- Include Christoph's refactoring of DM's ioctl handling and add
support for passing through persistent reservations with DM
multipath.
- All other changes are very simple cleanups"
* tag 'dm-4.4-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
dm switch: simplify conditional in alloc_region_table()
dm delay: document that offsets are specified in sectors
dm delay: capitalize the start of an delay_ctr() error message
dm delay: Use DM_MAPIO macros instead of open-coded equivalents
dm linear: remove redundant target name from error messages
dm persistent data: eliminate unnecessary return values
dm: eliminate unused "bioset" process for each bio-based DM device
dm: convert ffs to __ffs
dm: drop NULL test before kmem_cache_destroy() and mempool_destroy()
dm: add support for passing through persistent reservations
dm: refactor ioctl handling
Revert "dm mpath: fix stalls when handling invalid ioctls"
dm: initialize non-blk-mq queue data before queue is used
This commit is contained in:
@@ -165,9 +165,9 @@ static int init_child(struct dm_btree_info *info, struct dm_btree_value_type *vt
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int exit_child(struct dm_btree_info *info, struct child *c)
|
||||
static void exit_child(struct dm_btree_info *info, struct child *c)
|
||||
{
|
||||
return dm_tm_unlock(info->tm, c->block);
|
||||
dm_tm_unlock(info->tm, c->block);
|
||||
}
|
||||
|
||||
static void shift(struct btree_node *left, struct btree_node *right, int count)
|
||||
@@ -249,13 +249,10 @@ static int rebalance2(struct shadow_spine *s, struct dm_btree_info *info,
|
||||
|
||||
__rebalance2(info, parent, &left, &right);
|
||||
|
||||
r = exit_child(info, &left);
|
||||
if (r) {
|
||||
exit_child(info, &right);
|
||||
return r;
|
||||
}
|
||||
exit_child(info, &left);
|
||||
exit_child(info, &right);
|
||||
|
||||
return exit_child(info, &right);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -394,22 +391,9 @@ static int rebalance3(struct shadow_spine *s, struct dm_btree_info *info,
|
||||
|
||||
__rebalance3(info, parent, &left, ¢er, &right);
|
||||
|
||||
r = exit_child(info, &left);
|
||||
if (r) {
|
||||
exit_child(info, ¢er);
|
||||
exit_child(info, &right);
|
||||
return r;
|
||||
}
|
||||
|
||||
r = exit_child(info, ¢er);
|
||||
if (r) {
|
||||
exit_child(info, &right);
|
||||
return r;
|
||||
}
|
||||
|
||||
r = exit_child(info, &right);
|
||||
if (r)
|
||||
return r;
|
||||
exit_child(info, &left);
|
||||
exit_child(info, ¢er);
|
||||
exit_child(info, &right);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -433,9 +417,7 @@ static int rebalance_children(struct shadow_spine *s,
|
||||
|
||||
memcpy(n, dm_block_data(child),
|
||||
dm_bm_block_size(dm_tm_get_bm(info->tm)));
|
||||
r = dm_tm_unlock(info->tm, child);
|
||||
if (r)
|
||||
return r;
|
||||
dm_tm_unlock(info->tm, child);
|
||||
|
||||
dm_tm_dec(info->tm, dm_block_location(child));
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user