From: Qu Wenruo <wqu@suse.com>
To: kernel test robot <lkp@intel.com>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org
Subject: Re: [PATCH RFC v2 08/12] btrfs: switch buffered read to the new btrfs_read_repair_* based repair routine
Date: Thu, 28 Apr 2022 18:51:57 +0800 [thread overview]
Message-ID: <f0e4e00a-b3bd-e42f-b93d-47b304987691@suse.com> (raw)
In-Reply-To: <202204281717.jzlTSpQj-lkp@intel.com>
#syz test https://github.com/adam900710/linux read_repair
On 2022/4/28 18:08, kernel test robot wrote:
> Hi Qu,
>
> [FYI, it's a private test report for your RFC patch.]
> [auto build test WARNING on kdave/for-next]
> [also build test WARNING on next-20220428]
> [cannot apply to rostedt-trace/for-next v5.18-rc4]
> [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/intel-lab-lkp/linux/commits/Qu-Wenruo/btrfs-introduce-a-pure-data-checksum-checking-helper/20220427-161943
> base: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next
> config: arm-randconfig-c002-20220428 (https://download.01.org/0day-ci/archive/20220428/202204281717.jzlTSpQj-lkp@intel.com/config)
> compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project c59473aacce38cd7dd77eebceaf3c98c5707ab3b)
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # install arm cross compiling tool for clang build
> # apt-get install binutils-arm-linux-gnueabi
> # https://github.com/intel-lab-lkp/linux/commit/3f389ea1be2d5c290c4b523743ca200983f45765
> git remote add linux-review https://github.com/intel-lab-lkp/linux
> git fetch --no-tags linux-review Qu-Wenruo/btrfs-introduce-a-pure-data-checksum-checking-helper/20220427-161943
> git checkout 3f389ea1be2d5c290c4b523743ca200983f45765
> # save the config file
> mkdir build_dir && cp config build_dir/.config
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash fs/btrfs/
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
>
> All warnings (new ones prefixed by >>):
>
>>> fs/btrfs/extent_io.c:3076:6: warning: variable 'nbits' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
> if (ctrl->error) {
> ^~~~~~~~~~~
> fs/btrfs/extent_io.c:3098:46: note: uninitialized use occurs here
> for_each_set_bit(bit, ctrl->cur_bad_bitmap, nbits) {
> ^~~~~
> include/linux/find.h:284:16: note: expanded from macro 'for_each_set_bit'
> (bit) < (size); \
> ^~~~
> fs/btrfs/extent_io.c:3076:2: note: remove the 'if' if its condition is always false
> if (ctrl->error) {
> ^~~~~~~~~~~~~~~~~~
> fs/btrfs/extent_io.c:3064:20: note: initialize the variable 'nbits' to silence this warning
> unsigned int nbits;
> ^
> = 0
> 1 warning generated.
>
>
> vim +3076 fs/btrfs/extent_io.c
>
> 3060
> 3061 static void read_repair_finish(struct btrfs_read_repair_ctrl *ctrl)
> 3062 {
> 3063 struct btrfs_fs_info *fs_info;
> 3064 unsigned int nbits;
> 3065 u32 sectorsize;
> 3066 int bit;
> 3067 int i;
> 3068
> 3069 if (!ctrl->initialized)
> 3070 return;
> 3071
> 3072 /*
> 3073 * Got a critical -ENOMEM error preivously, no repair should have been
> 3074 * attempted.
> 3075 */
>> 3076 if (ctrl->error) {
> 3077 ASSERT(bio_list_empty(&ctrl->bios));
> 3078 ASSERT(atomic_read(&ctrl->io_bytes) == 0);
> 3079 goto mark_error;
> 3080 }
> 3081
> 3082 ASSERT(ctrl->inode);
> 3083 fs_info = btrfs_sb(ctrl->inode->i_sb);
> 3084 nbits = ctrl->bio_size >> fs_info->sectorsize_bits;
> 3085 sectorsize = fs_info->sectorsize;
> 3086
> 3087 /* Go through each remaining mirrors to do the repair */
> 3088 for (i = get_next_mirror(ctrl->init_mirror, ctrl->num_copies);
> 3089 i != ctrl->init_mirror; i = get_next_mirror(i, ctrl->num_copies)) {
> 3090 read_repair_from_one_mirror(ctrl, ctrl->inode, i);
> 3091
> 3092 /* Check the error bitmap to see if no more corrupted sectors */
> 3093 if (bitmap_all_zero(ctrl->cur_bad_bitmap, nbits))
> 3094 break;
> 3095 }
> 3096 mark_error:
> 3097 /* Finish the unrecovered bad sectors */
> 3098 for_each_set_bit(bit, ctrl->cur_bad_bitmap, nbits) {
> 3099 struct page *page;
> 3100 unsigned int pgoff;
> 3101 u64 file_offset = (bit << fs_info->sectorsize_bits) +
> 3102 ctrl->file_offset;
> 3103
> 3104 page = read_repair_get_sector(ctrl, bit, &pgoff);
> 3105
> 3106 end_page_read(page, false, file_offset, sectorsize);
> 3107 unlock_extent_cached_atomic(&BTRFS_I(ctrl->inode)->io_tree,
> 3108 file_offset, file_offset + sectorsize - 1, NULL);
> 3109 }
> 3110 kfree(ctrl->cur_bad_bitmap);
> 3111 kfree(ctrl->prev_bad_bitmap);
> 3112 ctrl->cur_bad_bitmap = NULL;
> 3113 ctrl->prev_bad_bitmap = NULL;
> 3114 ctrl->initialized = false;
> 3115 ctrl->error = false;
> 3116 ctrl->failed_bio = NULL;
> 3117 ASSERT(bio_list_empty(&ctrl->bios));
> 3118 ASSERT(atomic_read(&ctrl->io_bytes) == 0);
> 3119 }
> 3120
>
WARNING: multiple messages have this Message-ID (diff)
From: Qu Wenruo <wqu@suse.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH RFC v2 08/12] btrfs: switch buffered read to the new btrfs_read_repair_* based repair routine
Date: Thu, 28 Apr 2022 18:51:57 +0800 [thread overview]
Message-ID: <f0e4e00a-b3bd-e42f-b93d-47b304987691@suse.com> (raw)
In-Reply-To: <202204281717.jzlTSpQj-lkp@intel.com>
[-- Attachment #1: Type: text/plain, Size: 5464 bytes --]
#syz test https://github.com/adam900710/linux read_repair
On 2022/4/28 18:08, kernel test robot wrote:
> Hi Qu,
>
> [FYI, it's a private test report for your RFC patch.]
> [auto build test WARNING on kdave/for-next]
> [also build test WARNING on next-20220428]
> [cannot apply to rostedt-trace/for-next v5.18-rc4]
> [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/intel-lab-lkp/linux/commits/Qu-Wenruo/btrfs-introduce-a-pure-data-checksum-checking-helper/20220427-161943
> base: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next
> config: arm-randconfig-c002-20220428 (https://download.01.org/0day-ci/archive/20220428/202204281717.jzlTSpQj-lkp(a)intel.com/config)
> compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project c59473aacce38cd7dd77eebceaf3c98c5707ab3b)
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # install arm cross compiling tool for clang build
> # apt-get install binutils-arm-linux-gnueabi
> # https://github.com/intel-lab-lkp/linux/commit/3f389ea1be2d5c290c4b523743ca200983f45765
> git remote add linux-review https://github.com/intel-lab-lkp/linux
> git fetch --no-tags linux-review Qu-Wenruo/btrfs-introduce-a-pure-data-checksum-checking-helper/20220427-161943
> git checkout 3f389ea1be2d5c290c4b523743ca200983f45765
> # save the config file
> mkdir build_dir && cp config build_dir/.config
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash fs/btrfs/
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
>
> All warnings (new ones prefixed by >>):
>
>>> fs/btrfs/extent_io.c:3076:6: warning: variable 'nbits' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
> if (ctrl->error) {
> ^~~~~~~~~~~
> fs/btrfs/extent_io.c:3098:46: note: uninitialized use occurs here
> for_each_set_bit(bit, ctrl->cur_bad_bitmap, nbits) {
> ^~~~~
> include/linux/find.h:284:16: note: expanded from macro 'for_each_set_bit'
> (bit) < (size); \
> ^~~~
> fs/btrfs/extent_io.c:3076:2: note: remove the 'if' if its condition is always false
> if (ctrl->error) {
> ^~~~~~~~~~~~~~~~~~
> fs/btrfs/extent_io.c:3064:20: note: initialize the variable 'nbits' to silence this warning
> unsigned int nbits;
> ^
> = 0
> 1 warning generated.
>
>
> vim +3076 fs/btrfs/extent_io.c
>
> 3060
> 3061 static void read_repair_finish(struct btrfs_read_repair_ctrl *ctrl)
> 3062 {
> 3063 struct btrfs_fs_info *fs_info;
> 3064 unsigned int nbits;
> 3065 u32 sectorsize;
> 3066 int bit;
> 3067 int i;
> 3068
> 3069 if (!ctrl->initialized)
> 3070 return;
> 3071
> 3072 /*
> 3073 * Got a critical -ENOMEM error preivously, no repair should have been
> 3074 * attempted.
> 3075 */
>> 3076 if (ctrl->error) {
> 3077 ASSERT(bio_list_empty(&ctrl->bios));
> 3078 ASSERT(atomic_read(&ctrl->io_bytes) == 0);
> 3079 goto mark_error;
> 3080 }
> 3081
> 3082 ASSERT(ctrl->inode);
> 3083 fs_info = btrfs_sb(ctrl->inode->i_sb);
> 3084 nbits = ctrl->bio_size >> fs_info->sectorsize_bits;
> 3085 sectorsize = fs_info->sectorsize;
> 3086
> 3087 /* Go through each remaining mirrors to do the repair */
> 3088 for (i = get_next_mirror(ctrl->init_mirror, ctrl->num_copies);
> 3089 i != ctrl->init_mirror; i = get_next_mirror(i, ctrl->num_copies)) {
> 3090 read_repair_from_one_mirror(ctrl, ctrl->inode, i);
> 3091
> 3092 /* Check the error bitmap to see if no more corrupted sectors */
> 3093 if (bitmap_all_zero(ctrl->cur_bad_bitmap, nbits))
> 3094 break;
> 3095 }
> 3096 mark_error:
> 3097 /* Finish the unrecovered bad sectors */
> 3098 for_each_set_bit(bit, ctrl->cur_bad_bitmap, nbits) {
> 3099 struct page *page;
> 3100 unsigned int pgoff;
> 3101 u64 file_offset = (bit << fs_info->sectorsize_bits) +
> 3102 ctrl->file_offset;
> 3103
> 3104 page = read_repair_get_sector(ctrl, bit, &pgoff);
> 3105
> 3106 end_page_read(page, false, file_offset, sectorsize);
> 3107 unlock_extent_cached_atomic(&BTRFS_I(ctrl->inode)->io_tree,
> 3108 file_offset, file_offset + sectorsize - 1, NULL);
> 3109 }
> 3110 kfree(ctrl->cur_bad_bitmap);
> 3111 kfree(ctrl->prev_bad_bitmap);
> 3112 ctrl->cur_bad_bitmap = NULL;
> 3113 ctrl->prev_bad_bitmap = NULL;
> 3114 ctrl->initialized = false;
> 3115 ctrl->error = false;
> 3116 ctrl->failed_bio = NULL;
> 3117 ASSERT(bio_list_empty(&ctrl->bios));
> 3118 ASSERT(atomic_read(&ctrl->io_bytes) == 0);
> 3119 }
> 3120
>
next prev parent reply other threads:[~2022-04-28 10:52 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cover.1651043617.git.wqu@suse.com>
2022-04-27 7:18 ` [PATCH RFC v2 01/12] btrfs: introduce a pure data checksum checking helper Qu Wenruo
2022-04-28 13:26 ` Christoph Hellwig
2022-04-27 7:18 ` [PATCH RFC v2 02/12] btrfs: always save bio::bi_iter into btrfs_bio::iter before submitting Qu Wenruo
2022-04-28 5:16 ` Qu Wenruo
2022-04-28 13:32 ` Christoph Hellwig
2022-04-28 22:41 ` Qu Wenruo
2022-04-29 15:09 ` Christoph Hellwig
2022-04-29 23:04 ` Qu Wenruo
2022-04-27 7:18 ` [PATCH RFC v2 03/12] btrfs: remove duplicated parameters from submit_data_read_repair() Qu Wenruo
2022-04-28 13:32 ` Christoph Hellwig
2022-04-27 7:18 ` [PATCH RFC v2 04/12] btrfs: add btrfs_read_repair_ctrl to record corrupted sectors Qu Wenruo
2022-04-28 13:37 ` Christoph Hellwig
2022-04-28 22:51 ` Qu Wenruo
2022-04-29 0:09 ` Qu Wenruo
2022-04-29 15:12 ` Christoph Hellwig
2022-04-29 15:11 ` Christoph Hellwig
2022-04-27 7:18 ` [PATCH RFC v2 05/12] btrfs: add a helper to queue a corrupted sector for read repair Qu Wenruo
2022-04-28 5:20 ` Qu Wenruo
2022-04-28 13:44 ` Christoph Hellwig
2022-04-28 22:55 ` Qu Wenruo
2022-04-29 7:11 ` Qu Wenruo
2022-04-29 15:14 ` Christoph Hellwig
2022-04-29 23:08 ` Qu Wenruo
2022-05-01 23:59 ` Qu Wenruo
2022-05-02 16:45 ` Christoph Hellwig
2022-05-02 23:00 ` Qu Wenruo
2022-04-27 7:18 ` [PATCH RFC v2 06/12] btrfs: introduce a helper to repair from one mirror Qu Wenruo
2022-04-27 7:18 ` [PATCH RFC v2 07/12] btrfs: allow btrfs read repair to submit all writes in one go Qu Wenruo
2022-04-27 7:18 ` [PATCH RFC v2 08/12] btrfs: switch buffered read to the new btrfs_read_repair_* based repair routine Qu Wenruo
2022-04-27 13:59 ` kernel test robot
2022-04-28 10:08 ` kernel test robot
2022-04-28 10:51 ` Qu Wenruo [this message]
2022-04-28 10:51 ` Qu Wenruo
2022-04-27 7:18 ` [PATCH RFC v2 09/12] btrfs: switch direct IO routine to use btrfs_read_repair_ctrl Qu Wenruo
2022-04-27 7:18 ` [PATCH RFC v2 10/12] btrfs: cleanup btrfs_repair_one_sector() Qu Wenruo
2022-04-28 13:45 ` Christoph Hellwig
2022-04-27 7:18 ` [PATCH RFC v2 11/12] btrfs: remove io_failure_record infrastructure completely Qu Wenruo
2022-04-27 7:18 ` [PATCH RFC v2 12/12] btrfs: remove btrfs_inode::io_failure_tree 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=f0e4e00a-b3bd-e42f-b93d-47b304987691@suse.com \
--to=wqu@suse.com \
--cc=kbuild-all@lists.01.org \
--cc=lkp@intel.com \
--cc=llvm@lists.linux.dev \
/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.