All of lore.kernel.org
 help / color / mirror / Atom feed
* [djwong-xfs:repair-metadata-atomically 214/227] fs/xfs/libxfs/xfs_swapext.c:306:37: warning: suggest braces around empty body in an 'if' statement
@ 2020-05-21  4:30 kbuild test robot
  0 siblings, 0 replies; only message in thread
From: kbuild test robot @ 2020-05-21  4:30 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 7360 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git repair-metadata-atomically
head:   03560ddd3fbb967b10047a3d7a31266990f797cf
commit: a616ac921a9590b684f485c1111726d28b135bb9 [214/227] xfs: create deferred log items for extent swapping
config: mips-randconfig-r036-20200520 (attached as .config)
compiler: mips64el-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout a616ac921a9590b684f485c1111726d28b135bb9
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=mips 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>

All warnings (new ones prefixed by >>, old ones prefixed by <<):

fs/xfs/libxfs/xfs_swapext.c: In function 'xfs_swapext_finish_one':
>> fs/xfs/libxfs/xfs_swapext.c:306:37: warning: suggest braces around empty body in an 'if' statement [-Wempty-body]
306 |      XFS_TRANS_DQ_BCOUNT, ip1_delta);
|                                     ^
fs/xfs/libxfs/xfs_swapext.c:309:37: warning: suggest braces around empty body in an 'if' statement [-Wempty-body]
309 |      XFS_TRANS_DQ_BCOUNT, ip2_delta);
|                                     ^

vim +/if +306 fs/xfs/libxfs/xfs_swapext.c

   208	
   209	/* Finish one extent swap, possibly log more. */
   210	int
   211	xfs_swapext_finish_one(
   212		struct xfs_trans		*tp,
   213		struct xfs_swapext_intent	*sxi)
   214	{
   215		struct xfs_bmbt_irec		irec1, irec2;
   216		int				whichfork;
   217		int				nimaps;
   218		int				bmap_flags;
   219		int				error;
   220	
   221		whichfork = (sxi->sxi_flags & XFS_SWAP_EXTENT_ATTR_FORK) ?
   222				XFS_ATTR_FORK : XFS_DATA_FORK;
   223		bmap_flags = xfs_bmapi_aflag(whichfork);
   224	
   225		while (sxi->sxi_blockcount > 0) {
   226			int64_t		ip1_delta = 0, ip2_delta = 0;
   227	
   228			/* Read extent from the first file */
   229			nimaps = 1;
   230			error = xfs_bmapi_read(sxi->sxi_ip1, sxi->sxi_startoff1,
   231					sxi->sxi_blockcount, &irec1, &nimaps,
   232					bmap_flags);
   233			if (error)
   234				return error;
   235			if (nimaps != 1 ||
   236			    irec1.br_startblock == DELAYSTARTBLOCK ||
   237			    irec1.br_startoff != sxi->sxi_startoff1) {
   238				/*
   239				 * We should never get no mapping or a delalloc extent
   240				 * or something that doesn't match what we asked for,
   241				 * since the caller flushed both inodes and we hold the
   242				 * ILOCKs for both inodes.
   243				 */
   244				ASSERT(0);
   245				return -EINVAL;
   246			}
   247	
   248			/* Read extent from the second file */
   249			nimaps = 1;
   250			error = xfs_bmapi_read(sxi->sxi_ip2, sxi->sxi_startoff2,
   251					irec1.br_blockcount, &irec2, &nimaps,
   252					bmap_flags);
   253			if (error)
   254				return error;
   255			if (nimaps != 1 ||
   256			    irec2.br_startblock == DELAYSTARTBLOCK ||
   257			    irec2.br_startoff != sxi->sxi_startoff2) {
   258				/*
   259				 * We should never get no mapping or a delalloc extent
   260				 * or something that doesn't match what we asked for,
   261				 * since the caller flushed both inodes and we hold the
   262				 * ILOCKs for both inodes.
   263				 */
   264				ASSERT(0);
   265				return -EINVAL;
   266			}
   267	
   268			/*
   269			 * We can only swap as many blocks as the smaller of the two
   270			 * extent maps.
   271			 */
   272			irec1.br_blockcount = min(irec1.br_blockcount,
   273						  irec2.br_blockcount);
   274	
   275			trace_xfs_swapext_extent1(sxi->sxi_ip1, &irec1);
   276			trace_xfs_swapext_extent2(sxi->sxi_ip2, &irec2);
   277	
   278			/*
   279			 * Two extents mapped to the same physical block must not have
   280			 * different states; that's filesystem corruption.  Move on to
   281			 * the next extent if they're both holes or both the same
   282			 * physical extent.
   283			 */
   284			if (irec1.br_startblock == irec2.br_startblock) {
   285				if (irec1.br_state != irec2.br_state)
   286					return -EFSCORRUPTED;
   287	
   288				sxi->sxi_startoff1 += irec1.br_blockcount;
   289				sxi->sxi_startoff2 += irec1.br_blockcount;
   290				sxi->sxi_blockcount -= irec1.br_blockcount;
   291				continue;
   292			}
   293	
   294			/* Update quota accounting. */
   295			if (xfs_bmap_is_mapped_extent(&irec1)) {
   296				ip1_delta -= irec1.br_blockcount;
   297				ip2_delta += irec1.br_blockcount;
   298			}
   299			if (xfs_bmap_is_mapped_extent(&irec2)) {
   300				ip1_delta += irec2.br_blockcount;
   301				ip2_delta -= irec2.br_blockcount;
   302			}
   303	
   304			if (ip1_delta)
   305				xfs_trans_mod_dquot_byino(tp, sxi->sxi_ip1,
 > 306						XFS_TRANS_DQ_BCOUNT, ip1_delta);
   307			if (ip2_delta)
   308				xfs_trans_mod_dquot_byino(tp, sxi->sxi_ip2,
   309						XFS_TRANS_DQ_BCOUNT, ip2_delta);
   310	
   311			/* Remove both mappings. */
   312			xfs_bmap_unmap_extent(tp, sxi->sxi_ip1, whichfork, &irec1);
   313			xfs_bmap_unmap_extent(tp, sxi->sxi_ip2, whichfork, &irec2);
   314	
   315			/*
   316			 * Re-add both mappings.  We swap the file offsets between the
   317			 * two maps and add the opposite map, which has the effect of
   318			 * filling the logical offsets we just unmapped, but with with
   319			 * the physical mapping information swapped.
   320			 */
   321			swap(irec1.br_startoff, irec2.br_startoff);
   322			xfs_bmap_map_extent(tp, sxi->sxi_ip1, whichfork, &irec2);
   323			xfs_bmap_map_extent(tp, sxi->sxi_ip2, whichfork, &irec1);
   324	
   325			/* Make sure we're not mapping extents past EOF. */
   326			if (whichfork == XFS_DATA_FORK) {
   327				xfs_swapext_update_size(tp, sxi->sxi_ip1, &irec2,
   328						sxi->sxi_isize1);
   329				xfs_swapext_update_size(tp, sxi->sxi_ip2, &irec1,
   330						sxi->sxi_isize2);
   331			}
   332	
   333			/*
   334			 * Advance our cursor and exit.   The caller (either defer ops
   335			 * or log recovery) will log the SXD item, and if *blockcount
   336			 * is nonzero, it will log a new SXI item for the remainder
   337			 * and call us back.
   338			 */
   339			sxi->sxi_startoff1 += irec1.br_blockcount;
   340			sxi->sxi_startoff2 += irec1.br_blockcount;
   341			sxi->sxi_blockcount -= irec1.br_blockcount;
   342			break;
   343		}
   344	
   345		/*
   346		 * If we've reached the end of the remap operation and the caller
   347		 * wanted us to exchange the sizes, do that now.
   348		 */
   349		if (sxi->sxi_blockcount == 0 &&
   350		    (sxi->sxi_flags & XFS_SWAP_EXTENT_SET_SIZES)) {
   351			sxi->sxi_ip1->i_d.di_size = sxi->sxi_isize1;
   352			sxi->sxi_ip2->i_d.di_size = sxi->sxi_isize2;
   353			xfs_trans_log_inode(tp, sxi->sxi_ip1, XFS_ILOG_CORE);
   354			xfs_trans_log_inode(tp, sxi->sxi_ip2, XFS_ILOG_CORE);
   355		}
   356	
   357		if (xfs_swapext_has_more_work(sxi))
   358			trace_xfs_swapext_defer(tp->t_mountp, sxi);
   359		return 0;
   360	}
   361	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 28003 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-05-21  4:30 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-21  4:30 [djwong-xfs:repair-metadata-atomically 214/227] fs/xfs/libxfs/xfs_swapext.c:306:37: warning: suggest braces around empty body in an 'if' statement kbuild test robot

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.