Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 322997
b: refs/heads/master
c: 03429f3
h: refs/heads/master
i:
  322995: 8228bdf
v: v3
  • Loading branch information
Stefan Haberland authored and Martin Schwidefsky committed Sep 17, 2012
1 parent 4b22d2b commit 61d2f7c
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 12d7b1078bb374fc3e2955b9f2815415a66157b6
refs/heads/master: 03429f34c22cedc3300a81e13d5790450cc468af
27 changes: 26 additions & 1 deletion trunk/drivers/s390/block/dasd_alias.c
Original file line number Diff line number Diff line change
Expand Up @@ -384,6 +384,29 @@ static void _remove_device_from_lcu(struct alias_lcu *lcu,
group->next = NULL;
};

static int
suborder_not_supported(struct dasd_ccw_req *cqr)
{
char *sense;
char reason;
char msg_format;
char msg_no;

sense = dasd_get_sense(&cqr->irb);
if (!sense)
return 0;

reason = sense[0];
msg_format = (sense[7] & 0xF0);
msg_no = (sense[7] & 0x0F);

/* command reject, Format 0 MSG 4 - invalid parameter */
if ((reason == 0x80) && (msg_format == 0x00) && (msg_no == 0x04))
return 1;

return 0;
}

static int read_unit_address_configuration(struct dasd_device *device,
struct alias_lcu *lcu)
{
Expand Down Expand Up @@ -435,6 +458,8 @@ static int read_unit_address_configuration(struct dasd_device *device,

do {
rc = dasd_sleep_on(cqr);
if (rc && suborder_not_supported(cqr))
return -EOPNOTSUPP;
} while (rc && (cqr->retries > 0));
if (rc) {
spin_lock_irqsave(&lcu->lock, flags);
Expand Down Expand Up @@ -521,7 +546,7 @@ static void lcu_update_work(struct work_struct *work)
* processing the data
*/
spin_lock_irqsave(&lcu->lock, flags);
if (rc || (lcu->flags & NEED_UAC_UPDATE)) {
if ((rc && (rc != -EOPNOTSUPP)) || (lcu->flags & NEED_UAC_UPDATE)) {
DBF_DEV_EVENT(DBF_WARNING, device, "could not update"
" alias data in lcu (rc = %d), retry later", rc);
schedule_delayed_work(&lcu->ruac_data.dwork, 30*HZ);
Expand Down

0 comments on commit 61d2f7c

Please sign in to comment.