RDMA/mlx5: Verify that DM operation is reasonable
[linux-2.6-microblaze.git] / drivers / md / dm-era-target.c
index d0e75fd..d9ac737 100644 (file)
@@ -1501,15 +1501,6 @@ static int era_ctr(struct dm_target *ti, unsigned argc, char **argv)
        }
        era->md = md;
 
-       era->nr_blocks = calc_nr_blocks(era);
-
-       r = metadata_resize(era->md, &era->nr_blocks);
-       if (r) {
-               ti->error = "couldn't resize metadata";
-               era_destroy(era);
-               return -ENOMEM;
-       }
-
        era->wq = alloc_ordered_workqueue("dm-" DM_MSG_PREFIX, WQ_MEM_RECLAIM);
        if (!era->wq) {
                ti->error = "could not create workqueue for metadata object";
@@ -1584,9 +1575,17 @@ static int era_preresume(struct dm_target *ti)
        dm_block_t new_size = calc_nr_blocks(era);
 
        if (era->nr_blocks != new_size) {
-               r = in_worker1(era, metadata_resize, &new_size);
-               if (r)
+               r = metadata_resize(era->md, &new_size);
+               if (r) {
+                       DMERR("%s: metadata_resize failed", __func__);
                        return r;
+               }
+
+               r = metadata_commit(era->md);
+               if (r) {
+                       DMERR("%s: metadata_commit failed", __func__);
+                       return r;
+               }
 
                era->nr_blocks = new_size;
        }