[SCSI] zfcp: Remove duplicated code for debug timestamps
The timestamp calculation used for s390dbf output is the same in a private zfcp function and in debug.c. Replace both with a common inline function. Reviewed-by: Swen Schillig <swen@vnet.ibm.com> Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
		
					parent
					
						
							
								0fac3f477b
							
						
					
				
			
			
				commit
				
					
						b592e89ac9
					
				
			
		
					 4 changed files with 13 additions and 23 deletions
				
			
		| 
						 | 
					@ -88,6 +88,14 @@ int get_sync_clock(unsigned long long *clock);
 | 
				
			||||||
void init_cpu_timer(void);
 | 
					void init_cpu_timer(void);
 | 
				
			||||||
unsigned long long monotonic_clock(void);
 | 
					unsigned long long monotonic_clock(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void tod_to_timeval(__u64, struct timespec *);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline
 | 
				
			||||||
 | 
					void stck_to_timespec(unsigned long long stck, struct timespec *ts)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						tod_to_timeval(stck - TOD_UNIX_EPOCH, ts);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern u64 sched_clock_base_cc;
 | 
					extern u64 sched_clock_base_cc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -63,8 +63,6 @@ typedef struct
 | 
				
			||||||
} debug_sprintf_entry_t;
 | 
					} debug_sprintf_entry_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern void tod_to_timeval(uint64_t todval, struct timespec *xtime);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* internal function prototyes */
 | 
					/* internal function prototyes */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int debug_init(void);
 | 
					static int debug_init(void);
 | 
				
			||||||
| 
						 | 
					@ -1450,17 +1448,13 @@ debug_dflt_header_fn(debug_info_t * id, struct debug_view *view,
 | 
				
			||||||
			 int area, debug_entry_t * entry, char *out_buf)
 | 
								 int area, debug_entry_t * entry, char *out_buf)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct timespec time_spec;
 | 
						struct timespec time_spec;
 | 
				
			||||||
	unsigned long long time;
 | 
					 | 
				
			||||||
	char *except_str;
 | 
						char *except_str;
 | 
				
			||||||
	unsigned long caller;
 | 
						unsigned long caller;
 | 
				
			||||||
	int rc = 0;
 | 
						int rc = 0;
 | 
				
			||||||
	unsigned int level;
 | 
						unsigned int level;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	level = entry->id.fields.level;
 | 
						level = entry->id.fields.level;
 | 
				
			||||||
	time = entry->id.stck;
 | 
						stck_to_timespec(entry->id.stck, &time_spec);
 | 
				
			||||||
	/* adjust todclock to 1970 */
 | 
					 | 
				
			||||||
	time -= 0x8126d60e46000000LL - (0x3c26700LL * 1000000 * 4096);
 | 
					 | 
				
			||||||
	tod_to_timeval(time, &time_spec);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (entry->id.fields.exception)
 | 
						if (entry->id.fields.exception)
 | 
				
			||||||
		except_str = "*";
 | 
							except_str = "*";
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -90,6 +90,7 @@ void tod_to_timeval(__u64 todval, struct timespec *xtime)
 | 
				
			||||||
	todval -= (sec * 1000000) << 12;
 | 
						todval -= (sec * 1000000) << 12;
 | 
				
			||||||
	xtime->tv_nsec = ((todval * 1000) >> 12);
 | 
						xtime->tv_nsec = ((todval * 1000) >> 12);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					EXPORT_SYMBOL(tod_to_timeval);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void clock_comparator_work(void)
 | 
					void clock_comparator_work(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,19 +38,6 @@ static void zfcp_dbf_hexdump(debug_info_t *dbf, void *to, int to_len,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* FIXME: this duplicate this code in s390 debug feature */
 | 
					 | 
				
			||||||
static void zfcp_dbf_timestamp(unsigned long long stck, struct timespec *time)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	unsigned long long sec;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	stck -= 0x8126d60e46000000LL - (0x3c26700LL * 1000000 * 4096);
 | 
					 | 
				
			||||||
	sec = stck >> 12;
 | 
					 | 
				
			||||||
	do_div(sec, 1000000);
 | 
					 | 
				
			||||||
	time->tv_sec = sec;
 | 
					 | 
				
			||||||
	stck -= (sec * 1000000) << 12;
 | 
					 | 
				
			||||||
	time->tv_nsec = ((stck * 1000) >> 12);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void zfcp_dbf_tag(char **p, const char *label, const char *tag)
 | 
					static void zfcp_dbf_tag(char **p, const char *label, const char *tag)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
| 
						 | 
					@ -107,7 +94,7 @@ static int zfcp_dbf_view_header(debug_info_t *id, struct debug_view *view,
 | 
				
			||||||
	char *p = out_buf;
 | 
						char *p = out_buf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (strncmp(dump->tag, "dump", ZFCP_DBF_TAG_SIZE) != 0) {
 | 
						if (strncmp(dump->tag, "dump", ZFCP_DBF_TAG_SIZE) != 0) {
 | 
				
			||||||
		zfcp_dbf_timestamp(entry->id.stck, &t);
 | 
							stck_to_timespec(entry->id.stck, &t);
 | 
				
			||||||
		zfcp_dbf_out(&p, "timestamp", "%011lu:%06lu",
 | 
							zfcp_dbf_out(&p, "timestamp", "%011lu:%06lu",
 | 
				
			||||||
			     t.tv_sec, t.tv_nsec);
 | 
								     t.tv_sec, t.tv_nsec);
 | 
				
			||||||
		zfcp_dbf_out(&p, "cpu", "%02i", entry->id.fields.cpuid);
 | 
							zfcp_dbf_out(&p, "cpu", "%02i", entry->id.fields.cpuid);
 | 
				
			||||||
| 
						 | 
					@ -320,7 +307,7 @@ static void zfcp_dbf_hba_view_response(char **p,
 | 
				
			||||||
	zfcp_dbf_out(p, "fsf_command", "0x%08x", r->fsf_command);
 | 
						zfcp_dbf_out(p, "fsf_command", "0x%08x", r->fsf_command);
 | 
				
			||||||
	zfcp_dbf_out(p, "fsf_reqid", "0x%0Lx", r->fsf_reqid);
 | 
						zfcp_dbf_out(p, "fsf_reqid", "0x%0Lx", r->fsf_reqid);
 | 
				
			||||||
	zfcp_dbf_out(p, "fsf_seqno", "0x%08x", r->fsf_seqno);
 | 
						zfcp_dbf_out(p, "fsf_seqno", "0x%08x", r->fsf_seqno);
 | 
				
			||||||
	zfcp_dbf_timestamp(r->fsf_issued, &t);
 | 
						stck_to_timespec(r->fsf_issued, &t);
 | 
				
			||||||
	zfcp_dbf_out(p, "fsf_issued", "%011lu:%06lu", t.tv_sec, t.tv_nsec);
 | 
						zfcp_dbf_out(p, "fsf_issued", "%011lu:%06lu", t.tv_sec, t.tv_nsec);
 | 
				
			||||||
	zfcp_dbf_out(p, "fsf_prot_status", "0x%08x", r->fsf_prot_status);
 | 
						zfcp_dbf_out(p, "fsf_prot_status", "0x%08x", r->fsf_prot_status);
 | 
				
			||||||
	zfcp_dbf_out(p, "fsf_status", "0x%08x", r->fsf_status);
 | 
						zfcp_dbf_out(p, "fsf_status", "0x%08x", r->fsf_status);
 | 
				
			||||||
| 
						 | 
					@ -976,7 +963,7 @@ static int zfcp_dbf_scsi_view_format(debug_info_t *id, struct debug_view *view,
 | 
				
			||||||
		zfcp_dbf_out(&p, "old_fsf_reqid", "0x%0Lx", r->old_fsf_reqid);
 | 
							zfcp_dbf_out(&p, "old_fsf_reqid", "0x%0Lx", r->old_fsf_reqid);
 | 
				
			||||||
	zfcp_dbf_out(&p, "fsf_reqid", "0x%0Lx", r->fsf_reqid);
 | 
						zfcp_dbf_out(&p, "fsf_reqid", "0x%0Lx", r->fsf_reqid);
 | 
				
			||||||
	zfcp_dbf_out(&p, "fsf_seqno", "0x%08x", r->fsf_seqno);
 | 
						zfcp_dbf_out(&p, "fsf_seqno", "0x%08x", r->fsf_seqno);
 | 
				
			||||||
	zfcp_dbf_timestamp(r->fsf_issued, &t);
 | 
						stck_to_timespec(r->fsf_issued, &t);
 | 
				
			||||||
	zfcp_dbf_out(&p, "fsf_issued", "%011lu:%06lu", t.tv_sec, t.tv_nsec);
 | 
						zfcp_dbf_out(&p, "fsf_issued", "%011lu:%06lu", t.tv_sec, t.tv_nsec);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (strncmp(r->tag, "rslt", ZFCP_DBF_TAG_SIZE) == 0) {
 | 
						if (strncmp(r->tag, "rslt", ZFCP_DBF_TAG_SIZE) == 0) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue