Re: [PATCH] [RESEND] scsi: fnic: use 64-bit timestamps

2018-01-17 Thread Martin K. Petersen

Arnd,

> 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.

Applied to 4.16/scsi-queue. Thanks!

-- 
Martin K. Petersen  Oracle Linux Engineering


RE: [PATCH] [RESEND] scsi: fnic: use 64-bit timestamps

2018-01-17 Thread Satish Kharat (satishkh)
Looks good to me.

Acked-by: Satish Kharat 

-Original Message-
From: Arnd Bergmann [mailto:a...@arndb.de] 
Sent: Wednesday, January 17, 2018 7:17 AM
To: Satish Kharat (satishkh) ; Sesidhar Baddela (sebaddel) 
; Karan Tilak Kumar (kartilak) ; James 
E.J. Bottomley ; Martin K. Petersen 

Cc: Arnd Bergmann ; Vasyl Gomonovych ; 
linux-scsi@vger.kernel.org; linux-ker...@vger.kernel.org
Subject: [PATCH] [RESEND] 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 
---
Originally submitted in November 2017. Martin asked Satish to review my patch, 
but I never heard back after that, so I'm trying again now.
---
 drivers/scsi/fnic/fnic_debugfs.c |  2 +-
 drivers/scsi/fnic/fnic_stats.h   |  4 +--
 drivers/scsi/fnic/fnic_trace.c   | 58 
 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,
sizeof(struct io_path_stats) - sizeof(u64));
memset(fw_stats_p+1, 0,
sizeof(struct fw_stats) - sizeof(u64));
-   getnstimeofday(>stats_timestamps.last_reset_time);
+   ktime_get_real_ts64(>stats_timestamps.last_reset_time);
}
 
(*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 @@
 #define _FNIC_STATS_H_
 
 struct stats_timestamps {
-   struct timespec last_reset_time;
-   struct timespec last_read_time;
+   struct timespec64 last_reset_time;
+   struct timespec64 last_read_time;
 };
 
 struct 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)
int len = 0;
unsigned long flags;
char str[KSYM_SYMBOL_LEN];
-   struct timespec val;
+   struct timespec64 val;
fnic_trace_data_t *tbp;
 
spin_lock_irqsave(_trace_lock, flags); @@ -129,10 +129,10 @@ int 
fnic_get_trace_data(fnic_dbgfs_t *fnic_dbgfs_prt)
/* Convert function pointer to function name */
if (sizeof(unsigned long) < 8) {
sprint_symbol(str, tbp->fnaddr.low);
-   jiffies_to_timespec(tbp->timestamp.low, );
+   jiffies_to_timespec64(tbp->timestamp.low, );
} else {
sprint_symbol(str, tbp->fnaddr.val);
-   jiffies_to_timespec(tbp->timestamp.val, );
+   jiffies_to_timespec64(tbp->timestamp.val, );
}
/*
 * Dump trace buffer entry to memory file @@ -140,8 
+140,8 @@ int fnic_get_trace_data(fnic_dbgfs_t *fnic_dbgfs_prt)
 */
len += snprintf(fnic_dbgfs_prt->buffer + len,
  (trace_max_pages * PAGE_SIZE * 3) - len,
- "%16lu.%16lu %-50s %8x %8x %16llx %16llx "
- "%16llx %16llx %16llx\n", val.tv_sec,
+ "%16llu.%09lu %-50s %8x %8x %16llx %16llx "
+ "%16llx %16llx %16llx\n", (u64)val.tv_sec,
  val.tv_nsec, str, tbp->host_no, tbp->tag,
  tbp->data[0], tbp->data[1], tbp->data[2],
  tbp->data[3], tbp->data[4]);
@@ -171,10 +171,10 @@ int fnic_get_trace_data(fnic_dbgfs_t *fnic_dbgfs_prt)
/* Convert function pointer to function name */
if (sizeof(unsigned long) < 8) {
sprint_symbol(str, tbp->fnaddr.low);
-   jiffies_to_timespec(tbp->timestamp.low, );
+   jiffies_to_timespec64(tbp->timestamp.low, );
} else {
sprint_symbol(str, tbp->fnaddr.val);
-