aboutsummaryrefslogtreecommitdiff
path: root/drivers/md/dm.c
diff options
context:
space:
mode:
authorSteven Rostedt (Red Hat) <rostedt@goodmis.org>2013-09-13 13:38:42 -0400
committerSteven Rostedt <rostedt@goodmis.org>2013-09-13 13:38:42 -0400
commitb05f01b32d39f960407c2fbc56244d14b9ff19a5 (patch)
treeacd42e1b88857758187de2a50e4b9767cb4a8224 /drivers/md/dm.c
parent70c67d3efde6ef4fa2fae0ba7fac3aaf011a1385 (diff)
parent8514c7d8607cd8b6da39187d12fd00e874fa8388 (diff)
Merge tag 'v3.6.11.9' into v3.6-rt
Conflicts: arch/arm/kernel/process.c kernel/hrtimer.c
Diffstat (limited to 'drivers/md/dm.c')
-rw-r--r--drivers/md/dm.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index 582bfe2812f3..d859f6ddba0e 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -414,10 +414,12 @@ static int dm_blk_ioctl(struct block_device *bdev, fmode_t mode,
unsigned int cmd, unsigned long arg)
{
struct mapped_device *md = bdev->bd_disk->private_data;
- struct dm_table *map = dm_get_live_table(md);
+ struct dm_table *map;
struct dm_target *tgt;
int r = -ENOTTY;
+retry:
+ map = dm_get_live_table(md);
if (!map || !dm_table_get_size(map))
goto out;
@@ -438,6 +440,11 @@ static int dm_blk_ioctl(struct block_device *bdev, fmode_t mode,
out:
dm_table_put(map);
+ if (r == -ENOTCONN) {
+ msleep(10);
+ goto retry;
+ }
+
return r;
}