[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202601191038.JQbdLRwC-lkp@intel.com>
Date: Mon, 19 Jan 2026 10:38:34 +0800
From: kernel test robot <lkp@...el.com>
To: Li Chen <me@...ux.beauty>
Cc: llvm@...ts.linux.dev, oe-kbuild-all@...ts.linux.dev,
linux-ext4@...r.kernel.org, "Theodore Ts'o" <tytso@....edu>
Subject: [tytso-ext4:dev 35/37] fs/ext4/move_extent.c:324:26: error:
use of undeclared identifier 'sb'
tree: https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git dev
head: 11f1ff3cc21a8e9ca9f509a664de5975469ec561
commit: ac9dc29e548da2c5895cfc28ac8e5b220ff45f63 [35/37] ext4: mark move extents fast-commit ineligible
config: s390-randconfig-002-20260119 (https://download.01.org/0day-ci/archive/20260119/202601191038.JQbdLRwC-lkp@intel.com/config)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 9b8addffa70cee5b2acc5454712d9cf78ce45710)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260119/202601191038.JQbdLRwC-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@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202601191038.JQbdLRwC-lkp@intel.com/
All errors (new ones prefixed by >>):
>> fs/ext4/move_extent.c:324:26: error: use of undeclared identifier 'sb'
324 | ext4_fc_mark_ineligible(sb, EXT4_FC_REASON_MOVE_EXT, handle);
| ^~
1 error generated.
vim +/sb +324 fs/ext4/move_extent.c
293
294 /*
295 * Save the data in original inode extent blocks and replace one folio size
296 * aligned original inode extent with one or one partial donor inode extent,
297 * and then write out the saved data in new original inode blocks. Pass out
298 * the replaced block count through m_len. Return 0 on success, and an error
299 * code otherwise.
300 */
301 static int mext_move_extent(struct mext_data *mext, u64 *m_len)
302 {
303 struct inode *orig_inode = mext->orig_inode;
304 struct inode *donor_inode = mext->donor_inode;
305 struct ext4_map_blocks *orig_map = &mext->orig_map;
306 unsigned int blkbits = orig_inode->i_blkbits;
307 struct folio *folio[2] = {NULL, NULL};
308 loff_t from, length;
309 enum mext_move_type move_type = 0;
310 handle_t *handle;
311 u64 r_len = 0;
312 unsigned int credits;
313 int ret, ret2;
314
315 *m_len = 0;
316 trace_ext4_move_extent_enter(orig_inode, orig_map, donor_inode,
317 mext->donor_lblk);
318 credits = ext4_chunk_trans_extent(orig_inode, 0) * 2;
319 handle = ext4_journal_start(orig_inode, EXT4_HT_MOVE_EXTENTS, credits);
320 if (IS_ERR(handle)) {
321 ret = PTR_ERR(handle);
322 goto out;
323 }
> 324 ext4_fc_mark_ineligible(sb, EXT4_FC_REASON_MOVE_EXT, handle);
325
326 ret = mext_move_begin(mext, folio, &move_type);
327 if (ret)
328 goto stop_handle;
329
330 if (move_type == MEXT_SKIP_EXTENT)
331 goto unlock;
332
333 /*
334 * Copy the data. First, read the original inode data into the page
335 * cache. Then, release the existing mapping relationships and swap
336 * the extent. Finally, re-establish the new mapping relationships
337 * and dirty the page cache.
338 */
339 if (move_type == MEXT_COPY_DATA) {
340 from = offset_in_folio(folio[0],
341 ((loff_t)orig_map->m_lblk) << blkbits);
342 length = ((loff_t)orig_map->m_len) << blkbits;
343
344 ret = mext_folio_mkuptodate(folio[0], from, from + length);
345 if (ret)
346 goto unlock;
347 }
348
349 if (!filemap_release_folio(folio[0], 0) ||
350 !filemap_release_folio(folio[1], 0)) {
351 ret = -EBUSY;
352 goto unlock;
353 }
354
355 /* Move extent */
356 ext4_double_down_write_data_sem(orig_inode, donor_inode);
357 *m_len = ext4_swap_extents(handle, orig_inode, donor_inode,
358 orig_map->m_lblk, mext->donor_lblk,
359 orig_map->m_len, 1, &ret);
360 ext4_double_up_write_data_sem(orig_inode, donor_inode);
361
362 /* A short-length swap cannot occur after a successful swap extent. */
363 if (WARN_ON_ONCE(!ret && (*m_len != orig_map->m_len)))
364 ret = -EIO;
365
366 if (!(*m_len) || (move_type == MEXT_MOVE_EXTENT))
367 goto unlock;
368
369 /* Copy data */
370 length = (*m_len) << blkbits;
371 ret2 = mext_folio_mkwrite(orig_inode, folio[0], from, from + length);
372 if (ret2) {
373 if (!ret)
374 ret = ret2;
375 goto repair_branches;
376 }
377 /*
378 * Even in case of data=writeback it is reasonable to pin
379 * inode to transaction, to prevent unexpected data loss.
380 */
381 ret2 = ext4_jbd2_inode_add_write(handle, orig_inode,
382 ((loff_t)orig_map->m_lblk) << blkbits, length);
383 if (!ret)
384 ret = ret2;
385 unlock:
386 mext_folio_double_unlock(folio);
387 stop_handle:
388 ext4_journal_stop(handle);
389 out:
390 trace_ext4_move_extent_exit(orig_inode, orig_map->m_lblk, donor_inode,
391 mext->donor_lblk, orig_map->m_len, *m_len,
392 move_type, ret);
393 return ret;
394
395 repair_branches:
396 ret2 = 0;
397 ext4_double_down_write_data_sem(orig_inode, donor_inode);
398 r_len = ext4_swap_extents(handle, donor_inode, orig_inode,
399 mext->donor_lblk, orig_map->m_lblk,
400 *m_len, 0, &ret2);
401 ext4_double_up_write_data_sem(orig_inode, donor_inode);
402 if (ret2 || r_len != *m_len) {
403 ext4_error_inode_block(orig_inode, (sector_t)(orig_map->m_lblk),
404 EIO, "Unable to copy data block, data will be lost!");
405 ret = -EIO;
406 }
407 *m_len = 0;
408 goto unlock;
409 }
410
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists