diff options
Diffstat (limited to 'drivers/s390/block')
| -rw-r--r-- | drivers/s390/block/dasd.c | 8 | ||||
| -rw-r--r-- | drivers/s390/block/dasd_alias.c | 13 | ||||
| -rw-r--r-- | drivers/s390/block/dasd_devmap.c | 6 | ||||
| -rw-r--r-- | drivers/s390/block/dasd_diag.c | 4 | ||||
| -rw-r--r-- | drivers/s390/block/dasd_eckd.c | 45 | ||||
| -rw-r--r-- | drivers/s390/block/dasd_eer.c | 4 | ||||
| -rw-r--r-- | drivers/s390/block/dasd_fba.c | 2 | ||||
| -rw-r--r-- | drivers/s390/block/dasd_ioctl.c | 4 | ||||
| -rw-r--r-- | drivers/s390/block/dcssblk.c | 9 | ||||
| -rw-r--r-- | drivers/s390/block/scm_blk.c | 5 | ||||
| -rw-r--r-- | drivers/s390/block/scm_drv.c | 2 |
11 files changed, 56 insertions, 46 deletions
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index 35031357ac4d..3181c06d91ce 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c @@ -86,7 +86,7 @@ struct dasd_device *dasd_alloc_device(void) { struct dasd_device *device; - device = kzalloc(sizeof(struct dasd_device), GFP_ATOMIC); + device = kzalloc_obj(struct dasd_device, GFP_ATOMIC); if (!device) return ERR_PTR(-ENOMEM); @@ -150,7 +150,7 @@ struct dasd_block *dasd_alloc_block(void) { struct dasd_block *block; - block = kzalloc(sizeof(*block), GFP_ATOMIC); + block = kzalloc_obj(*block, GFP_ATOMIC); if (!block) return ERR_PTR(-ENOMEM); /* open_count = 0 means device online but not in use */ @@ -868,7 +868,7 @@ int dasd_profile_on(struct dasd_profile *profile) { struct dasd_profile_info *data; - data = kzalloc(sizeof(*data), GFP_KERNEL); + data = kzalloc_obj(*data); if (!data) return -ENOMEM; spin_lock_bh(&profile->lock); @@ -3180,7 +3180,7 @@ enum blk_eh_timer_return dasd_times_out(struct request *req) static int dasd_init_hctx(struct blk_mq_hw_ctx *hctx, void *data, unsigned int idx) { - struct dasd_queue *dq = kzalloc(sizeof(*dq), GFP_KERNEL); + struct dasd_queue *dq = kzalloc_obj(*dq); if (!dq) return -ENOMEM; diff --git a/drivers/s390/block/dasd_alias.c b/drivers/s390/block/dasd_alias.c index f7e768d8ca76..8d6c16d35c22 100644 --- a/drivers/s390/block/dasd_alias.c +++ b/drivers/s390/block/dasd_alias.c @@ -98,7 +98,7 @@ static struct alias_server *_allocate_server(struct dasd_uid *uid) { struct alias_server *server; - server = kzalloc(sizeof(*server), GFP_KERNEL); + server = kzalloc_obj(*server); if (!server) return ERR_PTR(-ENOMEM); memcpy(server->uid.vendor, uid->vendor, sizeof(uid->vendor)); @@ -117,17 +117,16 @@ static struct alias_lcu *_allocate_lcu(struct dasd_uid *uid) { struct alias_lcu *lcu; - lcu = kzalloc(sizeof(*lcu), GFP_KERNEL); + lcu = kzalloc_obj(*lcu); if (!lcu) return ERR_PTR(-ENOMEM); - lcu->uac = kzalloc(sizeof(*(lcu->uac)), GFP_KERNEL | GFP_DMA); + lcu->uac = kzalloc_obj(*(lcu->uac), GFP_KERNEL | GFP_DMA); if (!lcu->uac) goto out_err1; - lcu->rsu_cqr = kzalloc(sizeof(*lcu->rsu_cqr), GFP_KERNEL | GFP_DMA); + lcu->rsu_cqr = kzalloc_obj(*lcu->rsu_cqr, GFP_KERNEL | GFP_DMA); if (!lcu->rsu_cqr) goto out_err2; - lcu->rsu_cqr->cpaddr = kzalloc(sizeof(struct ccw1), - GFP_KERNEL | GFP_DMA); + lcu->rsu_cqr->cpaddr = kzalloc_obj(struct ccw1, GFP_KERNEL | GFP_DMA); if (!lcu->rsu_cqr->cpaddr) goto out_err3; lcu->rsu_cqr->data = kzalloc(16, GFP_KERNEL | GFP_DMA); @@ -323,7 +322,7 @@ static int _add_device_to_lcu(struct alias_lcu *lcu, } group = _find_group(lcu, &uid); if (!group) { - group = kzalloc(sizeof(*group), GFP_ATOMIC); + group = kzalloc_obj(*group, GFP_ATOMIC); if (!group) return -ENOMEM; memcpy(group->uid.vendor, uid.vendor, sizeof(uid.vendor)); diff --git a/drivers/s390/block/dasd_devmap.c b/drivers/s390/block/dasd_devmap.c index 73972900fc55..381d616ad433 100644 --- a/drivers/s390/block/dasd_devmap.c +++ b/drivers/s390/block/dasd_devmap.c @@ -412,7 +412,7 @@ dasd_add_busid(const char *bus_id, int features) struct dasd_devmap *devmap, *new, *tmp; int hash; - new = kzalloc(sizeof(struct dasd_devmap), GFP_KERNEL); + new = kzalloc_obj(struct dasd_devmap); if (!new) return ERR_PTR(-ENOMEM); spin_lock(&dasd_devmap_lock); @@ -605,7 +605,7 @@ static int dasd_devmap_get_pprc_status(struct dasd_device *device, dev_warn(&device->cdev->dev, "Unable to query copy relation status\n"); return -EOPNOTSUPP; } - temp = kzalloc(sizeof(*temp), GFP_KERNEL); + temp = kzalloc_obj(*temp); if (!temp) return -ENOMEM; @@ -2274,7 +2274,7 @@ static ssize_t dasd_copy_pair_store(struct device *dev, } else if (sec_devmap->copy) { copy = sec_devmap->copy; } else { - copy = kzalloc(sizeof(*copy), GFP_KERNEL); + copy = kzalloc_obj(*copy); if (!copy) return -ENOMEM; } diff --git a/drivers/s390/block/dasd_diag.c b/drivers/s390/block/dasd_diag.c index 56f1af8a7ddd..af68c2ee659d 100644 --- a/drivers/s390/block/dasd_diag.c +++ b/drivers/s390/block/dasd_diag.c @@ -325,7 +325,7 @@ dasd_diag_check_device(struct dasd_device *device) int rc; if (private == NULL) { - private = kzalloc(sizeof(*private), GFP_KERNEL); + private = kzalloc_obj(*private); if (private == NULL) { DBF_DEV_EVENT(DBF_WARNING, device, "%s", "Allocating memory for private DASD data " @@ -395,7 +395,7 @@ dasd_diag_check_device(struct dasd_device *device) rc = -ENOMEM; goto out; } - bio = kzalloc(sizeof(*bio), GFP_KERNEL); + bio = kzalloc_obj(*bio); if (bio == NULL) { DBF_DEV_EVENT(DBF_WARNING, device, "%s", "No memory to allocate initialization bio"); diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c index b08e900687f3..14e58c336baa 100644 --- a/drivers/s390/block/dasd_eckd.c +++ b/drivers/s390/block/dasd_eckd.c @@ -1468,7 +1468,7 @@ static int dasd_eckd_pe_handler(struct dasd_device *device, { struct pe_handler_work_data *data; - data = kzalloc(sizeof(*data), GFP_ATOMIC | GFP_DMA); + data = kzalloc_obj(*data, GFP_ATOMIC | GFP_DMA); if (!data) { if (mutex_trylock(&dasd_pe_handler_mutex)) { data = pe_handler_worker; @@ -1720,7 +1720,7 @@ static int dasd_eckd_ext_pool_exhaust(struct dasd_device *device, { struct ext_pool_exhaust_work_data *data; - data = kzalloc(sizeof(*data), GFP_ATOMIC); + data = kzalloc_obj(*data, GFP_ATOMIC); if (!data) return -ENOMEM; INIT_WORK(&data->worker, dasd_eckd_ext_pool_exhaust_work); @@ -2070,7 +2070,7 @@ dasd_eckd_check_characteristics(struct dasd_device *device) "The DASD is not operating in multipath mode\n"); } if (!private) { - private = kzalloc(sizeof(*private), GFP_KERNEL | GFP_DMA); + private = kzalloc_obj(*private, GFP_KERNEL | GFP_DMA); if (!private) { dev_warn(&device->cdev->dev, "Allocating memory for private DASD data " @@ -3729,7 +3729,7 @@ static int dasd_in_copy_relation(struct dasd_device *device) if (!dasd_eckd_pprc_enabled(device)) return 0; - temp = kzalloc(sizeof(*temp), GFP_KERNEL); + temp = kzalloc_obj(*temp); if (!temp) return -ENOMEM; @@ -5951,7 +5951,7 @@ static int dasd_eckd_query_host_access(struct dasd_device *device, "Could not allocate read message buffer request"); return PTR_ERR(cqr); } - host_access = kzalloc(sizeof(*host_access), GFP_KERNEL | GFP_DMA); + host_access = kzalloc_obj(*host_access, GFP_KERNEL | GFP_DMA); if (!host_access) { dasd_sfree_request(cqr, device); DBF_EVENT_DEVID(DBF_WARNING, device->cdev, "%s", @@ -6017,7 +6017,7 @@ static int dasd_eckd_host_access_count(struct dasd_device *device) int count = 0; int rc, i; - access = kzalloc(sizeof(*access), GFP_NOIO); + access = kzalloc_obj(*access, GFP_NOIO); if (!access) { DBF_EVENT_DEVID(DBF_WARNING, device->cdev, "%s", "Could not allocate access buffer"); @@ -6053,7 +6053,7 @@ static int dasd_hosts_print(struct dasd_device *device, struct seq_file *m) char sysplex[9] = ""; int rc, i; - access = kzalloc(sizeof(*access), GFP_NOIO); + access = kzalloc_obj(*access, GFP_NOIO); if (!access) { DBF_EVENT_DEVID(DBF_WARNING, device->cdev, "%s", "Could not allocate access buffer"); @@ -6135,6 +6135,7 @@ static void copy_pair_set_active(struct dasd_copy_relation *copy, char *new_busi static int dasd_eckd_copy_pair_swap(struct dasd_device *device, char *prim_busid, char *sec_busid) { + struct dasd_eckd_private *prim_priv, *sec_priv; struct dasd_device *primary, *secondary; struct dasd_copy_relation *copy; struct dasd_block *block; @@ -6155,6 +6156,9 @@ static int dasd_eckd_copy_pair_swap(struct dasd_device *device, char *prim_busid if (!secondary) return DASD_COPYPAIRSWAP_SECONDARY; + prim_priv = primary->private; + sec_priv = secondary->private; + /* * usually the device should be quiesced for swap * for paranoia stop device and requeue requests again @@ -6182,6 +6186,18 @@ static int dasd_eckd_copy_pair_swap(struct dasd_device *device, char *prim_busid dev_name(&secondary->cdev->dev), rc); } + if (primary->stopped & DASD_STOPPED_QUIESCE) { + dasd_device_set_stop_bits(secondary, DASD_STOPPED_QUIESCE); + dasd_device_remove_stop_bits(primary, DASD_STOPPED_QUIESCE); + } + + /* + * The secondary device never got through format detection, but since it + * is a copy of the primary device, the format is exactly the same; + * therefore, the detected layout can simply be copied. + */ + sec_priv->uses_cdl = prim_priv->uses_cdl; + /* re-enable device */ dasd_device_remove_stop_bits(primary, DASD_STOPPED_PPRC); dasd_device_remove_stop_bits(secondary, DASD_STOPPED_PPRC); @@ -6721,7 +6737,7 @@ static void dasd_eckd_check_attention_work(struct work_struct *work) data = container_of(work, struct check_attention_work_data, worker); device = data->device; - messages = kzalloc(sizeof(*messages), GFP_KERNEL); + messages = kzalloc_obj(*messages); if (!messages) { DBF_DEV_EVENT(DBF_WARNING, device, "%s", "Could not allocate attention message buffer"); @@ -6748,7 +6764,7 @@ static int dasd_eckd_check_attention(struct dasd_device *device, __u8 lpum) { struct check_attention_work_data *data; - data = kzalloc(sizeof(*data), GFP_ATOMIC); + data = kzalloc_obj(*data, GFP_ATOMIC); if (!data) return -ENOMEM; INIT_WORK(&data->worker, dasd_eckd_check_attention_work); @@ -6912,18 +6928,17 @@ dasd_eckd_init(void) int ret; ASCEBC(dasd_eckd_discipline.ebcname, 4); - dasd_reserve_req = kmalloc(sizeof(*dasd_reserve_req), - GFP_KERNEL | GFP_DMA); + dasd_reserve_req = kmalloc_obj(*dasd_reserve_req, GFP_KERNEL | GFP_DMA); if (!dasd_reserve_req) return -ENOMEM; - dasd_vol_info_req = kmalloc(sizeof(*dasd_vol_info_req), - GFP_KERNEL | GFP_DMA); + dasd_vol_info_req = kmalloc_obj(*dasd_vol_info_req, + GFP_KERNEL | GFP_DMA); if (!dasd_vol_info_req) { kfree(dasd_reserve_req); return -ENOMEM; } - pe_handler_worker = kmalloc(sizeof(*pe_handler_worker), - GFP_KERNEL | GFP_DMA); + pe_handler_worker = kmalloc_obj(*pe_handler_worker, + GFP_KERNEL | GFP_DMA); if (!pe_handler_worker) { kfree(dasd_reserve_req); kfree(dasd_vol_info_req); diff --git a/drivers/s390/block/dasd_eer.c b/drivers/s390/block/dasd_eer.c index b177b7952f2e..78d66e2711cd 100644 --- a/drivers/s390/block/dasd_eer.c +++ b/drivers/s390/block/dasd_eer.c @@ -544,7 +544,7 @@ static int dasd_eer_open(struct inode *inp, struct file *filp) struct eerbuffer *eerb; unsigned long flags; - eerb = kzalloc(sizeof(struct eerbuffer), GFP_KERNEL); + eerb = kzalloc_obj(struct eerbuffer); if (!eerb) return -ENOMEM; eerb->buffer_page_count = eer_pages; @@ -689,7 +689,7 @@ int __init dasd_eer_init(void) { int rc; - dasd_eer_dev = kzalloc(sizeof(*dasd_eer_dev), GFP_KERNEL); + dasd_eer_dev = kzalloc_obj(*dasd_eer_dev); if (!dasd_eer_dev) return -ENOMEM; diff --git a/drivers/s390/block/dasd_fba.c b/drivers/s390/block/dasd_fba.c index c2a87201c153..029acb83ecab 100644 --- a/drivers/s390/block/dasd_fba.c +++ b/drivers/s390/block/dasd_fba.c @@ -119,7 +119,7 @@ dasd_fba_check_characteristics(struct dasd_device *device) int readonly, rc; if (!private) { - private = kzalloc(sizeof(*private), GFP_KERNEL | GFP_DMA); + private = kzalloc_obj(*private, GFP_KERNEL | GFP_DMA); if (!private) { dev_warn(&device->cdev->dev, "Allocating memory for private DASD " diff --git a/drivers/s390/block/dasd_ioctl.c b/drivers/s390/block/dasd_ioctl.c index f883990be626..c85ee42732a3 100644 --- a/drivers/s390/block/dasd_ioctl.c +++ b/drivers/s390/block/dasd_ioctl.c @@ -442,7 +442,7 @@ static int dasd_ioctl_read_profile(struct dasd_block *block, void __user *argp) struct dasd_profile_info_t *data; int rc = 0; - data = kmalloc(sizeof(*data), GFP_KERNEL); + data = kmalloc_obj(*data); if (!data) return -ENOMEM; @@ -560,7 +560,7 @@ static int dasd_ioctl_information(struct dasd_block *block, void __user *argp, struct dasd_information2_t *dasd_info; int error; - dasd_info = kzalloc(sizeof(*dasd_info), GFP_KERNEL); + dasd_info = kzalloc_obj(*dasd_info); if (!dasd_info) return -ENOMEM; diff --git a/drivers/s390/block/dcssblk.c b/drivers/s390/block/dcssblk.c index 38e1df8f8a82..e5a02c2990d0 100644 --- a/drivers/s390/block/dcssblk.c +++ b/drivers/s390/block/dcssblk.c @@ -240,9 +240,7 @@ dcssblk_is_continuous(struct dcssblk_dev_info *dev_info) if (dev_info->num_of_segments <= 1) return 0; - sort_list = kcalloc(dev_info->num_of_segments, - sizeof(struct segment_info), - GFP_KERNEL); + sort_list = kzalloc_objs(struct segment_info, dev_info->num_of_segments); if (sort_list == NULL) return -ENOMEM; i = 0; @@ -310,7 +308,7 @@ dcssblk_load_segment(char *name, struct segment_info **seg_info) return -EEXIST; /* get a struct segment_info */ - *seg_info = kzalloc(sizeof(struct segment_info), GFP_KERNEL); + *seg_info = kzalloc_obj(struct segment_info); if (*seg_info == NULL) return -ENOMEM; @@ -606,8 +604,7 @@ dcssblk_add_store(struct device *dev, struct device_attribute *attr, const char * get a struct dcssblk_dev_info */ if (num_of_segments == 0) { - dev_info = kzalloc(sizeof(struct dcssblk_dev_info), - GFP_KERNEL); + dev_info = kzalloc_obj(struct dcssblk_dev_info); if (dev_info == NULL) { rc = -ENOMEM; goto out; diff --git a/drivers/s390/block/scm_blk.c b/drivers/s390/block/scm_blk.c index 04e84f45dcc9..fa223949eac0 100644 --- a/drivers/s390/block/scm_blk.c +++ b/drivers/s390/block/scm_blk.c @@ -77,8 +77,7 @@ static int __scm_alloc_rq(void) if (!scmrq->aob) goto free; - scmrq->request = kcalloc(nr_requests_per_io, sizeof(scmrq->request[0]), - GFP_KERNEL); + scmrq->request = kzalloc_objs(scmrq->request[0], nr_requests_per_io); if (!scmrq->request) goto free; @@ -331,7 +330,7 @@ static blk_status_t scm_blk_request(struct blk_mq_hw_ctx *hctx, static int scm_blk_init_hctx(struct blk_mq_hw_ctx *hctx, void *data, unsigned int idx) { - struct scm_queue *qd = kzalloc(sizeof(*qd), GFP_KERNEL); + struct scm_queue *qd = kzalloc_obj(*qd); if (!qd) return -ENOMEM; diff --git a/drivers/s390/block/scm_drv.c b/drivers/s390/block/scm_drv.c index 6cffbbe83f89..095d06eeae7c 100644 --- a/drivers/s390/block/scm_drv.c +++ b/drivers/s390/block/scm_drv.c @@ -43,7 +43,7 @@ static int scm_probe(struct scm_device *scmdev) if (scmdev->attrs.oper_state != OP_STATE_GOOD) return -EINVAL; - bdev = kzalloc(sizeof(*bdev), GFP_KERNEL); + bdev = kzalloc_obj(*bdev); if (!bdev) return -ENOMEM; |
