From patchwork Thu Jan 7 05:36:09 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Deepa Dinamani X-Patchwork-Id: 7973501 Return-Path: X-Original-To: patchwork-linux-fsdevel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id DD9759F1CC for ; Thu, 7 Jan 2016 05:38:21 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id A356C20149 for ; Thu, 7 Jan 2016 05:38:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 38B952012D for ; Thu, 7 Jan 2016 05:38:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752758AbcAGFhI (ORCPT ); Thu, 7 Jan 2016 00:37:08 -0500 Received: from mail-pa0-f68.google.com ([209.85.220.68]:34071 "EHLO mail-pa0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751998AbcAGFhE (ORCPT ); Thu, 7 Jan 2016 00:37:04 -0500 Received: by mail-pa0-f68.google.com with SMTP id yy13so19281992pab.1; Wed, 06 Jan 2016 21:37:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:in-reply-to:references; bh=53EbvEKSQh8W76lXsQxsV393HjLFd4BEhSgnnqVL1vg=; b=IOG/n6+nHOqZxbCEST7PpczAmUjrg7RKICfilwboQLGOpicQc0/gTkPAcMHojgX1ab oUbRw/ULYUHgrGWbihBhfNJkKnulZwaUdqG/Hbm6mjaIlFaO1UHMWkYoQUwbdtWhXRCl I0JsP4yeUeC1bCz3CLJhQjhsRPIZEPQQdIoYemcvbquxGEs6dMR8eJbJ2NKc5TOb4m2W 7UsqIXtYcnHzZuZwFHCxkvdpO9TnKr1bD/nO2eNcprKncIJmuZOBjIVArK0vGWvNcgUB ghSl6BhRYeB8xRGaQv6ltvJL7ZBOAEVTSZqKF2oZkDzO5mAUJvESHKD6jRCjlOe7kxHj KiWQ== X-Received: by 10.66.55.66 with SMTP id q2mr81453925pap.120.1452145023678; Wed, 06 Jan 2016 21:37:03 -0800 (PST) Received: from localhost.localdomain ([106.51.24.71]) by smtp.gmail.com with ESMTPSA id kk5sm131390736pab.16.2016.01.06.21.37.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 06 Jan 2016 21:37:03 -0800 (PST) From: Deepa Dinamani To: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, y2038@lists.linaro.org Subject: [RFC 12/15] vfs: remove inode_timespec and timespec references Date: Wed, 6 Jan 2016 21:36:09 -0800 Message-Id: <1452144972-15802-13-git-send-email-deepa.kernel@gmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1452144972-15802-1-git-send-email-deepa.kernel@gmail.com> References: <1452144972-15802-1-git-send-email-deepa.kernel@gmail.com> Sender: linux-fsdevel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org X-Spam-Status: No, score=-3.5 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RCVD_IN_SBL_CSS, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Substitute inode_timespec aliases with timespec64. Since CONFIG_FS_USES_64BIT_TIME is enabled, internally all inode_timespec references are using timespec64 already. Signed-off-by: Deepa Dinamani --- fs/attr.c | 2 +- fs/bad_inode.c | 2 +- fs/binfmt_misc.c | 2 +- fs/inode.c | 36 ++++++++++++++++++------------------ fs/libfs.c | 12 ++++++------ fs/locks.c | 2 +- fs/nsfs.c | 2 +- fs/pipe.c | 2 +- fs/utimes.c | 4 ++-- include/linux/fs.h | 24 +++++++++--------------- include/linux/stat.h | 6 +++--- 11 files changed, 44 insertions(+), 50 deletions(-) diff --git a/fs/attr.c b/fs/attr.c index 4156239..ec5e9ad 100644 --- a/fs/attr.c +++ b/fs/attr.c @@ -192,7 +192,7 @@ int notify_change(struct dentry * dentry, struct iattr * attr, struct inode **de struct inode *inode = dentry->d_inode; umode_t mode = inode->i_mode; int error; - struct inode_timespec now; + struct timespec64 now; unsigned int ia_valid = attr->ia_valid; WARN_ON_ONCE(!mutex_is_locked(&inode->i_mutex)); diff --git a/fs/bad_inode.c b/fs/bad_inode.c index 3c51e22..2a8daef 100644 --- a/fs/bad_inode.c +++ b/fs/bad_inode.c @@ -169,7 +169,7 @@ static const struct inode_operations bad_inode_ops = void make_bad_inode(struct inode *inode) { - struct inode_timespec now; + struct timespec64 now; remove_inode_hash(inode); diff --git a/fs/binfmt_misc.c b/fs/binfmt_misc.c index 4fd4437..c58ecb7 100644 --- a/fs/binfmt_misc.c +++ b/fs/binfmt_misc.c @@ -562,7 +562,7 @@ static void entry_status(Node *e, char *page) static struct inode *bm_get_inode(struct super_block *sb, int mode) { struct inode *inode = new_inode(sb); - struct inode_timespec now; + struct timespec64 now; if (inode) { inode->i_ino = get_next_ino(); diff --git a/fs/inode.c b/fs/inode.c index d3d64dc..86218f6 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -1532,12 +1532,12 @@ EXPORT_SYMBOL(bmap); * passed since the last atime update. */ static int relatime_need_update(struct vfsmount *mnt, struct inode *inode, - struct inode_timespec now) + struct timespec64 now) { - struct inode_timespec ctime; - struct inode_timespec mtime; - struct inode_timespec atime; + struct timespec64 ctime; + struct timespec64 mtime; + struct timespec64 atime; if (!(mnt->mnt_flags & MNT_RELATIME)) return 1; @@ -1549,12 +1549,12 @@ static int relatime_need_update(struct vfsmount *mnt, struct inode *inode, /* * Is mtime younger than atime? If yes, update atime: */ - if (inode_timespec_compare(&mtime, &atime) >= 0) + if (timespec64_compare(&mtime, &atime) >= 0) return 1; /* * Is ctime younger than atime? If yes, update atime: */ - if (inode_timespec_compare(&ctime, &atime) >= 0) + if (timespec64_compare(&ctime, &atime) >= 0) return 1; /* @@ -1569,7 +1569,7 @@ static int relatime_need_update(struct vfsmount *mnt, struct inode *inode, return 0; } -int generic_update_time(struct inode *inode, struct inode_timespec *time, +int generic_update_time(struct inode *inode, struct timespec64 *time, int flags) { int iflags = I_DIRTY_TIME; @@ -1594,10 +1594,10 @@ EXPORT_SYMBOL(generic_update_time); * This does the actual work of updating an inodes time or version. Must have * had called mnt_want_write() before calling this. */ -static int update_time(struct inode *inode, struct inode_timespec *time, +static int update_time(struct inode *inode, struct timespec64 *time, int flags) { - int (*update_time)(struct inode *, struct inode_timespec *, int); + int (*update_time)(struct inode *, struct timespec64 *, int); update_time = inode->i_op->update_time ? inode->i_op->update_time : generic_update_time; @@ -1617,8 +1617,8 @@ static int update_time(struct inode *inode, struct inode_timespec *time, bool atime_needs_update(const struct path *path, struct inode *inode) { struct vfsmount *mnt = path->mnt; - struct inode_timespec now; - struct inode_timespec atime; + struct timespec64 now; + struct timespec64 atime; if (inode->i_flags & S_NOATIME) return false; @@ -1637,7 +1637,7 @@ bool atime_needs_update(const struct path *path, struct inode *inode) return false; atime = VFS_INODE_GET_XTIME(i_atime, inode); - if (inode_timespec_equal(&atime, &now)) + if (timespec64_equal(&atime, &now)) return false; return true; @@ -1647,7 +1647,7 @@ void touch_atime(const struct path *path) { struct vfsmount *mnt = path->mnt; struct inode *inode = d_inode(path->dentry); - struct inode_timespec now; + struct timespec64 now; if (!atime_needs_update(path, inode)) return; @@ -1782,9 +1782,9 @@ EXPORT_SYMBOL(file_remove_privs); int file_update_time(struct file *file) { struct inode *inode = file_inode(file); - struct inode_timespec now; - struct inode_timespec mtime; - struct inode_timespec ctime; + struct timespec64 now; + struct timespec64 mtime; + struct timespec64 ctime; int sync_it = 0; int ret; @@ -1798,10 +1798,10 @@ int file_update_time(struct file *file) mtime = VFS_INODE_GET_XTIME(i_mtime, inode); ctime = VFS_INODE_GET_XTIME(i_ctime, inode); - if (!inode_timespec_equal(&mtime, &now)) + if (!timespec64_equal(&mtime, &now)) sync_it = S_MTIME; - if (!inode_timespec_equal(&ctime, &now)) + if (!timespec64_equal(&ctime, &now)) sync_it |= S_CTIME; if (IS_I_VERSION(inode)) diff --git a/fs/libfs.c b/fs/libfs.c index 5a0c7c2..ffa9e65 100644 --- a/fs/libfs.c +++ b/fs/libfs.c @@ -216,7 +216,7 @@ struct dentry *mount_pseudo(struct file_system_type *fs_type, char *name, struct dentry *dentry; struct inode *root; struct qstr d_name = QSTR_INIT(name, strlen(name)); - struct inode_timespec now; + struct timespec64 now; s = sget(fs_type, NULL, set_anon_super, MS_NOUSER, NULL); if (IS_ERR(s)) @@ -274,7 +274,7 @@ EXPORT_SYMBOL(simple_open); int simple_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry) { struct inode *inode = d_inode(old_dentry); - struct inode_timespec now = current_fs_time(inode->i_sb); + struct timespec64 now = current_fs_time(inode->i_sb); VFS_INODE_SET_XTIME(i_ctime, inode, now); VFS_INODE_SET_XTIME(i_mtime, dir, now); @@ -311,7 +311,7 @@ EXPORT_SYMBOL(simple_empty); int simple_unlink(struct inode *dir, struct dentry *dentry) { struct inode *inode = d_inode(dentry); - struct inode_timespec now = current_fs_time(inode->i_sb); + struct timespec64 now = current_fs_time(inode->i_sb); VFS_INODE_SET_XTIME(i_ctime, inode, now); VFS_INODE_SET_XTIME(i_mtime, dir, now); @@ -339,7 +339,7 @@ int simple_rename(struct inode *old_dir, struct dentry *old_dentry, { struct inode *inode = d_inode(old_dentry); int they_are_dirs = d_is_dir(old_dentry); - struct inode_timespec now; + struct timespec64 now; if (!simple_empty(new_dentry)) return -ENOTEMPTY; @@ -495,7 +495,7 @@ int simple_fill_super(struct super_block *s, unsigned long magic, struct inode *inode; struct dentry *root; struct dentry *dentry; - struct inode_timespec now; + struct timespec64 now; int i; s->s_blocksize = PAGE_CACHE_SIZE; @@ -1080,7 +1080,7 @@ struct inode *alloc_anon_inode(struct super_block *s) .set_page_dirty = anon_set_page_dirty, }; struct inode *inode = new_inode_pseudo(s); - struct inode_timespec now; + struct timespec64 now; if (!inode) return ERR_PTR(-ENOMEM); diff --git a/fs/locks.c b/fs/locks.c index 2b818eb..ccf9c23 100644 --- a/fs/locks.c +++ b/fs/locks.c @@ -1491,7 +1491,7 @@ EXPORT_SYMBOL(__break_lease); * exclusive leases. The justification is that if someone has an * exclusive lease, then they could be modifying it. */ -void lease_get_mtime(struct inode *inode, struct inode_timespec *time) +void lease_get_mtime(struct inode *inode, struct timespec64 *time) { bool has_lease = false; struct file_lock_context *ctx; diff --git a/fs/nsfs.c b/fs/nsfs.c index a079fc9..e9012b5 100644 --- a/fs/nsfs.c +++ b/fs/nsfs.c @@ -51,7 +51,7 @@ void *ns_get_path(struct path *path, struct task_struct *task, struct qstr qname = { .name = "", }; struct dentry *dentry; struct inode *inode; - struct inode_timespec now; + struct timespec64 now; struct ns_common *ns; unsigned long d; diff --git a/fs/pipe.c b/fs/pipe.c index 5d414a3..3bcb870 100644 --- a/fs/pipe.c +++ b/fs/pipe.c @@ -637,7 +637,7 @@ static struct inode * get_pipe_inode(void) { struct inode *inode = new_inode_pseudo(pipe_mnt->mnt_sb); struct pipe_inode_info *pipe; - struct inode_timespec now; + struct timespec64 now; if (!inode) goto fail_inode; diff --git a/fs/utimes.c b/fs/utimes.c index c23c8e6..6c0d208 100644 --- a/fs/utimes.c +++ b/fs/utimes.c @@ -48,7 +48,7 @@ static bool nsec_valid(long nsec) return nsec >= 0 && nsec <= 999999999; } -static int utimes_common(struct path *path, struct inode_timespec *times) +static int utimes_common(struct path *path, struct timespec64 *times) { int error; struct iattr newattrs; @@ -135,7 +135,7 @@ out: * Else, update from *times, must be owner or super user. */ long do_utimes(int dfd, const char __user *filename, - struct inode_timespec *times, + struct timespec64 *times, int flags) { int error = -EINVAL; diff --git a/include/linux/fs.h b/include/linux/fs.h index 5112bc2..4a754a2 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -249,9 +249,9 @@ struct iattr { kuid_t ia_uid; kgid_t ia_gid; loff_t ia_size; - struct inode_timespec ia_atime; - struct inode_timespec ia_mtime; - struct inode_timespec ia_ctime; + struct timespec64 ia_atime; + struct timespec64 ia_mtime; + struct timespec64 ia_ctime; /* * Not an attribute, but an auxiliary info for filesystems wanting to @@ -616,18 +616,12 @@ struct inode { }; dev_t i_rdev; loff_t i_size; -#ifdef CONFIG_FS_USES_64BIT_TIME time64_t i_atime_sec; time64_t i_mtime_sec; time64_t i_ctime_sec; s32 i_atime_nsec; s32 i_mtime_nsec; s32 i_ctime_nsec; -#else - struct timespec i_atime; - struct timespec i_mtime; - struct timespec i_ctime; -#endif spinlock_t i_lock; /* i_blocks, i_bytes, maybe i_size */ unsigned short i_bytes; unsigned int i_blkbits; @@ -727,7 +721,7 @@ struct inode { #define VFS_INODE_SWAP_XTIME(xtime, inode1, inode2) \ do { \ - struct inode_timespec __ts = \ + struct timespec64 __ts = \ VFS_INODE_GET_XTIME(xtime, inode1); \ VFS_INODE_SET_XTIME(xtime, inode1, \ VFS_INODE_GET_XTIME(xtime, inode2)); \ @@ -1448,11 +1442,11 @@ struct super_block { #endif -extern int is_fs_timestamp_bad(struct inode_timespec ts); -extern struct inode_timespec current_fs_time(struct super_block *sb); -extern struct inode_timespec current_fs_time_sec(struct super_block *sb); -extern struct inode_timespec -fs_time_trunc(struct inode_timespec ts, struct super_block *sb); +extern int is_fs_timestamp_bad(struct timespec64 ts); +extern struct timespec64 current_fs_time(struct super_block *sb); +extern struct timespec64 current_fs_time_sec(struct super_block *sb); +extern struct timespec64 +fs_time_trunc(struct timespec64 ts, struct super_block *sb); /* * Snapshotting support. diff --git a/include/linux/stat.h b/include/linux/stat.h index 559983f..5561337 100644 --- a/include/linux/stat.h +++ b/include/linux/stat.h @@ -27,9 +27,9 @@ struct kstat { kgid_t gid; dev_t rdev; loff_t size; - struct inode_timespec atime; - struct inode_timespec mtime; - struct inode_timespec ctime; + struct timespec64 atime; + struct timespec64 mtime; + struct timespec64 ctime; unsigned long blksize; unsigned long long blocks; };