lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<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

Powered by Openwall GNU/*/Linux Powered by OpenVZ