* [PATCH] md: use seconds granularity for error logging
@ 2016-06-17 15:33 Arnd Bergmann
2016-07-19 17:59 ` Shaohua Li
0 siblings, 1 reply; 2+ messages in thread
From: Arnd Bergmann @ 2016-06-17 15:33 UTC (permalink / raw)
To: Shaohua Li
Cc: y2038, Arnd Bergmann, NeilBrown, Guoqing Jiang, Goldwyn Rodrigues,
Jens Axboe, Hannes Reinecke, linux-raid, linux-kernel
The md code stores the exact time of the last error in the
last_read_error variable using a timespec structure. It only
ever uses the seconds portion of that though, so we can
use a scalar for it.
There won't be an overflow in 2038 here, because it already
used monotonic time and 32-bit is enough for that, but I've
decided to use time64_t for consistency in the conversion.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
drivers/md/md.c | 3 +--
drivers/md/md.h | 2 +-
drivers/md/raid10.c | 11 +++++------
3 files changed, 7 insertions(+), 9 deletions(-)
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 3745b9a7a2d7..ad512ad4610f 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -3179,8 +3179,7 @@ int md_rdev_init(struct md_rdev *rdev)
rdev->data_offset = 0;
rdev->new_data_offset = 0;
rdev->sb_events = 0;
- rdev->last_read_error.tv_sec = 0;
- rdev->last_read_error.tv_nsec = 0;
+ rdev->last_read_error = 0;
rdev->sb_loaded = 0;
rdev->bb_page = NULL;
atomic_set(&rdev->nr_pending, 0);
diff --git a/drivers/md/md.h b/drivers/md/md.h
index 3c3412d85e42..20c667579ede 100644
--- a/drivers/md/md.h
+++ b/drivers/md/md.h
@@ -99,7 +99,7 @@ struct md_rdev {
atomic_t read_errors; /* number of consecutive read errors that
* we have tried to ignore.
*/
- struct timespec last_read_error; /* monotonic time since our
+ time64_t last_read_error; /* monotonic time since our
* last read error
*/
atomic_t corrected_errors; /* number of corrected read errors,
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index 41191e04d565..f8cdd08d0a40 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -2170,21 +2170,20 @@ static void recovery_request_write(struct mddev *mddev, struct r10bio *r10_bio)
*/
static void check_decay_read_errors(struct mddev *mddev, struct md_rdev *rdev)
{
- struct timespec cur_time_mon;
+ long cur_time_mon;
unsigned long hours_since_last;
unsigned int read_errors = atomic_read(&rdev->read_errors);
- ktime_get_ts(&cur_time_mon);
+ cur_time_mon = ktime_get_seconds();
- if (rdev->last_read_error.tv_sec == 0 &&
- rdev->last_read_error.tv_nsec == 0) {
+ if (rdev->last_read_error == 0) {
/* first time we've seen a read error */
rdev->last_read_error = cur_time_mon;
return;
}
- hours_since_last = (cur_time_mon.tv_sec -
- rdev->last_read_error.tv_sec) / 3600;
+ hours_since_last = (long)(cur_time_mon -
+ rdev->last_read_error) / 3600;
rdev->last_read_error = cur_time_mon;
--
2.9.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] md: use seconds granularity for error logging
2016-06-17 15:33 [PATCH] md: use seconds granularity for error logging Arnd Bergmann
@ 2016-07-19 17:59 ` Shaohua Li
0 siblings, 0 replies; 2+ messages in thread
From: Shaohua Li @ 2016-07-19 17:59 UTC (permalink / raw)
To: Arnd Bergmann
Cc: linux-raid, Hannes Reinecke, y2038, NeilBrown, linux-kernel,
Jens Axboe, Guoqing Jiang, Goldwyn Rodrigues
On Fri, Jun 17, 2016 at 05:33:10PM +0200, Arnd Bergmann wrote:
> The md code stores the exact time of the last error in the
> last_read_error variable using a timespec structure. It only
> ever uses the seconds portion of that though, so we can
> use a scalar for it.
>
> There won't be an overflow in 2038 here, because it already
> used monotonic time and 32-bit is enough for that, but I've
> decided to use time64_t for consistency in the conversion.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Applied, thanks!
_______________________________________________
Y2038 mailing list
Y2038@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/y2038
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-07-19 17:59 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-06-17 15:33 [PATCH] md: use seconds granularity for error logging Arnd Bergmann
2016-07-19 17:59 ` Shaohua Li
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).