Re: [PATCH] fs: Rename mapping private members

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

 



On Fri, Nov 17, 2023 at 09:58:23PM +0000, Matthew Wilcox (Oracle) wrote:
> It is hard to find where mapping->private_lock, mapping->private_list and
> mapping->private_data are used, due to private_XXX being a relatively
> common name for variables and structure members in the kernel.  To fit
> with other members of struct address_space, rename them all to have an
> i_ prefix.  Tested with an allmodconfig build.

/me wonders if the prefix ought to be "as_" for address space instead of
inode.  Even though inode begat address_space, they're not the same
anymore.

--D

> 
> Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx>
> ---
>  fs/aio.c               |  16 +++---
>  fs/btrfs/extent_io.c   |  52 ++++++++++----------
>  fs/btrfs/subpage.c     |   4 +-
>  fs/buffer.c            | 108 ++++++++++++++++++++---------------------
>  fs/ext4/inode.c        |   4 +-
>  fs/gfs2/glock.c        |   2 +-
>  fs/gfs2/ops_fstype.c   |   2 +-
>  fs/hugetlbfs/inode.c   |   4 +-
>  fs/inode.c             |   8 +--
>  fs/nfs/write.c         |  12 ++---
>  fs/nilfs2/inode.c      |   4 +-
>  fs/ntfs/aops.c         |  10 ++--
>  include/linux/fs.h     |  12 ++---
>  mm/hugetlb.c           |   2 +-
>  mm/migrate.c           |   6 +--
>  virt/kvm/guest_memfd.c |   6 +--
>  16 files changed, 126 insertions(+), 126 deletions(-)
> 
> diff --git a/fs/aio.c b/fs/aio.c
> index f8589caef9c1..d02842156b35 100644
> --- a/fs/aio.c
> +++ b/fs/aio.c
> @@ -266,7 +266,7 @@ static struct file *aio_private_file(struct kioctx *ctx, loff_t nr_pages)
>  		return ERR_CAST(inode);
>  
>  	inode->i_mapping->a_ops = &aio_ctx_aops;
> -	inode->i_mapping->private_data = ctx;
> +	inode->i_mapping->i_private_data = ctx;
>  	inode->i_size = PAGE_SIZE * nr_pages;
>  
>  	file = alloc_file_pseudo(inode, aio_mnt, "[aio]",
> @@ -316,10 +316,10 @@ static void put_aio_ring_file(struct kioctx *ctx)
>  
>  		/* Prevent further access to the kioctx from migratepages */
>  		i_mapping = aio_ring_file->f_mapping;
> -		spin_lock(&i_mapping->private_lock);
> -		i_mapping->private_data = NULL;
> +		spin_lock(&i_mapping->i_private_lock);
> +		i_mapping->i_private_data = NULL;
>  		ctx->aio_ring_file = NULL;
> -		spin_unlock(&i_mapping->private_lock);
> +		spin_unlock(&i_mapping->i_private_lock);
>  
>  		fput(aio_ring_file);
>  	}
> @@ -422,9 +422,9 @@ static int aio_migrate_folio(struct address_space *mapping, struct folio *dst,
>  
>  	rc = 0;
>  
> -	/* mapping->private_lock here protects against the kioctx teardown.  */
> -	spin_lock(&mapping->private_lock);
> -	ctx = mapping->private_data;
> +	/* mapping->i_private_lock here protects against the kioctx teardown.  */
> +	spin_lock(&mapping->i_private_lock);
> +	ctx = mapping->i_private_data;
>  	if (!ctx) {
>  		rc = -EINVAL;
>  		goto out;
> @@ -476,7 +476,7 @@ static int aio_migrate_folio(struct address_space *mapping, struct folio *dst,
>  out_unlock:
>  	mutex_unlock(&ctx->ring_lock);
>  out:
> -	spin_unlock(&mapping->private_lock);
> +	spin_unlock(&mapping->i_private_lock);
>  	return rc;
>  }
>  #else
> diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
> index 03cef28d9e37..3431a53bf3fd 100644
> --- a/fs/btrfs/extent_io.c
> +++ b/fs/btrfs/extent_io.c
> @@ -870,7 +870,7 @@ static int attach_extent_buffer_page(struct extent_buffer *eb,
>  	 * will not race with any other ebs.
>  	 */
>  	if (page->mapping)
> -		lockdep_assert_held(&page->mapping->private_lock);
> +		lockdep_assert_held(&page->mapping->i_private_lock);
>  
>  	if (fs_info->nodesize >= PAGE_SIZE) {
>  		if (!PagePrivate(page))
> @@ -1736,16 +1736,16 @@ static int submit_eb_subpage(struct page *page, struct writeback_control *wbc)
>  		 * Take private lock to ensure the subpage won't be detached
>  		 * in the meantime.
>  		 */
> -		spin_lock(&page->mapping->private_lock);
> +		spin_lock(&page->mapping->i_private_lock);
>  		if (!PagePrivate(page)) {
> -			spin_unlock(&page->mapping->private_lock);
> +			spin_unlock(&page->mapping->i_private_lock);
>  			break;
>  		}
>  		spin_lock_irqsave(&subpage->lock, flags);
>  		if (!test_bit(bit_start + fs_info->subpage_info->dirty_offset,
>  			      subpage->bitmaps)) {
>  			spin_unlock_irqrestore(&subpage->lock, flags);
> -			spin_unlock(&page->mapping->private_lock);
> +			spin_unlock(&page->mapping->i_private_lock);
>  			bit_start++;
>  			continue;
>  		}
> @@ -1759,7 +1759,7 @@ static int submit_eb_subpage(struct page *page, struct writeback_control *wbc)
>  		 */
>  		eb = find_extent_buffer_nolock(fs_info, start);
>  		spin_unlock_irqrestore(&subpage->lock, flags);
> -		spin_unlock(&page->mapping->private_lock);
> +		spin_unlock(&page->mapping->i_private_lock);
>  
>  		/*
>  		 * The eb has already reached 0 refs thus find_extent_buffer()
> @@ -1811,9 +1811,9 @@ static int submit_eb_page(struct page *page, struct btrfs_eb_write_context *ctx)
>  	if (btrfs_sb(page->mapping->host->i_sb)->nodesize < PAGE_SIZE)
>  		return submit_eb_subpage(page, wbc);
>  
> -	spin_lock(&mapping->private_lock);
> +	spin_lock(&mapping->i_private_lock);
>  	if (!PagePrivate(page)) {
> -		spin_unlock(&mapping->private_lock);
> +		spin_unlock(&mapping->i_private_lock);
>  		return 0;
>  	}
>  
> @@ -1824,16 +1824,16 @@ static int submit_eb_page(struct page *page, struct btrfs_eb_write_context *ctx)
>  	 * crashing the machine for something we can survive anyway.
>  	 */
>  	if (WARN_ON(!eb)) {
> -		spin_unlock(&mapping->private_lock);
> +		spin_unlock(&mapping->i_private_lock);
>  		return 0;
>  	}
>  
>  	if (eb == ctx->eb) {
> -		spin_unlock(&mapping->private_lock);
> +		spin_unlock(&mapping->i_private_lock);
>  		return 0;
>  	}
>  	ret = atomic_inc_not_zero(&eb->refs);
> -	spin_unlock(&mapping->private_lock);
> +	spin_unlock(&mapping->i_private_lock);
>  	if (!ret)
>  		return 0;
>  
> @@ -3056,7 +3056,7 @@ static bool page_range_has_eb(struct btrfs_fs_info *fs_info, struct page *page)
>  {
>  	struct btrfs_subpage *subpage;
>  
> -	lockdep_assert_held(&page->mapping->private_lock);
> +	lockdep_assert_held(&page->mapping->i_private_lock);
>  
>  	if (PagePrivate(page)) {
>  		subpage = (struct btrfs_subpage *)page->private;
> @@ -3079,14 +3079,14 @@ static void detach_extent_buffer_page(struct extent_buffer *eb, struct page *pag
>  
>  	/*
>  	 * For mapped eb, we're going to change the page private, which should
> -	 * be done under the private_lock.
> +	 * be done under the i_private_lock.
>  	 */
>  	if (mapped)
> -		spin_lock(&page->mapping->private_lock);
> +		spin_lock(&page->mapping->i_private_lock);
>  
>  	if (!PagePrivate(page)) {
>  		if (mapped)
> -			spin_unlock(&page->mapping->private_lock);
> +			spin_unlock(&page->mapping->i_private_lock);
>  		return;
>  	}
>  
> @@ -3110,7 +3110,7 @@ static void detach_extent_buffer_page(struct extent_buffer *eb, struct page *pag
>  			detach_page_private(page);
>  		}
>  		if (mapped)
> -			spin_unlock(&page->mapping->private_lock);
> +			spin_unlock(&page->mapping->i_private_lock);
>  		return;
>  	}
>  
> @@ -3133,7 +3133,7 @@ static void detach_extent_buffer_page(struct extent_buffer *eb, struct page *pag
>  	if (!page_range_has_eb(fs_info, page))
>  		btrfs_detach_subpage(fs_info, page);
>  
> -	spin_unlock(&page->mapping->private_lock);
> +	spin_unlock(&page->mapping->i_private_lock);
>  }
>  
>  /* Release all pages attached to the extent buffer */
> @@ -3514,7 +3514,7 @@ struct extent_buffer *alloc_extent_buffer(struct btrfs_fs_info *fs_info,
>  
>  	/*
>  	 * Preallocate page->private for subpage case, so that we won't
> -	 * allocate memory with private_lock nor page lock hold.
> +	 * allocate memory with i_private_lock nor page lock hold.
>  	 *
>  	 * The memory will be freed by attach_extent_buffer_page() or freed
>  	 * manually if we exit earlier.
> @@ -3535,10 +3535,10 @@ struct extent_buffer *alloc_extent_buffer(struct btrfs_fs_info *fs_info,
>  			goto free_eb;
>  		}
>  
> -		spin_lock(&mapping->private_lock);
> +		spin_lock(&mapping->i_private_lock);
>  		exists = grab_extent_buffer(fs_info, p);
>  		if (exists) {
> -			spin_unlock(&mapping->private_lock);
> +			spin_unlock(&mapping->i_private_lock);
>  			unlock_page(p);
>  			put_page(p);
>  			mark_extent_buffer_accessed(exists, p);
> @@ -3558,7 +3558,7 @@ struct extent_buffer *alloc_extent_buffer(struct btrfs_fs_info *fs_info,
>  		 * Thus needs no special handling in error path.
>  		 */
>  		btrfs_page_inc_eb_refs(fs_info, p);
> -		spin_unlock(&mapping->private_lock);
> +		spin_unlock(&mapping->i_private_lock);
>  
>  		WARN_ON(btrfs_page_test_dirty(fs_info, p, eb->start, eb->len));
>  		eb->pages[i] = p;
> @@ -4563,12 +4563,12 @@ static int try_release_subpage_extent_buffer(struct page *page)
>  	 * Finally to check if we have cleared page private, as if we have
>  	 * released all ebs in the page, the page private should be cleared now.
>  	 */
> -	spin_lock(&page->mapping->private_lock);
> +	spin_lock(&page->mapping->i_private_lock);
>  	if (!PagePrivate(page))
>  		ret = 1;
>  	else
>  		ret = 0;
> -	spin_unlock(&page->mapping->private_lock);
> +	spin_unlock(&page->mapping->i_private_lock);
>  	return ret;
>  
>  }
> @@ -4584,9 +4584,9 @@ int try_release_extent_buffer(struct page *page)
>  	 * We need to make sure nobody is changing page->private, as we rely on
>  	 * page->private as the pointer to extent buffer.
>  	 */
> -	spin_lock(&page->mapping->private_lock);
> +	spin_lock(&page->mapping->i_private_lock);
>  	if (!PagePrivate(page)) {
> -		spin_unlock(&page->mapping->private_lock);
> +		spin_unlock(&page->mapping->i_private_lock);
>  		return 1;
>  	}
>  
> @@ -4601,10 +4601,10 @@ int try_release_extent_buffer(struct page *page)
>  	spin_lock(&eb->refs_lock);
>  	if (atomic_read(&eb->refs) != 1 || extent_buffer_under_io(eb)) {
>  		spin_unlock(&eb->refs_lock);
> -		spin_unlock(&page->mapping->private_lock);
> +		spin_unlock(&page->mapping->i_private_lock);
>  		return 0;
>  	}
> -	spin_unlock(&page->mapping->private_lock);
> +	spin_unlock(&page->mapping->i_private_lock);
>  
>  	/*
>  	 * If tree ref isn't set then we know the ref on this eb is a real ref,
> diff --git a/fs/btrfs/subpage.c b/fs/btrfs/subpage.c
> index 1b999c6e4193..2347cf15278b 100644
> --- a/fs/btrfs/subpage.c
> +++ b/fs/btrfs/subpage.c
> @@ -200,7 +200,7 @@ void btrfs_page_inc_eb_refs(const struct btrfs_fs_info *fs_info,
>  		return;
>  
>  	ASSERT(PagePrivate(page) && page->mapping);
> -	lockdep_assert_held(&page->mapping->private_lock);
> +	lockdep_assert_held(&page->mapping->i_private_lock);
>  
>  	subpage = (struct btrfs_subpage *)page->private;
>  	atomic_inc(&subpage->eb_refs);
> @@ -215,7 +215,7 @@ void btrfs_page_dec_eb_refs(const struct btrfs_fs_info *fs_info,
>  		return;
>  
>  	ASSERT(PagePrivate(page) && page->mapping);
> -	lockdep_assert_held(&page->mapping->private_lock);
> +	lockdep_assert_held(&page->mapping->i_private_lock);
>  
>  	subpage = (struct btrfs_subpage *)page->private;
>  	ASSERT(atomic_read(&subpage->eb_refs));
> diff --git a/fs/buffer.c b/fs/buffer.c
> index 4eb44ccdc6be..f653add0aed5 100644
> --- a/fs/buffer.c
> +++ b/fs/buffer.c
> @@ -180,11 +180,11 @@ EXPORT_SYMBOL(end_buffer_write_sync);
>   * Various filesystems appear to want __find_get_block to be non-blocking.
>   * But it's the page lock which protects the buffers.  To get around this,
>   * we get exclusion from try_to_free_buffers with the blockdev mapping's
> - * private_lock.
> + * i_private_lock.
>   *
> - * Hack idea: for the blockdev mapping, private_lock contention
> + * Hack idea: for the blockdev mapping, i_private_lock contention
>   * may be quite high.  This code could TryLock the page, and if that
> - * succeeds, there is no need to take private_lock.
> + * succeeds, there is no need to take i_private_lock.
>   */
>  static struct buffer_head *
>  __find_get_block_slow(struct block_device *bdev, sector_t block)
> @@ -204,7 +204,7 @@ __find_get_block_slow(struct block_device *bdev, sector_t block)
>  	if (IS_ERR(folio))
>  		goto out;
>  
> -	spin_lock(&bd_mapping->private_lock);
> +	spin_lock(&bd_mapping->i_private_lock);
>  	head = folio_buffers(folio);
>  	if (!head)
>  		goto out_unlock;
> @@ -236,7 +236,7 @@ __find_get_block_slow(struct block_device *bdev, sector_t block)
>  		       1 << bd_inode->i_blkbits);
>  	}
>  out_unlock:
> -	spin_unlock(&bd_mapping->private_lock);
> +	spin_unlock(&bd_mapping->i_private_lock);
>  	folio_put(folio);
>  out:
>  	return ret;
> @@ -467,25 +467,25 @@ EXPORT_SYMBOL(mark_buffer_async_write);
>   *
>   * The functions mark_buffer_inode_dirty(), fsync_inode_buffers(),
>   * inode_has_buffers() and invalidate_inode_buffers() are provided for the
> - * management of a list of dependent buffers at ->i_mapping->private_list.
> + * management of a list of dependent buffers at ->i_mapping->i_private_list.
>   *
>   * Locking is a little subtle: try_to_free_buffers() will remove buffers
>   * from their controlling inode's queue when they are being freed.  But
>   * try_to_free_buffers() will be operating against the *blockdev* mapping
>   * at the time, not against the S_ISREG file which depends on those buffers.
> - * So the locking for private_list is via the private_lock in the address_space
> + * So the locking for i_private_list is via the i_private_lock in the address_space
>   * which backs the buffers.  Which is different from the address_space 
>   * against which the buffers are listed.  So for a particular address_space,
> - * mapping->private_lock does *not* protect mapping->private_list!  In fact,
> - * mapping->private_list will always be protected by the backing blockdev's
> - * ->private_lock.
> + * mapping->i_private_lock does *not* protect mapping->i_private_list!  In fact,
> + * mapping->i_private_list will always be protected by the backing blockdev's
> + * ->i_private_lock.
>   *
>   * Which introduces a requirement: all buffers on an address_space's
> - * ->private_list must be from the same address_space: the blockdev's.
> + * ->i_private_list must be from the same address_space: the blockdev's.
>   *
> - * address_spaces which do not place buffers at ->private_list via these
> - * utility functions are free to use private_lock and private_list for
> - * whatever they want.  The only requirement is that list_empty(private_list)
> + * address_spaces which do not place buffers at ->i_private_list via these
> + * utility functions are free to use i_private_lock and i_private_list for
> + * whatever they want.  The only requirement is that list_empty(i_private_list)
>   * be true at clear_inode() time.
>   *
>   * FIXME: clear_inode should not call invalidate_inode_buffers().  The
> @@ -508,7 +508,7 @@ EXPORT_SYMBOL(mark_buffer_async_write);
>   */
>  
>  /*
> - * The buffer's backing address_space's private_lock must be held
> + * The buffer's backing address_space's i_private_lock must be held
>   */
>  static void __remove_assoc_queue(struct buffer_head *bh)
>  {
> @@ -519,7 +519,7 @@ static void __remove_assoc_queue(struct buffer_head *bh)
>  
>  int inode_has_buffers(struct inode *inode)
>  {
> -	return !list_empty(&inode->i_data.private_list);
> +	return !list_empty(&inode->i_data.i_private_list);
>  }
>  
>  /*
> @@ -561,7 +561,7 @@ static int osync_buffers_list(spinlock_t *lock, struct list_head *list)
>   * sync_mapping_buffers - write out & wait upon a mapping's "associated" buffers
>   * @mapping: the mapping which wants those buffers written
>   *
> - * Starts I/O against the buffers at mapping->private_list, and waits upon
> + * Starts I/O against the buffers at mapping->i_private_list, and waits upon
>   * that I/O.
>   *
>   * Basically, this is a convenience function for fsync().
> @@ -570,13 +570,13 @@ static int osync_buffers_list(spinlock_t *lock, struct list_head *list)
>   */
>  int sync_mapping_buffers(struct address_space *mapping)
>  {
> -	struct address_space *buffer_mapping = mapping->private_data;
> +	struct address_space *buffer_mapping = mapping->i_private_data;
>  
> -	if (buffer_mapping == NULL || list_empty(&mapping->private_list))
> +	if (buffer_mapping == NULL || list_empty(&mapping->i_private_list))
>  		return 0;
>  
> -	return fsync_buffers_list(&buffer_mapping->private_lock,
> -					&mapping->private_list);
> +	return fsync_buffers_list(&buffer_mapping->i_private_lock,
> +					&mapping->i_private_list);
>  }
>  EXPORT_SYMBOL(sync_mapping_buffers);
>  
> @@ -673,17 +673,17 @@ void mark_buffer_dirty_inode(struct buffer_head *bh, struct inode *inode)
>  	struct address_space *buffer_mapping = bh->b_folio->mapping;
>  
>  	mark_buffer_dirty(bh);
> -	if (!mapping->private_data) {
> -		mapping->private_data = buffer_mapping;
> +	if (!mapping->i_private_data) {
> +		mapping->i_private_data = buffer_mapping;
>  	} else {
> -		BUG_ON(mapping->private_data != buffer_mapping);
> +		BUG_ON(mapping->i_private_data != buffer_mapping);
>  	}
>  	if (!bh->b_assoc_map) {
> -		spin_lock(&buffer_mapping->private_lock);
> +		spin_lock(&buffer_mapping->i_private_lock);
>  		list_move_tail(&bh->b_assoc_buffers,
> -				&mapping->private_list);
> +				&mapping->i_private_list);
>  		bh->b_assoc_map = mapping;
> -		spin_unlock(&buffer_mapping->private_lock);
> +		spin_unlock(&buffer_mapping->i_private_lock);
>  	}
>  }
>  EXPORT_SYMBOL(mark_buffer_dirty_inode);
> @@ -706,7 +706,7 @@ EXPORT_SYMBOL(mark_buffer_dirty_inode);
>   * bit, see a bunch of clean buffers and we'd end up with dirty buffers/clean
>   * page on the dirty page list.
>   *
> - * We use private_lock to lock against try_to_free_buffers while using the
> + * We use i_private_lock to lock against try_to_free_buffers while using the
>   * page's buffer list.  Also use this to protect against clean buffers being
>   * added to the page after it was set dirty.
>   *
> @@ -718,7 +718,7 @@ bool block_dirty_folio(struct address_space *mapping, struct folio *folio)
>  	struct buffer_head *head;
>  	bool newly_dirty;
>  
> -	spin_lock(&mapping->private_lock);
> +	spin_lock(&mapping->i_private_lock);
>  	head = folio_buffers(folio);
>  	if (head) {
>  		struct buffer_head *bh = head;
> @@ -734,7 +734,7 @@ bool block_dirty_folio(struct address_space *mapping, struct folio *folio)
>  	 */
>  	folio_memcg_lock(folio);
>  	newly_dirty = !folio_test_set_dirty(folio);
> -	spin_unlock(&mapping->private_lock);
> +	spin_unlock(&mapping->i_private_lock);
>  
>  	if (newly_dirty)
>  		__folio_mark_dirty(folio, mapping, 1);
> @@ -827,7 +827,7 @@ static int fsync_buffers_list(spinlock_t *lock, struct list_head *list)
>  		smp_mb();
>  		if (buffer_dirty(bh)) {
>  			list_add(&bh->b_assoc_buffers,
> -				 &mapping->private_list);
> +				 &mapping->i_private_list);
>  			bh->b_assoc_map = mapping;
>  		}
>  		spin_unlock(lock);
> @@ -851,7 +851,7 @@ static int fsync_buffers_list(spinlock_t *lock, struct list_head *list)
>   * probably unmounting the fs, but that doesn't mean we have already
>   * done a sync().  Just drop the buffers from the inode list.
>   *
> - * NOTE: we take the inode's blockdev's mapping's private_lock.  Which
> + * NOTE: we take the inode's blockdev's mapping's i_private_lock.  Which
>   * assumes that all the buffers are against the blockdev.  Not true
>   * for reiserfs.
>   */
> @@ -859,13 +859,13 @@ void invalidate_inode_buffers(struct inode *inode)
>  {
>  	if (inode_has_buffers(inode)) {
>  		struct address_space *mapping = &inode->i_data;
> -		struct list_head *list = &mapping->private_list;
> -		struct address_space *buffer_mapping = mapping->private_data;
> +		struct list_head *list = &mapping->i_private_list;
> +		struct address_space *buffer_mapping = mapping->i_private_data;
>  
> -		spin_lock(&buffer_mapping->private_lock);
> +		spin_lock(&buffer_mapping->i_private_lock);
>  		while (!list_empty(list))
>  			__remove_assoc_queue(BH_ENTRY(list->next));
> -		spin_unlock(&buffer_mapping->private_lock);
> +		spin_unlock(&buffer_mapping->i_private_lock);
>  	}
>  }
>  EXPORT_SYMBOL(invalidate_inode_buffers);
> @@ -882,10 +882,10 @@ int remove_inode_buffers(struct inode *inode)
>  
>  	if (inode_has_buffers(inode)) {
>  		struct address_space *mapping = &inode->i_data;
> -		struct list_head *list = &mapping->private_list;
> -		struct address_space *buffer_mapping = mapping->private_data;
> +		struct list_head *list = &mapping->i_private_list;
> +		struct address_space *buffer_mapping = mapping->i_private_data;
>  
> -		spin_lock(&buffer_mapping->private_lock);
> +		spin_lock(&buffer_mapping->i_private_lock);
>  		while (!list_empty(list)) {
>  			struct buffer_head *bh = BH_ENTRY(list->next);
>  			if (buffer_dirty(bh)) {
> @@ -894,7 +894,7 @@ int remove_inode_buffers(struct inode *inode)
>  			}
>  			__remove_assoc_queue(bh);
>  		}
> -		spin_unlock(&buffer_mapping->private_lock);
> +		spin_unlock(&buffer_mapping->i_private_lock);
>  	}
>  	return ret;
>  }
> @@ -1067,10 +1067,10 @@ static bool grow_dev_folio(struct block_device *bdev, sector_t block,
>  	 * lock to be atomic wrt __find_get_block(), which does not
>  	 * run under the folio lock.
>  	 */
> -	spin_lock(&inode->i_mapping->private_lock);
> +	spin_lock(&inode->i_mapping->i_private_lock);
>  	link_dev_buffers(folio, bh);
>  	end_block = folio_init_buffers(folio, bdev, size);
> -	spin_unlock(&inode->i_mapping->private_lock);
> +	spin_unlock(&inode->i_mapping->i_private_lock);
>  unlock:
>  	folio_unlock(folio);
>  	folio_put(folio);
> @@ -1162,7 +1162,7 @@ __getblk_slow(struct block_device *bdev, sector_t block,
>   * and then attach the address_space's inode to its superblock's dirty
>   * inode list.
>   *
> - * mark_buffer_dirty() is atomic.  It takes bh->b_folio->mapping->private_lock,
> + * mark_buffer_dirty() is atomic.  It takes bh->b_folio->mapping->i_private_lock,
>   * i_pages lock and mapping->host->i_lock.
>   */
>  void mark_buffer_dirty(struct buffer_head *bh)
> @@ -1240,10 +1240,10 @@ void __bforget(struct buffer_head *bh)
>  	if (bh->b_assoc_map) {
>  		struct address_space *buffer_mapping = bh->b_folio->mapping;
>  
> -		spin_lock(&buffer_mapping->private_lock);
> +		spin_lock(&buffer_mapping->i_private_lock);
>  		list_del_init(&bh->b_assoc_buffers);
>  		bh->b_assoc_map = NULL;
> -		spin_unlock(&buffer_mapping->private_lock);
> +		spin_unlock(&buffer_mapping->i_private_lock);
>  	}
>  	__brelse(bh);
>  }
> @@ -1632,7 +1632,7 @@ EXPORT_SYMBOL(block_invalidate_folio);
>  
>  /*
>   * We attach and possibly dirty the buffers atomically wrt
> - * block_dirty_folio() via private_lock.  try_to_free_buffers
> + * block_dirty_folio() via i_private_lock.  try_to_free_buffers
>   * is already excluded via the folio lock.
>   */
>  struct buffer_head *create_empty_buffers(struct folio *folio,
> @@ -1650,7 +1650,7 @@ struct buffer_head *create_empty_buffers(struct folio *folio,
>  	} while (bh);
>  	tail->b_this_page = head;
>  
> -	spin_lock(&folio->mapping->private_lock);
> +	spin_lock(&folio->mapping->i_private_lock);
>  	if (folio_test_uptodate(folio) || folio_test_dirty(folio)) {
>  		bh = head;
>  		do {
> @@ -1662,7 +1662,7 @@ struct buffer_head *create_empty_buffers(struct folio *folio,
>  		} while (bh != head);
>  	}
>  	folio_attach_private(folio, head);
> -	spin_unlock(&folio->mapping->private_lock);
> +	spin_unlock(&folio->mapping->i_private_lock);
>  
>  	return head;
>  }
> @@ -1709,7 +1709,7 @@ void clean_bdev_aliases(struct block_device *bdev, sector_t block, sector_t len)
>  			if (!folio_buffers(folio))
>  				continue;
>  			/*
> -			 * We use folio lock instead of bd_mapping->private_lock
> +			 * We use folio lock instead of bd_mapping->i_private_lock
>  			 * to pin buffers here since we can afford to sleep and
>  			 * it scales better than a global spinlock lock.
>  			 */
> @@ -2859,7 +2859,7 @@ EXPORT_SYMBOL(sync_dirty_buffer);
>   * are unused, and releases them if so.
>   *
>   * Exclusion against try_to_free_buffers may be obtained by either
> - * locking the folio or by holding its mapping's private_lock.
> + * locking the folio or by holding its mapping's i_private_lock.
>   *
>   * If the folio is dirty but all the buffers are clean then we need to
>   * be sure to mark the folio clean as well.  This is because the folio
> @@ -2870,7 +2870,7 @@ EXPORT_SYMBOL(sync_dirty_buffer);
>   * The same applies to regular filesystem folios: if all the buffers are
>   * clean then we set the folio clean and proceed.  To do that, we require
>   * total exclusion from block_dirty_folio().  That is obtained with
> - * private_lock.
> + * i_private_lock.
>   *
>   * try_to_free_buffers() is non-blocking.
>   */
> @@ -2922,7 +2922,7 @@ bool try_to_free_buffers(struct folio *folio)
>  		goto out;
>  	}
>  
> -	spin_lock(&mapping->private_lock);
> +	spin_lock(&mapping->i_private_lock);
>  	ret = drop_buffers(folio, &buffers_to_free);
>  
>  	/*
> @@ -2935,13 +2935,13 @@ bool try_to_free_buffers(struct folio *folio)
>  	 * the folio's buffers clean.  We discover that here and clean
>  	 * the folio also.
>  	 *
> -	 * private_lock must be held over this entire operation in order
> +	 * i_private_lock must be held over this entire operation in order
>  	 * to synchronise against block_dirty_folio and prevent the
>  	 * dirty bit from being lost.
>  	 */
>  	if (ret)
>  		folio_cancel_dirty(folio);
> -	spin_unlock(&mapping->private_lock);
> +	spin_unlock(&mapping->i_private_lock);
>  out:
>  	if (buffers_to_free) {
>  		struct buffer_head *bh = buffers_to_free;
> diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
> index 61277f7f8722..0558c8c986d4 100644
> --- a/fs/ext4/inode.c
> +++ b/fs/ext4/inode.c
> @@ -1261,7 +1261,7 @@ static int write_end_fn(handle_t *handle, struct inode *inode,
>   * We need to pick up the new inode size which generic_commit_write gave us
>   * `file' can be NULL - eg, when called from page_symlink().
>   *
> - * ext4 never places buffers on inode->i_mapping->private_list.  metadata
> + * ext4 never places buffers on inode->i_mapping->i_private_list.  metadata
>   * buffers are managed internally.
>   */
>  static int ext4_write_end(struct file *file,
> @@ -3213,7 +3213,7 @@ static bool ext4_inode_datasync_dirty(struct inode *inode)
>  	}
>  
>  	/* Any metadata buffers to write? */
> -	if (!list_empty(&inode->i_mapping->private_list))
> +	if (!list_empty(&inode->i_mapping->i_private_list))
>  		return true;
>  	return inode->i_state & I_DIRTY_DATASYNC;
>  }
> diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
> index 2cb65f76eec8..f28c67181230 100644
> --- a/fs/gfs2/glock.c
> +++ b/fs/gfs2/glock.c
> @@ -1230,7 +1230,7 @@ int gfs2_glock_get(struct gfs2_sbd *sdp, u64 number,
>  		mapping->host = s->s_bdev->bd_inode;
>  		mapping->flags = 0;
>  		mapping_set_gfp_mask(mapping, GFP_NOFS);
> -		mapping->private_data = NULL;
> +		mapping->i_private_data = NULL;
>  		mapping->writeback_index = 0;
>  	}
>  
> diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c
> index b108c5d26839..00ce89bdf32c 100644
> --- a/fs/gfs2/ops_fstype.c
> +++ b/fs/gfs2/ops_fstype.c
> @@ -117,7 +117,7 @@ static struct gfs2_sbd *init_sbd(struct super_block *sb)
>  	mapping->host = sb->s_bdev->bd_inode;
>  	mapping->flags = 0;
>  	mapping_set_gfp_mask(mapping, GFP_NOFS);
> -	mapping->private_data = NULL;
> +	mapping->i_private_data = NULL;
>  	mapping->writeback_index = 0;
>  
>  	spin_lock_init(&sdp->sd_log_lock);
> diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
> index f757d4f7ad98..05609ab15cbc 100644
> --- a/fs/hugetlbfs/inode.c
> +++ b/fs/hugetlbfs/inode.c
> @@ -686,7 +686,7 @@ static void hugetlbfs_evict_inode(struct inode *inode)
>  	 * at inode creation time.  If this is a device special inode,
>  	 * i_mapping may not point to the original address space.
>  	 */
> -	resv_map = (struct resv_map *)(&inode->i_data)->private_data;
> +	resv_map = (struct resv_map *)(&inode->i_data)->i_private_data;
>  	/* Only regular and link inodes have associated reserve maps */
>  	if (resv_map)
>  		resv_map_release(&resv_map->refs);
> @@ -1000,7 +1000,7 @@ static struct inode *hugetlbfs_get_inode(struct super_block *sb,
>  				&hugetlbfs_i_mmap_rwsem_key);
>  		inode->i_mapping->a_ops = &hugetlbfs_aops;
>  		simple_inode_init_ts(inode);
> -		inode->i_mapping->private_data = resv_map;
> +		inode->i_mapping->i_private_data = resv_map;
>  		info->seals = F_SEAL_SEAL;
>  		switch (mode & S_IFMT) {
>  		default:
> diff --git a/fs/inode.c b/fs/inode.c
> index edcd8a61975f..788aa0aa542b 100644
> --- a/fs/inode.c
> +++ b/fs/inode.c
> @@ -209,7 +209,7 @@ int inode_init_always(struct super_block *sb, struct inode *inode)
>  	atomic_set(&mapping->nr_thps, 0);
>  #endif
>  	mapping_set_gfp_mask(mapping, GFP_HIGHUSER_MOVABLE);
> -	mapping->private_data = NULL;
> +	mapping->i_private_data = NULL;
>  	mapping->writeback_index = 0;
>  	init_rwsem(&mapping->invalidate_lock);
>  	lockdep_set_class_and_name(&mapping->invalidate_lock,
> @@ -396,8 +396,8 @@ static void __address_space_init_once(struct address_space *mapping)
>  {
>  	xa_init_flags(&mapping->i_pages, XA_FLAGS_LOCK_IRQ | XA_FLAGS_ACCOUNT);
>  	init_rwsem(&mapping->i_mmap_rwsem);
> -	INIT_LIST_HEAD(&mapping->private_list);
> -	spin_lock_init(&mapping->private_lock);
> +	INIT_LIST_HEAD(&mapping->i_private_list);
> +	spin_lock_init(&mapping->i_private_lock);
>  	mapping->i_mmap = RB_ROOT_CACHED;
>  }
>  
> @@ -618,7 +618,7 @@ void clear_inode(struct inode *inode)
>  	 * nor even WARN_ON(!mapping_empty).
>  	 */
>  	xa_unlock_irq(&inode->i_data.i_pages);
> -	BUG_ON(!list_empty(&inode->i_data.private_list));
> +	BUG_ON(!list_empty(&inode->i_data.i_private_list));
>  	BUG_ON(!(inode->i_state & I_FREEING));
>  	BUG_ON(inode->i_state & I_CLEAR);
>  	BUG_ON(!list_empty(&inode->i_wb_list));
> diff --git a/fs/nfs/write.c b/fs/nfs/write.c
> index b664caea8b4e..7248705faef4 100644
> --- a/fs/nfs/write.c
> +++ b/fs/nfs/write.c
> @@ -192,13 +192,13 @@ static struct nfs_page *nfs_folio_find_private_request(struct folio *folio)
>  
>  	if (!folio_test_private(folio))
>  		return NULL;
> -	spin_lock(&mapping->private_lock);
> +	spin_lock(&mapping->i_private_lock);
>  	req = nfs_folio_private_request(folio);
>  	if (req) {
>  		WARN_ON_ONCE(req->wb_head != req);
>  		kref_get(&req->wb_kref);
>  	}
> -	spin_unlock(&mapping->private_lock);
> +	spin_unlock(&mapping->i_private_lock);
>  	return req;
>  }
>  
> @@ -769,13 +769,13 @@ static void nfs_inode_add_request(struct nfs_page *req)
>  	 * Swap-space should not get truncated. Hence no need to plug the race
>  	 * with invalidate/truncate.
>  	 */
> -	spin_lock(&mapping->private_lock);
> +	spin_lock(&mapping->i_private_lock);
>  	if (likely(!folio_test_swapcache(folio))) {
>  		set_bit(PG_MAPPED, &req->wb_flags);
>  		folio_set_private(folio);
>  		folio->private = req;
>  	}
> -	spin_unlock(&mapping->private_lock);
> +	spin_unlock(&mapping->i_private_lock);
>  	atomic_long_inc(&nfsi->nrequests);
>  	/* this a head request for a page group - mark it as having an
>  	 * extra reference so sub groups can follow suit.
> @@ -796,13 +796,13 @@ static void nfs_inode_remove_request(struct nfs_page *req)
>  		struct folio *folio = nfs_page_to_folio(req->wb_head);
>  		struct address_space *mapping = folio_file_mapping(folio);
>  
> -		spin_lock(&mapping->private_lock);
> +		spin_lock(&mapping->i_private_lock);
>  		if (likely(folio && !folio_test_swapcache(folio))) {
>  			folio->private = NULL;
>  			folio_clear_private(folio);
>  			clear_bit(PG_MAPPED, &req->wb_head->wb_flags);
>  		}
> -		spin_unlock(&mapping->private_lock);
> +		spin_unlock(&mapping->i_private_lock);
>  	}
>  
>  	if (test_and_clear_bit(PG_INODE_REF, &req->wb_flags)) {
> diff --git a/fs/nilfs2/inode.c b/fs/nilfs2/inode.c
> index 8fe784f62720..9c334c722fc1 100644
> --- a/fs/nilfs2/inode.c
> +++ b/fs/nilfs2/inode.c
> @@ -215,7 +215,7 @@ static bool nilfs_dirty_folio(struct address_space *mapping,
>  	/*
>  	 * The page may not be locked, eg if called from try_to_unmap_one()
>  	 */
> -	spin_lock(&mapping->private_lock);
> +	spin_lock(&mapping->i_private_lock);
>  	head = folio_buffers(folio);
>  	if (head) {
>  		struct buffer_head *bh = head;
> @@ -231,7 +231,7 @@ static bool nilfs_dirty_folio(struct address_space *mapping,
>  	} else if (ret) {
>  		nr_dirty = 1 << (folio_shift(folio) - inode->i_blkbits);
>  	}
> -	spin_unlock(&mapping->private_lock);
> +	spin_unlock(&mapping->i_private_lock);
>  
>  	if (nr_dirty)
>  		nilfs_set_file_dirty(inode, nr_dirty);
> diff --git a/fs/ntfs/aops.c b/fs/ntfs/aops.c
> index 71e31e789b29..548f3b51aa5f 100644
> --- a/fs/ntfs/aops.c
> +++ b/fs/ntfs/aops.c
> @@ -1690,7 +1690,7 @@ const struct address_space_operations ntfs_mst_aops = {
>   *
>   * If the page does not have buffers, we create them and set them uptodate.
>   * The page may not be locked which is why we need to handle the buffers under
> - * the mapping->private_lock.  Once the buffers are marked dirty we no longer
> + * the mapping->i_private_lock.  Once the buffers are marked dirty we no longer
>   * need the lock since try_to_free_buffers() does not free dirty buffers.
>   */
>  void mark_ntfs_record_dirty(struct page *page, const unsigned int ofs) {
> @@ -1702,11 +1702,11 @@ void mark_ntfs_record_dirty(struct page *page, const unsigned int ofs) {
>  	BUG_ON(!PageUptodate(page));
>  	end = ofs + ni->itype.index.block_size;
>  	bh_size = VFS_I(ni)->i_sb->s_blocksize;
> -	spin_lock(&mapping->private_lock);
> +	spin_lock(&mapping->i_private_lock);
>  	if (unlikely(!page_has_buffers(page))) {
> -		spin_unlock(&mapping->private_lock);
> +		spin_unlock(&mapping->i_private_lock);
>  		bh = head = alloc_page_buffers(page, bh_size, true);
> -		spin_lock(&mapping->private_lock);
> +		spin_lock(&mapping->i_private_lock);
>  		if (likely(!page_has_buffers(page))) {
>  			struct buffer_head *tail;
>  
> @@ -1730,7 +1730,7 @@ void mark_ntfs_record_dirty(struct page *page, const unsigned int ofs) {
>  			break;
>  		set_buffer_dirty(bh);
>  	} while ((bh = bh->b_this_page) != head);
> -	spin_unlock(&mapping->private_lock);
> +	spin_unlock(&mapping->i_private_lock);
>  	filemap_dirty_folio(mapping, page_folio(page));
>  	if (unlikely(buffers_to_free)) {
>  		do {
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index b2a3f1c61c19..5969e290f3d9 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -463,9 +463,9 @@ extern const struct address_space_operations empty_aops;
>   * @a_ops: Methods.
>   * @flags: Error bits and flags (AS_*).
>   * @wb_err: The most recent error which has occurred.
> - * @private_lock: For use by the owner of the address_space.
> - * @private_list: For use by the owner of the address_space.
> - * @private_data: For use by the owner of the address_space.
> + * @i_private_lock: For use by the owner of the address_space.
> + * @i_private_list: For use by the owner of the address_space.
> + * @i_private_data: For use by the owner of the address_space.
>   */
>  struct address_space {
>  	struct inode		*host;
> @@ -484,9 +484,9 @@ struct address_space {
>  	unsigned long		flags;
>  	struct rw_semaphore	i_mmap_rwsem;
>  	errseq_t		wb_err;
> -	spinlock_t		private_lock;
> -	struct list_head	private_list;
> -	void			*private_data;
> +	spinlock_t		i_private_lock;
> +	struct list_head	i_private_list;
> +	void *			i_private_data;
>  } __attribute__((aligned(sizeof(long)))) __randomize_layout;
>  	/*
>  	 * On most architectures that alignment is already the case; but
> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> index 6feb3e0630d1..c466551e2fd9 100644
> --- a/mm/hugetlb.c
> +++ b/mm/hugetlb.c
> @@ -1141,7 +1141,7 @@ static inline struct resv_map *inode_resv_map(struct inode *inode)
>  	 * The VERY common case is inode->mapping == &inode->i_data but,
>  	 * this may not be true for device special inodes.
>  	 */
> -	return (struct resv_map *)(&inode->i_data)->private_data;
> +	return (struct resv_map *)(&inode->i_data)->i_private_data;
>  }
>  
>  static struct resv_map *vma_resv_map(struct vm_area_struct *vma)
> diff --git a/mm/migrate.c b/mm/migrate.c
> index ff0fbf95a384..d9d2b9432e81 100644
> --- a/mm/migrate.c
> +++ b/mm/migrate.c
> @@ -746,7 +746,7 @@ static int __buffer_migrate_folio(struct address_space *mapping,
>  
>  recheck_buffers:
>  		busy = false;
> -		spin_lock(&mapping->private_lock);
> +		spin_lock(&mapping->i_private_lock);
>  		bh = head;
>  		do {
>  			if (atomic_read(&bh->b_count)) {
> @@ -760,7 +760,7 @@ static int __buffer_migrate_folio(struct address_space *mapping,
>  				rc = -EAGAIN;
>  				goto unlock_buffers;
>  			}
> -			spin_unlock(&mapping->private_lock);
> +			spin_unlock(&mapping->i_private_lock);
>  			invalidate_bh_lrus();
>  			invalidated = true;
>  			goto recheck_buffers;
> @@ -787,7 +787,7 @@ static int __buffer_migrate_folio(struct address_space *mapping,
>  	rc = MIGRATEPAGE_SUCCESS;
>  unlock_buffers:
>  	if (check_refs)
> -		spin_unlock(&mapping->private_lock);
> +		spin_unlock(&mapping->i_private_lock);
>  	bh = head;
>  	do {
>  		unlock_buffer(bh);
> diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c
> index b99272396119..e2b9ef136fa4 100644
> --- a/virt/kvm/guest_memfd.c
> +++ b/virt/kvm/guest_memfd.c
> @@ -97,7 +97,7 @@ static void kvm_gmem_invalidate_end(struct kvm_gmem *gmem, pgoff_t start,
>  
>  static long kvm_gmem_punch_hole(struct inode *inode, loff_t offset, loff_t len)
>  {
> -	struct list_head *gmem_list = &inode->i_mapping->private_list;
> +	struct list_head *gmem_list = &inode->i_mapping->i_private_list;
>  	pgoff_t start = offset >> PAGE_SHIFT;
>  	pgoff_t end = (offset + len) >> PAGE_SHIFT;
>  	struct kvm_gmem *gmem;
> @@ -269,7 +269,7 @@ static int kvm_gmem_migrate_folio(struct address_space *mapping,
>  
>  static int kvm_gmem_error_page(struct address_space *mapping, struct page *page)
>  {
> -	struct list_head *gmem_list = &mapping->private_list;
> +	struct list_head *gmem_list = &mapping->i_private_list;
>  	struct kvm_gmem *gmem;
>  	pgoff_t start, end;
>  
> @@ -369,7 +369,7 @@ static int __kvm_gmem_create(struct kvm *kvm, loff_t size, u64 flags)
>  	kvm_get_kvm(kvm);
>  	gmem->kvm = kvm;
>  	xa_init(&gmem->bindings);
> -	list_add(&gmem->entry, &inode->i_mapping->private_list);
> +	list_add(&gmem->entry, &inode->i_mapping->i_private_list);
>  
>  	fd_install(fd, file);
>  	return fd;
> -- 
> 2.42.0
> 




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

  Powered by Linux