Commit bd7a9b37 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Martin Schwidefsky

s390/dasd: remove 'struct timespec' usage

getnstimeofday() and timespec are deprecated since they can
overflow on 32-bit architectures. This simply changes to the
explicitly typed timespec64 version that doesn't have that
problem.

It would be nice to also convert to monotonic timestamps
and call ktime_get_ts64() rather than ktime_get_real_ts64(),
but that would be a user-visible change.
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarStefan Haberland <sth@linux.vnet.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent b23481fb
...@@ -759,7 +759,7 @@ static void dasd_profile_end_add_data(struct dasd_profile_info *data, ...@@ -759,7 +759,7 @@ static void dasd_profile_end_add_data(struct dasd_profile_info *data,
/* in case of an overflow, reset the whole profile */ /* in case of an overflow, reset the whole profile */
if (data->dasd_io_reqs == UINT_MAX) { if (data->dasd_io_reqs == UINT_MAX) {
memset(data, 0, sizeof(*data)); memset(data, 0, sizeof(*data));
getnstimeofday(&data->starttod); ktime_get_real_ts64(&data->starttod);
} }
data->dasd_io_reqs++; data->dasd_io_reqs++;
data->dasd_io_sects += sectors; data->dasd_io_sects += sectors;
...@@ -894,7 +894,7 @@ void dasd_profile_reset(struct dasd_profile *profile) ...@@ -894,7 +894,7 @@ void dasd_profile_reset(struct dasd_profile *profile)
return; return;
} }
memset(data, 0, sizeof(*data)); memset(data, 0, sizeof(*data));
getnstimeofday(&data->starttod); ktime_get_real_ts64(&data->starttod);
spin_unlock_bh(&profile->lock); spin_unlock_bh(&profile->lock);
} }
...@@ -911,7 +911,7 @@ int dasd_profile_on(struct dasd_profile *profile) ...@@ -911,7 +911,7 @@ int dasd_profile_on(struct dasd_profile *profile)
kfree(data); kfree(data);
return 0; return 0;
} }
getnstimeofday(&data->starttod); ktime_get_real_ts64(&data->starttod);
profile->data = data; profile->data = data;
spin_unlock_bh(&profile->lock); spin_unlock_bh(&profile->lock);
return 0; return 0;
...@@ -995,8 +995,8 @@ static void dasd_stats_array(struct seq_file *m, unsigned int *array) ...@@ -995,8 +995,8 @@ static void dasd_stats_array(struct seq_file *m, unsigned int *array)
static void dasd_stats_seq_print(struct seq_file *m, static void dasd_stats_seq_print(struct seq_file *m,
struct dasd_profile_info *data) struct dasd_profile_info *data)
{ {
seq_printf(m, "start_time %ld.%09ld\n", seq_printf(m, "start_time %lld.%09ld\n",
data->starttod.tv_sec, data->starttod.tv_nsec); (s64)data->starttod.tv_sec, data->starttod.tv_nsec);
seq_printf(m, "total_requests %u\n", data->dasd_io_reqs); seq_printf(m, "total_requests %u\n", data->dasd_io_reqs);
seq_printf(m, "total_sectors %u\n", data->dasd_io_sects); seq_printf(m, "total_sectors %u\n", data->dasd_io_sects);
seq_printf(m, "total_pav %u\n", data->dasd_io_alias); seq_printf(m, "total_pav %u\n", data->dasd_io_alias);
......
...@@ -441,7 +441,7 @@ struct dasd_profile_info { ...@@ -441,7 +441,7 @@ struct dasd_profile_info {
unsigned int dasd_io_nr_req[32]; /* hist. of # of requests in chanq */ unsigned int dasd_io_nr_req[32]; /* hist. of # of requests in chanq */
/* new data */ /* new data */
struct timespec starttod; /* time of start or last reset */ struct timespec64 starttod; /* time of start or last reset */
unsigned int dasd_io_alias; /* requests using an alias */ unsigned int dasd_io_alias; /* requests using an alias */
unsigned int dasd_io_tpm; /* requests using transport mode */ unsigned int dasd_io_tpm; /* requests using transport mode */
unsigned int dasd_read_reqs; /* total number of read requests */ unsigned int dasd_read_reqs; /* total number of read requests */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment