Re: [PATCH] Documentation: filesystems: update filesystem locking documentation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jul 31, 2017 at 11:53:35AM -0400, Sean Anderson wrote:
> -		i_mutex(inode)
> -lookup:		yes
> +		i_rwsem(inode)
> +lookup:		shared
>  create:		yes

Could you change all the 'yes' to 'exclusive' when it's changed from mutex
to rwsem?

>  link:		yes (both)
>  mknod:		yes
> @@ -92,7 +92,7 @@ atomic_open:	yes
>  tmpfile:	no
>  
>  
> -	Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on
> +	Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_rwsem on
>  victim.
>  	cross-directory ->rename() has (per-superblock) ->s_vfs_rename_sem.
>  
> @@ -111,7 +111,7 @@ prototypes:
>  
>  locking rules:
>  	all may block
> -		i_mutex(inode)
> +		i_rwsem(inode)
>  list:		no
>  get:		no
>  set:		yes
> @@ -217,7 +217,7 @@ prototypes:
>  locking rules:
>  	All except set_page_dirty and freepage may block
>  
> -			PageLocked(page)	i_mutex
> +			PageLocked(page)	i_rwsem
>  writepage:		yes, unlocks (see below)
>  readpage:		yes, unlocks
>  writepages:
> @@ -439,6 +439,7 @@ prototypes:
>  	ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);
>  	ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);
>  	int (*iterate) (struct file *, struct dir_context *);
> +	int (*iterate_shared) (struct file *, struct dir_context *);
>  	unsigned int (*poll) (struct file *, struct poll_table_struct *);
>  	long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
>  	long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
> @@ -480,6 +481,10 @@ mutex or just to use i_size_read() instead.
>  Note: this does not protect the file->f_pos against concurrent modifications
>  since this is something the userspace has to take care about.
>  
> +->iterate() is called with i_rwsem held.
> +
> +->iterate_shared() is called with i_rwsem shared.
> +
>  ->fasync() is responsible for maintaining the FASYNC bit in filp->f_flags.
>  Most instances call fasync_helper(), which does that maintenance, so it's
>  not normally something one needs to worry about.  Return values > 0 will be
> -- 
> 2.13.2
> 






[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux