aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2018-01-17 10:16:48 -0500
committerMartin K. Petersen <martin.petersen@oracle.com>2018-01-22 20:03:57 -0500
commit22807aa812a65a7b859187e0fc6cfa0802a858c4 (patch)
treef261defe3bc0491ae296345fcf28672061bc1ba0
parente89cabf26e1cdd5c612b6c21547b3e79b4ac1038 (diff)
scsi: fnic: use 64-bit timestamps
struct timespec is deprecated since it overflows in 2038 on 32-bit architectures, so we should use timespec64 consistently. I'm slightly adapting the format strings here, to make sure we print the nanoseconds with the correct number of leading zeroes. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Satish Kharat <satishkh@cisco.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r--drivers/scsi/fnic/fnic_debugfs.c2
-rw-r--r--drivers/scsi/fnic/fnic_stats.h4
-rw-r--r--drivers/scsi/fnic/fnic_trace.c58
3 files changed, 32 insertions, 32 deletions
diff --git a/drivers/scsi/fnic/fnic_debugfs.c b/drivers/scsi/fnic/fnic_debugfs.c
index 9858484dd126..6d3e1cb4fea6 100644
--- a/drivers/scsi/fnic/fnic_debugfs.c
+++ b/drivers/scsi/fnic/fnic_debugfs.c
@@ -614,7 +614,7 @@ static ssize_t fnic_reset_stats_write(struct file *file,
614 sizeof(struct io_path_stats) - sizeof(u64)); 614 sizeof(struct io_path_stats) - sizeof(u64));
615 memset(fw_stats_p+1, 0, 615 memset(fw_stats_p+1, 0,
616 sizeof(struct fw_stats) - sizeof(u64)); 616 sizeof(struct fw_stats) - sizeof(u64));
617 getnstimeofday(&stats->stats_timestamps.last_reset_time); 617 ktime_get_real_ts64(&stats->stats_timestamps.last_reset_time);
618 } 618 }
619 619
620 (*ppos)++; 620 (*ppos)++;
diff --git a/drivers/scsi/fnic/fnic_stats.h b/drivers/scsi/fnic/fnic_stats.h
index e007feedbf72..9daa6ada6fa0 100644
--- a/drivers/scsi/fnic/fnic_stats.h
+++ b/drivers/scsi/fnic/fnic_stats.h
@@ -18,8 +18,8 @@
18#define _FNIC_STATS_H_ 18#define _FNIC_STATS_H_
19 19
20struct stats_timestamps { 20struct stats_timestamps {
21 struct timespec last_reset_time; 21 struct timespec64 last_reset_time;
22 struct timespec last_read_time; 22 struct timespec64 last_read_time;
23}; 23};
24 24
25struct io_path_stats { 25struct io_path_stats {
diff --git a/drivers/scsi/fnic/fnic_trace.c b/drivers/scsi/fnic/fnic_trace.c
index 4826f596cb31..abddde11982b 100644
--- a/drivers/scsi/fnic/fnic_trace.c
+++ b/drivers/scsi/fnic/fnic_trace.c
@@ -111,7 +111,7 @@ int fnic_get_trace_data(fnic_dbgfs_t *fnic_dbgfs_prt)
111 int len = 0; 111 int len = 0;
112 unsigned long flags; 112 unsigned long flags;
113 char str[KSYM_SYMBOL_LEN]; 113 char str[KSYM_SYMBOL_LEN];
114 struct timespec val; 114 struct timespec64 val;
115 fnic_trace_data_t *tbp; 115 fnic_trace_data_t *tbp;
116 116
117 spin_lock_irqsave(&fnic_trace_lock, flags); 117 spin_lock_irqsave(&fnic_trace_lock, flags);
@@ -129,10 +129,10 @@ int fnic_get_trace_data(fnic_dbgfs_t *fnic_dbgfs_prt)
129 /* Convert function pointer to function name */ 129 /* Convert function pointer to function name */
130 if (sizeof(unsigned long) < 8) { 130 if (sizeof(unsigned long) < 8) {
131 sprint_symbol(str, tbp->fnaddr.low); 131 sprint_symbol(str, tbp->fnaddr.low);
132 jiffies_to_timespec(tbp->timestamp.low, &val); 132 jiffies_to_timespec64(tbp->timestamp.low, &val);
133 } else { 133 } else {
134 sprint_symbol(str, tbp->fnaddr.val); 134 sprint_symbol(str, tbp->fnaddr.val);
135 jiffies_to_timespec(tbp->timestamp.val, &val); 135 jiffies_to_timespec64(tbp->timestamp.val, &val);
136 } 136 }
137 /* 137 /*
138 * Dump trace buffer entry to memory file 138 * Dump trace buffer entry to memory file
@@ -140,8 +140,8 @@ int fnic_get_trace_data(fnic_dbgfs_t *fnic_dbgfs_prt)
140 */ 140 */
141 len += snprintf(fnic_dbgfs_prt->buffer + len, 141 len += snprintf(fnic_dbgfs_prt->buffer + len,
142 (trace_max_pages * PAGE_SIZE * 3) - len, 142 (trace_max_pages * PAGE_SIZE * 3) - len,
143 "%16lu.%16lu %-50s %8x %8x %16llx %16llx " 143 "%16llu.%09lu %-50s %8x %8x %16llx %16llx "
144 "%16llx %16llx %16llx\n", val.tv_sec, 144 "%16llx %16llx %16llx\n", (u64)val.tv_sec,
145 val.tv_nsec, str, tbp->host_no, tbp->tag, 145 val.tv_nsec, str, tbp->host_no, tbp->tag,
146 tbp->data[0], tbp->data[1], tbp->data[2], 146 tbp->data[0], tbp->data[1], tbp->data[2],
147 tbp->data[3], tbp->data[4]); 147 tbp->data[3], tbp->data[4]);
@@ -171,10 +171,10 @@ int fnic_get_trace_data(fnic_dbgfs_t *fnic_dbgfs_prt)
171 /* Convert function pointer to function name */ 171 /* Convert function pointer to function name */
172 if (sizeof(unsigned long) < 8) { 172 if (sizeof(unsigned long) < 8) {
173 sprint_symbol(str, tbp->fnaddr.low); 173 sprint_symbol(str, tbp->fnaddr.low);
174 jiffies_to_timespec(tbp->timestamp.low, &val); 174 jiffies_to_timespec64(tbp->timestamp.low, &val);
175 } else { 175 } else {
176 sprint_symbol(str, tbp->fnaddr.val); 176 sprint_symbol(str, tbp->fnaddr.val);
177 jiffies_to_timespec(tbp->timestamp.val, &val); 177 jiffies_to_timespec64(tbp->timestamp.val, &val);
178 } 178 }
179 /* 179 /*
180 * Dump trace buffer entry to memory file 180 * Dump trace buffer entry to memory file
@@ -182,8 +182,8 @@ int fnic_get_trace_data(fnic_dbgfs_t *fnic_dbgfs_prt)
182 */ 182 */
183 len += snprintf(fnic_dbgfs_prt->buffer + len, 183 len += snprintf(fnic_dbgfs_prt->buffer + len,
184 (trace_max_pages * PAGE_SIZE * 3) - len, 184 (trace_max_pages * PAGE_SIZE * 3) - len,
185 "%16lu.%16lu %-50s %8x %8x %16llx %16llx " 185 "%16llu.%09lu %-50s %8x %8x %16llx %16llx "
186 "%16llx %16llx %16llx\n", val.tv_sec, 186 "%16llx %16llx %16llx\n", (u64)val.tv_sec,
187 val.tv_nsec, str, tbp->host_no, tbp->tag, 187 val.tv_nsec, str, tbp->host_no, tbp->tag,
188 tbp->data[0], tbp->data[1], tbp->data[2], 188 tbp->data[0], tbp->data[1], tbp->data[2],
189 tbp->data[3], tbp->data[4]); 189 tbp->data[3], tbp->data[4]);
@@ -217,29 +217,29 @@ int fnic_get_stats_data(struct stats_debug_info *debug,
217{ 217{
218 int len = 0; 218 int len = 0;
219 int buf_size = debug->buf_size; 219 int buf_size = debug->buf_size;
220 struct timespec val1, val2; 220 struct timespec64 val1, val2;
221 221
222 getnstimeofday(&val1); 222 ktime_get_real_ts64(&val1);
223 len = snprintf(debug->debug_buffer + len, buf_size - len, 223 len = snprintf(debug->debug_buffer + len, buf_size - len,
224 "------------------------------------------\n" 224 "------------------------------------------\n"
225 "\t\tTime\n" 225 "\t\tTime\n"
226 "------------------------------------------\n"); 226 "------------------------------------------\n");
227 227
228 len += snprintf(debug->debug_buffer + len, buf_size - len, 228 len += snprintf(debug->debug_buffer + len, buf_size - len,
229 "Current time : [%ld:%ld]\n" 229 "Current time : [%lld:%ld]\n"
230 "Last stats reset time: [%ld:%ld]\n" 230 "Last stats reset time: [%lld:%09ld]\n"
231 "Last stats read time: [%ld:%ld]\n" 231 "Last stats read time: [%lld:%ld]\n"
232 "delta since last reset: [%ld:%ld]\n" 232 "delta since last reset: [%lld:%ld]\n"
233 "delta since last read: [%ld:%ld]\n", 233 "delta since last read: [%lld:%ld]\n",
234 val1.tv_sec, val1.tv_nsec, 234 (s64)val1.tv_sec, val1.tv_nsec,
235 stats->stats_timestamps.last_reset_time.tv_sec, 235 (s64)stats->stats_timestamps.last_reset_time.tv_sec,
236 stats->stats_timestamps.last_reset_time.tv_nsec, 236 stats->stats_timestamps.last_reset_time.tv_nsec,
237 stats->stats_timestamps.last_read_time.tv_sec, 237 (s64)stats->stats_timestamps.last_read_time.tv_sec,
238 stats->stats_timestamps.last_read_time.tv_nsec, 238 stats->stats_timestamps.last_read_time.tv_nsec,
239 timespec_sub(val1, stats->stats_timestamps.last_reset_time).tv_sec, 239 (s64)timespec64_sub(val1, stats->stats_timestamps.last_reset_time).tv_sec,
240 timespec_sub(val1, stats->stats_timestamps.last_reset_time).tv_nsec, 240 timespec64_sub(val1, stats->stats_timestamps.last_reset_time).tv_nsec,
241 timespec_sub(val1, stats->stats_timestamps.last_read_time).tv_sec, 241 (s64)timespec64_sub(val1, stats->stats_timestamps.last_read_time).tv_sec,
242 timespec_sub(val1, stats->stats_timestamps.last_read_time).tv_nsec); 242 timespec64_sub(val1, stats->stats_timestamps.last_read_time).tv_nsec);
243 243
244 stats->stats_timestamps.last_read_time = val1; 244 stats->stats_timestamps.last_read_time = val1;
245 245
@@ -403,12 +403,12 @@ int fnic_get_stats_data(struct stats_debug_info *debug,
403 "\t\tOther Important Statistics\n" 403 "\t\tOther Important Statistics\n"
404 "------------------------------------------\n"); 404 "------------------------------------------\n");
405 405
406 jiffies_to_timespec(stats->misc_stats.last_isr_time, &val1); 406 jiffies_to_timespec64(stats->misc_stats.last_isr_time, &val1);
407 jiffies_to_timespec(stats->misc_stats.last_ack_time, &val2); 407 jiffies_to_timespec64(stats->misc_stats.last_ack_time, &val2);
408 408
409 len += snprintf(debug->debug_buffer + len, buf_size - len, 409 len += snprintf(debug->debug_buffer + len, buf_size - len,
410 "Last ISR time: %llu (%8lu.%8lu)\n" 410 "Last ISR time: %llu (%8llu.%09lu)\n"
411 "Last ACK time: %llu (%8lu.%8lu)\n" 411 "Last ACK time: %llu (%8llu.%09lu)\n"
412 "Number of ISRs: %lld\n" 412 "Number of ISRs: %lld\n"
413 "Maximum CQ Entries: %lld\n" 413 "Maximum CQ Entries: %lld\n"
414 "Number of ACK index out of range: %lld\n" 414 "Number of ACK index out of range: %lld\n"
@@ -425,9 +425,9 @@ int fnic_get_stats_data(struct stats_debug_info *debug,
425 "Number of rport not ready: %lld\n" 425 "Number of rport not ready: %lld\n"
426 "Number of receive frame errors: %lld\n", 426 "Number of receive frame errors: %lld\n",
427 (u64)stats->misc_stats.last_isr_time, 427 (u64)stats->misc_stats.last_isr_time,
428 val1.tv_sec, val1.tv_nsec, 428 (s64)val1.tv_sec, val1.tv_nsec,
429 (u64)stats->misc_stats.last_ack_time, 429 (u64)stats->misc_stats.last_ack_time,
430 val2.tv_sec, val2.tv_nsec, 430 (s64)val2.tv_sec, val2.tv_nsec,
431 (u64)atomic64_read(&stats->misc_stats.isr_count), 431 (u64)atomic64_read(&stats->misc_stats.isr_count),
432 (u64)atomic64_read(&stats->misc_stats.max_cq_entries), 432 (u64)atomic64_read(&stats->misc_stats.max_cq_entries),
433 (u64)atomic64_read(&stats->misc_stats.ack_index_out_of_range), 433 (u64)atomic64_read(&stats->misc_stats.ack_index_out_of_range),