create_request_message() computes the maximum length of a message,
but uses the wrong type for the time stamp: sizeof(struct timespec)
may be 8 or 16 depending on the architecture, while sizeof(struct
ceph_timespec) is always 8, and that is what gets put into the
message.
Found while auditing the uses of timespec for y2038 problems.
Signed-off-by: Arnd Bergmann <arnd(a)arndb.de>
Fixes: b8e69066d8af ("ceph: include time stamp in every MDS request")
---
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
index 51cb02da75d9..fe2c982764e7 100644
--- a/fs/ceph/mds_client.c
+++ b/fs/ceph/mds_client.c
@@ -1935,7 +1935,7 @@ static struct ceph_msg *create_request_message(struct ceph_mds_client *mdsc,
len = sizeof(*head) +
pathlen1 + pathlen2 + 2*(1 + sizeof(u32) + sizeof(u64)) +
- sizeof(struct timespec);
+ sizeof(struct ceph_timespec);
/* calculate (max) length for cap releases */
len += sizeof(struct ceph_mds_request_release) *
WILC_Time is not used and also time_t is not y2038 safe, therefore remove it.
Also remove comment refering to it.
Signed-off-by: Ksenija Stanojevic <ksenija.stanojevic(a)gmail.com>
---
drivers/staging/wilc1000/wilc_platform.h | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/staging/wilc1000/wilc_platform.h b/drivers/staging/wilc1000/wilc_platform.h
index 1e56973..83f309d 100644
--- a/drivers/staging/wilc1000/wilc_platform.h
+++ b/drivers/staging/wilc1000/wilc_platform.h
@@ -33,8 +33,6 @@ typedef struct __MessageQueue_struct {
-/*Time represented in 64 bit format*/
-typedef time_t WILC_Time;
/*******************************************************************
--
1.9.1
First of all, sorry for the overly long series that this turned into.
I'm currently doing a survey of all code using time_t/timeval/timespec
to get an idea of what work needs to be done where, in particular in
terms of user interface changes.
Lustre is by far the most pervasive user of time types and functions,
and I could not even find my way through the code to see what needs
to be done other than actually doing that work.
On most other subsystems, we try to use montonic times where possible
for in-kernel uses. I did not do that here but kept using wall-clock
times, in order to leave the debug output and procfs files untouched.
A follow-up series could convert a lot of the ktime_get_real_*() to
ktime_get_*() to change that if we don't care about the format.
There are a couple of things that I left unchanged:
- Socket timestamps in drivers/staging/lustre/lnet/lnet/lib-socket.c
need to wait for the socket API to be changed first
- inode timestamps need to be changed in VFS, which is a larger work
- The conrpc selftest has a user interface based on timeval that is
hard to change.
All patches are based on staging-testing and built-tested on 32-bit
arm and x86 as well as 64-bit arm.
Arnd Bergmann (37):
staging/lustre: use jiffies for lp_last_query times
staging/lustre: use 64-bit inode timestamps internally
staging/lustre: obd: remove unused data structures
staging/lustre: tracefile: use 64-bit seconds
staging/lustre: use 64-bit timestamps in procfs output
staging/lustre: use time64_t for l_last_activity
staging/lustre: use ktime_t for calculating elapsed time
staging/lustre: change rq_at_index type
staging/lustre: avoid unnecessary timeval conversion
staging/lustre: use 64-bit time LNetCtl()
staging/lustre: use 'long' return type for cfs_duration_sec()
staging/lustre: use jiffies_to_timeval() instead of cfs_duration_usec
staging/lustre: use 64-bit ibn_incarnation computation
staging/lustre: use 64-bit times for lnet_shuffle_seed
staging/lustre: use 64-bit computation in s2dhms()
staging/lustre: use 64-bit timestamps for selftest
staging/lustre: use 64-bit time for pl_recalc
staging/lustre: use 64-bit time for obd eviction
staging/lustre: use 64-bit time for procfs output
staging/lustre: use 64-bit time for adaptive timeout
staging/lustre: use 64-bit llite procfs timestamps
staging/lustre: use 64-bit times for ksnd_connd
staging/lustre: use 64-bit time for ni_last_alive
staging/lustre: use 64-bit time for selftest
staging/lustre: partially use time64_t for capa expiry
staging/lustre: use 64-bit times in ptlrpc_enc_page_pool
staging/lustre: use 64-bit times in debug print
staging/lustre: use 64-bit times in another debug print
staging/lustre: use 64-bit timestamps for mdc
staging/lustre: use 64-bit times for ptlrpc sec expiry
staging/lustre: use 64-bit times for ptlrpc_sec
staging/lustre: use 64-bit times for exp_last_request_time
staging/lustre: use 64-bit times for request times
staging/lustre: remove a bit of dead code
staging/lustre: remove wrappers for timer functions
staging/lustre: remove unused time handling functions
staging/lustre: remove CFS_TIME_T definition
.../lustre/include/linux/libcfs/libcfs_debug.h | 4 +-
.../lustre/include/linux/libcfs/libcfs_prim.h | 13 --
.../lustre/include/linux/libcfs/libcfs_time.h | 49 --------
.../lustre/include/linux/libcfs/linux/linux-time.h | 35 +-----
.../staging/lustre/include/linux/lnet/lib-lnet.h | 2 +-
.../staging/lustre/include/linux/lnet/lib-types.h | 2 +-
.../staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c | 6 +-
.../staging/lustre/lnet/klnds/socklnd/socklnd.c | 2 +-
.../staging/lustre/lnet/klnds/socklnd/socklnd.h | 6 +-
.../staging/lustre/lnet/klnds/socklnd/socklnd_cb.c | 8 +-
drivers/staging/lustre/lnet/lnet/api-ni.c | 6 +-
drivers/staging/lustre/lnet/lnet/config.c | 2 +-
drivers/staging/lustre/lnet/lnet/lib-eq.c | 9 +-
drivers/staging/lustre/lnet/lnet/lib-move.c | 4 +-
drivers/staging/lustre/lnet/lnet/router.c | 10 +-
drivers/staging/lustre/lnet/lnet/router_proc.c | 2 +-
drivers/staging/lustre/lnet/selftest/conctl.c | 2 +-
drivers/staging/lustre/lnet/selftest/conrpc.c | 10 +-
drivers/staging/lustre/lnet/selftest/console.c | 2 +-
drivers/staging/lustre/lnet/selftest/console.h | 2 +-
drivers/staging/lustre/lnet/selftest/framework.c | 5 +-
drivers/staging/lustre/lnet/selftest/ping_test.c | 12 +-
drivers/staging/lustre/lnet/selftest/rpc.c | 9 +-
drivers/staging/lustre/lnet/selftest/selftest.h | 2 +-
drivers/staging/lustre/lnet/selftest/timer.c | 14 +--
drivers/staging/lustre/lnet/selftest/timer.h | 2 +-
drivers/staging/lustre/lustre/include/cl_object.h | 6 +-
.../staging/lustre/lustre/include/lprocfs_status.h | 6 +-
.../lustre/lustre/include/lustre/lustre_idl.h | 1 +
.../staging/lustre/lustre/include/lustre_capa.h | 16 ++-
drivers/staging/lustre/lustre/include/lustre_dlm.h | 6 +-
.../staging/lustre/lustre/include/lustre_export.h | 7 +-
.../staging/lustre/lustre/include/lustre_import.h | 14 +--
drivers/staging/lustre/lustre/include/lustre_net.h | 24 ++--
drivers/staging/lustre/lustre/include/lustre_sec.h | 2 +-
drivers/staging/lustre/lustre/include/obd.h | 97 +--------------
drivers/staging/lustre/lustre/include/obd_class.h | 2 +-
drivers/staging/lustre/lustre/ldlm/ldlm_lock.c | 2 +-
drivers/staging/lustre/lustre/ldlm/ldlm_pool.c | 30 ++---
drivers/staging/lustre/lustre/ldlm/ldlm_request.c | 29 ++---
drivers/staging/lustre/lustre/libcfs/debug.c | 4 +-
.../lustre/lustre/libcfs/linux/linux-prim.c | 70 -----------
.../lustre/lustre/libcfs/linux/linux-tracefile.c | 8 +-
drivers/staging/lustre/lustre/libcfs/module.c | 3 -
drivers/staging/lustre/lustre/llite/file.c | 2 +-
.../staging/lustre/lustre/llite/llite_internal.h | 2 +-
drivers/staging/lustre/lustre/llite/llite_lib.c | 8 +-
drivers/staging/lustre/lustre/llite/lproc_llite.c | 24 ++--
drivers/staging/lustre/lustre/llite/super25.c | 6 +-
drivers/staging/lustre/lustre/llite/vvp_io.c | 4 +-
drivers/staging/lustre/lustre/llite/vvp_object.c | 12 +-
drivers/staging/lustre/lustre/lov/lov_obd.c | 2 +-
drivers/staging/lustre/lustre/mdc/mdc_locks.c | 2 +-
drivers/staging/lustre/lustre/mdc/mdc_reint.c | 2 +-
drivers/staging/lustre/lustre/mdc/mdc_request.c | 2 +-
drivers/staging/lustre/lustre/obdclass/genops.c | 6 +-
drivers/staging/lustre/lustre/obdclass/llog.c | 2 +-
.../lustre/lustre/obdclass/lprocfs_status.c | 27 ++---
.../lustre/lustre/obdclass/lustre_handles.c | 6 +-
.../staging/lustre/lustre/obdclass/obd_config.c | 13 +-
.../staging/lustre/lustre/obdecho/echo_client.c | 4 +-
drivers/staging/lustre/lustre/osc/lproc_osc.c | 16 +--
drivers/staging/lustre/lustre/osc/osc_io.c | 6 +-
drivers/staging/lustre/lustre/osc/osc_request.c | 4 +-
drivers/staging/lustre/lustre/ptlrpc/client.c | 48 ++++----
drivers/staging/lustre/lustre/ptlrpc/events.c | 8 +-
drivers/staging/lustre/lustre/ptlrpc/import.c | 14 +--
.../staging/lustre/lustre/ptlrpc/lproc_ptlrpc.c | 16 +--
drivers/staging/lustre/lustre/ptlrpc/niobuf.c | 10 +-
.../staging/lustre/lustre/ptlrpc/pack_generic.c | 6 +-
drivers/staging/lustre/lustre/ptlrpc/pinger.c | 29 +++--
drivers/staging/lustre/lustre/ptlrpc/sec.c | 28 ++---
drivers/staging/lustre/lustre/ptlrpc/sec_bulk.c | 29 +++--
drivers/staging/lustre/lustre/ptlrpc/sec_config.c | 2 +-
drivers/staging/lustre/lustre/ptlrpc/sec_gc.c | 6 +-
drivers/staging/lustre/lustre/ptlrpc/sec_lproc.c | 4 +-
drivers/staging/lustre/lustre/ptlrpc/service.c | 135 +++++++++++----------
77 files changed, 380 insertions(+), 652 deletions(-)
--
2.1.0.rc2
Dear customer,
Your payment has been processed and your credit card has been charged.
Please print your e-ticket attached to this email.
Order details and e-ticket information:
FLIGHT NUMBER - ET599232
DATE & TIME - Sep 30 2015, 21:50
DEPARTING - Long Beach
TOTAL PRICE - $ 350.00
Thank you for flying with America Airlines.