Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1193755a authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull vfs changes from Al Viro.
 "A lot of misc stuff.  The obvious groups:
   * Miklos' atomic_open series; kills the damn abuse of
     ->d_revalidate() by NFS, which was the major stumbling block for
     all work in that area.
   * ripping security_file_mmap() and dealing with deadlocks in the
     area; sanitizing the neighborhood of vm_mmap()/vm_munmap() in
     general.
   * ->encode_fh() switched to saner API; insane fake dentry in
     mm/cleancache.c gone.
   * assorted annotations in fs (endianness, __user)
   * parts of Artem's ->s_dirty work (jff2 and reiserfs parts)
   * ->update_time() work from Josef.
   * other bits and pieces all over the place.

  Normally it would've been in two or three pull requests, but
  signal.git stuff had eaten a lot of time during this cycle ;-/"

Fix up trivial conflicts in Documentation/filesystems/vfs.txt (the
'truncate_range' inode method was removed by the VM changes, the VFS
update adds an 'update_time()' method), and in fs/btrfs/ulist.[ch] (due
to sparse fix added twice, with other changes nearby).

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (95 commits)
  nfs: don't open in ->d_revalidate
  vfs: retry last component if opening stale dentry
  vfs: nameidata_to_filp(): don't throw away file on error
  vfs: nameidata_to_filp(): inline __dentry_open()
  vfs: do_dentry_open(): don't put filp
  vfs: split __dentry_open()
  vfs: do_last() common post lookup
  vfs: do_last(): add audit_inode before open
  vfs: do_last(): only return EISDIR for O_CREAT
  vfs: do_last(): check LOOKUP_DIRECTORY
  vfs: do_last(): make ENOENT exit RCU safe
  vfs: make follow_link check RCU safe
  vfs: do_last(): use inode variable
  vfs: do_last(): inline walk_component()
  vfs: do_last(): make exit RCU safe
  vfs: split do_lookup()
  Btrfs: move over to use ->update_time
  fs: introduce inode operation ->update_time
  reiserfs: get rid of resierfs_sync_super
  reiserfs: mark the superblock as dirty a bit later
  ...
parents 4edebed8 0ef97dcf
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -61,6 +61,7 @@ ata *);
	ssize_t (*listxattr) (struct dentry *, char *, size_t);
	ssize_t (*listxattr) (struct dentry *, char *, size_t);
	int (*removexattr) (struct dentry *, const char *);
	int (*removexattr) (struct dentry *, const char *);
	int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len);
	int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len);
	void (*update_time)(struct inode *, struct timespec *, int);


locking rules:
locking rules:
	all may block
	all may block
@@ -87,6 +88,8 @@ getxattr: no
listxattr:	no
listxattr:	no
removexattr:	yes
removexattr:	yes
fiemap:		no
fiemap:		no
update_time:	no

	Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on
	Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on
victim.
victim.
	cross-directory ->rename() has (per-superblock) ->s_vfs_rename_sem.
	cross-directory ->rename() has (per-superblock) ->s_vfs_rename_sem.
+4 −0
Original line number Original line Diff line number Diff line
@@ -363,6 +363,7 @@ struct inode_operations {
	ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t);
	ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t);
	ssize_t (*listxattr) (struct dentry *, char *, size_t);
	ssize_t (*listxattr) (struct dentry *, char *, size_t);
	int (*removexattr) (struct dentry *, const char *);
	int (*removexattr) (struct dentry *, const char *);
	void (*update_time)(struct inode *, struct timespec *, int);
};
};


Again, all methods are called without any locks being held, unless
Again, all methods are called without any locks being held, unless
@@ -471,6 +472,9 @@ otherwise noted.
  removexattr: called by the VFS to remove an extended attribute from
  removexattr: called by the VFS to remove an extended attribute from
  	a file. This method is called by removexattr(2) system call.
  	a file. This method is called by removexattr(2) system call.


  update_time: called by the VFS to update a specific time or the i_version of
  	an inode.  If this is not defined the VFS will update the inode itself
  	and call mark_inode_dirty_sync.


The Address Space Object
The Address Space Object
========================
========================
+0 −3
Original line number Original line Diff line number Diff line
@@ -10,9 +10,6 @@
typedef unsigned int	__kernel_ino_t;
typedef unsigned int	__kernel_ino_t;
#define __kernel_ino_t __kernel_ino_t
#define __kernel_ino_t __kernel_ino_t


typedef unsigned int	__kernel_nlink_t;
#define __kernel_nlink_t __kernel_nlink_t

typedef unsigned long	__kernel_sigset_t;	/* at least 32 bits */
typedef unsigned long	__kernel_sigset_t;	/* at least 32 bits */


#include <asm-generic/posix_types.h>
#include <asm-generic/posix_types.h>
+0 −3
Original line number Original line Diff line number Diff line
@@ -22,9 +22,6 @@
typedef unsigned short		__kernel_mode_t;
typedef unsigned short		__kernel_mode_t;
#define __kernel_mode_t __kernel_mode_t
#define __kernel_mode_t __kernel_mode_t


typedef unsigned short		__kernel_nlink_t;
#define __kernel_nlink_t __kernel_nlink_t

typedef unsigned short		__kernel_ipc_pid_t;
typedef unsigned short		__kernel_ipc_pid_t;
#define __kernel_ipc_pid_t __kernel_ipc_pid_t
#define __kernel_ipc_pid_t __kernel_ipc_pid_t


+0 −3
Original line number Original line Diff line number Diff line
@@ -17,9 +17,6 @@
typedef unsigned short  __kernel_mode_t;
typedef unsigned short  __kernel_mode_t;
#define __kernel_mode_t __kernel_mode_t
#define __kernel_mode_t __kernel_mode_t


typedef unsigned short  __kernel_nlink_t;
#define __kernel_nlink_t __kernel_nlink_t

typedef unsigned short  __kernel_ipc_pid_t;
typedef unsigned short  __kernel_ipc_pid_t;
#define __kernel_ipc_pid_t __kernel_ipc_pid_t
#define __kernel_ipc_pid_t __kernel_ipc_pid_t


Loading