From 7a82e16735fb2a296453552b62feff5ddd5eb313 Mon Sep 17 00:00:00 2001 From: "Kashyap, Desai" Date: Thu, 17 Jun 2010 14:41:48 +0530 Subject: [PATCH] --- yaml --- r: 204159 b: refs/heads/master c: cc7e9f5f9999d9c015686ab4a622e1fb529391eb h: refs/heads/master i: 204157: 2d07917bfecd465672b4bf6cccdc2d738dcf3e5e 204155: 9c7582cb7e92e781a6c19f2de5eac5c926b10f60 204151: c39200a2c393d28a04dedcb699ab4026f82ecabd 204143: c111ace1d16afcab4167dd2cc3b372d90072772b 204127: aa9d0ee83d55661bf627b37e0126d1963f6fd17f 204095: ae44d3e89a2ac6c3402b18fc52e14b61dc3a5e04 204031: a58b2f909037dae2cc7a3d6fa3d9307e20360bcf v: v3 --- [refs] | 2 +- trunk/drivers/message/fusion/mptsas.c | 31 ++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index bba0f3308c38..da7e0c2d93ba 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b68bf096d4211bb6490955f86842d8291e8ae218 +refs/heads/master: cc7e9f5f9999d9c015686ab4a622e1fb529391eb diff --git a/trunk/drivers/message/fusion/mptsas.c b/trunk/drivers/message/fusion/mptsas.c index a94655162347..f42781b92bdd 100644 --- a/trunk/drivers/message/fusion/mptsas.c +++ b/trunk/drivers/message/fusion/mptsas.c @@ -4210,6 +4210,7 @@ mptsas_hotplug_work(MPT_ADAPTER *ioc, struct fw_event_work *fw_event, struct mptsas_devinfo sas_device; VirtTarget *vtarget; int i; + struct mptsas_portinfo *port_info; switch (hot_plug_info->event_type) { @@ -4249,8 +4250,36 @@ mptsas_hotplug_work(MPT_ADAPTER *ioc, struct fw_event_work *fw_event, return; phy_info = mptsas_refreshing_device_handles(ioc, &sas_device); - if (!phy_info) + /* Only For SATA Device ADD */ + if (!phy_info && (sas_device.device_info & + MPI_SAS_DEVICE_INFO_SATA_DEVICE)) { + devtprintk(ioc, printk(MYIOC_s_DEBUG_FMT + "%s %d SATA HOT PLUG: " + "parent handle of device %x\n", ioc->name, + __func__, __LINE__, sas_device.handle_parent)); + port_info = mptsas_find_portinfo_by_handle(ioc, + sas_device.handle_parent); + + if (port_info == ioc->hba_port_info) + mptsas_probe_hba_phys(ioc); + else if (port_info) + mptsas_expander_refresh(ioc, port_info); + else { + dfailprintk(ioc, printk(MYIOC_s_ERR_FMT + "%s %d port info is NULL\n", + ioc->name, __func__, __LINE__)); + break; + } + phy_info = mptsas_refreshing_device_handles + (ioc, &sas_device); + } + + if (!phy_info) { + dfailprintk(ioc, printk(MYIOC_s_ERR_FMT + "%s %d phy info is NULL\n", + ioc->name, __func__, __LINE__)); break; + } if (mptsas_get_rphy(phy_info)) break;