From: kernel test robot <lkp@intel.com>
To: Jonathan Derrick <jonathan.derrick@linux.dev>,
Song Liu <song@kernel.org>,
linux-raid@vger.kernel.org
Cc: oe-kbuild-all@lists.linux.dev, Xiao Ni <xni@redhat.com>,
Christoph Hellwig <hch@infradead.org>,
Paul Menzel <pmenzel@molgen.mpg.de>,
Sushma Kalakota <sushma.kalakota@intel.com>,
Jon Derrick <jonathan.derrick@linux.dev>
Subject: Re: [PATCH v3 1/3] md: Move sb writer loop to its own function
Date: Thu, 23 Feb 2023 12:05:41 +0800 [thread overview]
Message-ID: <202302231124.oHGZxi0D-lkp@intel.com> (raw)
In-Reply-To: <20230222215828.225-2-jonathan.derrick@linux.dev>
Hi Jonathan,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on song-md/md-next]
[also build test WARNING on linus/master v6.2 next-20230222]
[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/Jonathan-Derrick/md-Move-sb-writer-loop-to-its-own-function/20230223-060300
base: git://git.kernel.org/pub/scm/linux/kernel/git/song/md.git md-next
patch link: https://lore.kernel.org/r/20230222215828.225-2-jonathan.derrick%40linux.dev
patch subject: [PATCH v3 1/3] md: Move sb writer loop to its own function
config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20230223/202302231124.oHGZxi0D-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 12.1.0
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
# https://github.com/intel-lab-lkp/linux/commit/17d8d09a65e91fada0801ca9bf4e3560780bb543
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Jonathan-Derrick/md-Move-sb-writer-loop-to-its-own-function/20230223-060300
git checkout 17d8d09a65e91fada0801ca9bf4e3560780bb543
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=alpha olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=alpha SHELL=/bin/bash drivers/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202302231124.oHGZxi0D-lkp@intel.com/
All warnings (new ones prefixed by >>):
In function 'next_active_rdev',
inlined from 'write_sb_page' at drivers/md/md-bitmap.c:277:18:
>> drivers/md/md-bitmap.c:192:12: warning: 'rdev' is used uninitialized [-Wuninitialized]
192 | if (rdev == NULL)
| ^
drivers/md/md-bitmap.c: In function 'write_sb_page':
drivers/md/md-bitmap.c:272:25: note: 'rdev' was declared here
272 | struct md_rdev *rdev;
| ^~~~
vim +/rdev +192 drivers/md/md-bitmap.c
a654b9d8f851f4 drivers/md/bitmap.c NeilBrown 2005-06-21 175
fd01b88c75a718 drivers/md/bitmap.c NeilBrown 2011-10-11 176 static struct md_rdev *next_active_rdev(struct md_rdev *rdev, struct mddev *mddev)
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 177 {
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 178 /* Iterate the disks of an mddev, using rcu to protect access to the
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 179 * linked list, and raising the refcount of devices we return to ensure
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 180 * they don't disappear while in use.
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 181 * As devices are only added or removed when raid_disk is < 0 and
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 182 * nr_pending is 0 and In_sync is clear, the entries we return will
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 183 * still be in the same position on the list when we re-enter
fd177481b440c3 drivers/md/bitmap.c Michael Wang 2012-10-11 184 * list_for_each_entry_continue_rcu.
8532e3439087de drivers/md/bitmap.c NeilBrown 2015-05-20 185 *
8532e3439087de drivers/md/bitmap.c NeilBrown 2015-05-20 186 * Note that if entered with 'rdev == NULL' to start at the
8532e3439087de drivers/md/bitmap.c NeilBrown 2015-05-20 187 * beginning, we temporarily assign 'rdev' to an address which
8532e3439087de drivers/md/bitmap.c NeilBrown 2015-05-20 188 * isn't really an rdev, but which can be used by
8532e3439087de drivers/md/bitmap.c NeilBrown 2015-05-20 189 * list_for_each_entry_continue_rcu() to find the first entry.
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 190 */
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 191 rcu_read_lock();
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 @192 if (rdev == NULL)
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 193 /* start at the beginning */
8532e3439087de drivers/md/bitmap.c NeilBrown 2015-05-20 194 rdev = list_entry(&mddev->disks, struct md_rdev, same_set);
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 195 else {
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 196 /* release the previous rdev and start from there. */
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 197 rdev_dec_pending(rdev, mddev);
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 198 }
fd177481b440c3 drivers/md/bitmap.c Michael Wang 2012-10-11 199 list_for_each_entry_continue_rcu(rdev, &mddev->disks, same_set) {
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 200 if (rdev->raid_disk >= 0 &&
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 201 !test_bit(Faulty, &rdev->flags)) {
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 202 /* this is a usable devices */
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 203 atomic_inc(&rdev->nr_pending);
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 204 rcu_read_unlock();
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 205 return rdev;
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 206 }
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 207 }
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 208 rcu_read_unlock();
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 209 return NULL;
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 210 }
b2d2c4ceaddc30 drivers/md/bitmap.c NeilBrown 2008-09-01 211
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 212 static int __write_sb_page(struct md_rdev *rdev, struct bitmap *bitmap,
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 213 struct page *page)
a654b9d8f851f4 drivers/md/bitmap.c NeilBrown 2005-06-21 214 {
a6ff7e089c7fca drivers/md/bitmap.c Jonathan Brassow 2011-01-14 215 struct block_device *bdev;
fd01b88c75a718 drivers/md/bitmap.c NeilBrown 2011-10-11 216 struct mddev *mddev = bitmap->mddev;
1ec885cdd01a9a drivers/md/bitmap.c NeilBrown 2012-05-22 217 struct bitmap_storage *store = &bitmap->storage;
f6af949c567211 drivers/md/bitmap.c NeilBrown 2009-12-14 218 loff_t offset = mddev->bitmap_info.offset;
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 219 int size = PAGE_SIZE;
a6ff7e089c7fca drivers/md/bitmap.c Jonathan Brassow 2011-01-14 220
a6ff7e089c7fca drivers/md/bitmap.c Jonathan Brassow 2011-01-14 221 bdev = (rdev->meta_bdev) ? rdev->meta_bdev : rdev->bdev;
9b1215c102d4b1 drivers/md/bitmap.c NeilBrown 2012-05-22 222 if (page->index == store->file_pages - 1) {
9b1215c102d4b1 drivers/md/bitmap.c NeilBrown 2012-05-22 223 int last_page_size = store->bytes & (PAGE_SIZE - 1);
9b1215c102d4b1 drivers/md/bitmap.c NeilBrown 2012-05-22 224 if (last_page_size == 0)
9b1215c102d4b1 drivers/md/bitmap.c NeilBrown 2012-05-22 225 last_page_size = PAGE_SIZE;
9b1215c102d4b1 drivers/md/bitmap.c NeilBrown 2012-05-22 226 size = roundup(last_page_size,
a6ff7e089c7fca drivers/md/bitmap.c Jonathan Brassow 2011-01-14 227 bdev_logical_block_size(bdev));
9b1215c102d4b1 drivers/md/bitmap.c NeilBrown 2012-05-22 228 }
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 229
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 230 /* Just make sure we aren't corrupting data or metadata */
f6af949c567211 drivers/md/bitmap.c NeilBrown 2009-12-14 231 if (mddev->external) {
f6af949c567211 drivers/md/bitmap.c NeilBrown 2009-12-14 232 /* Bitmap could be anywhere. */
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 233 if (rdev->sb_start + offset
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 234 + (page->index * (PAGE_SIZE / SECTOR_SIZE))
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 235 > rdev->data_offset &&
ac2f40be46ce6a drivers/md/bitmap.c NeilBrown 2010-06-01 236 rdev->sb_start + offset
ac2f40be46ce6a drivers/md/bitmap.c NeilBrown 2010-06-01 237 < (rdev->data_offset + mddev->dev_sectors
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 238 + (PAGE_SIZE / SECTOR_SIZE)))
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 239 return -EINVAL;
f6af949c567211 drivers/md/bitmap.c NeilBrown 2009-12-14 240 } else if (offset < 0) {
f0d76d70bc77b9 drivers/md/bitmap.c NeilBrown 2007-07-17 241 /* DATA BITMAP METADATA */
42a04b5078ce73 drivers/md/bitmap.c NeilBrown 2009-12-14 242 if (offset
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 243 + (long)(page->index * (PAGE_SIZE / SECTOR_SIZE))
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 244 + size / SECTOR_SIZE > 0)
f0d76d70bc77b9 drivers/md/bitmap.c NeilBrown 2007-07-17 245 /* bitmap runs in to metadata */
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 246 return -EINVAL;
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 247
58c0fed400603a drivers/md/bitmap.c Andre Noll 2009-03-31 248 if (rdev->data_offset + mddev->dev_sectors
42a04b5078ce73 drivers/md/bitmap.c NeilBrown 2009-12-14 249 > rdev->sb_start + offset)
f0d76d70bc77b9 drivers/md/bitmap.c NeilBrown 2007-07-17 250 /* data runs in to bitmap */
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 251 return -EINVAL;
0f420358e3a2ab drivers/md/bitmap.c Andre Noll 2008-07-11 252 } else if (rdev->sb_start < rdev->data_offset) {
f0d76d70bc77b9 drivers/md/bitmap.c NeilBrown 2007-07-17 253 /* METADATA BITMAP DATA */
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 254 if (rdev->sb_start + offset
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 255 + page->index * (PAGE_SIZE / SECTOR_SIZE)
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 256 + size / SECTOR_SIZE > rdev->data_offset)
f0d76d70bc77b9 drivers/md/bitmap.c NeilBrown 2007-07-17 257 /* bitmap runs in to data */
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 258 return -EINVAL;
f0d76d70bc77b9 drivers/md/bitmap.c NeilBrown 2007-07-17 259 } else {
f0d76d70bc77b9 drivers/md/bitmap.c NeilBrown 2007-07-17 260 /* DATA METADATA BITMAP - no problems */
f0d76d70bc77b9 drivers/md/bitmap.c NeilBrown 2007-07-17 261 }
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 262
a654b9d8f851f4 drivers/md/bitmap.c NeilBrown 2005-06-21 263 md_super_write(mddev, rdev,
42a04b5078ce73 drivers/md/bitmap.c NeilBrown 2009-12-14 264 rdev->sb_start + offset
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 265 + page->index * (PAGE_SIZE / SECTOR_SIZE),
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 266 size, page);
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 267 return 0;
ab6085c795a71b drivers/md/bitmap.c NeilBrown 2007-05-23 268 }
a654b9d8f851f4 drivers/md/bitmap.c NeilBrown 2005-06-21 269
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 270 static int write_sb_page(struct bitmap *bitmap, struct page *page, int wait)
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 271 {
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 272 struct md_rdev *rdev;
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 273 struct mddev *mddev = bitmap->mddev;
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 274 int ret;
4b80991c6cb9ef drivers/md/bitmap.c NeilBrown 2008-07-21 275
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 276 do {
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 @277 while ((rdev = next_active_rdev(rdev, mddev)) != NULL) {
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 278 ret = __write_sb_page(rdev, bitmap, page);
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 279 if (ret)
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 280 return ret;
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 281 }
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 282 } while (wait && md_super_wait(mddev) < 0);
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 283
17d8d09a65e91f drivers/md/md-bitmap.c Jon Derrick 2023-02-22 284 return 0;
a654b9d8f851f4 drivers/md/bitmap.c NeilBrown 2005-06-21 285 }
a654b9d8f851f4 drivers/md/bitmap.c NeilBrown 2005-06-21 286
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
parent reply other threads:[~2023-02-23 4:05 UTC|newest]
Thread overview: expand[flat|nested] mbox.gz Atom feed
[parent not found: <20230222215828.225-2-jonathan.derrick@linux.dev>]
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=202302231124.oHGZxi0D-lkp@intel.com \
--to=lkp@intel.com \
--cc=hch@infradead.org \
--cc=jonathan.derrick@linux.dev \
--cc=linux-raid@vger.kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=pmenzel@molgen.mpg.de \
--cc=song@kernel.org \
--cc=sushma.kalakota@intel.com \
--cc=xni@redhat.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;
as well as URLs for NNTP newsgroup(s).