]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - drivers/block/drbd/drbd_nl.c
drbd: Implemented flags for the resize packet
[mirror_ubuntu-artful-kernel.git] / drivers / block / drbd / drbd_nl.c
index 6429d2b19e064a0e5aa56c77a91aca2d96e588dd..6f7933376a1159933818b55cc8a6bff5bde16968 100644 (file)
@@ -510,7 +510,7 @@ void drbd_resume_io(struct drbd_conf *mdev)
  * Returns 0 on success, negative return values indicate errors.
  * You should call drbd_md_sync() after calling this function.
  */
-enum determine_dev_size drbd_determin_dev_size(struct drbd_conf *mdev, int force) __must_hold(local)
+enum determine_dev_size drbd_determin_dev_size(struct drbd_conf *mdev, enum dds_flags flags) __must_hold(local)
 {
        sector_t prev_first_sect, prev_size; /* previous meta location */
        sector_t la_size;
@@ -541,12 +541,12 @@ enum determine_dev_size drbd_determin_dev_size(struct drbd_conf *mdev, int force
        /* TODO: should only be some assert here, not (re)init... */
        drbd_md_set_sector_offsets(mdev, mdev->ldev);
 
-       size = drbd_new_dev_size(mdev, mdev->ldev, force);
+       size = drbd_new_dev_size(mdev, mdev->ldev, flags & DDSF_FORCED);
 
        if (drbd_get_capacity(mdev->this_bdev) != size ||
            drbd_bm_capacity(mdev) != size) {
                int err;
-               err = drbd_bm_resize(mdev, size);
+               err = drbd_bm_resize(mdev, size, !(flags & DDSF_NO_RESYNC));
                if (unlikely(err)) {
                        /* currently there is only one error: ENOMEM! */
                        size = drbd_bm_capacity(mdev)>>1;
@@ -1508,7 +1508,7 @@ static int drbd_nl_resize(struct drbd_conf *mdev, struct drbd_nl_cfg_req *nlp,
        }
 
        mdev->ldev->dc.disk_size = (sector_t)rs.resize_size;
-       dd = drbd_determin_dev_size(mdev, rs.resize_force);
+       dd = drbd_determin_dev_size(mdev, rs.resize_force ? DDSF_FORCED : 0);
        drbd_md_sync(mdev);
        put_ldev(mdev);
        if (dd == dev_size_error) {
@@ -1521,7 +1521,7 @@ static int drbd_nl_resize(struct drbd_conf *mdev, struct drbd_nl_cfg_req *nlp,
                        set_bit(RESIZE_PENDING, &mdev->flags);
 
                drbd_send_uuids(mdev);
-               drbd_send_sizes(mdev, 1);
+               drbd_send_sizes(mdev, 1, 0);
        }
 
  fail: