From: Qu Wenruo <quwenruo.btrfs@gmx.com>
To: fdmanana@kernel.org, linux-btrfs@vger.kernel.org
Subject: Re: [PATCH 3/3] btrfs: use btrfs_inode local variable at btrfs_page_mkwrite()
Date: Wed, 9 Jul 2025 19:34:52 +0930 [thread overview]
Message-ID: <c10339a8-cb80-4fba-803d-797f51d9313d@gmx.com> (raw)
In-Reply-To: <6aefca8792028e0544de96b2d7f5b34ea836d1c7.1752050704.git.fdmanana@suse.com>
在 2025/7/9 18:23, fdmanana@kernel.org 写道:
> From: Filipe Manana <fdmanana@suse.com>
>
> Most of the time we want to use the btrfs_inode, so change the local inode
> variable to be a btrfs_inode instead of a vfs inode, reducing verbosity
> by eleminating a lot of BTRFS_I() calls.
>
> Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Qu Wenruo <wqu@suse.com>
[...]
> - if (btrfs_check_nocow_lock(BTRFS_I(inode), page_start,
> - &write_bytes, false) <= 0)
> + if (btrfs_check_nocow_lock(inode, page_start, &write_bytes, false) <= 0)
I guess we are no longer limited by 80 chars line limit anymore?
What would be the new limit? 100 from checkpatch or something slightly
lower like 90?
Thanks,
Qu
> goto out_noreserve;
>
> if (write_bytes < reserved_space)
> @@ -1876,11 +1875,11 @@ static vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
>
> only_release_metadata = true;
> }
> - ret = btrfs_delalloc_reserve_metadata(BTRFS_I(inode), reserved_space,
> + ret = btrfs_delalloc_reserve_metadata(inode, reserved_space,
> reserved_space, false);
> if (ret < 0) {
> if (!only_release_metadata)
> - btrfs_free_reserved_data_space(BTRFS_I(inode), data_reserved,
> + btrfs_free_reserved_data_space(inode, data_reserved,
> page_start, reserved_space);
> goto out_noreserve;
> }
> @@ -1889,11 +1888,11 @@ static vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
> if (ret < 0)
> goto out;
> again:
> - down_read(&BTRFS_I(inode)->i_mmap_lock);
> + down_read(&inode->i_mmap_lock);
> folio_lock(folio);
> - size = i_size_read(inode);
> + size = i_size_read(&inode->vfs_inode);
>
> - if ((folio->mapping != inode->i_mapping) ||
> + if ((folio->mapping != inode->vfs_inode.i_mapping) ||
> (page_start >= size)) {
> /* Page got truncated out from underneath us. */
> goto out_unlock;
> @@ -1911,11 +1910,11 @@ static vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
> * We can't set the delalloc bits if there are pending ordered
> * extents. Drop our locks and wait for them to finish.
> */
> - ordered = btrfs_lookup_ordered_range(BTRFS_I(inode), page_start, fsize);
> + ordered = btrfs_lookup_ordered_range(inode, page_start, fsize);
> if (ordered) {
> btrfs_unlock_extent(io_tree, page_start, page_end, &cached_state);
> folio_unlock(folio);
> - up_read(&BTRFS_I(inode)->i_mmap_lock);
> + up_read(&inode->i_mmap_lock);
> btrfs_start_ordered_extent(ordered);
> btrfs_put_ordered_extent(ordered);
> goto again;
> @@ -1926,7 +1925,7 @@ static vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
> if (reserved_space < fsize) {
> end = page_start + reserved_space - 1;
> if (!only_release_metadata)
> - btrfs_delalloc_release_space(BTRFS_I(inode),
> + btrfs_delalloc_release_space(inode,
> data_reserved, end + 1,
> fsize - reserved_space,
> true);
> @@ -1944,8 +1943,7 @@ static vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
> EXTENT_DELALLOC | EXTENT_DO_ACCOUNTING |
> EXTENT_DEFRAG, &cached_state);
>
> - ret = btrfs_set_extent_delalloc(BTRFS_I(inode), page_start, end, 0,
> - &cached_state);
> + ret = btrfs_set_extent_delalloc(inode, page_start, end, 0, &cached_state);
> if (ret < 0) {
> btrfs_unlock_extent(io_tree, page_start, page_end, &cached_state);
> goto out_unlock;
> @@ -1964,38 +1962,38 @@ static vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
> btrfs_folio_set_dirty(fs_info, folio, page_start, end + 1 - page_start);
> btrfs_folio_set_uptodate(fs_info, folio, page_start, end + 1 - page_start);
>
> - btrfs_set_inode_last_sub_trans(BTRFS_I(inode));
> + btrfs_set_inode_last_sub_trans(inode);
>
> if (only_release_metadata)
> btrfs_set_extent_bit(io_tree, page_start, end, EXTENT_NORESERVE,
> &cached_state);
>
> btrfs_unlock_extent(io_tree, page_start, page_end, &cached_state);
> - up_read(&BTRFS_I(inode)->i_mmap_lock);
> + up_read(&inode->i_mmap_lock);
>
> - btrfs_delalloc_release_extents(BTRFS_I(inode), fsize);
> + btrfs_delalloc_release_extents(inode, fsize);
> if (only_release_metadata)
> - btrfs_check_nocow_unlock(BTRFS_I(inode));
> - sb_end_pagefault(inode->i_sb);
> + btrfs_check_nocow_unlock(inode);
> + sb_end_pagefault(inode->vfs_inode.i_sb);
> extent_changeset_free(data_reserved);
> return VM_FAULT_LOCKED;
>
> out_unlock:
> folio_unlock(folio);
> - up_read(&BTRFS_I(inode)->i_mmap_lock);
> + up_read(&inode->i_mmap_lock);
> out:
> - btrfs_delalloc_release_extents(BTRFS_I(inode), fsize);
> + btrfs_delalloc_release_extents(inode, fsize);
> if (only_release_metadata)
> - btrfs_delalloc_release_metadata(BTRFS_I(inode), reserved_space, true);
> + btrfs_delalloc_release_metadata(inode, reserved_space, true);
> else
> - btrfs_delalloc_release_space(BTRFS_I(inode), data_reserved,
> - page_start, reserved_space, true);
> + btrfs_delalloc_release_space(inode, data_reserved, page_start,
> + reserved_space, true);
> extent_changeset_free(data_reserved);
> out_noreserve:
> if (only_release_metadata)
> - btrfs_check_nocow_unlock(BTRFS_I(inode));
> + btrfs_check_nocow_unlock(inode);
>
> - sb_end_pagefault(inode->i_sb);
> + sb_end_pagefault(inode->vfs_inode.i_sb);
>
> if (ret < 0)
> return vmf_error(ret);
next prev parent reply other threads:[~2025-07-09 10:05 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-09 8:53 [PATCH 0/3] btrfs: fix mmap writes for NOCOW files/extents fdmanana
2025-07-09 8:53 ` [PATCH 1/3] btrfs: fix -ENOSPC mmap write failure on " fdmanana
2025-07-09 10:02 ` Qu Wenruo
2025-07-09 10:36 ` Filipe Manana
2025-07-09 8:53 ` [PATCH 2/3] btrfs: use variable for io_tree when clearing range in btrfs_page_mkwrite() fdmanana
2025-07-09 10:02 ` Qu Wenruo
2025-07-09 8:53 ` [PATCH 3/3] btrfs: use btrfs_inode local variable at btrfs_page_mkwrite() fdmanana
2025-07-09 10:04 ` Qu Wenruo [this message]
2025-07-09 10:39 ` Filipe Manana
2025-07-09 11:13 ` [PATCH v2 0/3] btrfs: fix mmap writes for NOCOW files/extents fdmanana
2025-07-09 11:13 ` [PATCH v2 1/3] btrfs: fix -ENOSPC mmap write failure on " fdmanana
2025-07-09 11:13 ` [PATCH v2 2/3] btrfs: use variable for io_tree when clearing range in btrfs_page_mkwrite() fdmanana
2025-07-09 11:13 ` [PATCH v2 3/3] btrfs: use btrfs_inode local variable at btrfs_page_mkwrite() fdmanana
2025-07-09 11:45 ` [PATCH v3 0/3] btrfs: fix mmap writes for NOCOW files/extents fdmanana
2025-07-09 11:45 ` [PATCH v3 1/3] btrfs: fix -ENOSPC mmap write failure on " fdmanana
2025-07-09 11:45 ` [PATCH v3 2/3] btrfs: use variable for io_tree when clearing range in btrfs_page_mkwrite() fdmanana
2025-07-09 11:45 ` [PATCH v3 3/3] btrfs: use btrfs_inode local variable at btrfs_page_mkwrite() fdmanana
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c10339a8-cb80-4fba-803d-797f51d9313d@gmx.com \
--to=quwenruo.btrfs@gmx.com \
--cc=fdmanana@kernel.org \
--cc=linux-btrfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox