All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ian Kent <raven@themaw.net>
To: Yu Ning <ning.yu@ubuntu.com>
Cc: autofs mailing list <autofs@vger.kernel.org>
Subject: [PATCH v5 1/8] autofs-5.1.1 - define monotonic clock helper functions
Date: Fri, 18 Sep 2015 17:34:27 +0800	[thread overview]
Message-ID: <20150918093426.29311.149.stgit@pluto.fritz.box> (raw)
In-Reply-To: <20150918092704.29311.84246.stgit@pluto.fritz.box>

From: Yu Ning <ning.yu@ubuntu.com>

The time returned by gettimeofday() is affected by discontinuous jumps
in the system time, so it causes an issue that autofs may not auto
unmount a mount point if system time is manually changed by the system
administrator.

To fix the issue we need to convert to using a monotonic clock source
instead of the clock source used by gettimeofday().

Start by defining two helper functions that will be used by later
patches.

Signed-off-by: Yu Ning <ning.yu@ubuntu.com>
---
 CHANGELOG           |    1 +
 include/automount.h |   10 ++++++++++
 include/rpc_subs.h  |    1 +
 lib/rpc_subs.c      |   11 +++++++++++
 4 files changed, 23 insertions(+)

diff --git a/CHANGELOG b/CHANGELOG
index f072bd4..6eb4daf 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -18,6 +18,7 @@
 - fix handling of ldap bind/unbind operations.
 - fix error handling of is_mounted().
 - Add a mode option for master map entries.
+- define monotonic clock helper functions.
 
 21/04/2015 autofs-5.1.1
 =======================
diff --git a/include/automount.h b/include/automount.h
index 15cd436..34fe91d 100644
--- a/include/automount.h
+++ b/include/automount.h
@@ -566,6 +566,16 @@ do { \
 		fatal(_m_unlock); \
 } while(0)
 
+static inline time_t monotonic_time(time_t *t)
+{
+	struct timespec ts;
+
+	clock_gettime(CLOCK_MONOTONIC, &ts);
+	if (t)
+		*t = (time_t) ts.tv_sec;
+	return (time_t) ts.tv_sec;
+}
+
 /* Expire alarm handling routines */
 int alarm_start_handler(void);
 int alarm_add(struct autofs_point *ap, time_t seconds);
diff --git a/include/rpc_subs.h b/include/rpc_subs.h
index b6d59f9..e329224 100644
--- a/include/rpc_subs.h
+++ b/include/rpc_subs.h
@@ -71,6 +71,7 @@ int rpc_portmap_getport(struct conn_info *, struct pmap *, unsigned short *);
 int rpc_ping_proto(struct conn_info *);
 int rpc_ping(const char *, long, long, unsigned int);
 double elapsed(struct timeval, struct timeval);
+double monotonic_elapsed(struct timespec, struct timespec);
 int rpc_time(const char *, unsigned int, unsigned int, long, long, unsigned int, double *);
 const char *get_addr_string(struct sockaddr *, char *, socklen_t);
 
diff --git a/lib/rpc_subs.c b/lib/rpc_subs.c
index 846c40e..14e5f94 100644
--- a/lib/rpc_subs.c
+++ b/lib/rpc_subs.c
@@ -1086,6 +1086,17 @@ double elapsed(struct timeval start, struct timeval end)
 	return t2-t1;
 }
 
+double monotonic_elapsed(struct timespec start, struct timespec end)
+{
+	double t1, t2;
+
+	t1 =  (double) start.tv_sec +
+		(double) (start.tv_nsec/(1000*1000*1000));
+	t2 =  (double) end.tv_sec +
+		(double) (end.tv_nsec/(1000*1000*1000));
+	return t2 - t1;
+}
+
 int rpc_time(const char *host,
 	     unsigned int ping_vers, unsigned int ping_proto,
 	     long seconds, long micros, unsigned int option, double *result)

--
To unsubscribe from this list: send the line "unsubscribe autofs" in

  reply	other threads:[~2015-09-18  9:34 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-18  9:34 [PATCH v5 0/8] Series to change autofs to using a monotonic clock Ian Kent
2015-09-18  9:34 ` Ian Kent [this message]
2015-09-18  9:34 ` [PATCH v5 2/8] autofs-5.1.1 - use monotonic clock for alarm thread condition wait Ian Kent
2015-09-18  9:34 ` [PATCH v5 3/8] autofs-5.1.1 - define pending condition init helper function Ian Kent
2015-09-18  9:34 ` [PATCH v5 4/8] autofs-5.1.1 - use monotonic clock for direct mount condition Ian Kent
2015-09-18  9:34 ` [PATCH v5 5/8] autofs-5.1.1 - use monotonic clock for indirect " Ian Kent
2015-09-18  9:35 ` [PATCH v5 6/8] autofs-5.1.1 - change remaining gettimeofday() to use clock_gettime() Ian Kent
2015-09-18  9:35 ` [PATCH v5 7/8] autofs-5.1.1 - change time() to use monotonic_clock() Ian Kent
2015-09-18 10:12   ` Ning Yu
2015-09-20  2:12     ` Ian Kent
2015-09-18  9:35 ` [PATCH v5 8/8] autofs-5.1.1 - remove unused function elapsed() Ian Kent
2015-09-21  5:25   ` Ning Yu
2015-09-21  8:45     ` Ian Kent
2015-09-18 10:18 ` [PATCH v5 0/8] Series to change autofs to using a monotonic clock Ning Yu
2015-09-20  2:15   ` Ian Kent

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150918093426.29311.149.stgit@pluto.fritz.box \
    --to=raven@themaw.net \
    --cc=autofs@vger.kernel.org \
    --cc=ning.yu@ubuntu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.