struct dasd_device *, struct dasd_device *,
                        unsigned int, int, unsigned int, unsigned int,
                        unsigned int, unsigned int);
+static int dasd_eckd_query_pprc_status(struct dasd_device *,
+                                      struct dasd_pprc_data_sc4 *);
 
 /* initial attempt at a probe function. this can be simplified once
  * the other detection code is gone */
        return count;
 }
 
+static int dasd_in_copy_relation(struct dasd_device *device)
+{
+       struct dasd_pprc_data_sc4 *temp;
+       int rc;
+
+       if (!dasd_eckd_pprc_enabled(device))
+               return 0;
+
+       temp = kzalloc(sizeof(*temp), GFP_KERNEL);
+       if (!temp)
+               return -ENOMEM;
+
+       rc = dasd_eckd_query_pprc_status(device, temp);
+       if (!rc)
+               rc = temp->dev_info[0].state;
+
+       kfree(temp);
+       return rc;
+}
+
 /*
  * Release allocated space for a given range or an entire volume.
  */
        int cur_to_trk, cur_from_trk;
        struct dasd_ccw_req *cqr;
        u32 beg_cyl, end_cyl;
+       int copy_relation;
        struct ccw1 *ccw;
        int trks_per_ext;
        size_t ras_size;
        if (dasd_eckd_ras_sanity_checks(device, first_trk, last_trk))
                return ERR_PTR(-EINVAL);
 
+       copy_relation = dasd_in_copy_relation(device);
+       if (copy_relation < 0)
+               return ERR_PTR(copy_relation);
+
        rq = req ? blk_mq_rq_to_pdu(req) : NULL;
 
        features = &private->features;
        /*
         * This bit guarantees initialisation of tracks within an extent that is
         * not fully specified, but is only supported with a certain feature
-        * subset.
+        * subset and for devices not in a copy relation.
         */
-       ras_data->op_flags.guarantee_init = !!(features->feature[56] & 0x01);
+       if (features->feature[56] & 0x01 && !copy_relation)
+               ras_data->op_flags.guarantee_init = 1;
+
        ras_data->lss = private->conf.ned->ID;
        ras_data->dev_addr = private->conf.ned->unit_addr;
        ras_data->nr_exts = nr_exts;