Linux Btrfs filesystem development
 help / color / mirror / Atom feed
From: Qu Wenruo <quwenruo.btrfs@gmx.com>
To: kernel test robot <lkp@intel.com>, Qu Wenruo <wqu@suse.com>,
	linux-btrfs@vger.kernel.org
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev
Subject: Re: [PATCH v2] btrfs: remove v0 extent handling
Date: Fri, 11 Aug 2023 18:42:48 +0800	[thread overview]
Message-ID: <92674fc4-468d-4291-9aaa-6be62e9088c2@gmx.com> (raw)
In-Reply-To: <202308111815.mJwoiury-lkp@intel.com>



On 2023/8/11 18:32, kernel test robot wrote:
> Hi Qu,
>
> kernel test robot noticed the following build warnings:
>
> [auto build test WARNING on kdave/for-next]
> [also build test WARNING on linus/master v6.5-rc5 next-20230809]
> [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#_base_tree_information]
>
> url:    https://github.com/intel-lab-lkp/linux/commits/Qu-Wenruo/btrfs-remove-v0-extent-handling/20230811-154905
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next
> patch link:    https://lore.kernel.org/r/6258b0bf5e41e52ca0e163e34650d186363628c6.1691740017.git.wqu%40suse.com
> patch subject: [PATCH v2] btrfs: remove v0 extent handling
> config: powerpc-randconfig-r034-20230811 (https://download.01.org/0day-ci/archive/20230811/202308111815.mJwoiury-lkp@intel.com/config)

OK, ppc, that's why we need a different format for sizeof() return values.

> compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
> reproduce: (https://download.01.org/0day-ci/archive/20230811/202308111815.mJwoiury-lkp@intel.com/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202308111815.mJwoiury-lkp@intel.com/
>
> All warnings (new ones prefixed by >>):
>
>>> fs/btrfs/print-tree.c:100:17: warning: format specifies type 'unsigned long' but the argument has type 'unsigned int' [-Wformat]
>       100 |                           "unexpected extent item size, has %u expect >= %lu",
>           |                                                                          ~~~
>           |                                                                          %u

The more proper format would be %zu.

Would be updated soon.

Thanks for the report as usual,
Qu

>       101 |                           item_size, sizeof(*ei));
>           |                                      ^~~~~~~~~~~
>     fs/btrfs/messages.h:46:40: note: expanded from macro 'btrfs_err'
>        46 |         btrfs_printk(fs_info, KERN_ERR fmt, ##args)
>           |                                        ~~~    ^~~~
>     fs/btrfs/messages.h:27:32: note: expanded from macro 'btrfs_printk'
>        27 |         _btrfs_printk(fs_info, fmt, ##args)
>           |                                ~~~    ^~~~
>     1 warning generated.
> --
>>> fs/btrfs/extent-tree.c:172:18: warning: format specifies type 'unsigned long' but the argument has type 'unsigned int' [-Wformat]
>       172 |                         "unexpected extent item size, has %u expect >= %lu",
>           |                                                                        ~~~
>           |                                                                        %u
>       173 |                                   item_size, sizeof(*ei));
>           |                                              ^~~~~~~~~~~
>     fs/btrfs/messages.h:46:40: note: expanded from macro 'btrfs_err'
>        46 |         btrfs_printk(fs_info, KERN_ERR fmt, ##args)
>           |                                        ~~~    ^~~~
>     fs/btrfs/messages.h:27:32: note: expanded from macro 'btrfs_printk'
>        27 |         _btrfs_printk(fs_info, fmt, ##args)
>           |                                ~~~    ^~~~
>     fs/btrfs/extent-tree.c:867:17: warning: format specifies type 'unsigned long' but the argument has type 'unsigned int' [-Wformat]
>       867 |                           "unexpected extent item size, has %llu expect >= %lu",
>           |                                                                            ~~~
>           |                                                                            %u
>       868 |                           item_size, sizeof(*ei));
>           |                                      ^~~~~~~~~~~
>     fs/btrfs/messages.h:46:40: note: expanded from macro 'btrfs_err'
>        46 |         btrfs_printk(fs_info, KERN_ERR fmt, ##args)
>           |                                        ~~~    ^~~~
>     fs/btrfs/messages.h:27:32: note: expanded from macro 'btrfs_printk'
>        27 |         _btrfs_printk(fs_info, fmt, ##args)
>           |                                ~~~    ^~~~
>     fs/btrfs/extent-tree.c:1671:17: warning: format specifies type 'unsigned long' but the argument has type 'unsigned int' [-Wformat]
>      1671 |                           "unexpected extent item size, has %u expect >= %lu",
>           |                                                                          ~~~
>           |                                                                          %u
>      1672 |                           item_size, sizeof(*ei));
>           |                                      ^~~~~~~~~~~
>     fs/btrfs/messages.h:46:40: note: expanded from macro 'btrfs_err'
>        46 |         btrfs_printk(fs_info, KERN_ERR fmt, ##args)
>           |                                        ~~~    ^~~~
>     fs/btrfs/messages.h:27:32: note: expanded from macro 'btrfs_printk'
>        27 |         _btrfs_printk(fs_info, fmt, ##args)
>           |                                ~~~    ^~~~
>     fs/btrfs/extent-tree.c:3102:17: warning: format specifies type 'unsigned long' but the argument has type 'unsigned int' [-Wformat]
>      3102 |                           "unexpected extent item size, has %u expect >= %lu",
>           |                                                                          ~~~
>           |                                                                          %u
>      3103 |                           item_size, sizeof(*ei));
>           |                                      ^~~~~~~~~~~
>     fs/btrfs/messages.h:46:40: note: expanded from macro 'btrfs_err'
>        46 |         btrfs_printk(fs_info, KERN_ERR fmt, ##args)
>           |                                        ~~~    ^~~~
>     fs/btrfs/messages.h:27:32: note: expanded from macro 'btrfs_printk'
>        27 |         _btrfs_printk(fs_info, fmt, ##args)
>           |                                ~~~    ^~~~
>     4 warnings generated.
>
> Kconfig warnings: (for reference only)
>     WARNING: unmet direct dependencies detected for HOTPLUG_CPU
>     Depends on [n]: SMP [=y] && (PPC_PSERIES [=n] || PPC_PMAC [=n] || PPC_POWERNV [=n] || FSL_SOC_BOOKE [=n])
>     Selected by [y]:
>     - PM_SLEEP_SMP [=y] && SMP [=y] && (ARCH_SUSPEND_POSSIBLE [=y] || ARCH_HIBERNATION_POSSIBLE [=y]) && PM_SLEEP [=y]
>
>
> vim +100 fs/btrfs/print-tree.c
>
>      82
>      83	static void print_extent_item(const struct extent_buffer *eb, int slot, int type)
>      84	{
>      85		struct btrfs_extent_item *ei;
>      86		struct btrfs_extent_inline_ref *iref;
>      87		struct btrfs_extent_data_ref *dref;
>      88		struct btrfs_shared_data_ref *sref;
>      89		struct btrfs_disk_key key;
>      90		unsigned long end;
>      91		unsigned long ptr;
>      92		u32 item_size = btrfs_item_size(eb, slot);
>      93		u64 flags;
>      94		u64 offset;
>      95		int ref_index = 0;
>      96
>      97		if (unlikely(item_size < sizeof(*ei))) {
>      98			btrfs_err(eb->fs_info,
>      99				  "unexpected extent item size, has %u expect >= %lu",
>   > 100				  item_size, sizeof(*ei));
>     101			btrfs_handle_fs_error(eb->fs_info, -EUCLEAN, NULL);
>     102		}
>     103
>     104		ei = btrfs_item_ptr(eb, slot, struct btrfs_extent_item);
>     105		flags = btrfs_extent_flags(eb, ei);
>     106
>     107		pr_info("\t\textent refs %llu gen %llu flags %llu\n",
>     108		       btrfs_extent_refs(eb, ei), btrfs_extent_generation(eb, ei),
>     109		       flags);
>     110
>     111		if ((type == BTRFS_EXTENT_ITEM_KEY) &&
>     112		    flags & BTRFS_EXTENT_FLAG_TREE_BLOCK) {
>     113			struct btrfs_tree_block_info *info;
>     114			info = (struct btrfs_tree_block_info *)(ei + 1);
>     115			btrfs_tree_block_key(eb, info, &key);
>     116			pr_info("\t\ttree block key (%llu %u %llu) level %d\n",
>     117			       btrfs_disk_key_objectid(&key), key.type,
>     118			       btrfs_disk_key_offset(&key),
>     119			       btrfs_tree_block_level(eb, info));
>     120			iref = (struct btrfs_extent_inline_ref *)(info + 1);
>     121		} else {
>     122			iref = (struct btrfs_extent_inline_ref *)(ei + 1);
>     123		}
>     124
>     125		ptr = (unsigned long)iref;
>     126		end = (unsigned long)ei + item_size;
>     127		while (ptr < end) {
>     128			iref = (struct btrfs_extent_inline_ref *)ptr;
>     129			type = btrfs_extent_inline_ref_type(eb, iref);
>     130			offset = btrfs_extent_inline_ref_offset(eb, iref);
>     131			pr_info("\t\tref#%d: ", ref_index++);
>     132			switch (type) {
>     133			case BTRFS_TREE_BLOCK_REF_KEY:
>     134				pr_cont("tree block backref root %llu\n", offset);
>     135				break;
>     136			case BTRFS_SHARED_BLOCK_REF_KEY:
>     137				pr_cont("shared block backref parent %llu\n", offset);
>     138				/*
>     139				 * offset is supposed to be a tree block which
>     140				 * must be aligned to nodesize.
>     141				 */
>     142				if (!IS_ALIGNED(offset, eb->fs_info->sectorsize))
>     143					pr_info(
>     144				"\t\t\t(parent %llu not aligned to sectorsize %u)\n",
>     145						offset, eb->fs_info->sectorsize);
>     146				break;
>     147			case BTRFS_EXTENT_DATA_REF_KEY:
>     148				dref = (struct btrfs_extent_data_ref *)(&iref->offset);
>     149				print_extent_data_ref(eb, dref);
>     150				break;
>     151			case BTRFS_SHARED_DATA_REF_KEY:
>     152				sref = (struct btrfs_shared_data_ref *)(iref + 1);
>     153				pr_cont("shared data backref parent %llu count %u\n",
>     154				       offset, btrfs_shared_data_ref_count(eb, sref));
>     155				/*
>     156				 * Offset is supposed to be a tree block which must be
>     157				 * aligned to sectorsize.
>     158				 */
>     159				if (!IS_ALIGNED(offset, eb->fs_info->sectorsize))
>     160					pr_info(
>     161				"\t\t\t(parent %llu not aligned to sectorsize %u)\n",
>     162					     offset, eb->fs_info->sectorsize);
>     163				break;
>     164			default:
>     165				pr_cont("(extent %llu has INVALID ref type %d)\n",
>     166					  eb->start, type);
>     167				return;
>     168			}
>     169			ptr += btrfs_extent_inline_ref_size(type);
>     170		}
>     171		WARN_ON(ptr > end);
>     172	}
>     173
>

      reply	other threads:[~2023-08-11 10:43 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-11  7:47 [PATCH v2] btrfs: remove v0 extent handling Qu Wenruo
2023-08-11 10:32 ` kernel test robot
2023-08-11 10:42   ` Qu Wenruo [this message]

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=92674fc4-468d-4291-9aaa-6be62e9088c2@gmx.com \
    --to=quwenruo.btrfs@gmx.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=llvm@lists.linux.dev \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=wqu@suse.com \
    /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