forked from mirrors/linux
		
	scsi: libsas: kill useless ha_event and do some cleanup
The ha_event now has only one event HAE_RESET, and this event does nothing. Kill it and do some cleanup. This is a preparation for enhance libsas hotplug feature in the next patches. Signed-off-by: Jason Yan <yanaijie@huawei.com> Signed-off-by: John Garry <john.garry@huawei.com> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Reviewed-by: Christoph Hellwig <hch@lst.de> CC: Johannes Thumshirn <jthumshirn@suse.de> CC: Ewan Milne <emilne@redhat.com> CC: Christoph Hellwig <hch@lst.de> CC: Tomas Henzl <thenzl@redhat.com> CC: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
		
							parent
							
								
									7eccdf005b
								
							
						
					
					
						commit
						042ebd293b
					
				
					 7 changed files with 0 additions and 68 deletions
				
			
		| 
						 | 
					@ -721,11 +721,8 @@ int asd_init_hw(struct asd_ha_struct *asd_ha)
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
static void asd_chip_reset(struct asd_ha_struct *asd_ha)
 | 
					static void asd_chip_reset(struct asd_ha_struct *asd_ha)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct sas_ha_struct *sas_ha = &asd_ha->sas_ha;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	ASD_DPRINTK("chip reset for %s\n", pci_name(asd_ha->pcidev));
 | 
						ASD_DPRINTK("chip reset for %s\n", pci_name(asd_ha->pcidev));
 | 
				
			||||||
	asd_chip_hardrst(asd_ha);
 | 
						asd_chip_hardrst(asd_ha);
 | 
				
			||||||
	sas_ha->notify_ha_event(sas_ha, HAE_RESET);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* ---------- Done List Routines ---------- */
 | 
					/* ---------- Done List Routines ---------- */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1074,7 +1074,6 @@ static int hisi_sas_controller_reset(struct hisi_hba *hisi_hba)
 | 
				
			||||||
	hisi_sas_release_tasks(hisi_hba);
 | 
						hisi_sas_release_tasks(hisi_hba);
 | 
				
			||||||
	spin_unlock_irqrestore(&hisi_hba->lock, flags);
 | 
						spin_unlock_irqrestore(&hisi_hba->lock, flags);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sas_ha->notify_ha_event(sas_ha, HAE_RESET);
 | 
					 | 
				
			||||||
	clear_bit(HISI_SAS_REJECT_CMD_BIT, &hisi_hba->flags);
 | 
						clear_bit(HISI_SAS_REJECT_CMD_BIT, &hisi_hba->flags);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Init and wait for PHYs to come up and all libsas event finished. */
 | 
						/* Init and wait for PHYs to come up and all libsas event finished. */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,10 +24,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "sas_dump.h"
 | 
					#include "sas_dump.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const char *sas_hae_str[] = {
 | 
					 | 
				
			||||||
	[0] = "HAE_RESET",
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const char *sas_porte_str[] = {
 | 
					static const char *sas_porte_str[] = {
 | 
				
			||||||
	[0] = "PORTE_BYTES_DMAED",
 | 
						[0] = "PORTE_BYTES_DMAED",
 | 
				
			||||||
	[1] = "PORTE_BROADCAST_RCVD",
 | 
						[1] = "PORTE_BROADCAST_RCVD",
 | 
				
			||||||
| 
						 | 
					@ -53,12 +49,6 @@ void sas_dprint_phye(int phyid, enum phy_event pe)
 | 
				
			||||||
	SAS_DPRINTK("phy%d: phy event: %s\n", phyid, sas_phye_str[pe]);
 | 
						SAS_DPRINTK("phy%d: phy event: %s\n", phyid, sas_phye_str[pe]);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void sas_dprint_hae(struct sas_ha_struct *sas_ha, enum ha_event he)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	SAS_DPRINTK("ha %s: %s event\n", dev_name(sas_ha->dev),
 | 
					 | 
				
			||||||
		    sas_hae_str[he]);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void sas_dump_port(struct asd_sas_port *port)
 | 
					void sas_dump_port(struct asd_sas_port *port)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	SAS_DPRINTK("port%d: class:0x%x\n", port->id, port->class);
 | 
						SAS_DPRINTK("port%d: class:0x%x\n", port->id, port->class);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,5 +26,4 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void sas_dprint_porte(int phyid, enum port_event pe);
 | 
					void sas_dprint_porte(int phyid, enum port_event pe);
 | 
				
			||||||
void sas_dprint_phye(int phyid, enum phy_event pe);
 | 
					void sas_dprint_phye(int phyid, enum phy_event pe);
 | 
				
			||||||
void sas_dprint_hae(struct sas_ha_struct *sas_ha, enum ha_event he);
 | 
					 | 
				
			||||||
void sas_dump_port(struct asd_sas_port *port);
 | 
					void sas_dump_port(struct asd_sas_port *port);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -124,14 +124,6 @@ void sas_enable_revalidation(struct sas_ha_struct *ha)
 | 
				
			||||||
	mutex_unlock(&ha->disco_mutex);
 | 
						mutex_unlock(&ha->disco_mutex);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int notify_ha_event(struct sas_ha_struct *sas_ha, enum ha_event event)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	BUG_ON(event >= HA_NUM_EVENTS);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return sas_queue_event(event, &sas_ha->pending,
 | 
					 | 
				
			||||||
			       &sas_ha->ha_events[event].work, sas_ha);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int notify_port_event(struct asd_sas_phy *phy, enum port_event event)
 | 
					static int notify_port_event(struct asd_sas_phy *phy, enum port_event event)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct sas_ha_struct *ha = phy->ha;
 | 
						struct sas_ha_struct *ha = phy->ha;
 | 
				
			||||||
| 
						 | 
					@ -154,18 +146,6 @@ int sas_notify_phy_event(struct asd_sas_phy *phy, enum phy_event event)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int sas_init_events(struct sas_ha_struct *sas_ha)
 | 
					int sas_init_events(struct sas_ha_struct *sas_ha)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	static const work_func_t sas_ha_event_fns[HA_NUM_EVENTS] = {
 | 
					 | 
				
			||||||
		[HAE_RESET] = sas_hae_reset,
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	int i;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for (i = 0; i < HA_NUM_EVENTS; i++) {
 | 
					 | 
				
			||||||
		INIT_SAS_WORK(&sas_ha->ha_events[i].work, sas_ha_event_fns[i]);
 | 
					 | 
				
			||||||
		sas_ha->ha_events[i].ha = sas_ha;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	sas_ha->notify_ha_event = notify_ha_event;
 | 
					 | 
				
			||||||
	sas_ha->notify_port_event = notify_port_event;
 | 
						sas_ha->notify_port_event = notify_port_event;
 | 
				
			||||||
	sas_ha->notify_phy_event = sas_notify_phy_event;
 | 
						sas_ha->notify_phy_event = sas_notify_phy_event;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -106,17 +106,6 @@ void sas_hash_addr(u8 *hashed, const u8 *sas_addr)
 | 
				
			||||||
        hashed[2] = r & 0xFF;
 | 
					        hashed[2] = r & 0xFF;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/* ---------- HA events ---------- */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void sas_hae_reset(struct work_struct *work)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct sas_ha_event *ev = to_sas_ha_event(work);
 | 
					 | 
				
			||||||
	struct sas_ha_struct *ha = ev->ha;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	clear_bit(HAE_RESET, &ha->pending);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int sas_register_ha(struct sas_ha_struct *sas_ha)
 | 
					int sas_register_ha(struct sas_ha_struct *sas_ha)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int error = 0;
 | 
						int error = 0;
 | 
				
			||||||
| 
						 | 
					@ -154,7 +143,6 @@ int sas_register_ha(struct sas_ha_struct *sas_ha)
 | 
				
			||||||
	INIT_LIST_HEAD(&sas_ha->eh_ata_q);
 | 
						INIT_LIST_HEAD(&sas_ha->eh_ata_q);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
 | 
					 | 
				
			||||||
Undo_ports:
 | 
					Undo_ports:
 | 
				
			||||||
	sas_unregister_ports(sas_ha);
 | 
						sas_unregister_ports(sas_ha);
 | 
				
			||||||
Undo_phys:
 | 
					Undo_phys:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -60,11 +60,6 @@ enum sas_phy_type {
 | 
				
			||||||
 * so when updating/adding events here, please also
 | 
					 * so when updating/adding events here, please also
 | 
				
			||||||
 * update the other file too.
 | 
					 * update the other file too.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
enum ha_event {
 | 
					 | 
				
			||||||
	HAE_RESET             = 0U,
 | 
					 | 
				
			||||||
	HA_NUM_EVENTS         = 1,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
enum port_event {
 | 
					enum port_event {
 | 
				
			||||||
	PORTE_BYTES_DMAED     = 0U,
 | 
						PORTE_BYTES_DMAED     = 0U,
 | 
				
			||||||
	PORTE_BROADCAST_RCVD  = 1,
 | 
						PORTE_BROADCAST_RCVD  = 1,
 | 
				
			||||||
| 
						 | 
					@ -362,18 +357,6 @@ struct scsi_core {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct sas_ha_event {
 | 
					 | 
				
			||||||
	struct sas_work work;
 | 
					 | 
				
			||||||
	struct sas_ha_struct *ha;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static inline struct sas_ha_event *to_sas_ha_event(struct work_struct *work)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct sas_ha_event *ev = container_of(work, typeof(*ev), work.work);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return ev;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
enum sas_ha_state {
 | 
					enum sas_ha_state {
 | 
				
			||||||
	SAS_HA_REGISTERED,
 | 
						SAS_HA_REGISTERED,
 | 
				
			||||||
	SAS_HA_DRAINING,
 | 
						SAS_HA_DRAINING,
 | 
				
			||||||
| 
						 | 
					@ -383,9 +366,6 @@ enum sas_ha_state {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct sas_ha_struct {
 | 
					struct sas_ha_struct {
 | 
				
			||||||
/* private: */
 | 
					/* private: */
 | 
				
			||||||
	struct sas_ha_event ha_events[HA_NUM_EVENTS];
 | 
					 | 
				
			||||||
	unsigned long	 pending;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	struct list_head  defer_q; /* work queued while draining */
 | 
						struct list_head  defer_q; /* work queued while draining */
 | 
				
			||||||
	struct mutex	  drain_mutex;
 | 
						struct mutex	  drain_mutex;
 | 
				
			||||||
	unsigned long	  state;
 | 
						unsigned long	  state;
 | 
				
			||||||
| 
						 | 
					@ -415,7 +395,6 @@ struct sas_ha_struct {
 | 
				
			||||||
				* their siblings when forming wide ports */
 | 
									* their siblings when forming wide ports */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* LLDD calls these to notify the class of an event. */
 | 
						/* LLDD calls these to notify the class of an event. */
 | 
				
			||||||
	int (*notify_ha_event)(struct sas_ha_struct *, enum ha_event);
 | 
					 | 
				
			||||||
	int (*notify_port_event)(struct asd_sas_phy *, enum port_event);
 | 
						int (*notify_port_event)(struct asd_sas_phy *, enum port_event);
 | 
				
			||||||
	int (*notify_phy_event)(struct asd_sas_phy *, enum phy_event);
 | 
						int (*notify_phy_event)(struct asd_sas_phy *, enum phy_event);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue