projects/linux·commit 615e9583

Merge tag 'v6.6-vfs.ctime' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs

615e9583 · Linus Torvalds <[email protected]> · 2023-08-28 09:31:32 -07:00

Pull vfs timestamp updates from Christian Brauner:
 "This adds VFS support for multi-grain timestamps and converts tmpfs,
  xfs, ext4, and btrfs to use them. This carries acks from all relevant
  filesystems.

  The VFS always uses coarse-grained timestamps when updating the ctime
  and mtime after a change. This has the benefit of allowing filesystems
  to optimize away a lot of metadata updates, down to around 1 per
  jiffy, even when a file is under heavy writes.

  Unfortunately, this has always been an issue when we're exporting via
  NFSv3, which relies on timestamps to validate caches. A lot of changes
  can happen in a jiffy, so timestamps aren't sufficient to help the
  client decide to invalidate the cache.

  Even with NFSv4, a lot of exported filesystems don't properly support
  a change attribute and are subject to the same problems with timestamp
  granularity. Other applications have similar issues with timestamps
  (e.g., backup applications).

  If we were to always use fine-grained timestamps, that would improve
  the situation, but that becomes rather expensive, as the underlying
  filesystem would have to log a lot more metadata updates.

  This introduces fine-grained timestamps that are used when they are
  actively queried.

  This uses the 31st bit of the ctime tv_nsec field to indicate that
  something has queried the inode for the mtime or ctime. When this flag
  is set, on the next mtime or ctime update, the kernel will fetch a
  fine-grained timestamp instead of the usual coarse-grained one.

  As POSIX generally mandates that when the mtime changes, the ctime
  must also change the kernel always stores normalized ctime values, so
  only the first 30 bits of the tv_nsec field are ever used.

  Filesytems can opt into this behavior by setting the FS_MGTIME flag in
  the fstype. Filesystems that don't set this flag will continue to use
  coarse-grained timestamps.

  Various preparatory changes, fixes and cleanups are included:

   - Fixup all relevant places where POSIX requires updating ctime
     together with mtime. This is a wide-range of places and all
     maintainers provided necessary Acks.

   - Add new accessors for inode->i_ctime directly and change all
     callers to rely on them. Plain accesses to inode->i_ctime are now
     gone and it is accordingly rename to inode->__i_ctime and commented
     as requiring accessors.

   - Extend generic_fillattr() to pass in a request mask mirroring in a
     sense the statx() uapi. This allows callers to pass in a request
     mask to only get a subset of attributes filled in.

   - Rework timestamp updates so it's possible to drop the @now
     parameter the update_time() inode operation and associated helpers.

   - Add inode_update_timestamps() and convert all filesystems to it
     removing a bunch of open-coding"

* tag 'v6.6-vfs.ctime' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs: (107 commits)
  btrfs: convert to multigrain timestamps
  ext4: switch to multigrain timestamps
  xfs: switch to multigrain timestamps
  tmpfs: add support for multigrain timestamps
  fs: add infrastructure for multigrain timestamps
  fs: drop the timespec64 argument from update_time
  xfs: have xfs_vn_update_time gets its own timestamp
  fat: make fat_update_time get its own timestamp
  fat: remove i_version handling from fat_update_time
  ubifs: have ubifs_update_time use inode_update_timestamps
  btrfs: have it use inode_update_timestamps
  fs: drop the timespec64 arg from generic_update_time
  fs: pass the request_mask to generic_fillattr
  fs: remove silly warning from current_time
  gfs2: fix timestamp handling on quota inodes
  fs: rename i_ctime field to __i_ctime
  selinux: convert to ctime accessor functions
  security: convert to ctime accessor functions
  apparmor: convert to ctime accessor functions
  sunrpc: convert to ctime accessor functions
  ...
Commit
615e95831ec3d428cc554ac12e9439e2d66038d3
Parents
84ab1277 · 50e9ceef

Merge commit. Changes below are compared with the first parent: 84ab1277.

Changes

252 files changed · +1267 −1049

FileStatusAddDelContent
arch/powerpc/platforms/cell/spufs/inode.cmodified+1−1View file
arch/s390/hypfs/inode.cmodified+2−2View file
drivers/android/binderfs.cmodified+4−4View file
drivers/infiniband/hw/qib/qib_fs.cmodified+1−2View file
drivers/misc/ibmasm/ibmasmfs.cmodified+1−1View file
drivers/misc/ibmvmc.cmodified+1−1View file
drivers/usb/core/devio.cmodified+8−8View file
drivers/usb/gadget/function/f_fs.cmodified+1−2View file
drivers/usb/gadget/legacy/inode.cmodified+1−2View file
fs/9p/vfs_inode.cmodified+4−4View file
fs/9p/vfs_inode_dotl.cmodified+6−6View file
fs/adfs/inode.cmodified+2−2View file
fs/affs/amigaffs.cmodified+3−3View file
fs/affs/inode.cmodified+8−8View file
fs/afs/dynroot.cmodified+1−1View file
fs/afs/inode.cmodified+4−4View file
fs/attr.cmodified+1−1View file
fs/autofs/inode.cmodified+1−1View file
fs/autofs/root.cmodified+3−3View file
fs/bad_inode.cmodified+2−4View file
fs/befs/linuxvfs.cmodified+1−1View file
fs/bfs/dir.cmodified+8−8View file
fs/bfs/inode.cmodified+2−3View file
fs/binfmt_misc.cmodified+1−2View file
fs/btrfs/delayed-inode.cmodified+4−4View file
fs/btrfs/file.cmodified+9−28View file
fs/btrfs/inode.cmodified+20−46View file
fs/btrfs/ioctl.cmodified+1−1View file
fs/btrfs/reflink.cmodified+1−2View file
fs/btrfs/super.cmodified+3−2View file
fs/btrfs/transaction.cmodified+1−2View file
fs/btrfs/tree-log.cmodified+2−2View file
fs/btrfs/volumes.cmodified+1−3View file
fs/btrfs/xattr.cmodified+2−2View file
fs/ceph/acl.cmodified+1−1View file
fs/ceph/caps.cmodified+1−1View file
fs/ceph/inode.cmodified+10−8View file
fs/ceph/snap.cmodified+1−1View file
fs/ceph/xattr.cmodified+1−1View file
fs/coda/coda_linux.cmodified+2−1View file
fs/coda/dir.cmodified+1−1View file
fs/coda/file.cmodified+1−1View file
fs/coda/inode.cmodified+3−2View file
fs/configfs/inode.cmodified+3−4View file
fs/cramfs/inode.cmodified+2−1View file
fs/debugfs/inode.cmodified+1−2View file
fs/devpts/inode.cmodified+3−3View file
fs/ecryptfs/inode.cmodified+4−3View file
fs/efivarfs/file.cmodified+1−1View file
fs/efivarfs/inode.cmodified+1−1View file
fs/efs/inode.cmodified+2−2View file
fs/erofs/inode.cmodified+5−9View file
fs/exfat/file.cmodified+3−3View file
fs/exfat/inode.cmodified+3−3View file
fs/exfat/namei.cmodified+11−15View file
fs/exfat/super.cmodified+1−2View file
fs/ext2/acl.cmodified+1−1View file
fs/ext2/dir.cmodified+3−3View file
fs/ext2/ialloc.cmodified+1−1View file
fs/ext2/inode.cmodified+6−6View file
fs/ext2/ioctl.cmodified+2−2View file
fs/ext2/namei.cmodified+4−4View file
fs/ext2/super.cmodified+1−1View file
fs/ext2/xattr.cmodified+1−1View file
fs/ext4/acl.cmodified+1−1View file
fs/ext4/ext4.hmodified+48−42View file
fs/ext4/extents.cmodified+6−6View file
fs/ext4/ialloc.cmodified+1−1View file
fs/ext4/inline.cmodified+2−2View file
fs/ext4/inode-test.cmodified+3−3View file
fs/ext4/inode.cmodified+8−10View file
fs/ext4/ioctl.cmodified+5−4View file
fs/ext4/namei.cmodified+12−14View file
fs/ext4/super.cmodified+2−2View file
fs/ext4/xattr.cmodified+3−3View file
fs/f2fs/dir.cmodified+4−4View file
fs/f2fs/f2fs.hmodified+3−1View file
fs/f2fs/file.cmodified+11−11View file
fs/f2fs/inline.cmodified+1−1View file
fs/f2fs/inode.cmodified+5−5View file
fs/f2fs/namei.cmodified+6−6View file
fs/f2fs/recovery.cmodified+2−2View file
fs/f2fs/super.cmodified+1−1View file
fs/f2fs/xattr.cmodified+1−1View file
fs/fat/fat.hmodified+1−2View file
fs/fat/file.cmodified+1−1View file
fs/fat/inode.cmodified+2−3View file
fs/fat/misc.cmodified+4−6View file
fs/freevxfs/vxfs_inode.cmodified+1−2View file
fs/fuse/control.cmodified+1−1View file
fs/fuse/dir.cmodified+5−5View file
fs/fuse/inode.cmodified+8−8View file
fs/gfs2/acl.cmodified+1−1View file
fs/gfs2/bmap.cmodified+5−6View file
fs/gfs2/dir.cmodified+8−7View file
fs/gfs2/file.cmodified+1−1View file
fs/gfs2/glops.cmodified+2−2View file
fs/gfs2/inode.cmodified+8−8View file
fs/gfs2/quota.cmodified+1−1View file
fs/gfs2/super.cmodified+2−2View file
fs/gfs2/xattr.cmodified+4−4View file
fs/hfs/catalog.cmodified+4−4View file
fs/hfs/dir.cmodified+1−1View file
fs/hfs/inode.cmodified+6−7View file
fs/hfs/sysdep.cmodified+3−1View file
fs/hfsplus/catalog.cmodified+4−4View file
fs/hfsplus/dir.cmodified+3−3View file
fs/hfsplus/inode.cmodified+10−8View file
fs/hostfs/hostfs_kern.cmodified+1−2View file
fs/hpfs/dir.cmodified+4−4View file
fs/hpfs/inode.cmodified+3−3View file
fs/hpfs/namei.cmodified+10−19View file
fs/hpfs/super.cmodified+3−2View file
fs/hugetlbfs/inode.cmodified+6−6View file
fs/inode.cmodified+175−41View file
fs/isofs/inode.cmodified+2−7View file
fs/isofs/rock.cmodified+7−9View file
fs/jffs2/dir.cmodified+15−9View file
fs/jffs2/file.cmodified+2−1View file
fs/jffs2/fs.cmodified+5−5View file
fs/jffs2/os-linux.hmodified+1−1View file
fs/jfs/acl.cmodified+1−1View file
fs/jfs/inode.cmodified+1−1View file
fs/jfs/ioctl.cmodified+1−1View file
fs/jfs/jfs_imap.cmodified+4−4View file
fs/jfs/jfs_inode.cmodified+2−2View file
fs/jfs/namei.cmodified+12−12View file
fs/jfs/super.cmodified+1−1View file
fs/jfs/xattr.cmodified+1−1View file
fs/kernfs/inode.cmodified+3−4View file
fs/libfs.cmodified+39−20View file
fs/minix/bitmap.cmodified+1−1View file
fs/minix/dir.cmodified+3−3View file
fs/minix/inode.cmodified+4−8View file
fs/minix/itree_common.cmodified+2−2View file
fs/minix/namei.cmodified+3−3View file
fs/nfs/callback_proc.cmodified+1−1View file
fs/nfs/fscache.hmodified+2−2View file
fs/nfs/inode.cmodified+11−11View file
fs/nfs/namespace.cmodified+2−1View file
fs/nfsd/nfsctl.cmodified+1−1View file
fs/nfsd/vfs.cmodified+1−1View file
fs/nilfs2/dir.cmodified+3−3View file
fs/nilfs2/inode.cmodified+6−6View file
fs/nilfs2/ioctl.cmodified+1−1View file
fs/nilfs2/namei.cmodified+4−4View file
fs/nsfs.cmodified+1−1View file
fs/ntfs/inode.cmodified+8−7View file
fs/ntfs/mft.cmodified+1−2View file
fs/ntfs3/file.cmodified+4−4View file
fs/ntfs3/frecord.cmodified+2−1View file
fs/ntfs3/inode.cmodified+8−6View file
fs/ntfs3/namei.cmodified+4−7View file
fs/ntfs3/xattr.cmodified+2−2View file
fs/ocfs2/acl.cmodified+3−3View file
fs/ocfs2/alloc.cmodified+3−3View file
fs/ocfs2/aops.cmodified+1−1View file
fs/ocfs2/dir.cmodified+4−4View file
fs/ocfs2/dlmfs/dlmfs.cmodified+2−2View file
fs/ocfs2/dlmglue.cmodified+5−2View file
fs/ocfs2/file.cmodified+10−8View file
fs/ocfs2/inode.cmodified+6−6View file
fs/ocfs2/move_extents.cmodified+3−3View file
fs/ocfs2/namei.cmodified+11−10View file
fs/ocfs2/refcounttree.cmodified+7−7View file
fs/ocfs2/xattr.cmodified+3−3View file
fs/omfs/dir.cmodified+2−2View file
fs/omfs/inode.cmodified+4−5View file
fs/openpromfs/inode.cmodified+2−3View file
fs/orangefs/inode.cmodified+4−3View file
fs/orangefs/namei.cmodified+1−1View file
fs/orangefs/orangefs-kernel.hmodified+1−1View file
fs/orangefs/orangefs-utils.cmodified+3−3View file
fs/overlayfs/file.cmodified+5−2View file
fs/overlayfs/inode.cmodified+1−1View file
fs/overlayfs/overlayfs.hmodified+1−1View file
fs/overlayfs/util.cmodified+1−1View file
fs/pipe.cmodified+1−1View file
fs/posix_acl.cmodified+1−1View file
fs/proc/base.cmodified+3−3View file
fs/proc/fd.cmodified+1−1View file
fs/proc/generic.cmodified+1−1View file
fs/proc/inode.cmodified+1−1View file
fs/proc/proc_net.cmodified+1−1View file
fs/proc/proc_sysctl.cmodified+2−2View file
fs/proc/root.cmodified+2−1View file
fs/proc/self.cmodified+1−1View file
fs/proc/thread_self.cmodified+1−1View file
fs/pstore/inode.cmodified+2−2View file
fs/qnx4/inode.cmodified+1−2View file
fs/qnx6/inode.cmodified+1−2View file
fs/ramfs/inode.cmodified+3−3View file
fs/reiserfs/inode.cmodified+5−7View file
fs/reiserfs/ioctl.cmodified+2−2View file
fs/reiserfs/namei.cmodified+7−11View file
fs/reiserfs/stree.cmodified+2−2View file
fs/reiserfs/super.cmodified+1−1View file
fs/reiserfs/xattr.cmodified+3−2View file
fs/reiserfs/xattr_acl.cmodified+1−1View file
fs/romfs/super.cmodified+1−2View file
fs/smb/client/file.cmodified+2−2View file
fs/smb/client/fscache.hmodified+3−2View file
fs/smb/client/inode.cmodified+8−8View file
fs/smb/client/smb2ops.cmodified+2−1View file
fs/smb/server/smb2pdu.cmodified+15−15View file
fs/smb/server/vfs.cmodified+2−1View file
fs/squashfs/inode.cmodified+1−1View file
fs/stack.cmodified+1−1View file
fs/stat.cmodified+52−13View file
fs/sysv/dir.cmodified+3−3View file
fs/sysv/ialloc.cmodified+1−1View file
fs/sysv/inode.cmodified+2−3View file
fs/sysv/itree.cmodified+4−3View file
fs/sysv/namei.cmodified+3−3View file
fs/tracefs/inode.cmodified+1−1View file
fs/ubifs/debug.cmodified+2−2View file
fs/ubifs/dir.cmodified+15−26View file
fs/ubifs/file.cmodified+14−17View file
fs/ubifs/ioctl.cmodified+1−1View file
fs/ubifs/journal.cmodified+2−2View file
fs/ubifs/super.cmodified+2−2View file
fs/ubifs/ubifs.hmodified+1−1View file
fs/ubifs/xattr.cmodified+3−3View file
fs/udf/ialloc.cmodified+1−1View file
fs/udf/inode.cmodified+10−7View file
fs/udf/namei.cmodified+12−12View file
fs/udf/symlink.cmodified+1−1View file
fs/ufs/dir.cmodified+3−3View file
fs/ufs/ialloc.cmodified+1−1View file
fs/ufs/inode.cmodified+13−10View file
fs/ufs/namei.cmodified+4−4View file
fs/vboxsf/utils.cmodified+3−3View file
fs/xfs/libxfs/xfs_inode_buf.cmodified+3−2View file
fs/xfs/libxfs/xfs_trans_inode.cmodified+3−3View file
fs/xfs/xfs_acl.cmodified+1−1View file
fs/xfs/xfs_bmap_util.cmodified+4−2View file
fs/xfs/xfs_inode.cmodified+1−2View file
fs/xfs/xfs_inode_item.cmodified+1−1View file
fs/xfs/xfs_iops.cmodified+15−10View file
fs/xfs/xfs_itable.cmodified+2−2View file
fs/xfs/xfs_super.cmodified+1−1View file
fs/zonefs/super.cmodified+5−3View file
include/linux/fs.hmodified+94−6View file
include/linux/fs_stack.hmodified+1−1View file
ipc/mqueue.cmodified+11−12View file
kernel/bpf/inode.cmodified+2−4View file
mm/shmem.cmodified+15−15View file
net/sunrpc/rpc_pipe.cmodified+1−1View file
security/apparmor/apparmorfs.cmodified+7−4View file
security/apparmor/policy_unpack.cmodified+7−4View file
security/inode.cmodified+1−1View file
security/selinux/selinuxfs.cmodified+1−1View file

Only the first 600 diff lines are shown. Download the complete patch.

arch/powerpc/platforms/cell/spufs/inode.c

View file
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c
index ea807aa..38c5be3 100644
--- a/arch/powerpc/platforms/cell/spufs/inode.c
+++ b/arch/powerpc/platforms/cell/spufs/inode.c
@@ -86,7 +86,7 @@ spufs_new_inode(struct super_block *sb, umode_t mode)
inode->i_mode = mode;
inode->i_uid = current_fsuid();
inode->i_gid = current_fsgid();
- inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode);
+ inode->i_atime = inode->i_mtime = inode_set_ctime_current(inode);
out:
return inode;
}

arch/s390/hypfs/inode.c

View file
diff --git a/arch/s390/hypfs/inode.c b/arch/s390/hypfs/inode.c
index ee919bf..5feef8d 100644
--- a/arch/s390/hypfs/inode.c
+++ b/arch/s390/hypfs/inode.c
@@ -53,7 +53,7 @@ static void hypfs_update_update(struct super_block *sb)
struct inode *inode = d_inode(sb_info->update_file);
sb_info->last_update = ktime_get_seconds();
- inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode);
+ inode->i_atime = inode->i_mtime = inode_set_ctime_current(inode);
}
/* directory tree removal functions */
@@ -101,7 +101,7 @@ static struct inode *hypfs_make_inode(struct super_block *sb, umode_t mode)
ret->i_mode = mode;
ret->i_uid = hypfs_info->uid;
ret->i_gid = hypfs_info->gid;
- ret->i_atime = ret->i_mtime = ret->i_ctime = current_time(ret);
+ ret->i_atime = ret->i_mtime = inode_set_ctime_current(ret);
if (S_ISDIR(mode))
set_nlink(ret, 2);
}

drivers/android/binderfs.c

View file
diff --git a/drivers/android/binderfs.c b/drivers/android/binderfs.c
index 76e7d66..faebe9f 100644
--- a/drivers/android/binderfs.c
+++ b/drivers/android/binderfs.c
@@ -153,7 +153,7 @@ static int binderfs_binder_device_create(struct inode *ref_inode,
goto err;
inode->i_ino = minor + INODE_OFFSET;
- inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
+ inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode);
init_special_inode(inode, S_IFCHR | 0600,
MKDEV(MAJOR(binderfs_dev), minor));
inode->i_fop = &binder_fops;
@@ -432,7 +432,7 @@ static int binderfs_binder_ctl_create(struct super_block *sb)
}
inode->i_ino = SECOND_INODE;
- inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
+ inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode);
init_special_inode(inode, S_IFCHR | 0600,
MKDEV(MAJOR(binderfs_dev), minor));
inode->i_fop = &binder_ctl_fops;
@@ -474,7 +474,7 @@ static struct inode *binderfs_make_inode(struct super_block *sb, int mode)
if (ret) {
ret->i_ino = iunique(sb, BINDERFS_MAX_MINOR + INODE_OFFSET);
ret->i_mode = mode;
- ret->i_atime = ret->i_mtime = ret->i_ctime = current_time(ret);
+ ret->i_atime = ret->i_mtime = inode_set_ctime_current(ret);
}
return ret;
}
@@ -703,7 +703,7 @@ static int binderfs_fill_super(struct super_block *sb, struct fs_context *fc)
inode->i_ino = FIRST_INODE;
inode->i_fop = &simple_dir_operations;
inode->i_mode = S_IFDIR | 0755;
- inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
+ inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode);
inode->i_op = &binderfs_dir_inode_operations;
set_nlink(inode, 2);

drivers/infiniband/hw/qib/qib_fs.c

View file
diff --git a/drivers/infiniband/hw/qib/qib_fs.c b/drivers/infiniband/hw/qib/qib_fs.c
index a973905..ed7d4b0 100644
--- a/drivers/infiniband/hw/qib/qib_fs.c
+++ b/drivers/infiniband/hw/qib/qib_fs.c
@@ -64,9 +64,8 @@ static int qibfs_mknod(struct inode *dir, struct dentry *dentry,
inode->i_uid = GLOBAL_ROOT_UID;
inode->i_gid = GLOBAL_ROOT_GID;
inode->i_blocks = 0;
- inode->i_atime = current_time(inode);
+ inode->i_atime = inode_set_ctime_current(inode);
inode->i_mtime = inode->i_atime;
- inode->i_ctime = inode->i_atime;
inode->i_private = data;
if (S_ISDIR(mode)) {
inode->i_op = &simple_dir_inode_operations;

drivers/misc/ibmasm/ibmasmfs.c

View file
diff --git a/drivers/misc/ibmasm/ibmasmfs.c b/drivers/misc/ibmasm/ibmasmfs.c
index 35fec1b..5867af9 100644
--- a/drivers/misc/ibmasm/ibmasmfs.c
+++ b/drivers/misc/ibmasm/ibmasmfs.c
@@ -139,7 +139,7 @@ static struct inode *ibmasmfs_make_inode(struct super_block *sb, int mode)
if (ret) {
ret->i_ino = get_next_ino();
ret->i_mode = mode;
- ret->i_atime = ret->i_mtime = ret->i_ctime = current_time(ret);
+ ret->i_atime = ret->i_mtime = inode_set_ctime_current(ret);
}
return ret;
}

drivers/misc/ibmvmc.c

View file
diff --git a/drivers/misc/ibmvmc.c b/drivers/misc/ibmvmc.c
index cbaf6d3..2101eb1 100644
--- a/drivers/misc/ibmvmc.c
+++ b/drivers/misc/ibmvmc.c
@@ -1124,7 +1124,7 @@ static ssize_t ibmvmc_write(struct file *file, const char *buffer,
goto out;
inode = file_inode(file);
- inode->i_mtime = current_time(inode);
+ inode->i_mtime = inode_set_ctime_current(inode);
mark_inode_dirty(inode);
dev_dbg(adapter->dev, "write: file = 0x%lx, count = 0x%lx\n",

drivers/usb/core/devio.c

View file
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
index 1a16a8b..4f68f6e 100644
--- a/drivers/usb/core/devio.c
+++ b/drivers/usb/core/devio.c
@@ -2642,21 +2642,21 @@ static long usbdev_do_ioctl(struct file *file, unsigned int cmd,
snoop(&dev->dev, "%s: CONTROL\n", __func__);
ret = proc_control(ps, p);
if (ret >= 0)
- inode->i_mtime = inode->i_ctime = current_time(inode);
+ inode->i_mtime = inode_set_ctime_current(inode);
break;
case USBDEVFS_BULK:
snoop(&dev->dev, "%s: BULK\n", __func__);
ret = proc_bulk(ps, p);
if (ret >= 0)
- inode->i_mtime = inode->i_ctime = current_time(inode);
+ inode->i_mtime = inode_set_ctime_current(inode);
break;
case USBDEVFS_RESETEP:
snoop(&dev->dev, "%s: RESETEP\n", __func__);
ret = proc_resetep(ps, p);
if (ret >= 0)
- inode->i_mtime = inode->i_ctime = current_time(inode);
+ inode->i_mtime = inode_set_ctime_current(inode);
break;
case USBDEVFS_RESET:
@@ -2668,7 +2668,7 @@ static long usbdev_do_ioctl(struct file *file, unsigned int cmd,
snoop(&dev->dev, "%s: CLEAR_HALT\n", __func__);
ret = proc_clearhalt(ps, p);
if (ret >= 0)
- inode->i_mtime = inode->i_ctime = current_time(inode);
+ inode->i_mtime = inode_set_ctime_current(inode);
break;
case USBDEVFS_GETDRIVER:
@@ -2695,7 +2695,7 @@ static long usbdev_do_ioctl(struct file *file, unsigned int cmd,
snoop(&dev->dev, "%s: SUBMITURB\n", __func__);
ret = proc_submiturb(ps, p);
if (ret >= 0)
- inode->i_mtime = inode->i_ctime = current_time(inode);
+ inode->i_mtime = inode_set_ctime_current(inode);
break;
#ifdef CONFIG_COMPAT
@@ -2703,14 +2703,14 @@ static long usbdev_do_ioctl(struct file *file, unsigned int cmd,
snoop(&dev->dev, "%s: CONTROL32\n", __func__);
ret = proc_control_compat(ps, p);
if (ret >= 0)
- inode->i_mtime = inode->i_ctime = current_time(inode);
+ inode->i_mtime = inode_set_ctime_current(inode);
break;
case USBDEVFS_BULK32:
snoop(&dev->dev, "%s: BULK32\n", __func__);
ret = proc_bulk_compat(ps, p);
if (ret >= 0)
- inode->i_mtime = inode->i_ctime = current_time(inode);
+ inode->i_mtime = inode_set_ctime_current(inode);
break;
case USBDEVFS_DISCSIGNAL32:
@@ -2722,7 +2722,7 @@ static long usbdev_do_ioctl(struct file *file, unsigned int cmd,
snoop(&dev->dev, "%s: SUBMITURB32\n", __func__);
ret = proc_submiturb_compat(ps, p);
if (ret >= 0)
- inode->i_mtime = inode->i_ctime = current_time(inode);
+ inode->i_mtime = inode_set_ctime_current(inode);
break;
case USBDEVFS_IOCTL32:

drivers/usb/gadget/function/f_fs.c

View file
diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
index f41a385..6e9ef35 100644
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -1377,7 +1377,7 @@ ffs_sb_make_inode(struct super_block *sb, void *data,
inode = new_inode(sb);
if (inode) {
- struct timespec64 ts = current_time(inode);
+ struct timespec64 ts = inode_set_ctime_current(inode);
inode->i_ino = get_next_ino();
inode->i_mode = perms->mode;
@@ -1385,7 +1385,6 @@ ffs_sb_make_inode(struct super_block *sb, void *data,
inode->i_gid = perms->gid;
inode->i_atime = ts;
inode->i_mtime = ts;
- inode->i_ctime = ts;
inode->i_private = data;
if (fops)
inode->i_fop = fops;

drivers/usb/gadget/legacy/inode.c

View file
diff --git a/drivers/usb/gadget/legacy/inode.c b/drivers/usb/gadget/legacy/inode.c
index 28249d0..ce9e31f 100644
--- a/drivers/usb/gadget/legacy/inode.c
+++ b/drivers/usb/gadget/legacy/inode.c
@@ -1969,8 +1969,7 @@ gadgetfs_make_inode (struct super_block *sb,
inode->i_mode = mode;
inode->i_uid = make_kuid(&init_user_ns, default_uid);
inode->i_gid = make_kgid(&init_user_ns, default_gid);
- inode->i_atime = inode->i_mtime = inode->i_ctime
- = current_time(inode);
+ inode->i_atime = inode->i_mtime = inode_set_ctime_current(inode);
inode->i_private = data;
inode->i_fop = fops;
}

fs/9p/vfs_inode.c

View file
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
index 950cf61..0d28ecf 100644
--- a/fs/9p/vfs_inode.c
+++ b/fs/9p/vfs_inode.c
@@ -260,7 +260,7 @@ int v9fs_init_inode(struct v9fs_session_info *v9ses,
inode_init_owner(&nop_mnt_idmap, inode, NULL, mode);
inode->i_blocks = 0;
inode->i_rdev = rdev;
- inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode);
+ inode->i_atime = inode->i_mtime = inode_set_ctime_current(inode);
inode->i_mapping->a_ops = &v9fs_addr_operations;
inode->i_private = NULL;
@@ -1011,7 +1011,7 @@ v9fs_vfs_getattr(struct mnt_idmap *idmap, const struct path *path,
p9_debug(P9_DEBUG_VFS, "dentry: %p\n", dentry);
v9ses = v9fs_dentry2v9ses(dentry);
if (v9ses->cache & (CACHE_META|CACHE_LOOSE)) {
- generic_fillattr(&nop_mnt_idmap, inode, stat);
+ generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat);
return 0;
} else if (v9ses->cache & CACHE_WRITEBACK) {
if (S_ISREG(inode->i_mode)) {
@@ -1032,7 +1032,7 @@ v9fs_vfs_getattr(struct mnt_idmap *idmap, const struct path *path,
return PTR_ERR(st);
v9fs_stat2inode(st, d_inode(dentry), dentry->d_sb, 0);
- generic_fillattr(&nop_mnt_idmap, d_inode(dentry), stat);
+ generic_fillattr(&nop_mnt_idmap, request_mask, d_inode(dentry), stat);
p9stat_free(st);
kfree(st);
@@ -1152,7 +1152,7 @@ v9fs_stat2inode(struct p9_wstat *stat, struct inode *inode,
inode->i_atime.tv_sec = stat->atime;
inode->i_mtime.tv_sec = stat->mtime;
- inode->i_ctime.tv_sec = stat->mtime;
+ inode_set_ctime(inode, stat->mtime, 0);
inode->i_uid = v9ses->dfltuid;
inode->i_gid = v9ses->dfltgid;

fs/9p/vfs_inode_dotl.c

View file
diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c
index 1451087..1312f68 100644
--- a/fs/9p/vfs_inode_dotl.c
+++ b/fs/9p/vfs_inode_dotl.c
@@ -450,7 +450,7 @@ v9fs_vfs_getattr_dotl(struct mnt_idmap *idmap,
p9_debug(P9_DEBUG_VFS, "dentry: %p\n", dentry);
v9ses = v9fs_dentry2v9ses(dentry);
if (v9ses->cache & (CACHE_META|CACHE_LOOSE)) {
- generic_fillattr(&nop_mnt_idmap, inode, stat);
+ generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat);
return 0;
} else if (v9ses->cache) {
if (S_ISREG(inode->i_mode)) {
@@ -475,7 +475,7 @@ v9fs_vfs_getattr_dotl(struct mnt_idmap *idmap,
return PTR_ERR(st);
v9fs_stat2inode_dotl(st, d_inode(dentry), 0);
- generic_fillattr(&nop_mnt_idmap, d_inode(dentry), stat);
+ generic_fillattr(&nop_mnt_idmap, request_mask, d_inode(dentry), stat);
/* Change block size to what the server returned */
stat->blksize = st->st_blksize;
@@ -645,8 +645,8 @@ v9fs_stat2inode_dotl(struct p9_stat_dotl *stat, struct inode *inode,
inode->i_atime.tv_nsec = stat->st_atime_nsec;
inode->i_mtime.tv_sec = stat->st_mtime_sec;
inode->i_mtime.tv_nsec = stat->st_mtime_nsec;
- inode->i_ctime.tv_sec = stat->st_ctime_sec;
- inode->i_ctime.tv_nsec = stat->st_ctime_nsec;
+ inode_set_ctime(inode, stat->st_ctime_sec,
+ stat->st_ctime_nsec);
inode->i_uid = stat->st_uid;
inode->i_gid = stat->st_gid;
set_nlink(inode, stat->st_nlink);
@@ -668,8 +668,8 @@ v9fs_stat2inode_dotl(struct p9_stat_dotl *stat, struct inode *inode,
inode->i_mtime.tv_nsec = stat->st_mtime_nsec;
}
if (stat->st_result_mask & P9_STATS_CTIME) {
- inode->i_ctime.tv_sec = stat->st_ctime_sec;
- inode->i_ctime.tv_nsec = stat->st_ctime_nsec;
+ inode_set_ctime(inode, stat->st_ctime_sec,
+ stat->st_ctime_nsec);
}
if (stat->st_result_mask & P9_STATS_UID)
inode->i_uid = stat->st_uid;

fs/adfs/inode.c

View file
diff --git a/fs/adfs/inode.c b/fs/adfs/inode.c
index c3ac613..2096300 100644
--- a/fs/adfs/inode.c
+++ b/fs/adfs/inode.c
@@ -270,7 +270,7 @@ adfs_iget(struct super_block *sb, struct object_info *obj)
inode->i_mode = adfs_atts2mode(sb, inode);
adfs_adfs2unix_time(&inode->i_mtime, inode);
inode->i_atime = inode->i_mtime;
- inode->i_ctime = inode->i_mtime;
+ inode_set_ctime_to_ts(inode, inode->i_mtime);
if (S_ISDIR(inode->i_mode)) {
inode->i_op = &adfs_dir_inode_operations;
@@ -331,7 +331,7 @@ adfs_notify_change(struct mnt_idmap *idmap, struct dentry *dentry,
if (ia_valid & ATTR_ATIME)
inode->i_atime = attr->ia_atime;
if (ia_valid & ATTR_CTIME)
- inode->i_ctime = attr->ia_ctime;
+ inode_set_ctime_to_ts(inode, attr->ia_ctime);
if (ia_valid & ATTR_MODE) {
ADFS_I(inode)->attr = adfs_mode2atts(sb, inode, attr->ia_mode);
inode->i_mode = adfs_atts2mode(sb, inode);

fs/affs/amigaffs.c

View file
diff --git a/fs/affs/amigaffs.c b/fs/affs/amigaffs.c
index 29f11e1..7ba93ef 100644
--- a/fs/affs/amigaffs.c
+++ b/fs/affs/amigaffs.c
@@ -60,7 +60,7 @@ affs_insert_hash(struct inode *dir, struct buffer_head *bh)
mark_buffer_dirty_inode(dir_bh, dir);
affs_brelse(dir_bh);
- dir->i_mtime = dir->i_ctime = current_time(dir);
+ dir->i_mtime = inode_set_ctime_current(dir);
inode_inc_iversion(dir);
mark_inode_dirty(dir);
@@ -114,7 +114,7 @@ affs_remove_hash(struct inode *dir, struct buffer_head *rem_bh)
affs_brelse(bh);
- dir->i_mtime = dir->i_ctime = current_time(dir);
+ dir->i_mtime = inode_set_ctime_current(dir);
inode_inc_iversion(dir);
mark_inode_dirty(dir);
@@ -315,7 +315,7 @@ affs_remove_header(struct dentry *dentry)
else
clear_nlink(inode);
affs_unlock_link(inode);
- inode->i_ctime = current_time(inode);
+ inode_set_ctime_current(inode);
mark_inode_dirty(inode);
done:

fs/affs/inode.c

View file
diff --git a/fs/affs/inode.c b/fs/affs/inode.c
index 27f77a5..060746c 100644
--- a/fs/affs/inode.c
+++ b/fs/affs/inode.c
@@ -149,13 +149,13 @@ struct inode *affs_iget(struct super_block *sb, unsigned long ino)
break;
}
- inode->i_mtime.tv_sec = inode->i_atime.tv_sec = inode->i_ctime.tv_sec
- = (be32_to_cpu(tail->change.days) * 86400LL +
- be32_to_cpu(tail->change.mins) * 60 +
- be32_to_cpu(tail->change.ticks) / 50 +
- AFFS_EPOCH_DELTA) +
- sys_tz.tz_minuteswest * 60;
- inode->i_mtime.tv_nsec = inode->i_ctime.tv_nsec = inode->i_atime.tv_nsec = 0;
+ inode->i_mtime.tv_sec = inode->i_atime.tv_sec =
+ inode_set_ctime(inode,
+ (be32_to_cpu(tail->change.days) * 86400LL +
+ be32_to_cpu(tail->change.mins) * 60 +
+ be32_to_cpu(tail->change.ticks) / 50 + AFFS_EPOCH_DELTA)
+ + sys_tz.tz_minuteswest * 60, 0).tv_sec;
+ inode->i_mtime.tv_nsec = inode->i_atime.tv_nsec = 0;
affs_brelse(bh);
unlock_new_inode(inode);
return inode;
@@ -314,7 +314,7 @@ affs_new_inode(struct inode *dir)
inode->i_gid = current_fsgid();
inode->i_ino = block;
set_nlink(inode, 1);
- inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
+ inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode);
atomic_set(&AFFS_I(inode)->i_opencnt, 0);
AFFS_I(inode)->i_blkcnt = 0;
AFFS_I(inode)->i_lc = NULL;

fs/afs/dynroot.c

View file
diff --git a/fs/afs/dynroot.c b/fs/afs/dynroot.c
index d7d9402..95bcbd7 100644
--- a/fs/afs/dynroot.c
+++ b/fs/afs/dynroot.c
@@ -88,7 +88,7 @@ struct inode *afs_iget_pseudo_dir(struct super_block *sb, bool root)
set_nlink(inode, 2);
inode->i_uid = GLOBAL_ROOT_UID;
inode->i_gid = GLOBAL_ROOT_GID;
- inode->i_ctime = inode->i_atime = inode->i_mtime = current_time(inode);
+ inode->i_atime = inode->i_mtime = inode_set_ctime_current(inode);
inode->i_blocks = 0;
inode->i_generation = 0;

fs/afs/inode.c

View file
diff --git a/fs/afs/inode.c b/fs/afs/inode.c
index 866bab8..1c794a1 100644
--- a/fs/afs/inode.c
+++ b/fs/afs/inode.c
@@ -90,7 +90,7 @@ static int afs_inode_init_from_status(struct afs_operation *op,
vnode->status = *status;
t = status->mtime_client;
- inode->i_ctime = t;
+ inode_set_ctime_to_ts(inode, t);
inode->i_mtime = t;
inode->i_atime = t;
inode->i_flags |= S_NOATIME;
@@ -206,7 +206,7 @@ static void afs_apply_status(struct afs_operation *op,
t = status->mtime_client;
inode->i_mtime = t;
if (vp->update_ctime)
- inode->i_ctime = op->ctime;
+ inode_set_ctime_to_ts(inode, op->ctime);
if (vnode->status.data_version != status->data_version)
data_changed = true;
@@ -252,7 +252,7 @@ static void afs_apply_status(struct afs_operation *op,
vnode->netfs.remote_i_size = status->size;
if (change_size) {
afs_set_i_size(vnode, status->size);
- inode->i_ctime = t;
+ inode_set_ctime_to_ts(inode, t);
inode->i_atime = t;
}
}
@@ -773,7 +773,7 @@ int afs_getattr(struct mnt_idmap *idmap, const struct path *path,
do {
read_seqbegin_or_lock(&vnode->cb_lock, &seq);
- generic_fillattr(&nop_mnt_idmap, inode, stat);
+ generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat);
if (test_bit(AFS_VNODE_SILLY_DELETED, &vnode->flags) &&
stat->nlink > 0)
stat->nlink -= 1;

fs/attr.c

View file
diff --git a/fs/attr.c b/fs/attr.c
index d60dc1e..599f6d1 100644
--- a/fs/attr.c
+++ b/fs/attr.c
@@ -312,7 +312,7 @@ void setattr_copy(struct mnt_idmap *idmap, struct inode *inode,
if (ia_valid & ATTR_MTIME)
inode->i_mtime = attr->ia_mtime;
if (ia_valid & ATTR_CTIME)
- inode->i_ctime = attr->ia_ctime;
+ inode_set_ctime_to_ts(inode, attr->ia_ctime);
if (ia_valid & ATTR_MODE) {
umode_t mode = attr->ia_mode;
if (!in_group_or_capable(idmap, inode,

fs/autofs/inode.c

View file
diff --git a/fs/autofs/inode.c b/fs/autofs/inode.c
index affa703..2b49662 100644
--- a/fs/autofs/inode.c
+++ b/fs/autofs/inode.c
@@ -370,7 +370,7 @@ struct inode *autofs_get_inode(struct super_block *sb, umode_t mode)
inode->i_uid = d_inode(sb->s_root)->i_uid;
inode->i_gid = d_inode(sb->s_root)->i_gid;
}
- inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode);
+ inode->i_atime = inode->i_mtime = inode_set_ctime_current(inode);
inode->i_ino = get_next_ino();
if (S_ISDIR(mode)) {

fs/autofs/root.c

View file
diff --git a/fs/autofs/root.c b/fs/autofs/root.c
index 93046c9..512b9a2 100644
--- a/fs/autofs/root.c
+++ b/fs/autofs/root.c
@@ -600,7 +600,7 @@ static int autofs_dir_symlink(struct mnt_idmap *idmap,
p_ino = autofs_dentry_ino(dentry->d_parent);
p_ino->count++;
- dir->i_mtime = dir->i_ctime = current_time(dir);
+ dir->i_mtime = inode_set_ctime_current(dir);
return 0;
}
@@ -633,7 +633,7 @@ static int autofs_dir_unlink(struct inode *dir, struct dentry *dentry)
d_inode(dentry)->i_size = 0;
clear_nlink(d_inode(dentry));
- dir->i_mtime = dir->i_ctime = current_time(dir);
+ dir->i_mtime = inode_set_ctime_current(dir);
spin_lock(&sbi->lookup_lock);
__autofs_add_expiring(dentry);
@@ -749,7 +749,7 @@ static int autofs_dir_mkdir(struct mnt_idmap *idmap,
p_ino = autofs_dentry_ino(dentry->d_parent);
p_ino->count++;
inc_nlink(dir);
- dir->i_mtime = dir->i_ctime = current_time(dir);
+ dir->i_mtime = inode_set_ctime_current(dir);
return 0;
}

fs/bad_inode.c

View file
diff --git a/fs/bad_inode.c b/fs/bad_inode.c
index db64948..83f9566 100644
--- a/fs/bad_inode.c
+++ b/fs/bad_inode.c
@@ -133,8 +133,7 @@ static int bad_inode_fiemap(struct inode *inode,
return -EIO;
}
-static int bad_inode_update_time(struct inode *inode, struct timespec64 *time,
- int flags)
+static int bad_inode_update_time(struct inode *inode, int flags)
{
return -EIO;
}
@@ -209,8 +208,7 @@ void make_bad_inode(struct inode *inode)
remove_inode_hash(inode);
inode->i_mode = S_IFREG;
- inode->i_atime = inode->i_mtime = inode->i_ctime =
- current_time(inode);
+ inode->i_atime = inode->i_mtime = inode_set_ctime_current(inode);
inode->i_op = &bad_inode_ops;
inode->i_opflags &= ~IOP_XATTR;
inode->i_fop = &bad_file_ops;

fs/befs/linuxvfs.c

View file
diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c
index eee9237..9a16a51 100644
--- a/fs/befs/linuxvfs.c
+++ b/fs/befs/linuxvfs.c
@@ -363,7 +363,7 @@ static struct inode *befs_iget(struct super_block *sb, unsigned long ino)
inode->i_mtime.tv_sec =
fs64_to_cpu(sb, raw_inode->last_modified_time) >> 16;
inode->i_mtime.tv_nsec = 0; /* lower 16 bits are not a time */
- inode->i_ctime = inode->i_mtime;
+ inode_set_ctime_to_ts(inode, inode->i_mtime);
inode->i_atime = inode->i_mtime;
befs_ino->i_inode_num = fsrun_to_cpu(sb, raw_inode->inode_num);

fs/bfs/dir.c

View file
diff --git a/fs/bfs/dir.c b/fs/bfs/dir.c
index 040d514..12b8af0 100644
--- a/fs/bfs/dir.c
+++ b/fs/bfs/dir.c
@@ -97,7 +97,7 @@ static int bfs_create(struct mnt_idmap *idmap, struct inode *dir,
set_bit(ino, info->si_imap);
info->si_freei--;
inode_init_owner(&nop_mnt_idmap, inode, dir, mode);
- inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
+ inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode);
inode->i_blocks = 0;
inode->i_op = &bfs_file_inops;
inode->i_fop = &bfs_file_operations;
@@ -158,7 +158,7 @@ static int bfs_link(struct dentry *old, struct inode *dir,
return err;
}
inc_nlink(inode);
- inode->i_ctime = current_time(inode);
+ inode_set_ctime_current(inode);
mark_inode_dirty(inode);
ihold(inode);
d_instantiate(new, inode);
@@ -187,9 +187,9 @@ static int bfs_unlink(struct inode *dir, struct dentry *dentry)
}
de->ino = 0;
mark_buffer_dirty_inode(bh, dir);
- dir->i_ctime = dir->i_mtime = current_time(dir);
+ dir->i_mtime = inode_set_ctime_current(dir);
mark_inode_dirty(dir);
- inode->i_ctime = dir->i_ctime;
+ inode_set_ctime_to_ts(inode, inode_get_ctime(dir));
inode_dec_link_count(inode);
error = 0;
@@ -240,10 +240,10 @@ static int bfs_rename(struct mnt_idmap *idmap, struct inode *old_dir,
goto end_rename;
}
old_de->ino = 0;
- old_dir->i_ctime = old_dir->i_mtime = current_time(old_dir);
+ old_dir->i_mtime = inode_set_ctime_current(old_dir);
mark_inode_dirty(old_dir);
if (new_inode) {
- new_inode->i_ctime = current_time(new_inode);
+ inode_set_ctime_current(new_inode);
inode_dec_link_count(new_inode);
}
mark_buffer_dirty_inode(old_bh, old_dir);
@@ -292,9 +292,9 @@ static int bfs_add_entry(struct inode *dir, const struct qstr *child, int ino)
pos = (block - sblock) * BFS_BSIZE + off;
if (pos >= dir->i_size) {
dir->i_size += BFS_DIRENT_SIZE;
- dir->i_ctime = current_time(dir);
+ inode_set_ctime_current(dir);
}
- dir->i_mtime = current_time(dir);
+ dir->i_mtime = inode_set_ctime_current(dir);
mark_inode_dirty(dir);
de->ino = cpu_to_le16((u16)ino);

This diff is incomplete. Download the complete patch.

fs/bfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/binfmt_misc.c

View file

This diff is incomplete. Download the complete patch.

fs/btrfs/delayed-inode.c

View file

This diff is incomplete. Download the complete patch.

fs/btrfs/file.c

View file

This diff is incomplete. Download the complete patch.

fs/btrfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/btrfs/ioctl.c

View file

This diff is incomplete. Download the complete patch.

fs/btrfs/reflink.c

View file

This diff is incomplete. Download the complete patch.

fs/btrfs/super.c

View file

This diff is incomplete. Download the complete patch.

fs/btrfs/transaction.c

View file

This diff is incomplete. Download the complete patch.

fs/btrfs/tree-log.c

View file

This diff is incomplete. Download the complete patch.

fs/btrfs/volumes.c

View file

This diff is incomplete. Download the complete patch.

fs/btrfs/xattr.c

View file

This diff is incomplete. Download the complete patch.

fs/ceph/acl.c

View file

This diff is incomplete. Download the complete patch.

fs/ceph/caps.c

View file

This diff is incomplete. Download the complete patch.

fs/ceph/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/ceph/snap.c

View file

This diff is incomplete. Download the complete patch.

fs/ceph/xattr.c

View file

This diff is incomplete. Download the complete patch.

fs/coda/coda_linux.c

View file

This diff is incomplete. Download the complete patch.

fs/coda/dir.c

View file

This diff is incomplete. Download the complete patch.

fs/coda/file.c

View file

This diff is incomplete. Download the complete patch.

fs/coda/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/configfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/cramfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/debugfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/devpts/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/ecryptfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/efivarfs/file.c

View file

This diff is incomplete. Download the complete patch.

fs/efivarfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/efs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/erofs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/exfat/file.c

View file

This diff is incomplete. Download the complete patch.

fs/exfat/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/exfat/namei.c

View file

This diff is incomplete. Download the complete patch.

fs/exfat/super.c

View file

This diff is incomplete. Download the complete patch.

fs/ext2/acl.c

View file

This diff is incomplete. Download the complete patch.

fs/ext2/dir.c

View file

This diff is incomplete. Download the complete patch.

fs/ext2/ialloc.c

View file

This diff is incomplete. Download the complete patch.

fs/ext2/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/ext2/ioctl.c

View file

This diff is incomplete. Download the complete patch.

fs/ext2/namei.c

View file

This diff is incomplete. Download the complete patch.

fs/ext2/super.c

View file

This diff is incomplete. Download the complete patch.

fs/ext2/xattr.c

View file

This diff is incomplete. Download the complete patch.

fs/ext4/acl.c

View file

This diff is incomplete. Download the complete patch.

fs/ext4/ext4.h

View file

This diff is incomplete. Download the complete patch.

fs/ext4/extents.c

View file

This diff is incomplete. Download the complete patch.

fs/ext4/ialloc.c

View file

This diff is incomplete. Download the complete patch.

fs/ext4/inline.c

View file

This diff is incomplete. Download the complete patch.

fs/ext4/inode-test.c

View file

This diff is incomplete. Download the complete patch.

fs/ext4/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/ext4/ioctl.c

View file

This diff is incomplete. Download the complete patch.

fs/ext4/namei.c

View file

This diff is incomplete. Download the complete patch.

fs/ext4/super.c

View file

This diff is incomplete. Download the complete patch.

fs/ext4/xattr.c

View file

This diff is incomplete. Download the complete patch.

fs/f2fs/dir.c

View file

This diff is incomplete. Download the complete patch.

fs/f2fs/f2fs.h

View file

This diff is incomplete. Download the complete patch.

fs/f2fs/file.c

View file

This diff is incomplete. Download the complete patch.

fs/f2fs/inline.c

View file

This diff is incomplete. Download the complete patch.

fs/f2fs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/f2fs/namei.c

View file

This diff is incomplete. Download the complete patch.

fs/f2fs/recovery.c

View file

This diff is incomplete. Download the complete patch.

fs/f2fs/super.c

View file

This diff is incomplete. Download the complete patch.

fs/f2fs/xattr.c

View file

This diff is incomplete. Download the complete patch.

fs/fat/fat.h

View file

This diff is incomplete. Download the complete patch.

fs/fat/file.c

View file

This diff is incomplete. Download the complete patch.

fs/fat/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/fat/misc.c

View file

This diff is incomplete. Download the complete patch.

fs/freevxfs/vxfs_inode.c

View file

This diff is incomplete. Download the complete patch.

fs/fuse/control.c

View file

This diff is incomplete. Download the complete patch.

fs/fuse/dir.c

View file

This diff is incomplete. Download the complete patch.

fs/fuse/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/gfs2/acl.c

View file

This diff is incomplete. Download the complete patch.

fs/gfs2/bmap.c

View file

This diff is incomplete. Download the complete patch.

fs/gfs2/dir.c

View file

This diff is incomplete. Download the complete patch.

fs/gfs2/file.c

View file

This diff is incomplete. Download the complete patch.

fs/gfs2/glops.c

View file

This diff is incomplete. Download the complete patch.

fs/gfs2/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/gfs2/quota.c

View file

This diff is incomplete. Download the complete patch.

fs/gfs2/super.c

View file

This diff is incomplete. Download the complete patch.

fs/gfs2/xattr.c

View file

This diff is incomplete. Download the complete patch.

fs/hfs/catalog.c

View file

This diff is incomplete. Download the complete patch.

fs/hfs/dir.c

View file

This diff is incomplete. Download the complete patch.

fs/hfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/hfs/sysdep.c

View file

This diff is incomplete. Download the complete patch.

fs/hfsplus/catalog.c

View file

This diff is incomplete. Download the complete patch.

fs/hfsplus/dir.c

View file

This diff is incomplete. Download the complete patch.

fs/hfsplus/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/hostfs/hostfs_kern.c

View file

This diff is incomplete. Download the complete patch.

fs/hpfs/dir.c

View file

This diff is incomplete. Download the complete patch.

fs/hpfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/hpfs/namei.c

View file

This diff is incomplete. Download the complete patch.

fs/hpfs/super.c

View file

This diff is incomplete. Download the complete patch.

fs/hugetlbfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/isofs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/isofs/rock.c

View file

This diff is incomplete. Download the complete patch.

fs/jffs2/dir.c

View file

This diff is incomplete. Download the complete patch.

fs/jffs2/file.c

View file

This diff is incomplete. Download the complete patch.

fs/jffs2/fs.c

View file

This diff is incomplete. Download the complete patch.

fs/jffs2/os-linux.h

View file

This diff is incomplete. Download the complete patch.

fs/jfs/acl.c

View file

This diff is incomplete. Download the complete patch.

fs/jfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/jfs/ioctl.c

View file

This diff is incomplete. Download the complete patch.

fs/jfs/jfs_imap.c

View file

This diff is incomplete. Download the complete patch.

fs/jfs/jfs_inode.c

View file

This diff is incomplete. Download the complete patch.

fs/jfs/namei.c

View file

This diff is incomplete. Download the complete patch.

fs/jfs/super.c

View file

This diff is incomplete. Download the complete patch.

fs/jfs/xattr.c

View file

This diff is incomplete. Download the complete patch.

fs/kernfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/libfs.c

View file

This diff is incomplete. Download the complete patch.

fs/minix/bitmap.c

View file

This diff is incomplete. Download the complete patch.

fs/minix/dir.c

View file

This diff is incomplete. Download the complete patch.

fs/minix/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/minix/itree_common.c

View file

This diff is incomplete. Download the complete patch.

fs/minix/namei.c

View file

This diff is incomplete. Download the complete patch.

fs/nfs/callback_proc.c

View file

This diff is incomplete. Download the complete patch.

fs/nfs/fscache.h

View file

This diff is incomplete. Download the complete patch.

fs/nfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/nfs/namespace.c

View file

This diff is incomplete. Download the complete patch.

fs/nfsd/nfsctl.c

View file

This diff is incomplete. Download the complete patch.

fs/nfsd/vfs.c

View file

This diff is incomplete. Download the complete patch.

fs/nilfs2/dir.c

View file

This diff is incomplete. Download the complete patch.

fs/nilfs2/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/nilfs2/ioctl.c

View file

This diff is incomplete. Download the complete patch.

fs/nilfs2/namei.c

View file

This diff is incomplete. Download the complete patch.

fs/nsfs.c

View file

This diff is incomplete. Download the complete patch.

fs/ntfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/ntfs/mft.c

View file

This diff is incomplete. Download the complete patch.

fs/ntfs3/file.c

View file

This diff is incomplete. Download the complete patch.

fs/ntfs3/frecord.c

View file

This diff is incomplete. Download the complete patch.

fs/ntfs3/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/ntfs3/namei.c

View file

This diff is incomplete. Download the complete patch.

fs/ntfs3/xattr.c

View file

This diff is incomplete. Download the complete patch.

fs/ocfs2/acl.c

View file

This diff is incomplete. Download the complete patch.

fs/ocfs2/alloc.c

View file

This diff is incomplete. Download the complete patch.

fs/ocfs2/aops.c

View file

This diff is incomplete. Download the complete patch.

fs/ocfs2/dir.c

View file

This diff is incomplete. Download the complete patch.

fs/ocfs2/dlmfs/dlmfs.c

View file

This diff is incomplete. Download the complete patch.

fs/ocfs2/dlmglue.c

View file

This diff is incomplete. Download the complete patch.

fs/ocfs2/file.c

View file

This diff is incomplete. Download the complete patch.

fs/ocfs2/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/ocfs2/move_extents.c

View file

This diff is incomplete. Download the complete patch.

fs/ocfs2/namei.c

View file

This diff is incomplete. Download the complete patch.

fs/ocfs2/refcounttree.c

View file

This diff is incomplete. Download the complete patch.

fs/ocfs2/xattr.c

View file

This diff is incomplete. Download the complete patch.

fs/omfs/dir.c

View file

This diff is incomplete. Download the complete patch.

fs/omfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/openpromfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/orangefs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/orangefs/namei.c

View file

This diff is incomplete. Download the complete patch.

fs/orangefs/orangefs-kernel.h

View file

This diff is incomplete. Download the complete patch.

fs/orangefs/orangefs-utils.c

View file

This diff is incomplete. Download the complete patch.

fs/overlayfs/file.c

View file

This diff is incomplete. Download the complete patch.

fs/overlayfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/overlayfs/overlayfs.h

View file

This diff is incomplete. Download the complete patch.

fs/overlayfs/util.c

View file

This diff is incomplete. Download the complete patch.

fs/pipe.c

View file

This diff is incomplete. Download the complete patch.

fs/posix_acl.c

View file

This diff is incomplete. Download the complete patch.

fs/proc/base.c

View file

This diff is incomplete. Download the complete patch.

fs/proc/fd.c

View file

This diff is incomplete. Download the complete patch.

fs/proc/generic.c

View file

This diff is incomplete. Download the complete patch.

fs/proc/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/proc/proc_net.c

View file

This diff is incomplete. Download the complete patch.

fs/proc/proc_sysctl.c

View file

This diff is incomplete. Download the complete patch.

fs/proc/root.c

View file

This diff is incomplete. Download the complete patch.

fs/proc/self.c

View file

This diff is incomplete. Download the complete patch.

fs/proc/thread_self.c

View file

This diff is incomplete. Download the complete patch.

fs/pstore/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/qnx4/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/qnx6/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/ramfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/reiserfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/reiserfs/ioctl.c

View file

This diff is incomplete. Download the complete patch.

fs/reiserfs/namei.c

View file

This diff is incomplete. Download the complete patch.

fs/reiserfs/stree.c

View file

This diff is incomplete. Download the complete patch.

fs/reiserfs/super.c

View file

This diff is incomplete. Download the complete patch.

fs/reiserfs/xattr.c

View file

This diff is incomplete. Download the complete patch.

fs/reiserfs/xattr_acl.c

View file

This diff is incomplete. Download the complete patch.

fs/romfs/super.c

View file

This diff is incomplete. Download the complete patch.

fs/smb/client/file.c

View file

This diff is incomplete. Download the complete patch.

fs/smb/client/fscache.h

View file

This diff is incomplete. Download the complete patch.

fs/smb/client/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/smb/client/smb2ops.c

View file

This diff is incomplete. Download the complete patch.

fs/smb/server/smb2pdu.c

View file

This diff is incomplete. Download the complete patch.

fs/smb/server/vfs.c

View file

This diff is incomplete. Download the complete patch.

fs/squashfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/stack.c

View file

This diff is incomplete. Download the complete patch.

fs/stat.c

View file

This diff is incomplete. Download the complete patch.

fs/sysv/dir.c

View file

This diff is incomplete. Download the complete patch.

fs/sysv/ialloc.c

View file

This diff is incomplete. Download the complete patch.

fs/sysv/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/sysv/itree.c

View file

This diff is incomplete. Download the complete patch.

fs/sysv/namei.c

View file

This diff is incomplete. Download the complete patch.

fs/tracefs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/ubifs/debug.c

View file

This diff is incomplete. Download the complete patch.

fs/ubifs/dir.c

View file

This diff is incomplete. Download the complete patch.

fs/ubifs/file.c

View file

This diff is incomplete. Download the complete patch.

fs/ubifs/ioctl.c

View file

This diff is incomplete. Download the complete patch.

fs/ubifs/journal.c

View file

This diff is incomplete. Download the complete patch.

fs/ubifs/super.c

View file

This diff is incomplete. Download the complete patch.

fs/ubifs/ubifs.h

View file

This diff is incomplete. Download the complete patch.

fs/ubifs/xattr.c

View file

This diff is incomplete. Download the complete patch.

fs/udf/ialloc.c

View file

This diff is incomplete. Download the complete patch.

fs/udf/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/udf/namei.c

View file

This diff is incomplete. Download the complete patch.

fs/udf/symlink.c

View file

This diff is incomplete. Download the complete patch.

fs/ufs/dir.c

View file

This diff is incomplete. Download the complete patch.

fs/ufs/ialloc.c

View file

This diff is incomplete. Download the complete patch.

fs/ufs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/ufs/namei.c

View file

This diff is incomplete. Download the complete patch.

fs/vboxsf/utils.c

View file

This diff is incomplete. Download the complete patch.

fs/xfs/libxfs/xfs_inode_buf.c

View file

This diff is incomplete. Download the complete patch.

fs/xfs/libxfs/xfs_trans_inode.c

View file

This diff is incomplete. Download the complete patch.

fs/xfs/xfs_acl.c

View file

This diff is incomplete. Download the complete patch.

fs/xfs/xfs_bmap_util.c

View file

This diff is incomplete. Download the complete patch.

fs/xfs/xfs_inode.c

View file

This diff is incomplete. Download the complete patch.

fs/xfs/xfs_inode_item.c

View file

This diff is incomplete. Download the complete patch.

fs/xfs/xfs_iops.c

View file

This diff is incomplete. Download the complete patch.

fs/xfs/xfs_itable.c

View file

This diff is incomplete. Download the complete patch.

fs/xfs/xfs_super.c

View file

This diff is incomplete. Download the complete patch.

fs/zonefs/super.c

View file

This diff is incomplete. Download the complete patch.

include/linux/fs.h

View file

This diff is incomplete. Download the complete patch.

include/linux/fs_stack.h

View file

This diff is incomplete. Download the complete patch.

ipc/mqueue.c

View file

This diff is incomplete. Download the complete patch.

kernel/bpf/inode.c

View file

This diff is incomplete. Download the complete patch.

mm/shmem.c

View file

This diff is incomplete. Download the complete patch.

net/sunrpc/rpc_pipe.c

View file

This diff is incomplete. Download the complete patch.

security/apparmor/apparmorfs.c

View file

This diff is incomplete. Download the complete patch.

security/apparmor/policy_unpack.c

View file

This diff is incomplete. Download the complete patch.

security/inode.c

View file

This diff is incomplete. Download the complete patch.

security/selinux/selinuxfs.c

View file

This diff is incomplete. Download the complete patch.