summaryrefslogtreecommitdiff
path: root/drivers/md/dm-clone-target.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md/dm-clone-target.c')
-rw-r--r--drivers/md/dm-clone-target.c19
1 files changed, 2 insertions, 17 deletions
diff --git a/drivers/md/dm-clone-target.c b/drivers/md/dm-clone-target.c
index e956d980672c..a7f73861a8cd 100644
--- a/drivers/md/dm-clone-target.c
+++ b/drivers/md/dm-clone-target.c
@@ -1697,7 +1697,6 @@ static int parse_metadata_dev(struct clone *clone, struct dm_arg_set *as, char *
static int parse_dest_dev(struct clone *clone, struct dm_arg_set *as, char **error)
{
int r;
- sector_t dest_dev_size;
r = dm_get_device(clone->ti, dm_shift_arg(as),
BLK_OPEN_READ | BLK_OPEN_WRITE, &clone->dest_dev);
@@ -1706,20 +1705,12 @@ static int parse_dest_dev(struct clone *clone, struct dm_arg_set *as, char **err
return r;
}
- dest_dev_size = get_dev_size(clone->dest_dev);
- if (dest_dev_size < clone->ti->len) {
- dm_put_device(clone->ti, clone->dest_dev);
- *error = "Device size larger than destination device";
- return -EINVAL;
- }
-
return 0;
}
static int parse_source_dev(struct clone *clone, struct dm_arg_set *as, char **error)
{
int r;
- sector_t source_dev_size;
r = dm_get_device(clone->ti, dm_shift_arg(as), BLK_OPEN_READ,
&clone->source_dev);
@@ -1728,13 +1719,6 @@ static int parse_source_dev(struct clone *clone, struct dm_arg_set *as, char **e
return r;
}
- source_dev_size = get_dev_size(clone->source_dev);
- if (source_dev_size < clone->ti->len) {
- dm_put_device(clone->ti, clone->source_dev);
- *error = "Device size larger than source device";
- return -EINVAL;
- }
-
return 0;
}
@@ -1877,7 +1861,8 @@ static int clone_ctr(struct dm_target *ti, unsigned int argc, char **argv)
clone->hydration_offset = 0;
atomic_set(&clone->hydrations_in_flight, 0);
- clone->wq = alloc_workqueue("dm-" DM_MSG_PREFIX, WQ_MEM_RECLAIM, 0);
+ clone->wq = alloc_workqueue("dm-" DM_MSG_PREFIX,
+ WQ_MEM_RECLAIM | WQ_PERCPU, 0);
if (!clone->wq) {
ti->error = "Failed to allocate workqueue";
r = -ENOMEM;