Commit 543691a4 authored by Sebastian Ott's avatar Sebastian Ott Committed by Martin Schwidefsky

s390/dasd: remove casts to dasd_*_private

Convert dasd_device.private to be a void pointer to get
rid of a lot of explicit casts.
Signed-off-by: default avatarSebastian Ott <sebott@linux.vnet.ibm.com>
Reviewed-by: default avatarStefan Haberland <sth@linux.vnet.ibm.com>
Acked-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 570d237c
...@@ -185,14 +185,12 @@ static void _free_lcu(struct alias_lcu *lcu) ...@@ -185,14 +185,12 @@ static void _free_lcu(struct alias_lcu *lcu)
*/ */
int dasd_alias_make_device_known_to_lcu(struct dasd_device *device) int dasd_alias_make_device_known_to_lcu(struct dasd_device *device)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
unsigned long flags; unsigned long flags;
struct alias_server *server, *newserver; struct alias_server *server, *newserver;
struct alias_lcu *lcu, *newlcu; struct alias_lcu *lcu, *newlcu;
struct dasd_uid uid; struct dasd_uid uid;
private = (struct dasd_eckd_private *) device->private;
device->discipline->get_uid(device, &uid); device->discipline->get_uid(device, &uid);
spin_lock_irqsave(&aliastree.lock, flags); spin_lock_irqsave(&aliastree.lock, flags);
server = _find_server(&uid); server = _find_server(&uid);
...@@ -244,14 +242,13 @@ int dasd_alias_make_device_known_to_lcu(struct dasd_device *device) ...@@ -244,14 +242,13 @@ int dasd_alias_make_device_known_to_lcu(struct dasd_device *device)
*/ */
void dasd_alias_disconnect_device_from_lcu(struct dasd_device *device) void dasd_alias_disconnect_device_from_lcu(struct dasd_device *device)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
unsigned long flags; unsigned long flags;
struct alias_lcu *lcu; struct alias_lcu *lcu;
struct alias_server *server; struct alias_server *server;
int was_pending; int was_pending;
struct dasd_uid uid; struct dasd_uid uid;
private = (struct dasd_eckd_private *) device->private;
lcu = private->lcu; lcu = private->lcu;
/* nothing to do if already disconnected */ /* nothing to do if already disconnected */
if (!lcu) if (!lcu)
...@@ -316,12 +313,10 @@ static int _add_device_to_lcu(struct alias_lcu *lcu, ...@@ -316,12 +313,10 @@ static int _add_device_to_lcu(struct alias_lcu *lcu,
struct dasd_device *pos) struct dasd_device *pos)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
struct alias_pav_group *group; struct alias_pav_group *group;
struct dasd_uid uid; struct dasd_uid uid;
private = (struct dasd_eckd_private *) device->private;
private->uid.type = lcu->uac->unit[private->uid.real_unit_addr].ua_type; private->uid.type = lcu->uac->unit[private->uid.real_unit_addr].ua_type;
private->uid.base_unit_addr = private->uid.base_unit_addr =
lcu->uac->unit[private->uid.real_unit_addr].base_ua; lcu->uac->unit[private->uid.real_unit_addr].base_ua;
...@@ -362,10 +357,9 @@ static int _add_device_to_lcu(struct alias_lcu *lcu, ...@@ -362,10 +357,9 @@ static int _add_device_to_lcu(struct alias_lcu *lcu,
static void _remove_device_from_lcu(struct alias_lcu *lcu, static void _remove_device_from_lcu(struct alias_lcu *lcu,
struct dasd_device *device) struct dasd_device *device)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
struct alias_pav_group *group; struct alias_pav_group *group;
private = (struct dasd_eckd_private *) device->private;
list_move(&device->alias_list, &lcu->inactive_devices); list_move(&device->alias_list, &lcu->inactive_devices);
group = private->pavgroup; group = private->pavgroup;
if (!group) if (!group)
...@@ -603,13 +597,13 @@ static int _lcu_update(struct dasd_device *refdev, struct alias_lcu *lcu) ...@@ -603,13 +597,13 @@ static int _lcu_update(struct dasd_device *refdev, struct alias_lcu *lcu)
list_for_each_entry_safe(device, tempdev, &pavgroup->baselist, list_for_each_entry_safe(device, tempdev, &pavgroup->baselist,
alias_list) { alias_list) {
list_move(&device->alias_list, &lcu->active_devices); list_move(&device->alias_list, &lcu->active_devices);
private = (struct dasd_eckd_private *) device->private; private = device->private;
private->pavgroup = NULL; private->pavgroup = NULL;
} }
list_for_each_entry_safe(device, tempdev, &pavgroup->aliaslist, list_for_each_entry_safe(device, tempdev, &pavgroup->aliaslist,
alias_list) { alias_list) {
list_move(&device->alias_list, &lcu->active_devices); list_move(&device->alias_list, &lcu->active_devices);
private = (struct dasd_eckd_private *) device->private; private = device->private;
private->pavgroup = NULL; private->pavgroup = NULL;
} }
list_del(&pavgroup->group); list_del(&pavgroup->group);
...@@ -721,12 +715,11 @@ static int _schedule_lcu_update(struct alias_lcu *lcu, ...@@ -721,12 +715,11 @@ static int _schedule_lcu_update(struct alias_lcu *lcu,
int dasd_alias_add_device(struct dasd_device *device) int dasd_alias_add_device(struct dasd_device *device)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
struct alias_lcu *lcu; struct alias_lcu *lcu;
unsigned long flags; unsigned long flags;
int rc; int rc;
private = (struct dasd_eckd_private *) device->private;
lcu = private->lcu; lcu = private->lcu;
rc = 0; rc = 0;
spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags);
...@@ -747,20 +740,18 @@ int dasd_alias_add_device(struct dasd_device *device) ...@@ -747,20 +740,18 @@ int dasd_alias_add_device(struct dasd_device *device)
int dasd_alias_update_add_device(struct dasd_device *device) int dasd_alias_update_add_device(struct dasd_device *device)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
private = (struct dasd_eckd_private *) device->private;
private->lcu->flags |= UPDATE_PENDING; private->lcu->flags |= UPDATE_PENDING;
return dasd_alias_add_device(device); return dasd_alias_add_device(device);
} }
int dasd_alias_remove_device(struct dasd_device *device) int dasd_alias_remove_device(struct dasd_device *device)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
struct alias_lcu *lcu; struct alias_lcu *lcu = private->lcu;
unsigned long flags; unsigned long flags;
private = (struct dasd_eckd_private *) device->private;
lcu = private->lcu;
/* nothing to do if already removed */ /* nothing to do if already removed */
if (!lcu) if (!lcu)
return 0; return 0;
...@@ -772,16 +763,12 @@ int dasd_alias_remove_device(struct dasd_device *device) ...@@ -772,16 +763,12 @@ int dasd_alias_remove_device(struct dasd_device *device)
struct dasd_device *dasd_alias_get_start_dev(struct dasd_device *base_device) struct dasd_device *dasd_alias_get_start_dev(struct dasd_device *base_device)
{ {
struct dasd_eckd_private *alias_priv, *private = base_device->private;
struct alias_pav_group *group = private->pavgroup;
struct alias_lcu *lcu = private->lcu;
struct dasd_device *alias_device; struct dasd_device *alias_device;
struct alias_pav_group *group;
struct alias_lcu *lcu;
struct dasd_eckd_private *private, *alias_priv;
unsigned long flags; unsigned long flags;
private = (struct dasd_eckd_private *) base_device->private;
group = private->pavgroup;
lcu = private->lcu;
if (!group || !lcu) if (!group || !lcu)
return NULL; return NULL;
if (lcu->pav == NO_PAV || if (lcu->pav == NO_PAV ||
...@@ -817,7 +804,7 @@ struct dasd_device *dasd_alias_get_start_dev(struct dasd_device *base_device) ...@@ -817,7 +804,7 @@ struct dasd_device *dasd_alias_get_start_dev(struct dasd_device *base_device)
group->next = list_first_entry(&alias_device->alias_list, group->next = list_first_entry(&alias_device->alias_list,
struct dasd_device, alias_list); struct dasd_device, alias_list);
spin_unlock_irqrestore(&lcu->lock, flags); spin_unlock_irqrestore(&lcu->lock, flags);
alias_priv = (struct dasd_eckd_private *) alias_device->private; alias_priv = alias_device->private;
if ((alias_priv->count < private->count) && !alias_device->stopped && if ((alias_priv->count < private->count) && !alias_device->stopped &&
!test_bit(DASD_FLAG_OFFLINE, &alias_device->flags)) !test_bit(DASD_FLAG_OFFLINE, &alias_device->flags))
return alias_device; return alias_device;
...@@ -868,14 +855,14 @@ static void _restart_all_base_devices_on_lcu(struct alias_lcu *lcu) ...@@ -868,14 +855,14 @@ static void _restart_all_base_devices_on_lcu(struct alias_lcu *lcu)
/* active and inactive list can contain alias as well as base devices */ /* active and inactive list can contain alias as well as base devices */
list_for_each_entry(device, &lcu->active_devices, alias_list) { list_for_each_entry(device, &lcu->active_devices, alias_list) {
private = (struct dasd_eckd_private *) device->private; private = device->private;
if (private->uid.type != UA_BASE_DEVICE) if (private->uid.type != UA_BASE_DEVICE)
continue; continue;
dasd_schedule_block_bh(device->block); dasd_schedule_block_bh(device->block);
dasd_schedule_device_bh(device); dasd_schedule_device_bh(device);
} }
list_for_each_entry(device, &lcu->inactive_devices, alias_list) { list_for_each_entry(device, &lcu->inactive_devices, alias_list) {
private = (struct dasd_eckd_private *) device->private; private = device->private;
if (private->uid.type != UA_BASE_DEVICE) if (private->uid.type != UA_BASE_DEVICE)
continue; continue;
dasd_schedule_block_bh(device->block); dasd_schedule_block_bh(device->block);
...@@ -912,7 +899,7 @@ static void flush_all_alias_devices_on_lcu(struct alias_lcu *lcu) ...@@ -912,7 +899,7 @@ static void flush_all_alias_devices_on_lcu(struct alias_lcu *lcu)
spin_lock_irqsave(&lcu->lock, flags); spin_lock_irqsave(&lcu->lock, flags);
list_for_each_entry_safe(device, temp, &lcu->active_devices, list_for_each_entry_safe(device, temp, &lcu->active_devices,
alias_list) { alias_list) {
private = (struct dasd_eckd_private *) device->private; private = device->private;
if (private->uid.type == UA_BASE_DEVICE) if (private->uid.type == UA_BASE_DEVICE)
continue; continue;
list_move(&device->alias_list, &active); list_move(&device->alias_list, &active);
...@@ -934,7 +921,7 @@ static void flush_all_alias_devices_on_lcu(struct alias_lcu *lcu) ...@@ -934,7 +921,7 @@ static void flush_all_alias_devices_on_lcu(struct alias_lcu *lcu)
if (device == list_first_entry(&active, if (device == list_first_entry(&active,
struct dasd_device, alias_list)) { struct dasd_device, alias_list)) {
list_move(&device->alias_list, &lcu->active_devices); list_move(&device->alias_list, &lcu->active_devices);
private = (struct dasd_eckd_private *) device->private; private = device->private;
private->pavgroup = NULL; private->pavgroup = NULL;
} }
} }
...@@ -1014,13 +1001,11 @@ static void summary_unit_check_handling_work(struct work_struct *work) ...@@ -1014,13 +1001,11 @@ static void summary_unit_check_handling_work(struct work_struct *work)
void dasd_alias_handle_summary_unit_check(struct dasd_device *device, void dasd_alias_handle_summary_unit_check(struct dasd_device *device,
struct irb *irb) struct irb *irb)
{ {
struct dasd_eckd_private *private = device->private;
struct alias_lcu *lcu; struct alias_lcu *lcu;
char reason; char reason;
struct dasd_eckd_private *private;
char *sense; char *sense;
private = (struct dasd_eckd_private *) device->private;
sense = dasd_get_sense(irb); sense = dasd_get_sense(irb);
if (sense) { if (sense) {
reason = sense[8]; reason = sense[8];
......
...@@ -99,12 +99,10 @@ static inline int ...@@ -99,12 +99,10 @@ static inline int
mdsk_init_io(struct dasd_device *device, unsigned int blocksize, mdsk_init_io(struct dasd_device *device, unsigned int blocksize,
blocknum_t offset, blocknum_t *end_block) blocknum_t offset, blocknum_t *end_block)
{ {
struct dasd_diag_private *private; struct dasd_diag_private *private = device->private;
struct dasd_diag_init_io *iib; struct dasd_diag_init_io *iib = &private->iib;
int rc; int rc;
private = (struct dasd_diag_private *) device->private;
iib = &private->iib;
memset(iib, 0, sizeof (struct dasd_diag_init_io)); memset(iib, 0, sizeof (struct dasd_diag_init_io));
iib->dev_nr = private->dev_id.devno; iib->dev_nr = private->dev_id.devno;
...@@ -125,12 +123,10 @@ mdsk_init_io(struct dasd_device *device, unsigned int blocksize, ...@@ -125,12 +123,10 @@ mdsk_init_io(struct dasd_device *device, unsigned int blocksize,
static inline int static inline int
mdsk_term_io(struct dasd_device * device) mdsk_term_io(struct dasd_device * device)
{ {
struct dasd_diag_private *private; struct dasd_diag_private *private = device->private;
struct dasd_diag_init_io *iib; struct dasd_diag_init_io *iib = &private->iib;
int rc; int rc;
private = (struct dasd_diag_private *) device->private;
iib = &private->iib;
memset(iib, 0, sizeof (struct dasd_diag_init_io)); memset(iib, 0, sizeof (struct dasd_diag_init_io));
iib->dev_nr = private->dev_id.devno; iib->dev_nr = private->dev_id.devno;
rc = dia250(iib, TERM_BIO); rc = dia250(iib, TERM_BIO);
...@@ -175,8 +171,8 @@ dasd_start_diag(struct dasd_ccw_req * cqr) ...@@ -175,8 +171,8 @@ dasd_start_diag(struct dasd_ccw_req * cqr)
cqr->status = DASD_CQR_ERROR; cqr->status = DASD_CQR_ERROR;
return -EIO; return -EIO;
} }
private = (struct dasd_diag_private *) device->private; private = device->private;
dreq = (struct dasd_diag_req *) cqr->data; dreq = cqr->data;
private->iob.dev_nr = private->dev_id.devno; private->iob.dev_nr = private->dev_id.devno;
private->iob.key = 0; private->iob.key = 0;
...@@ -315,18 +311,17 @@ static void dasd_ext_handler(struct ext_code ext_code, ...@@ -315,18 +311,17 @@ static void dasd_ext_handler(struct ext_code ext_code,
static int static int
dasd_diag_check_device(struct dasd_device *device) dasd_diag_check_device(struct dasd_device *device)
{ {
struct dasd_block *block; struct dasd_diag_private *private = device->private;
struct dasd_diag_private *private;
struct dasd_diag_characteristics *rdc_data; struct dasd_diag_characteristics *rdc_data;
struct dasd_diag_bio bio;
struct vtoc_cms_label *label; struct vtoc_cms_label *label;
blocknum_t end_block; struct dasd_block *block;
struct dasd_diag_bio bio;
unsigned int sb, bsize; unsigned int sb, bsize;
blocknum_t end_block;
int rc; int rc;
private = (struct dasd_diag_private *) device->private;
if (private == NULL) { if (private == NULL) {
private = kzalloc(sizeof(struct dasd_diag_private),GFP_KERNEL); private = kzalloc(sizeof(*private), GFP_KERNEL);
if (private == NULL) { if (private == NULL) {
DBF_DEV_EVENT(DBF_WARNING, device, "%s", DBF_DEV_EVENT(DBF_WARNING, device, "%s",
"Allocating memory for private DASD data " "Allocating memory for private DASD data "
...@@ -334,7 +329,7 @@ dasd_diag_check_device(struct dasd_device *device) ...@@ -334,7 +329,7 @@ dasd_diag_check_device(struct dasd_device *device)
return -ENOMEM; return -ENOMEM;
} }
ccw_device_get_id(device->cdev, &private->dev_id); ccw_device_get_id(device->cdev, &private->dev_id);
device->private = (void *) private; device->private = private;
} }
block = dasd_alloc_block(); block = dasd_alloc_block();
if (IS_ERR(block)) { if (IS_ERR(block)) {
...@@ -348,7 +343,7 @@ dasd_diag_check_device(struct dasd_device *device) ...@@ -348,7 +343,7 @@ dasd_diag_check_device(struct dasd_device *device)
block->base = device; block->base = device;
/* Read Device Characteristics */ /* Read Device Characteristics */
rdc_data = (void *) &(private->rdc_data); rdc_data = &private->rdc_data;
rdc_data->dev_nr = private->dev_id.devno; rdc_data->dev_nr = private->dev_id.devno;
rdc_data->rdc_len = sizeof (struct dasd_diag_characteristics); rdc_data->rdc_len = sizeof (struct dasd_diag_characteristics);
...@@ -596,16 +591,14 @@ static int ...@@ -596,16 +591,14 @@ static int
dasd_diag_fill_info(struct dasd_device * device, dasd_diag_fill_info(struct dasd_device * device,
struct dasd_information2_t * info) struct dasd_information2_t * info)
{ {
struct dasd_diag_private *private; struct dasd_diag_private *private = device->private;
private = (struct dasd_diag_private *) device->private;
info->label_block = (unsigned int) private->pt_block; info->label_block = (unsigned int) private->pt_block;
info->FBA_layout = 1; info->FBA_layout = 1;
info->format = DASD_FORMAT_LDL; info->format = DASD_FORMAT_LDL;
info->characteristics_size = sizeof (struct dasd_diag_characteristics); info->characteristics_size = sizeof(private->rdc_data);
memcpy(info->characteristics, memcpy(info->characteristics, &private->rdc_data,
&((struct dasd_diag_private *) device->private)->rdc_data, sizeof(private->rdc_data));
sizeof (struct dasd_diag_characteristics));
info->confdata_size = 0; info->confdata_size = 0;
return 0; return 0;
} }
......
...@@ -212,10 +212,9 @@ check_XRC (struct ccw1 *de_ccw, ...@@ -212,10 +212,9 @@ check_XRC (struct ccw1 *de_ccw,
struct DE_eckd_data *data, struct DE_eckd_data *data,
struct dasd_device *device) struct dasd_device *device)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
int rc; int rc;
private = (struct dasd_eckd_private *) device->private;
if (!private->rdc_data.facilities.XRC_supported) if (!private->rdc_data.facilities.XRC_supported)
return 0; return 0;
...@@ -237,13 +236,11 @@ static int ...@@ -237,13 +236,11 @@ static int
define_extent(struct ccw1 *ccw, struct DE_eckd_data *data, unsigned int trk, define_extent(struct ccw1 *ccw, struct DE_eckd_data *data, unsigned int trk,
unsigned int totrk, int cmd, struct dasd_device *device) unsigned int totrk, int cmd, struct dasd_device *device)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
u32 begcyl, endcyl; u32 begcyl, endcyl;
u16 heads, beghead, endhead; u16 heads, beghead, endhead;
int rc = 0; int rc = 0;
private = (struct dasd_eckd_private *) device->private;
ccw->cmd_code = DASD_ECKD_CCW_DEFINE_EXTENT; ccw->cmd_code = DASD_ECKD_CCW_DEFINE_EXTENT;
ccw->flags = 0; ccw->flags = 0;
ccw->count = 16; ccw->count = 16;
...@@ -322,10 +319,9 @@ define_extent(struct ccw1 *ccw, struct DE_eckd_data *data, unsigned int trk, ...@@ -322,10 +319,9 @@ define_extent(struct ccw1 *ccw, struct DE_eckd_data *data, unsigned int trk,
static int check_XRC_on_prefix(struct PFX_eckd_data *pfxdata, static int check_XRC_on_prefix(struct PFX_eckd_data *pfxdata,
struct dasd_device *device) struct dasd_device *device)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
int rc; int rc;
private = (struct dasd_eckd_private *) device->private;
if (!private->rdc_data.facilities.XRC_supported) if (!private->rdc_data.facilities.XRC_supported)
return 0; return 0;
...@@ -346,12 +342,10 @@ static void fill_LRE_data(struct LRE_eckd_data *data, unsigned int trk, ...@@ -346,12 +342,10 @@ static void fill_LRE_data(struct LRE_eckd_data *data, unsigned int trk,
struct dasd_device *device, unsigned int reclen, struct dasd_device *device, unsigned int reclen,
unsigned int tlf) unsigned int tlf)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
int sector; int sector;
int dn, d; int dn, d;
private = (struct dasd_eckd_private *) device->private;
memset(data, 0, sizeof(*data)); memset(data, 0, sizeof(*data));
sector = 0; sector = 0;
if (rec_on_trk) { if (rec_on_trk) {
...@@ -488,8 +482,8 @@ static int prefix_LRE(struct ccw1 *ccw, struct PFX_eckd_data *pfxdata, ...@@ -488,8 +482,8 @@ static int prefix_LRE(struct ccw1 *ccw, struct PFX_eckd_data *pfxdata,
u16 heads, beghead, endhead; u16 heads, beghead, endhead;
int rc = 0; int rc = 0;
basepriv = (struct dasd_eckd_private *) basedev->private; basepriv = basedev->private;
startpriv = (struct dasd_eckd_private *) startdev->private; startpriv = startdev->private;
dedata = &pfxdata->define_extent; dedata = &pfxdata->define_extent;
lredata = &pfxdata->locate_record; lredata = &pfxdata->locate_record;
...@@ -631,12 +625,10 @@ locate_record(struct ccw1 *ccw, struct LO_eckd_data *data, unsigned int trk, ...@@ -631,12 +625,10 @@ locate_record(struct ccw1 *ccw, struct LO_eckd_data *data, unsigned int trk,
unsigned int rec_on_trk, int no_rec, int cmd, unsigned int rec_on_trk, int no_rec, int cmd,
struct dasd_device * device, int reclen) struct dasd_device * device, int reclen)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
int sector; int sector;
int dn, d; int dn, d;
private = (struct dasd_eckd_private *) device->private;
DBF_DEV_EVENT(DBF_INFO, device, DBF_DEV_EVENT(DBF_INFO, device,
"Locate: trk %d, rec %d, no_rec %d, cmd %d, reclen %d", "Locate: trk %d, rec %d, no_rec %d, cmd %d, reclen %d",
trk, rec_on_trk, no_rec, cmd, reclen); trk, rec_on_trk, no_rec, cmd, reclen);
...@@ -800,10 +792,9 @@ static void create_uid(struct dasd_eckd_private *private) ...@@ -800,10 +792,9 @@ static void create_uid(struct dasd_eckd_private *private)
*/ */
static int dasd_eckd_generate_uid(struct dasd_device *device) static int dasd_eckd_generate_uid(struct dasd_device *device)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
unsigned long flags; unsigned long flags;
private = (struct dasd_eckd_private *) device->private;
if (!private) if (!private)
return -ENODEV; return -ENODEV;
if (!private->ned || !private->gneq) if (!private->ned || !private->gneq)
...@@ -816,11 +807,10 @@ static int dasd_eckd_generate_uid(struct dasd_device *device) ...@@ -816,11 +807,10 @@ static int dasd_eckd_generate_uid(struct dasd_device *device)
static int dasd_eckd_get_uid(struct dasd_device *device, struct dasd_uid *uid) static int dasd_eckd_get_uid(struct dasd_device *device, struct dasd_uid *uid)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
unsigned long flags; unsigned long flags;
if (device->private) { if (private) {
private = (struct dasd_eckd_private *)device->private;
spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags);
*uid = private->uid; *uid = private->uid;
spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags);
...@@ -1034,10 +1024,9 @@ static unsigned char dasd_eckd_path_access(void *conf_data, int conf_len) ...@@ -1034,10 +1024,9 @@ static unsigned char dasd_eckd_path_access(void *conf_data, int conf_len)
static void dasd_eckd_clear_conf_data(struct dasd_device *device) static void dasd_eckd_clear_conf_data(struct dasd_device *device)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
int i; int i;
private = (struct dasd_eckd_private *) device->private;
private->conf_data = NULL; private->conf_data = NULL;
private->conf_len = 0; private->conf_len = 0;
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
...@@ -1058,7 +1047,7 @@ static int dasd_eckd_read_conf(struct dasd_device *device) ...@@ -1058,7 +1047,7 @@ static int dasd_eckd_read_conf(struct dasd_device *device)
struct dasd_uid *uid; struct dasd_uid *uid;
char print_path_uid[60], print_device_uid[60]; char print_path_uid[60], print_device_uid[60];
private = (struct dasd_eckd_private *) device->private; private = device->private;
path_data = &device->path_data; path_data = &device->path_data;
opm = ccw_device_get_path_mask(device->cdev); opm = ccw_device_get_path_mask(device->cdev);
conf_data_saved = 0; conf_data_saved = 0;
...@@ -1191,11 +1180,10 @@ static int dasd_eckd_read_conf(struct dasd_device *device) ...@@ -1191,11 +1180,10 @@ static int dasd_eckd_read_conf(struct dasd_device *device)
static int verify_fcx_max_data(struct dasd_device *device, __u8 lpm) static int verify_fcx_max_data(struct dasd_device *device, __u8 lpm)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
int mdc; int mdc;
u32 fcx_max_data; u32 fcx_max_data;
private = (struct dasd_eckd_private *) device->private;
if (private->fcx_max_data) { if (private->fcx_max_data) {
mdc = ccw_device_get_mdc(device->cdev, lpm); mdc = ccw_device_get_mdc(device->cdev, lpm);
if ((mdc < 0)) { if ((mdc < 0)) {
...@@ -1221,15 +1209,10 @@ static int verify_fcx_max_data(struct dasd_device *device, __u8 lpm) ...@@ -1221,15 +1209,10 @@ static int verify_fcx_max_data(struct dasd_device *device, __u8 lpm)
static int rebuild_device_uid(struct dasd_device *device, static int rebuild_device_uid(struct dasd_device *device,
struct path_verification_work_data *data) struct path_verification_work_data *data)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
struct dasd_path *path_data; struct dasd_path *path_data = &device->path_data;
__u8 lpm, opm; __u8 lpm, opm = path_data->opm;
int rc; int rc = -ENODEV;
rc = -ENODEV;
private = (struct dasd_eckd_private *) device->private;
path_data = &device->path_data;
opm = device->path_data.opm;
for (lpm = 0x80; lpm; lpm >>= 1) { for (lpm = 0x80; lpm; lpm >>= 1) {
if (!(lpm & opm)) if (!(lpm & opm))
...@@ -1463,14 +1446,13 @@ static int dasd_eckd_verify_path(struct dasd_device *device, __u8 lpm) ...@@ -1463,14 +1446,13 @@ static int dasd_eckd_verify_path(struct dasd_device *device, __u8 lpm)
static int dasd_eckd_read_features(struct dasd_device *device) static int dasd_eckd_read_features(struct dasd_device *device)
{ {
struct dasd_eckd_private *private = device->private;
struct dasd_psf_prssd_data *prssdp; struct dasd_psf_prssd_data *prssdp;
struct dasd_rssd_features *features; struct dasd_rssd_features *features;
struct dasd_ccw_req *cqr; struct dasd_ccw_req *cqr;
struct ccw1 *ccw; struct ccw1 *ccw;
int rc; int rc;
struct dasd_eckd_private *private;
private = (struct dasd_eckd_private *) device->private;
memset(&private->features, 0, sizeof(struct dasd_rssd_features)); memset(&private->features, 0, sizeof(struct dasd_rssd_features));
cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 1 /* PSF */ + 1 /* RSSD */, cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 1 /* PSF */ + 1 /* RSSD */,
(sizeof(struct dasd_psf_prssd_data) + (sizeof(struct dasd_psf_prssd_data) +
...@@ -1605,11 +1587,9 @@ dasd_eckd_psf_ssc(struct dasd_device *device, int enable_pav, ...@@ -1605,11 +1587,9 @@ dasd_eckd_psf_ssc(struct dasd_device *device, int enable_pav,
static int dasd_eckd_validate_server(struct dasd_device *device, static int dasd_eckd_validate_server(struct dasd_device *device,
unsigned long flags) unsigned long flags)
{ {
int rc; struct dasd_eckd_private *private = device->private;
struct dasd_eckd_private *private; int enable_pav, rc;
int enable_pav;
private = (struct dasd_eckd_private *) device->private;
if (private->uid.type == UA_BASE_PAV_ALIAS || if (private->uid.type == UA_BASE_PAV_ALIAS ||
private->uid.type == UA_HYPER_PAV_ALIAS) private->uid.type == UA_HYPER_PAV_ALIAS)
return 0; return 0;
...@@ -1662,14 +1642,13 @@ static void dasd_eckd_kick_validate_server(struct dasd_device *device) ...@@ -1662,14 +1642,13 @@ static void dasd_eckd_kick_validate_server(struct dasd_device *device)
static u32 get_fcx_max_data(struct dasd_device *device) static u32 get_fcx_max_data(struct dasd_device *device)
{ {
int tpm, mdc; struct dasd_eckd_private *private = device->private;
int fcx_in_css, fcx_in_gneq, fcx_in_features; int fcx_in_css, fcx_in_gneq, fcx_in_features;
struct dasd_eckd_private *private; int tpm, mdc;
if (dasd_nofcx) if (dasd_nofcx)
return 0; return 0;
/* is transport mode supported? */ /* is transport mode supported? */
private = (struct dasd_eckd_private *) device->private;
fcx_in_css = css_general_characteristics.fcx; fcx_in_css = css_general_characteristics.fcx;
fcx_in_gneq = private->gneq->reserved2[7] & 0x04; fcx_in_gneq = private->gneq->reserved2[7] & 0x04;
fcx_in_features = private->features.feature[40] & 0x80; fcx_in_features = private->features.feature[40] & 0x80;
...@@ -1694,7 +1673,7 @@ static u32 get_fcx_max_data(struct dasd_device *device) ...@@ -1694,7 +1673,7 @@ static u32 get_fcx_max_data(struct dasd_device *device)
static int static int
dasd_eckd_check_characteristics(struct dasd_device *device) dasd_eckd_check_characteristics(struct dasd_device *device)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
struct dasd_block *block; struct dasd_block *block;
struct dasd_uid temp_uid; struct dasd_uid temp_uid;
int rc, i; int rc, i;
...@@ -1713,7 +1692,6 @@ dasd_eckd_check_characteristics(struct dasd_device *device) ...@@ -1713,7 +1692,6 @@ dasd_eckd_check_characteristics(struct dasd_device *device)
dev_info(&device->cdev->dev, dev_info(&device->cdev->dev,
"The DASD is not operating in multipath mode\n"); "The DASD is not operating in multipath mode\n");
} }
private = (struct dasd_eckd_private *) device->private;
if (!private) { if (!private) {
private = kzalloc(sizeof(*private), GFP_KERNEL | GFP_DMA); private = kzalloc(sizeof(*private), GFP_KERNEL | GFP_DMA);
if (!private) { if (!private) {
...@@ -1722,7 +1700,7 @@ dasd_eckd_check_characteristics(struct dasd_device *device) ...@@ -1722,7 +1700,7 @@ dasd_eckd_check_characteristics(struct dasd_device *device)
"failed\n"); "failed\n");
return -ENOMEM; return -ENOMEM;
} }
device->private = (void *) private; device->private = private;
} else { } else {
memset(private, 0, sizeof(*private)); memset(private, 0, sizeof(*private));
} }
...@@ -1837,10 +1815,9 @@ dasd_eckd_check_characteristics(struct dasd_device *device) ...@@ -1837,10 +1815,9 @@ dasd_eckd_check_characteristics(struct dasd_device *device)
static void dasd_eckd_uncheck_device(struct dasd_device *device) static void dasd_eckd_uncheck_device(struct dasd_device *device)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
int i; int i;
private = (struct dasd_eckd_private *) device->private;
dasd_alias_disconnect_device_from_lcu(device); dasd_alias_disconnect_device_from_lcu(device);
private->ned = NULL; private->ned = NULL;
private->sneq = NULL; private->sneq = NULL;
...@@ -1863,7 +1840,7 @@ static void dasd_eckd_uncheck_device(struct dasd_device *device) ...@@ -1863,7 +1840,7 @@ static void dasd_eckd_uncheck_device(struct dasd_device *device)
static struct dasd_ccw_req * static struct dasd_ccw_req *
dasd_eckd_analysis_ccw(struct dasd_device *device) dasd_eckd_analysis_ccw(struct dasd_device *device)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
struct eckd_count *count_data; struct eckd_count *count_data;
struct LO_eckd_data *LO_data; struct LO_eckd_data *LO_data;
struct dasd_ccw_req *cqr; struct dasd_ccw_req *cqr;
...@@ -1871,8 +1848,6 @@ dasd_eckd_analysis_ccw(struct dasd_device *device) ...@@ -1871,8 +1848,6 @@ dasd_eckd_analysis_ccw(struct dasd_device *device)
int cplength, datasize; int cplength, datasize;
int i; int i;
private = (struct dasd_eckd_private *) device->private;
cplength = 8; cplength = 8;
datasize = sizeof(struct DE_eckd_data) + 2*sizeof(struct LO_eckd_data); datasize = sizeof(struct DE_eckd_data) + 2*sizeof(struct LO_eckd_data);
cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, cplength, datasize, device); cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, cplength, datasize, device);
...@@ -1946,11 +1921,9 @@ static int dasd_eckd_analysis_evaluation(struct dasd_ccw_req *init_cqr) ...@@ -1946,11 +1921,9 @@ static int dasd_eckd_analysis_evaluation(struct dasd_ccw_req *init_cqr)
static void dasd_eckd_analysis_callback(struct dasd_ccw_req *init_cqr, static void dasd_eckd_analysis_callback(struct dasd_ccw_req *init_cqr,
void *data) void *data)
{ {
struct dasd_eckd_private *private; struct dasd_device *device = init_cqr->startdev;
struct dasd_device *device; struct dasd_eckd_private *private = device->private;
device = init_cqr->startdev;
private = (struct dasd_eckd_private *) device->private;
private->init_cqr_status = dasd_eckd_analysis_evaluation(init_cqr); private->init_cqr_status = dasd_eckd_analysis_evaluation(init_cqr);
dasd_sfree_request(init_cqr, device); dasd_sfree_request(init_cqr, device);
dasd_kick_device(device); dasd_kick_device(device);
...@@ -1977,15 +1950,13 @@ static int dasd_eckd_start_analysis(struct dasd_block *block) ...@@ -1977,15 +1950,13 @@ static int dasd_eckd_start_analysis(struct dasd_block *block)
static int dasd_eckd_end_analysis(struct dasd_block *block) static int dasd_eckd_end_analysis(struct dasd_block *block)
{ {
struct dasd_device *device; struct dasd_device *device = block->base;
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
struct eckd_count *count_area; struct eckd_count *count_area;
unsigned int sb, blk_per_trk; unsigned int sb, blk_per_trk;
int status, i; int status, i;
struct dasd_ccw_req *init_cqr; struct dasd_ccw_req *init_cqr;
device = block->base;
private = (struct dasd_eckd_private *) device->private;
status = private->init_cqr_status; status = private->init_cqr_status;
private->init_cqr_status = -1; private->init_cqr_status = -1;
if (status == INIT_CQR_ERROR) { if (status == INIT_CQR_ERROR) {
...@@ -2083,9 +2054,8 @@ static int dasd_eckd_end_analysis(struct dasd_block *block) ...@@ -2083,9 +2054,8 @@ static int dasd_eckd_end_analysis(struct dasd_block *block)
static int dasd_eckd_do_analysis(struct dasd_block *block) static int dasd_eckd_do_analysis(struct dasd_block *block)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = block->base->private;
private = (struct dasd_eckd_private *) block->base->private;
if (private->init_cqr_status < 0) if (private->init_cqr_status < 0)
return dasd_eckd_start_analysis(block); return dasd_eckd_start_analysis(block);
else else
...@@ -2112,9 +2082,8 @@ static int dasd_eckd_basic_to_known(struct dasd_device *device) ...@@ -2112,9 +2082,8 @@ static int dasd_eckd_basic_to_known(struct dasd_device *device)
static int static int
dasd_eckd_fill_geometry(struct dasd_block *block, struct hd_geometry *geo) dasd_eckd_fill_geometry(struct dasd_block *block, struct hd_geometry *geo)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = block->base->private;
private = (struct dasd_eckd_private *) block->base->private;
if (dasd_check_blocksize(block->bp_block) == 0) { if (dasd_check_blocksize(block->bp_block) == 0) {
geo->sectors = recs_per_track(&private->rdc_data, geo->sectors = recs_per_track(&private->rdc_data,
0, block->bp_block); 0, block->bp_block);
...@@ -2151,8 +2120,8 @@ dasd_eckd_build_format(struct dasd_device *base, ...@@ -2151,8 +2120,8 @@ dasd_eckd_build_format(struct dasd_device *base,
if (!startdev) if (!startdev)
startdev = base; startdev = base;
start_priv = (struct dasd_eckd_private *) startdev->private; start_priv = startdev->private;
base_priv = (struct dasd_eckd_private *) base->private; base_priv = base->private;
rpt = recs_per_track(&base_priv->rdc_data, 0, fdata->blksize); rpt = recs_per_track(&base_priv->rdc_data, 0, fdata->blksize);
...@@ -2402,9 +2371,7 @@ dasd_eckd_format_build_ccw_req(struct dasd_device *base, ...@@ -2402,9 +2371,7 @@ dasd_eckd_format_build_ccw_req(struct dasd_device *base,
static int dasd_eckd_format_sanity_checks(struct dasd_device *base, static int dasd_eckd_format_sanity_checks(struct dasd_device *base,
struct format_data_t *fdata) struct format_data_t *fdata)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = base->private;
private = (struct dasd_eckd_private *) base->private;
if (fdata->start_unit >= if (fdata->start_unit >=
(private->real_cyl * private->rdc_data.trk_per_cyl)) { (private->real_cyl * private->rdc_data.trk_per_cyl)) {
...@@ -2442,16 +2409,14 @@ static int dasd_eckd_format_process_data(struct dasd_device *base, ...@@ -2442,16 +2409,14 @@ static int dasd_eckd_format_process_data(struct dasd_device *base,
struct format_data_t *fdata, struct format_data_t *fdata,
int enable_pav) int enable_pav)
{ {
struct dasd_eckd_private *private = base->private;
struct dasd_ccw_req *cqr, *n; struct dasd_ccw_req *cqr, *n;
struct dasd_eckd_private *private;
struct list_head format_queue; struct list_head format_queue;
struct dasd_device *device; struct dasd_device *device;
int old_start, old_stop, format_step; int old_start, old_stop, format_step;
int step, retry; int step, retry;
int rc; int rc;
private = (struct dasd_eckd_private *) base->private;
rc = dasd_eckd_format_sanity_checks(base, fdata); rc = dasd_eckd_format_sanity_checks(base, fdata);
if (rc) if (rc)
return rc; return rc;
...@@ -2500,7 +2465,7 @@ static int dasd_eckd_format_process_data(struct dasd_device *base, ...@@ -2500,7 +2465,7 @@ static int dasd_eckd_format_process_data(struct dasd_device *base,
out_err: out_err:
list_for_each_entry_safe(cqr, n, &format_queue, blocklist) { list_for_each_entry_safe(cqr, n, &format_queue, blocklist) {
device = cqr->startdev; device = cqr->startdev;
private = (struct dasd_eckd_private *) device->private; private = device->private;
if (cqr->status == DASD_CQR_FAILED) if (cqr->status == DASD_CQR_FAILED)
rc = -EIO; rc = -EIO;
list_del_init(&cqr->blocklist); list_del_init(&cqr->blocklist);
...@@ -2571,9 +2536,8 @@ static void dasd_eckd_check_for_device_change(struct dasd_device *device, ...@@ -2571,9 +2536,8 @@ static void dasd_eckd_check_for_device_change(struct dasd_device *device,
{ {
char mask; char mask;
char *sense = NULL; char *sense = NULL;
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
private = (struct dasd_eckd_private *) device->private;
/* first of all check for state change pending interrupt */ /* first of all check for state change pending interrupt */
mask = DEV_STAT_ATTENTION | DEV_STAT_DEV_END | DEV_STAT_UNIT_EXCEP; mask = DEV_STAT_ATTENTION | DEV_STAT_DEV_END | DEV_STAT_UNIT_EXCEP;
if ((scsw_dstat(&irb->scsw) & mask) == mask) { if ((scsw_dstat(&irb->scsw) & mask) == mask) {
...@@ -2662,7 +2626,7 @@ static struct dasd_ccw_req *dasd_eckd_build_cp_cmd_single( ...@@ -2662,7 +2626,7 @@ static struct dasd_ccw_req *dasd_eckd_build_cp_cmd_single(
struct dasd_device *basedev; struct dasd_device *basedev;
basedev = block->base; basedev = block->base;
private = (struct dasd_eckd_private *) basedev->private; private = basedev->private;
if (rq_data_dir(req) == READ) if (rq_data_dir(req) == READ)
cmd = DASD_ECKD_CCW_READ_MT; cmd = DASD_ECKD_CCW_READ_MT;
else if (rq_data_dir(req) == WRITE) else if (rq_data_dir(req) == WRITE)
...@@ -3018,8 +2982,8 @@ static int prepare_itcw(struct itcw *itcw, ...@@ -3018,8 +2982,8 @@ static int prepare_itcw(struct itcw *itcw,
/* setup prefix data */ /* setup prefix data */
basepriv = (struct dasd_eckd_private *) basedev->private; basepriv = basedev->private;
startpriv = (struct dasd_eckd_private *) startdev->private; startpriv = startdev->private;
dedata = &pfxdata.define_extent; dedata = &pfxdata.define_extent;
lredata = &pfxdata.locate_record; lredata = &pfxdata.locate_record;
...@@ -3306,7 +3270,7 @@ static struct dasd_ccw_req *dasd_eckd_build_cp(struct dasd_device *startdev, ...@@ -3306,7 +3270,7 @@ static struct dasd_ccw_req *dasd_eckd_build_cp(struct dasd_device *startdev,
struct dasd_ccw_req *cqr; struct dasd_ccw_req *cqr;
basedev = block->base; basedev = block->base;
private = (struct dasd_eckd_private *) basedev->private; private = basedev->private;
/* Calculate number of blocks/records per track. */ /* Calculate number of blocks/records per track. */
blksize = block->bp_block; blksize = block->bp_block;
...@@ -3531,7 +3495,7 @@ dasd_eckd_free_cp(struct dasd_ccw_req *cqr, struct request *req) ...@@ -3531,7 +3495,7 @@ dasd_eckd_free_cp(struct dasd_ccw_req *cqr, struct request *req)
if (!dasd_page_cache) if (!dasd_page_cache)
goto out; goto out;
private = (struct dasd_eckd_private *) cqr->block->base->private; private = cqr->block->base->private;
blksize = cqr->block->bp_block; blksize = cqr->block->bp_block;
blk_per_trk = recs_per_track(&private->rdc_data, 0, blksize); blk_per_trk = recs_per_track(&private->rdc_data, 0, blksize);
recid = blk_rq_pos(req) >> cqr->block->s2b_shift; recid = blk_rq_pos(req) >> cqr->block->s2b_shift;
...@@ -3615,7 +3579,7 @@ static struct dasd_ccw_req *dasd_eckd_build_alias_cp(struct dasd_device *base, ...@@ -3615,7 +3579,7 @@ static struct dasd_ccw_req *dasd_eckd_build_alias_cp(struct dasd_device *base,
startdev = dasd_alias_get_start_dev(base); startdev = dasd_alias_get_start_dev(base);
if (!startdev) if (!startdev)
startdev = base; startdev = base;
private = (struct dasd_eckd_private *) startdev->private; private = startdev->private;
if (private->count >= DASD_ECKD_CHANQ_MAX_SIZE) if (private->count >= DASD_ECKD_CHANQ_MAX_SIZE)
return ERR_PTR(-EBUSY); return ERR_PTR(-EBUSY);
...@@ -3638,7 +3602,7 @@ static int dasd_eckd_free_alias_cp(struct dasd_ccw_req *cqr, ...@@ -3638,7 +3602,7 @@ static int dasd_eckd_free_alias_cp(struct dasd_ccw_req *cqr,
unsigned long flags; unsigned long flags;
spin_lock_irqsave(get_ccwdev_lock(cqr->memdev->cdev), flags); spin_lock_irqsave(get_ccwdev_lock(cqr->memdev->cdev), flags);
private = (struct dasd_eckd_private *) cqr->memdev->private; private = cqr->memdev->private;
private->count--; private->count--;
spin_unlock_irqrestore(get_ccwdev_lock(cqr->memdev->cdev), flags); spin_unlock_irqrestore(get_ccwdev_lock(cqr->memdev->cdev), flags);
return dasd_eckd_free_cp(cqr, req); return dasd_eckd_free_cp(cqr, req);
...@@ -3648,15 +3612,14 @@ static int ...@@ -3648,15 +3612,14 @@ static int
dasd_eckd_fill_info(struct dasd_device * device, dasd_eckd_fill_info(struct dasd_device * device,
struct dasd_information2_t * info) struct dasd_information2_t * info)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
private = (struct dasd_eckd_private *) device->private;
info->label_block = 2; info->label_block = 2;
info->FBA_layout = private->uses_cdl ? 0 : 1; info->FBA_layout = private->uses_cdl ? 0 : 1;
info->format = private->uses_cdl ? DASD_FORMAT_CDL : DASD_FORMAT_LDL; info->format = private->uses_cdl ? DASD_FORMAT_CDL : DASD_FORMAT_LDL;
info->characteristics_size = sizeof(struct dasd_eckd_characteristics); info->characteristics_size = sizeof(private->rdc_data);
memcpy(info->characteristics, &private->rdc_data, memcpy(info->characteristics, &private->rdc_data,
sizeof(struct dasd_eckd_characteristics)); sizeof(private->rdc_data));
info->confdata_size = min((unsigned long)private->conf_len, info->confdata_size = min((unsigned long)private->conf_len,
sizeof(info->configuration_data)); sizeof(info->configuration_data));
memcpy(info->configuration_data, private->conf_data, memcpy(info->configuration_data, private->conf_data,
...@@ -3969,8 +3932,7 @@ dasd_eckd_performance(struct dasd_device *device, void __user *argp) ...@@ -3969,8 +3932,7 @@ dasd_eckd_performance(struct dasd_device *device, void __user *argp)
static int static int
dasd_eckd_get_attrib(struct dasd_device *device, void __user *argp) dasd_eckd_get_attrib(struct dasd_device *device, void __user *argp)
{ {
struct dasd_eckd_private *private = struct dasd_eckd_private *private = device->private;
(struct dasd_eckd_private *)device->private;
struct attrib_data_t attrib = private->attrib; struct attrib_data_t attrib = private->attrib;
int rc; int rc;
...@@ -3994,8 +3956,7 @@ dasd_eckd_get_attrib(struct dasd_device *device, void __user *argp) ...@@ -3994,8 +3956,7 @@ dasd_eckd_get_attrib(struct dasd_device *device, void __user *argp)
static int static int
dasd_eckd_set_attrib(struct dasd_device *device, void __user *argp) dasd_eckd_set_attrib(struct dasd_device *device, void __user *argp)
{ {
struct dasd_eckd_private *private = struct dasd_eckd_private *private = device->private;
(struct dasd_eckd_private *)device->private;
struct attrib_data_t attrib; struct attrib_data_t attrib;
if (!capable(CAP_SYS_ADMIN)) if (!capable(CAP_SYS_ADMIN))
...@@ -4458,15 +4419,13 @@ static int dasd_eckd_pm_freeze(struct dasd_device *device) ...@@ -4458,15 +4419,13 @@ static int dasd_eckd_pm_freeze(struct dasd_device *device)
static int dasd_eckd_restore_device(struct dasd_device *device) static int dasd_eckd_restore_device(struct dasd_device *device)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
struct dasd_eckd_characteristics temp_rdc_data; struct dasd_eckd_characteristics temp_rdc_data;
int rc; int rc;
struct dasd_uid temp_uid; struct dasd_uid temp_uid;
unsigned long flags; unsigned long flags;
unsigned long cqr_flags = 0; unsigned long cqr_flags = 0;
private = (struct dasd_eckd_private *) device->private;
/* Read Configuration Data */ /* Read Configuration Data */
rc = dasd_eckd_read_conf(device); rc = dasd_eckd_read_conf(device);
if (rc) { if (rc) {
...@@ -4530,14 +4489,12 @@ static int dasd_eckd_restore_device(struct dasd_device *device) ...@@ -4530,14 +4489,12 @@ static int dasd_eckd_restore_device(struct dasd_device *device)
static int dasd_eckd_reload_device(struct dasd_device *device) static int dasd_eckd_reload_device(struct dasd_device *device)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
int rc, old_base; int rc, old_base;
char print_uid[60]; char print_uid[60];
struct dasd_uid uid; struct dasd_uid uid;
unsigned long flags; unsigned long flags;
private = (struct dasd_eckd_private *) device->private;
spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags);
old_base = private->uid.base_unit_addr; old_base = private->uid.base_unit_addr;
spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags);
...@@ -4584,12 +4541,10 @@ static int dasd_eckd_read_message_buffer(struct dasd_device *device, ...@@ -4584,12 +4541,10 @@ static int dasd_eckd_read_message_buffer(struct dasd_device *device,
{ {
struct dasd_rssd_messages *message_buf; struct dasd_rssd_messages *message_buf;
struct dasd_psf_prssd_data *prssdp; struct dasd_psf_prssd_data *prssdp;
struct dasd_eckd_private *private;
struct dasd_ccw_req *cqr; struct dasd_ccw_req *cqr;
struct ccw1 *ccw; struct ccw1 *ccw;
int rc; int rc;
private = (struct dasd_eckd_private *) device->private;
cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 1 /* PSF */ + 1 /* RSSD */, cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 1 /* PSF */ + 1 /* RSSD */,
(sizeof(struct dasd_psf_prssd_data) + (sizeof(struct dasd_psf_prssd_data) +
sizeof(struct dasd_rssd_messages)), sizeof(struct dasd_rssd_messages)),
...@@ -4714,11 +4669,10 @@ static struct dasd_conf_data *dasd_eckd_get_ref_conf(struct dasd_device *device, ...@@ -4714,11 +4669,10 @@ static struct dasd_conf_data *dasd_eckd_get_ref_conf(struct dasd_device *device,
__u8 lpum, __u8 lpum,
struct dasd_cuir_message *cuir) struct dasd_cuir_message *cuir)
{ {
struct dasd_eckd_private *private; struct dasd_eckd_private *private = device->private;
struct dasd_conf_data *conf_data; struct dasd_conf_data *conf_data;
int path, pos; int path, pos;
private = (struct dasd_eckd_private *) device->private;
if (cuir->record_selector == 0) if (cuir->record_selector == 0)
goto out; goto out;
for (path = 0x80, pos = 0; path; path >>= 1, pos++) { for (path = 0x80, pos = 0; path; path >>= 1, pos++) {
...@@ -4743,9 +4697,9 @@ static struct dasd_conf_data *dasd_eckd_get_ref_conf(struct dasd_device *device, ...@@ -4743,9 +4697,9 @@ static struct dasd_conf_data *dasd_eckd_get_ref_conf(struct dasd_device *device,
static int dasd_eckd_cuir_scope(struct dasd_device *device, __u8 lpum, static int dasd_eckd_cuir_scope(struct dasd_device *device, __u8 lpum,
struct dasd_cuir_message *cuir) struct dasd_cuir_message *cuir)
{ {
struct dasd_eckd_private *private = device->private;
struct dasd_conf_data *ref_conf_data; struct dasd_conf_data *ref_conf_data;
unsigned long bitmask = 0, mask = 0; unsigned long bitmask = 0, mask = 0;
struct dasd_eckd_private *private;
struct dasd_conf_data *conf_data; struct dasd_conf_data *conf_data;
unsigned int pos, path; unsigned int pos, path;
char *ref_gneq, *gneq; char *ref_gneq, *gneq;
...@@ -4758,7 +4712,6 @@ static int dasd_eckd_cuir_scope(struct dasd_device *device, __u8 lpum, ...@@ -4758,7 +4712,6 @@ static int dasd_eckd_cuir_scope(struct dasd_device *device, __u8 lpum,
!(cuir->neq_map[0] | cuir->neq_map[1] | cuir->neq_map[2])) !(cuir->neq_map[0] | cuir->neq_map[1] | cuir->neq_map[2]))
return lpum; return lpum;
private = (struct dasd_eckd_private *) device->private;
/* get reference conf data */ /* get reference conf data */
ref_conf_data = dasd_eckd_get_ref_conf(device, lpum, cuir); ref_conf_data = dasd_eckd_get_ref_conf(device, lpum, cuir);
/* reference ned is determined by ned_map field */ /* reference ned is determined by ned_map field */
...@@ -4857,14 +4810,13 @@ static int dasd_eckd_cuir_quiesce(struct dasd_device *device, __u8 lpum, ...@@ -4857,14 +4810,13 @@ static int dasd_eckd_cuir_quiesce(struct dasd_device *device, __u8 lpum,
struct subchannel_id sch_id, struct subchannel_id sch_id,
struct dasd_cuir_message *cuir) struct dasd_cuir_message *cuir)
{ {
struct dasd_eckd_private *private = device->private;
struct alias_pav_group *pavgroup, *tempgroup; struct alias_pav_group *pavgroup, *tempgroup;
struct dasd_eckd_private *private;
struct dasd_device *dev, *n; struct dasd_device *dev, *n;
unsigned long paths = 0; unsigned long paths = 0;
unsigned long flags; unsigned long flags;
int tbcpm; int tbcpm;
private = (struct dasd_eckd_private *) device->private;
/* active devices */ /* active devices */
list_for_each_entry_safe(dev, n, &private->lcu->active_devices, list_for_each_entry_safe(dev, n, &private->lcu->active_devices,
alias_list) { alias_list) {
...@@ -4920,13 +4872,12 @@ static int dasd_eckd_cuir_resume(struct dasd_device *device, __u8 lpum, ...@@ -4920,13 +4872,12 @@ static int dasd_eckd_cuir_resume(struct dasd_device *device, __u8 lpum,
struct subchannel_id sch_id, struct subchannel_id sch_id,
struct dasd_cuir_message *cuir) struct dasd_cuir_message *cuir)
{ {
struct dasd_eckd_private *private = device->private;
struct alias_pav_group *pavgroup, *tempgroup; struct alias_pav_group *pavgroup, *tempgroup;
struct dasd_eckd_private *private;
struct dasd_device *dev, *n; struct dasd_device *dev, *n;
unsigned long paths = 0; unsigned long paths = 0;
int tbcpm; int tbcpm;
private = (struct dasd_eckd_private *) device->private;
/* /*
* the path may have been added through a generic path event before * the path may have been added through a generic path event before
* only trigger path verification if the path is not already in use * only trigger path verification if the path is not already in use
......
...@@ -125,13 +125,11 @@ locate_record(struct ccw1 * ccw, struct LO_fba_data *data, int rw, ...@@ -125,13 +125,11 @@ locate_record(struct ccw1 * ccw, struct LO_fba_data *data, int rw,
static int static int
dasd_fba_check_characteristics(struct dasd_device *device) dasd_fba_check_characteristics(struct dasd_device *device)
{ {
struct dasd_block *block; struct dasd_fba_private *private = device->private;
struct dasd_fba_private *private;
struct ccw_device *cdev = device->cdev; struct ccw_device *cdev = device->cdev;
int rc; struct dasd_block *block;
int readonly; int readonly, rc;
private = (struct dasd_fba_private *) device->private;
if (!private) { if (!private) {
private = kzalloc(sizeof(*private), GFP_KERNEL | GFP_DMA); private = kzalloc(sizeof(*private), GFP_KERNEL | GFP_DMA);
if (!private) { if (!private) {
...@@ -140,7 +138,7 @@ dasd_fba_check_characteristics(struct dasd_device *device) ...@@ -140,7 +138,7 @@ dasd_fba_check_characteristics(struct dasd_device *device)
"data failed\n"); "data failed\n");
return -ENOMEM; return -ENOMEM;
} }
device->private = (void *) private; device->private = private;
} else { } else {
memset(private, 0, sizeof(*private)); memset(private, 0, sizeof(*private));
} }
...@@ -192,10 +190,9 @@ dasd_fba_check_characteristics(struct dasd_device *device) ...@@ -192,10 +190,9 @@ dasd_fba_check_characteristics(struct dasd_device *device)
static int dasd_fba_do_analysis(struct dasd_block *block) static int dasd_fba_do_analysis(struct dasd_block *block)
{ {
struct dasd_fba_private *private; struct dasd_fba_private *private = block->base->private;
int sb, rc; int sb, rc;
private = (struct dasd_fba_private *) block->base->private;
rc = dasd_check_blocksize(private->rdc_data.blk_size); rc = dasd_check_blocksize(private->rdc_data.blk_size);
if (rc) { if (rc) {
DBF_DEV_EVENT(DBF_WARNING, block->base, "unknown blocksize %d", DBF_DEV_EVENT(DBF_WARNING, block->base, "unknown blocksize %d",
...@@ -254,7 +251,7 @@ static struct dasd_ccw_req *dasd_fba_build_cp(struct dasd_device * memdev, ...@@ -254,7 +251,7 @@ static struct dasd_ccw_req *dasd_fba_build_cp(struct dasd_device * memdev,
struct dasd_block *block, struct dasd_block *block,
struct request *req) struct request *req)
{ {
struct dasd_fba_private *private; struct dasd_fba_private *private = block->base->private;
unsigned long *idaws; unsigned long *idaws;
struct LO_fba_data *LO_data; struct LO_fba_data *LO_data;
struct dasd_ccw_req *cqr; struct dasd_ccw_req *cqr;
...@@ -267,7 +264,6 @@ static struct dasd_ccw_req *dasd_fba_build_cp(struct dasd_device * memdev, ...@@ -267,7 +264,6 @@ static struct dasd_ccw_req *dasd_fba_build_cp(struct dasd_device * memdev,
unsigned int blksize, off; unsigned int blksize, off;
unsigned char cmd; unsigned char cmd;
private = (struct dasd_fba_private *) block->base->private;
if (rq_data_dir(req) == READ) { if (rq_data_dir(req) == READ) {
cmd = DASD_FBA_CCW_READ; cmd = DASD_FBA_CCW_READ;
} else if (rq_data_dir(req) == WRITE) { } else if (rq_data_dir(req) == WRITE) {
...@@ -379,7 +375,7 @@ static struct dasd_ccw_req *dasd_fba_build_cp(struct dasd_device * memdev, ...@@ -379,7 +375,7 @@ static struct dasd_ccw_req *dasd_fba_build_cp(struct dasd_device * memdev,
static int static int
dasd_fba_free_cp(struct dasd_ccw_req *cqr, struct request *req) dasd_fba_free_cp(struct dasd_ccw_req *cqr, struct request *req)
{ {
struct dasd_fba_private *private; struct dasd_fba_private *private = cqr->block->base->private;
struct ccw1 *ccw; struct ccw1 *ccw;
struct req_iterator iter; struct req_iterator iter;
struct bio_vec bv; struct bio_vec bv;
...@@ -389,7 +385,6 @@ dasd_fba_free_cp(struct dasd_ccw_req *cqr, struct request *req) ...@@ -389,7 +385,6 @@ dasd_fba_free_cp(struct dasd_ccw_req *cqr, struct request *req)
if (!dasd_page_cache) if (!dasd_page_cache)
goto out; goto out;
private = (struct dasd_fba_private *) cqr->block->base->private;
blksize = cqr->block->bp_block; blksize = cqr->block->bp_block;
ccw = cqr->cpaddr; ccw = cqr->cpaddr;
/* Skip over define extent & locate record. */ /* Skip over define extent & locate record. */
...@@ -436,13 +431,14 @@ static int ...@@ -436,13 +431,14 @@ static int
dasd_fba_fill_info(struct dasd_device * device, dasd_fba_fill_info(struct dasd_device * device,
struct dasd_information2_t * info) struct dasd_information2_t * info)
{ {
struct dasd_fba_private *private = device->private;
info->label_block = 1; info->label_block = 1;
info->FBA_layout = 1; info->FBA_layout = 1;
info->format = DASD_FORMAT_LDL; info->format = DASD_FORMAT_LDL;
info->characteristics_size = sizeof(struct dasd_fba_characteristics); info->characteristics_size = sizeof(private->rdc_data);
memcpy(info->characteristics, memcpy(info->characteristics, &private->rdc_data,
&((struct dasd_fba_private *) device->private)->rdc_data, sizeof(private->rdc_data));
sizeof (struct dasd_fba_characteristics));
info->confdata_size = 0; info->confdata_size = 0;
return 0; return 0;
} }
......
...@@ -445,7 +445,7 @@ struct dasd_device { ...@@ -445,7 +445,7 @@ struct dasd_device {
/* Device discipline stuff. */ /* Device discipline stuff. */
struct dasd_discipline *discipline; struct dasd_discipline *discipline;
struct dasd_discipline *base_discipline; struct dasd_discipline *base_discipline;
char *private; void *private;
struct dasd_path path_data; struct dasd_path path_data;
/* Device state and target state. */ /* Device state and target state. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment