RE: [PATCH] drivers: scsi: megaraid: Add "megaraid_sas_internal.h" for internal shared functions using

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>-----Original Message-----
>From: Chen Gang [mailto:gang.chen.5i5j@xxxxxxxxx]
>Sent: Monday, November 17, 2014 5:17 PM
>To: Sumit Saxena
>Cc: megaraidlinux@xxxxxxx; linux-scsi@xxxxxxxxxxxxxxx; linux-
>kernel@xxxxxxxxxxxxxxx
>Subject: RE: [PATCH] drivers: scsi: megaraid: Add "megaraid_sas_internal.h"
>for internal shared functions using
>
>
>OK, I will send patch v2 for it.
>
>I sent this patch based on Linux next tree, please tell me the tree
>location (git
>address) which I shall base on for sending patch v2.

I posted the patch series today, once the patches make it to scsi-next tree,
I will let you know.

Thanks
Sumit
>
>Thanks.
>
>Send from Lenovo A788t.
>
>Sumit Saxena <sumit.saxena@xxxxxxxxxxxxx> wrote:
>
>>>-----Original Message-----
>>>From: Chen Gang [mailto:gang.chen.5i5j@xxxxxxxxx]
>>>Sent: Sunday, November 09, 2014 3:47 PM
>>>To: megaraidlinux@xxxxxxx; JBottomley@xxxxxxxxxxxxx
>>>Cc: linux-scsi@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
>>>Subject: [PATCH] drivers: scsi: megaraid: Add "megaraid_sas_internal.h"
>>for
>>>internal shared functions using
>>>
>>>For shared inline functions crossed source files, better to let it as
>>"static inline"
>>>in a header file. For extern functions, better to declare them in
>>>header
>>file.
>>>
>>>For the latest upstream gcc/binutiles (gcc 5 with ld 2.25.51), it will
>>cause
>>>building break (although it might be the gcc's or ld's issue), the
>>related error
>>>(with allmodconfig under tile):
>>>
>>>    MODPOST 4002 modules
>>>  ERROR: "megasas_return_cmd" [drivers/scsi/megaraid/megaraid_sas.ko]
>>>undefined!
>>>  ERROR: "megasas_is_ldio" [drivers/scsi/megaraid/megaraid_sas.ko]
>>>undefined!
>>>
>>>
>>>Signed-off-by: Chen Gang <gang.chen.5i5j@xxxxxxxxx>
>>>---
>>> drivers/scsi/megaraid/megaraid_sas_base.c     |  65 +----------------
>>> drivers/scsi/megaraid/megaraid_sas_fusion.c   |  38 +---------
>>> drivers/scsi/megaraid/megaraid_sas_internal.h | 100
>>>++++++++++++++++++++++++++
>>> 3 files changed, 102 insertions(+), 101 deletions(-)  create mode
>>>100644 drivers/scsi/megaraid/megaraid_sas_internal.h
>>>
>>>diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c
>>>b/drivers/scsi/megaraid/megaraid_sas_base.c
>>>index f6a69a3..4a71c04 100644
>>>--- a/drivers/scsi/megaraid/megaraid_sas_base.c
>>>+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
>>>@@ -57,6 +57,7 @@
>>> #include <scsi/scsi_tcq.h>
>>> #include "megaraid_sas_fusion.h"
>>> #include "megaraid_sas.h"
>>>+#include "megaraid_sas_internal.h"
>>>
>>> /*
>>>  * Number of sectors per IO command
>>>@@ -98,7 +99,6 @@ MODULE_VERSION(MEGASAS_VERSION);
>>>MODULE_AUTHOR("megaraidlinux@xxxxxxx");
>>> MODULE_DESCRIPTION("LSI MegaRAID SAS Driver");
>>>
>>>-int megasas_transition_to_ready(struct megasas_instance *instance,
>>>int ocr);  static int megasas_get_pd_list(struct megasas_instance
>>>*instance); static int megasas_ld_list_query(struct megasas_instance
>*instance,
>>> 				 u8 query_type);
>>>@@ -155,9 +155,6 @@ static u32 support_device_change;
>>> /* define lock for aen poll */
>>> spinlock_t poll_aen_lock;
>>>
>>>-void
>>>-megasas_complete_cmd(struct megasas_instance *instance, struct
>>>megasas_cmd *cmd,
>>>-		     u8 alt_status);
>>> static u32
>>> megasas_read_fw_status_reg_gen2(struct megasas_register_set
>__iomem
>>>*regs);  static int @@ -170,26 +167,8 @@ u32
>>>megasas_build_and_issue_cmd(struct megasas_instance *instance,
>>> 			    struct scsi_cmnd *scmd);
>>> static void megasas_complete_cmd_dpc(unsigned long instance_addr);
>>>-void -megasas_release_fusion(struct megasas_instance *instance); -int
>>>- megasas_ioc_init_fusion(struct megasas_instance *instance); -void -
>>>megasas_free_cmds_fusion(struct megasas_instance *instance);
>>>-u8
>>>-megasas_get_map_info(struct megasas_instance *instance); -int -
>>>megasas_sync_map_info(struct megasas_instance *instance); -int -
>>>wait_and_poll(struct megasas_instance *instance, struct megasas_cmd
>>>*cmd,
>>>-	int seconds);
>>>-void megasas_reset_reply_desc(struct megasas_instance *instance);
>>>-int megasas_reset_fusion(struct Scsi_Host *shost, int iotimeout);
>>>-void megasas_fusion_ocr_wq(struct work_struct *work);  static int
>>>megasas_get_ld_vf_affiliation(struct megasas_instance *instance,
>>> 					 int initial);
>>>-int megasas_check_mpio_paths(struct megasas_instance *instance,
>>>-			     struct scsi_cmnd *scmd);
>>>
>>> void
>>> megasas_issue_dcmd(struct megasas_instance *instance, struct
>>>megasas_cmd *cmd) @@ -258,22 +237,6 @@
>__megasas_return_cmd(struct
>>>megasas_instance *instance, struct megasas_cmd *cmd)  }
>>>
>>> /**
>>>- * megasas_return_cmd -	Return a cmd to free command pool
>>>- * @instance:		Adapter soft state
>>>- * @cmd:		Command packet to be returned to free command
>>>pool
>>>- */
>>>-inline void
>>>-megasas_return_cmd(struct megasas_instance *instance, struct
>>>megasas_cmd *cmd) -{
>>>-	unsigned long flags;
>>>-
>>>-	spin_lock_irqsave(&instance->mfi_pool_lock, flags);
>>>-	__megasas_return_cmd(instance, cmd);
>>>-	spin_unlock_irqrestore(&instance->mfi_pool_lock, flags);
>>>-}
>>>-
>>>-
>>>-/**
>>> *	The following functions are defined for xscale
>>> *	(deviceid : 1064R, PERC5) controllers
>>> */
>>>@@ -1417,32 +1380,6 @@ megasas_build_ldio(struct megasas_instance
>>>*instance, struct scsi_cmnd *scp,
>>> 	return cmd->frame_count;
>>> }
>>>
>>>-/**
>>>- * megasas_is_ldio -		Checks if the cmd is for logical drive
>>>- * @scmd:			SCSI command
>>>- *
>>>- * Called by megasas_queue_command to find out if the command to be
>>>queued
>>>- * is a logical drive command
>>>- */
>>>-inline int megasas_is_ldio(struct scsi_cmnd *cmd) -{
>>>-	if (!MEGASAS_IS_LOGICAL(cmd))
>>>-		return 0;
>>>-	switch (cmd->cmnd[0]) {
>>>-	case READ_10:
>>>-	case WRITE_10:
>>>-	case READ_12:
>>>-	case WRITE_12:
>>>-	case READ_6:
>>>-	case WRITE_6:
>>>-	case READ_16:
>>>-	case WRITE_16:
>>>-		return 1;
>>>-	default:
>>>-		return 0;
>>>-	}
>>>-}
>>>-
>>>  /**
>>>  * megasas_dump_pending_frames -	Dumps the frame address of
>all
>>>pending cmds
>>>  *                              	in FW
>>>diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c
>>>b/drivers/scsi/megaraid/megaraid_sas_fusion.c
>>>index f37eed6..c2b8782 100644
>>>--- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
>>>+++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
>>>@@ -54,43 +54,7 @@
>>>
>>> #include "megaraid_sas_fusion.h"
>>> #include "megaraid_sas.h"
>>>-
>>>-extern void megasas_free_cmds(struct megasas_instance *instance); -
>>>extern struct megasas_cmd *megasas_get_cmd(struct megasas_instance
>>>-					   *instance);
>>>-extern void
>>>-megasas_complete_cmd(struct megasas_instance *instance,
>>>-		     struct megasas_cmd *cmd, u8 alt_status);
>>>-int megasas_is_ldio(struct scsi_cmnd *cmd); -int
>>>-wait_and_poll(struct megasas_instance *instance, struct megasas_cmd
>*cmd,
>>>-	      int seconds);
>>>-
>>>-void
>>>-megasas_return_cmd(struct megasas_instance *instance, struct
>>>megasas_cmd *cmd); -int megasas_alloc_cmds(struct megasas_instance
>>>*instance); -int -megasas_clear_intr_fusion(struct
>>>megasas_register_set __iomem *regs); -int -megasas_issue_polled(struct
>>>megasas_instance *instance,
>>>-		     struct megasas_cmd *cmd);
>>>-void
>>>-megasas_check_and_restore_queue_depth(struct megasas_instance
>>>*instance);
>>>-
>>>-int megasas_transition_to_ready(struct megasas_instance *instance,
>>>int ocr); -void megaraid_sas_kill_hba(struct megasas_instance
>>>*instance);
>>>-
>>>-extern u32 megasas_dbg_lvl;
>>>-void megasas_sriov_heartbeat_handler(unsigned long instance_addr);
>>>-int megasas_sriov_start_heartbeat(struct megasas_instance *instance,
>>>-				  int initial);
>>>-void megasas_start_timer(struct megasas_instance *instance,
>>>-			struct timer_list *timer,
>>>-			 void *fn, unsigned long interval);
>>>-extern struct megasas_mgmt_info megasas_mgmt_info; -extern int
>>>resetwaittime;
>>>-
>>>-
>>>+#include "megaraid_sas_internal.h"
>>>
>>> /**
>>>  * megasas_enable_intr_fusion -	Enables interrupts
>>>diff --git a/drivers/scsi/megaraid/megaraid_sas_internal.h
>>>b/drivers/scsi/megaraid/megaraid_sas_internal.h
>>>new file mode 100644
>>>index 0000000..b2b0a55
>>>--- /dev/null
>>>+++ b/drivers/scsi/megaraid/megaraid_sas_internal.h
>>>@@ -0,0 +1,100 @@
>>>+#ifndef LSI_MEGARAID_SAS_INTERNAL_H
>>>+#define LSI_MEGARAID_SAS_INTERNAL_H
>>>+
>>>+/*
>>>+ * From base.
>>>+ */
>>>+
>>>+extern void megasas_free_cmds(struct megasas_instance *instance);
>>>+extern struct megasas_cmd *megasas_get_cmd(struct megasas_instance
>>>+					   *instance);
>>>+
>>>+extern void
>>>+megasas_complete_cmd(struct megasas_instance *instance,
>>>+		     struct megasas_cmd *cmd, u8 alt_status);
>>>+/**
>>>+ * megasas_is_ldio -		Checks if the cmd is for logical drive
>>>+ * @scmd:			SCSI command
>>>+ *
>>>+ * Called by megasas_queue_command to find out if the command to be
>>>+queued
>>>+ * is a logical drive command
>>>+ */
>>>+static inline int megasas_is_ldio(struct scsi_cmnd *cmd) {
>>>+	if (!MEGASAS_IS_LOGICAL(cmd))
>>>+		return 0;
>>>+	switch (cmd->cmnd[0]) {
>>>+	case READ_10:
>>>+	case WRITE_10:
>>>+	case READ_12:
>>>+	case WRITE_12:
>>>+	case READ_6:
>>>+	case WRITE_6:
>>>+	case READ_16:
>>>+	case WRITE_16:
>>>+		return 1;
>>>+	default:
>>>+		return 0;
>>>+	}
>>>+}
>>>+
>>>+/**
>>>+ * megasas_return_cmd -	Return a cmd to free command pool
>>>+ * @instance:		Adapter soft state
>>>+ * @cmd:		Command packet to be returned to free command
>>>pool
>>>+ */
>>>+static inline void
>>>+megasas_return_cmd(struct megasas_instance *instance, struct
>>>+megasas_cmd *cmd) {
>>>+	unsigned long flags;
>>>+
>>>+	spin_lock_irqsave(&instance->mfi_pool_lock, flags);
>>>+	__megasas_return_cmd(instance, cmd);
>>>+	spin_unlock_irqrestore(&instance->mfi_pool_lock, flags); }
>>>+
>>>+int megasas_alloc_cmds(struct megasas_instance *instance);
>>>+
>>>+int
>>>+megasas_issue_polled(struct megasas_instance *instance,
>>>+		     struct megasas_cmd *cmd);
>>>+void
>>>+megasas_check_and_restore_queue_depth(struct megasas_instance
>>>+*instance);
>>>+
>>>+int megasas_transition_to_ready(struct megasas_instance *instance,
>>>+int ocr); void megaraid_sas_kill_hba(struct megasas_instance
>>>+*instance);
>>>+
>>>+extern u32 megasas_dbg_lvl;
>>>+void megasas_sriov_heartbeat_handler(unsigned long instance_addr);
>>>+int megasas_sriov_start_heartbeat(struct megasas_instance *instance,
>>>+				  int initial);
>>>+void megasas_start_timer(struct megasas_instance *instance,
>>>+			struct timer_list *timer,
>>>+			 void *fn, unsigned long interval); extern struct
>>>+megasas_mgmt_info megasas_mgmt_info; extern int resetwaittime;
>>>+
>>>+/*
>>>+ * From fusion.
>>>+ */
>>>+
>>>+int megasas_check_mpio_paths(struct megasas_instance *instance,
>>>+			     struct scsi_cmnd *scmd);
>>>+int
>>>+wait_and_poll(struct megasas_instance *instance, struct megasas_cmd
>>>*cmd,
>>>+	      int seconds);
>>>+void
>>>+megasas_release_fusion(struct megasas_instance *instance); int
>>>+megasas_ioc_init_fusion(struct megasas_instance *instance); void
>>>+megasas_free_cmds_fusion(struct megasas_instance *instance);
>>>+u8
>>>+megasas_get_map_info(struct megasas_instance *instance); int
>>>+megasas_sync_map_info(struct megasas_instance *instance); void
>>>+megasas_reset_reply_desc(struct megasas_instance *instance); int
>>>+megasas_reset_fusion(struct Scsi_Host *shost, int iotimeout); void
>>>+megasas_fusion_ocr_wq(struct work_struct *work);
>>>+
>>>+#endif /* LSI_MEGARAID_SAS_INTERNAL_H */
>>
>>Patch looks good to me. Can you please rebase this patch on top of
>>latest patch series sent by me?
>>>--
>>>1.9.3
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux