All of lore.kernel.org
 help / color / mirror / Atom feed
From: Deepa Dinamani <deepa.kernel@gmail.com>
To: viro@zeniv.linux.org.uk, tglx@linutronix.de
Cc: arnd@arndb.de, linux-kernel@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, y2038@lists.linaro.org
Subject: [PATCH 1/6] fs: add timespec64_truncate()
Date: Fri, 11 May 2018 21:59:16 -0700	[thread overview]
Message-ID: <20180512045921.18311-2-deepa.kernel@gmail.com> (raw)
In-Reply-To: <20180512045921.18311-1-deepa.kernel@gmail.com>

As vfs moves to using struct timespec64 to represent times,
update the argument to timespec_truncate() to use
struct timespec64. Also change the name of the function.
The rest of the implementation logic is the same.

Move this to fs/inode.c instead of kernel/time/time.c as all the
users of this api are filesystems.

Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
Cc: <viro@zeniv.linux.org.uk>
---
 fs/inode.c         | 24 ++++++++++++++++++++++++
 include/linux/fs.h |  1 +
 2 files changed, 25 insertions(+)

diff --git a/fs/inode.c b/fs/inode.c
index 13ceb98c3bd3..93af998ee290 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -2110,6 +2110,30 @@ void inode_nohighmem(struct inode *inode)
 }
 EXPORT_SYMBOL(inode_nohighmem);
 
+/**
+ * timespec64_trunc - Truncate timespec64 to a granularity
+ * @t: Timespec64
+ * @gran: Granularity in ns.
+ *
+ * Truncate a timespec64 to a granularity. Always rounds down. gran must
+ * not be 0 nor greater than a second (NSEC_PER_SEC, or 10^9 ns).
+ */
+struct timespec64 timespec64_trunc(struct timespec64 t, unsigned gran)
+{
+	/* Avoid division in the common cases 1 ns and 1 s. */
+	if (gran == 1) {
+		/* nothing */
+	} else if (gran == NSEC_PER_SEC) {
+		t.tv_nsec = 0;
+	} else if (gran > 1 && gran < NSEC_PER_SEC) {
+		t.tv_nsec -= t.tv_nsec % gran;
+	} else {
+		WARN(1, "illegal file time granularity: %u", gran);
+	}
+	return t;
+}
+EXPORT_SYMBOL(timespec64_trunc);
+
 /**
  * current_time - Return FS time
  * @inode: inode.
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 0eedf745667b..381c77a37404 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1477,6 +1477,7 @@ static inline void i_gid_write(struct inode *inode, gid_t gid)
 	inode->i_gid = make_kgid(inode->i_sb->s_user_ns, gid);
 }
 
+extern struct timespec64 timespec64_trunc(struct timespec64 t, unsigned gran);
 extern struct timespec current_time(struct inode *inode);
 
 /*
-- 
2.17.0

  reply	other threads:[~2018-05-12  5:01 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-12  4:59 [PATCH 0/6] Transition vfs to 64-bit timestamps Deepa Dinamani
2018-05-12  4:59 ` Deepa Dinamani [this message]
2018-05-12  4:59 ` [PATCH 2/6] lustre: Use long long type to print inode time Deepa Dinamani
2018-05-12  4:59 ` [PATCH 3/6] ceph: make inode time prints to be long long Deepa Dinamani
2018-05-12  4:59 ` [PATCH 4/6] fs: nfs: get rid of memcpys for inode times Deepa Dinamani
2018-05-12  4:59 ` [PATCH 5/6] udf: Simplify calls to udf_disk_stamp_to_time Deepa Dinamani
2018-05-14 13:57   ` Jan Kara
2018-05-15 17:48     ` Deepa Dinamani
2018-05-12  4:59 ` [PATCH 6/6] vfs: change inode times to use struct timespec64 Deepa Dinamani
2018-05-12  6:44   ` Kees Cook
2018-05-12  6:44     ` Kees Cook
2018-05-14  4:05     ` Deepa Dinamani
2018-05-14  4:05       ` Deepa Dinamani
2018-05-14 16:30       ` Kees Cook
2018-05-14 16:30         ` Kees Cook
2018-05-14 17:25         ` Deepa Dinamani
2018-05-14 17:25           ` Deepa Dinamani
2018-05-14 17:53           ` Kees Cook
2018-05-14 17:53             ` Kees Cook
2018-05-14 18:23             ` Deepa Dinamani
2018-05-14 18:23               ` Deepa Dinamani
2018-05-14 18:28               ` Kees Cook
2018-05-14 18:28                 ` Kees Cook
2018-05-17  1:13               ` Arnd Bergmann
2018-05-17  1:13                 ` Arnd Bergmann

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=20180512045921.18311-2-deepa.kernel@gmail.com \
    --to=deepa.kernel@gmail.com \
    --cc=arnd@arndb.de \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=viro@zeniv.linux.org.uk \
    --cc=y2038@lists.linaro.org \
    /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.