From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: Re: [PATCH v3 16/22] btrfs: extent_io: implement try_release_extent_buffer() for subpage metadata support
Date: Wed, 06 Jan 2021 11:59:38 +0800 [thread overview]
Message-ID: <202101061129.GqPyHuXE-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 7713 bytes --]
CC: kbuild-all(a)lists.01.org
In-Reply-To: <20210106010201.37864-17-wqu@suse.com>
References: <20210106010201.37864-17-wqu@suse.com>
TO: Qu Wenruo <wqu@suse.com>
TO: linux-btrfs(a)vger.kernel.org
Hi Qu,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on kdave/for-next]
[also build test WARNING on v5.11-rc2 next-20210104]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Qu-Wenruo/btrfs-add-read-only-support-for-subpage-sector-size/20210106-090847
base: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next
:::::: branch date: 3 hours ago
:::::: commit date: 3 hours ago
config: m68k-randconfig-s032-20210106 (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.3-208-g46a52ca4-dirty
# https://github.com/0day-ci/linux/commit/c0f229c17f975112f926038d70649bb2e479bfe3
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Qu-Wenruo/btrfs-add-read-only-support-for-subpage-sector-size/20210106-090847
git checkout c0f229c17f975112f926038d70649bb2e479bfe3
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=m68k
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
"sparse warnings: (new ones prefixed by >>)"
fs/btrfs/extent_io.c:5061:25: sparse: sparse: context imbalance in 'btrfs_release_extent_buffer_pages' - different lock contexts for basic block
>> fs/btrfs/extent_io.c:6271:9: sparse: sparse: context imbalance in 'try_release_subpage_extent_buffer' - different lock contexts for basic block
vim +/try_release_subpage_extent_buffer +6271 fs/btrfs/extent_io.c
6af118ce51b52ce Chris Mason 2008-07-22 6262
c0f229c17f97511 Qu Wenruo 2021-01-06 6263 static int try_release_subpage_extent_buffer(struct page *page)
c0f229c17f97511 Qu Wenruo 2021-01-06 6264 {
c0f229c17f97511 Qu Wenruo 2021-01-06 6265 struct btrfs_fs_info *fs_info = btrfs_sb(page->mapping->host->i_sb);
c0f229c17f97511 Qu Wenruo 2021-01-06 6266 u64 page_start = page_offset(page);
c0f229c17f97511 Qu Wenruo 2021-01-06 6267 int bitmap_size = BTRFS_SUBPAGE_BITMAP_SIZE;
c0f229c17f97511 Qu Wenruo 2021-01-06 6268 int bit_start = 0;
c0f229c17f97511 Qu Wenruo 2021-01-06 6269 int ret;
c0f229c17f97511 Qu Wenruo 2021-01-06 6270
c0f229c17f97511 Qu Wenruo 2021-01-06 @6271 while (bit_start < bitmap_size) {
c0f229c17f97511 Qu Wenruo 2021-01-06 6272 struct btrfs_subpage *subpage;
c0f229c17f97511 Qu Wenruo 2021-01-06 6273 struct extent_buffer *eb;
c0f229c17f97511 Qu Wenruo 2021-01-06 6274 unsigned long flags;
c0f229c17f97511 Qu Wenruo 2021-01-06 6275 u16 tmp = 1 << bit_start;
c0f229c17f97511 Qu Wenruo 2021-01-06 6276 u64 start;
c0f229c17f97511 Qu Wenruo 2021-01-06 6277
c0f229c17f97511 Qu Wenruo 2021-01-06 6278 /*
c0f229c17f97511 Qu Wenruo 2021-01-06 6279 * Make sure the page still has private, as previous iteration
c0f229c17f97511 Qu Wenruo 2021-01-06 6280 * can detach page private.
c0f229c17f97511 Qu Wenruo 2021-01-06 6281 */
c0f229c17f97511 Qu Wenruo 2021-01-06 6282 spin_lock(&page->mapping->private_lock);
c0f229c17f97511 Qu Wenruo 2021-01-06 6283 if (!PagePrivate(page)) {
c0f229c17f97511 Qu Wenruo 2021-01-06 6284 spin_unlock(&page->mapping->private_lock);
c0f229c17f97511 Qu Wenruo 2021-01-06 6285 break;
c0f229c17f97511 Qu Wenruo 2021-01-06 6286 }
c0f229c17f97511 Qu Wenruo 2021-01-06 6287
c0f229c17f97511 Qu Wenruo 2021-01-06 6288 subpage = (struct btrfs_subpage *)page->private;
c0f229c17f97511 Qu Wenruo 2021-01-06 6289
c0f229c17f97511 Qu Wenruo 2021-01-06 6290 spin_lock_irqsave(&subpage->lock, flags);
c0f229c17f97511 Qu Wenruo 2021-01-06 6291 spin_unlock(&page->mapping->private_lock);
c0f229c17f97511 Qu Wenruo 2021-01-06 6292
c0f229c17f97511 Qu Wenruo 2021-01-06 6293 if (!(tmp & subpage->tree_block_bitmap)) {
c0f229c17f97511 Qu Wenruo 2021-01-06 6294 spin_unlock_irqrestore(&subpage->lock, flags);
c0f229c17f97511 Qu Wenruo 2021-01-06 6295 bit_start++;
c0f229c17f97511 Qu Wenruo 2021-01-06 6296 continue;
c0f229c17f97511 Qu Wenruo 2021-01-06 6297 }
c0f229c17f97511 Qu Wenruo 2021-01-06 6298
c0f229c17f97511 Qu Wenruo 2021-01-06 6299 start = bit_start * fs_info->sectorsize + page_start;
c0f229c17f97511 Qu Wenruo 2021-01-06 6300 bit_start += fs_info->nodesize >> fs_info->sectorsize_bits;
c0f229c17f97511 Qu Wenruo 2021-01-06 6301 /*
c0f229c17f97511 Qu Wenruo 2021-01-06 6302 * Here we can't call find_extent_buffer() which will increase
c0f229c17f97511 Qu Wenruo 2021-01-06 6303 * eb->refs.
c0f229c17f97511 Qu Wenruo 2021-01-06 6304 */
c0f229c17f97511 Qu Wenruo 2021-01-06 6305 rcu_read_lock();
c0f229c17f97511 Qu Wenruo 2021-01-06 6306 eb = radix_tree_lookup(&fs_info->buffer_radix,
c0f229c17f97511 Qu Wenruo 2021-01-06 6307 start >> fs_info->sectorsize_bits);
c0f229c17f97511 Qu Wenruo 2021-01-06 6308 ASSERT(eb);
c0f229c17f97511 Qu Wenruo 2021-01-06 6309 spin_lock(&eb->refs_lock);
c0f229c17f97511 Qu Wenruo 2021-01-06 6310 if (atomic_read(&eb->refs) != 1 || extent_buffer_under_io(eb) ||
c0f229c17f97511 Qu Wenruo 2021-01-06 6311 !test_and_clear_bit(EXTENT_BUFFER_TREE_REF, &eb->bflags)) {
c0f229c17f97511 Qu Wenruo 2021-01-06 6312 spin_unlock(&eb->refs_lock);
c0f229c17f97511 Qu Wenruo 2021-01-06 6313 rcu_read_unlock();
c0f229c17f97511 Qu Wenruo 2021-01-06 6314 continue;
c0f229c17f97511 Qu Wenruo 2021-01-06 6315 }
c0f229c17f97511 Qu Wenruo 2021-01-06 6316 rcu_read_unlock();
c0f229c17f97511 Qu Wenruo 2021-01-06 6317 spin_unlock_irqrestore(&subpage->lock, flags);
c0f229c17f97511 Qu Wenruo 2021-01-06 6318 /*
c0f229c17f97511 Qu Wenruo 2021-01-06 6319 * Here we don't care the return value, we will always check
c0f229c17f97511 Qu Wenruo 2021-01-06 6320 * the page private at the end.
c0f229c17f97511 Qu Wenruo 2021-01-06 6321 * And release_extent_buffer() will release the refs_lock.
c0f229c17f97511 Qu Wenruo 2021-01-06 6322 */
c0f229c17f97511 Qu Wenruo 2021-01-06 6323 release_extent_buffer(eb);
c0f229c17f97511 Qu Wenruo 2021-01-06 6324 }
c0f229c17f97511 Qu Wenruo 2021-01-06 6325 /* Finally to check if we have cleared page private */
c0f229c17f97511 Qu Wenruo 2021-01-06 6326 spin_lock(&page->mapping->private_lock);
c0f229c17f97511 Qu Wenruo 2021-01-06 6327 if (!PagePrivate(page))
c0f229c17f97511 Qu Wenruo 2021-01-06 6328 ret = 1;
c0f229c17f97511 Qu Wenruo 2021-01-06 6329 else
c0f229c17f97511 Qu Wenruo 2021-01-06 6330 ret = 0;
c0f229c17f97511 Qu Wenruo 2021-01-06 6331 spin_unlock(&page->mapping->private_lock);
c0f229c17f97511 Qu Wenruo 2021-01-06 6332 return ret;
c0f229c17f97511 Qu Wenruo 2021-01-06 6333
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 33611 bytes --]
next reply other threads:[~2021-01-06 3:59 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-06 3:59 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2021-01-06 1:01 [PATCH v3 00/22] btrfs: add read-only support for subpage sector size Qu Wenruo
2021-01-06 1:01 ` [PATCH v3 16/22] btrfs: extent_io: implement try_release_extent_buffer() for subpage metadata support Qu Wenruo
2021-01-06 8:24 ` Qu Wenruo
2021-01-06 8:43 ` Qu Wenruo
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=202101061129.GqPyHuXE-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild@lists.01.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.