aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRajashekhara, Mahesh <Mahesh_Rajashekhara@adaptec.com>2010-05-10 07:05:50 -0400
committerJames Bottomley <James.Bottomley@suse.de>2010-05-16 22:28:04 -0400
commit5ca05594097438f81337e53ad50c2d17ffc28238 (patch)
treea5512d48f4bb991fd9005ad703ca80bafeeb5e04
parent15af974dcb22914f29aeb9a9cac5879b0dc3860e (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.h2
-rw-r--r--drivers/scsi/aacraid/commsup.c10
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: