diff options
author | Rajashekhara, Mahesh <Mahesh_Rajashekhara@adaptec.com> | 2010-05-10 07:05:50 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-05-16 22:28:04 -0400 |
commit | 5ca05594097438f81337e53ad50c2d17ffc28238 (patch) | |
tree | a5512d48f4bb991fd9005ad703ca80bafeeb5e04 | |
parent | 15af974dcb22914f29aeb9a9cac5879b0dc3860e (diff) |
[SCSI] aacraid: respond automatically to volumes added by config tool
Problem description:
--------------------
When the JBOD is created from the OS using Adaptec Storage Manager
utility device is not available under FDISK until a system restart is
done.
Solution:
---------
AIF handling: If there is a JBOD drive added to the system, identify
the old one with scsi_device_lookup() and remove it to enable a fresh
scsi_add_device(); else the new JBOD is not available until reboot.
Signed-off-by: Mahesh Rajashekhara <aacraid@adaptec.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
-rw-r--r-- | drivers/scsi/aacraid/aacraid.h | 2 | ||||
-rw-r--r-- | drivers/scsi/aacraid/commsup.c | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h index 619c02d9c862..9f985267c30f 100644 --- a/drivers/scsi/aacraid/aacraid.h +++ b/drivers/scsi/aacraid/aacraid.h | |||
@@ -12,7 +12,7 @@ | |||
12 | *----------------------------------------------------------------------------*/ | 12 | *----------------------------------------------------------------------------*/ |
13 | 13 | ||
14 | #ifndef AAC_DRIVER_BUILD | 14 | #ifndef AAC_DRIVER_BUILD |
15 | # define AAC_DRIVER_BUILD 24702 | 15 | # define AAC_DRIVER_BUILD 26000 |
16 | # define AAC_DRIVER_BRANCH "-ms" | 16 | # define AAC_DRIVER_BRANCH "-ms" |
17 | #endif | 17 | #endif |
18 | #define MAXIMUM_NUM_CONTAINERS 32 | 18 | #define MAXIMUM_NUM_CONTAINERS 32 |
diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c index 94d2954d79ae..69692b050e3c 100644 --- a/drivers/scsi/aacraid/commsup.c +++ b/drivers/scsi/aacraid/commsup.c | |||
@@ -966,6 +966,16 @@ static void aac_handle_aif(struct aac_dev * dev, struct fib * fibptr) | |||
966 | device_config_needed = | 966 | device_config_needed = |
967 | (((__le32 *)aifcmd->data)[0] == | 967 | (((__le32 *)aifcmd->data)[0] == |
968 | cpu_to_le32(AifEnAddJBOD)) ? ADD : DELETE; | 968 | cpu_to_le32(AifEnAddJBOD)) ? ADD : DELETE; |
969 | if (device_config_needed == ADD) { | ||
970 | device = scsi_device_lookup(dev->scsi_host_ptr, | ||
971 | channel, | ||
972 | id, | ||
973 | lun); | ||
974 | if (device) { | ||
975 | scsi_remove_device(device); | ||
976 | scsi_device_put(device); | ||
977 | } | ||
978 | } | ||
969 | break; | 979 | break; |
970 | 980 | ||
971 | case AifEnEnclosureManagement: | 981 | case AifEnEnclosureManagement: |