diff options
author | Mike Snitzer <snitzer@redhat.com> | 2015-09-08 08:56:13 -0400 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2015-09-13 21:32:10 -0400 |
commit | 216076705d6ac291d42e0f8dd85e6a0da98c0fa3 (patch) | |
tree | 600cdacc6f00a7093181fd64ca25cd07f5dbf3f2 /drivers/md/dm-thin.c | |
parent | 6ff33f3902c3b1c5d0db6b1e2c70b6d76fba357f (diff) | |
download | op-kernel-dev-216076705d6ac291d42e0f8dd85e6a0da98c0fa3.zip op-kernel-dev-216076705d6ac291d42e0f8dd85e6a0da98c0fa3.tar.gz |
dm thin: disable discard support for thin devices if pool's is disabled
If the pool is configured with 'ignore_discard' its discard support is
disabled. The pool's thin devices should also have queue_limits that
reflect discards are disabled.
Fixes: 34fbcf62 ("dm thin: range discard support")
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Cc: stable@vger.kernel.org # 4.1+
Diffstat (limited to 'drivers/md/dm-thin.c')
-rw-r--r-- | drivers/md/dm-thin.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c index 6578b7b..6fcbfb0 100644 --- a/drivers/md/dm-thin.c +++ b/drivers/md/dm-thin.c @@ -4249,6 +4249,10 @@ static void thin_io_hints(struct dm_target *ti, struct queue_limits *limits) { struct thin_c *tc = ti->private; struct pool *pool = tc->pool; + struct queue_limits *pool_limits = dm_get_queue_limits(pool->pool_md); + + if (!pool_limits->discard_granularity) + return; /* pool's discard support is disabled */ limits->discard_granularity = pool->sectors_per_block << SECTOR_SHIFT; limits->max_discard_sectors = 2048 * 1024 * 16; /* 16G */ |