Re: [PATCH] jfs: turn diLog(), dataLog() and txLog() into void functions

From: kernel test robot
Date: Sun Feb 07 2021 - 03:26:18 EST


Hi Yang,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on shaggy/jfs-next]
[also build test ERROR on v5.11-rc6 next-20210125]
[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/0day-ci/linux/commits/Yang-Li/jfs-turn-diLog-dataLog-and-txLog-into-void-functions/20210207-143938
base: https://github.com/kleikamp/linux-shaggy jfs-next
config: i386-randconfig-m021-20210207 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce (this is a W=1 build):
# https://github.com/0day-ci/linux/commit/8b7ab4ba41269109e7cb95106023e96d640842e9
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Yang-Li/jfs-turn-diLog-dataLog-and-txLog-into-void-functions/20210207-143938
git checkout 8b7ab4ba41269109e7cb95106023e96d640842e9
# save the attached .config to linux build tree
make W=1 ARCH=i386

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

>> fs/jfs/jfs_txnmgr.c:1368:13: error: conflicting types for 'txLog'
1368 | static void txLog(struct jfs_log *log, struct tblock *tblk, struct commit *cd)
| ^~~~~
fs/jfs/jfs_txnmgr.c:162:12: note: previous declaration of 'txLog' was here
162 | static int txLog(struct jfs_log * log, struct tblock * tblk,
| ^~~~~
>> fs/jfs/jfs_txnmgr.c:1424:13: error: conflicting types for 'diLog'
1424 | static void diLog(struct jfs_log *log, struct tblock *tblk, struct lrd *lrd,
| ^~~~~
fs/jfs/jfs_txnmgr.c:151:12: note: previous declaration of 'diLog' was here
151 | static int diLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
| ^~~~~
>> fs/jfs/jfs_txnmgr.c:1536:13: error: conflicting types for 'dataLog'
1536 | static void dataLog(struct jfs_log *log, struct tblock *tblk, struct lrd *lrd,
| ^~~~~~~
fs/jfs/jfs_txnmgr.c:153:12: note: previous declaration of 'dataLog' was here
153 | static int dataLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
| ^~~~~~~
fs/jfs/jfs_txnmgr.c:151:12: warning: 'diLog' used but never defined
151 | static int diLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
| ^~~~~
fs/jfs/jfs_txnmgr.c:153:12: warning: 'dataLog' used but never defined
153 | static int dataLog(struct jfs_log * log, struct tblock * tblk, struct lrd * lrd,
| ^~~~~~~
fs/jfs/jfs_txnmgr.c:162:12: warning: 'txLog' used but never defined
162 | static int txLog(struct jfs_log * log, struct tblock * tblk,
| ^~~~~
fs/jfs/jfs_txnmgr.c:1536:13: warning: 'dataLog' defined but not used [-Wunused-function]
1536 | static void dataLog(struct jfs_log *log, struct tblock *tblk, struct lrd *lrd,
| ^~~~~~~
fs/jfs/jfs_txnmgr.c:1424:13: warning: 'diLog' defined but not used [-Wunused-function]
1424 | static void diLog(struct jfs_log *log, struct tblock *tblk, struct lrd *lrd,
| ^~~~~
fs/jfs/jfs_txnmgr.c:1368:13: warning: 'txLog' defined but not used [-Wunused-function]
1368 | static void txLog(struct jfs_log *log, struct tblock *tblk, struct commit *cd)
| ^~~~~


vim +/txLog +1368 fs/jfs/jfs_txnmgr.c

1356
1357 /*
1358 * NAME: txLog()
1359 *
1360 * FUNCTION: Writes AFTER log records for all lines modified
1361 * by tid for segments specified by inodes in comdata.
1362 * Code assumes only WRITELOCKS are recorded in lockwords.
1363 *
1364 * PARAMETERS:
1365 *
1366 * RETURN :
1367 */
> 1368 static void txLog(struct jfs_log *log, struct tblock *tblk, struct commit *cd)
1369 {
1370 struct inode *ip;
1371 lid_t lid;
1372 struct tlock *tlck;
1373 struct lrd *lrd = &cd->lrd;
1374
1375 /*
1376 * write log record(s) for each tlock of transaction,
1377 */
1378 for (lid = tblk->next; lid; lid = tlck->next) {
1379 tlck = lid_to_tlock(lid);
1380
1381 tlck->flag |= tlckLOG;
1382
1383 /* initialize lrd common */
1384 ip = tlck->ip;
1385 lrd->aggregate = cpu_to_le32(JFS_SBI(ip->i_sb)->aggregate);
1386 lrd->log.redopage.fileset = cpu_to_le32(JFS_IP(ip)->fileset);
1387 lrd->log.redopage.inode = cpu_to_le32(ip->i_ino);
1388
1389 /* write log record of page from the tlock */
1390 switch (tlck->type & tlckTYPE) {
1391 case tlckXTREE:
1392 xtLog(log, tblk, lrd, tlck);
1393 break;
1394
1395 case tlckDTREE:
1396 dtLog(log, tblk, lrd, tlck);
1397 break;
1398
1399 case tlckINODE:
1400 diLog(log, tblk, lrd, tlck, cd);
1401 break;
1402
1403 case tlckMAP:
1404 mapLog(log, tblk, lrd, tlck);
1405 break;
1406
1407 case tlckDATA:
1408 dataLog(log, tblk, lrd, tlck);
1409 break;
1410
1411 default:
1412 jfs_err("UFO tlock:0x%p", tlck);
1413 }
1414 }
1415
1416 return;
1417 }
1418
1419 /*
1420 * diLog()
1421 *
1422 * function: log inode tlock and format maplock to update bmap;
1423 */
> 1424 static void diLog(struct jfs_log *log, struct tblock *tblk, struct lrd *lrd,
1425 struct tlock *tlck, struct commit *cd)
1426 {
1427 struct metapage *mp;
1428 pxd_t *pxd;
1429 struct pxd_lock *pxdlock;
1430
1431 mp = tlck->mp;
1432
1433 /* initialize as REDOPAGE record format */
1434 lrd->log.redopage.type = cpu_to_le16(LOG_INODE);
1435 lrd->log.redopage.l2linesize = cpu_to_le16(L2INODESLOTSIZE);
1436
1437 pxd = &lrd->log.redopage.pxd;
1438
1439 /*
1440 * inode after image
1441 */
1442 if (tlck->type & tlckENTRY) {
1443 /* log after-image for logredo(): */
1444 lrd->type = cpu_to_le16(LOG_REDOPAGE);
1445 PXDaddress(pxd, mp->index);
1446 PXDlength(pxd,
1447 mp->logical_size >> tblk->sb->s_blocksize_bits);
1448 lrd->backchain = cpu_to_le32(lmLog(log, tblk, lrd, tlck));
1449
1450 /* mark page as homeward bound */
1451 tlck->flag |= tlckWRITEPAGE;
1452 } else if (tlck->type & tlckFREE) {
1453 /*
1454 * free inode extent
1455 *
1456 * (pages of the freed inode extent have been invalidated and
1457 * a maplock for free of the extent has been formatted at
1458 * txLock() time);
1459 *
1460 * the tlock had been acquired on the inode allocation map page
1461 * (iag) that specifies the freed extent, even though the map
1462 * page is not itself logged, to prevent pageout of the map
1463 * page before the log;
1464 */
1465
1466 /* log LOG_NOREDOINOEXT of the freed inode extent for
1467 * logredo() to start NoRedoPage filters, and to update
1468 * imap and bmap for free of the extent;
1469 */
1470 lrd->type = cpu_to_le16(LOG_NOREDOINOEXT);
1471 /*
1472 * For the LOG_NOREDOINOEXT record, we need
1473 * to pass the IAG number and inode extent
1474 * index (within that IAG) from which the
1475 * extent is being released. These have been
1476 * passed to us in the iplist[1] and iplist[2].
1477 */
1478 lrd->log.noredoinoext.iagnum =
1479 cpu_to_le32((u32) (size_t) cd->iplist[1]);
1480 lrd->log.noredoinoext.inoext_idx =
1481 cpu_to_le32((u32) (size_t) cd->iplist[2]);
1482
1483 pxdlock = (struct pxd_lock *) & tlck->lock;
1484 *pxd = pxdlock->pxd;
1485 lrd->backchain = cpu_to_le32(lmLog(log, tblk, lrd, NULL));
1486
1487 /* update bmap */
1488 tlck->flag |= tlckUPDATEMAP;
1489
1490 /* mark page as homeward bound */
1491 tlck->flag |= tlckWRITEPAGE;
1492 } else
1493 jfs_err("diLog: UFO type tlck:0x%p", tlck);
1494 #ifdef _JFS_WIP
1495 /*
1496 * alloc/free external EA extent
1497 *
1498 * a maplock for txUpdateMap() to update bPWMAP for alloc/free
1499 * of the extent has been formatted at txLock() time;
1500 */
1501 else {
1502 assert(tlck->type & tlckEA);
1503
1504 /* log LOG_UPDATEMAP for logredo() to update bmap for
1505 * alloc of new (and free of old) external EA extent;
1506 */
1507 lrd->type = cpu_to_le16(LOG_UPDATEMAP);
1508 pxdlock = (struct pxd_lock *) & tlck->lock;
1509 nlock = pxdlock->index;
1510 for (i = 0; i < nlock; i++, pxdlock++) {
1511 if (pxdlock->flag & mlckALLOCPXD)
1512 lrd->log.updatemap.type =
1513 cpu_to_le16(LOG_ALLOCPXD);
1514 else
1515 lrd->log.updatemap.type =
1516 cpu_to_le16(LOG_FREEPXD);
1517 lrd->log.updatemap.nxd = cpu_to_le16(1);
1518 lrd->log.updatemap.pxd = pxdlock->pxd;
1519 lrd->backchain =
1520 cpu_to_le32(lmLog(log, tblk, lrd, NULL));
1521 }
1522
1523 /* update bmap */
1524 tlck->flag |= tlckUPDATEMAP;
1525 }
1526 #endif /* _JFS_WIP */
1527
1528 return;
1529 }
1530
1531 /*
1532 * dataLog()
1533 *
1534 * function: log data tlock
1535 */
> 1536 static void dataLog(struct jfs_log *log, struct tblock *tblk, struct lrd *lrd,
1537 struct tlock *tlck)
1538 {
1539 struct metapage *mp;
1540 pxd_t *pxd;
1541
1542 mp = tlck->mp;
1543
1544 /* initialize as REDOPAGE record format */
1545 lrd->log.redopage.type = cpu_to_le16(LOG_DATA);
1546 lrd->log.redopage.l2linesize = cpu_to_le16(L2DATASLOTSIZE);
1547
1548 pxd = &lrd->log.redopage.pxd;
1549
1550 /* log after-image for logredo(): */
1551 lrd->type = cpu_to_le16(LOG_REDOPAGE);
1552
1553 if (jfs_dirtable_inline(tlck->ip)) {
1554 /*
1555 * The table has been truncated, we've must have deleted
1556 * the last entry, so don't bother logging this
1557 */
1558 mp->lid = 0;
1559 grab_metapage(mp);
1560 metapage_homeok(mp);
1561 discard_metapage(mp);
1562 tlck->mp = NULL;
1563 return;
1564 }
1565
1566 PXDaddress(pxd, mp->index);
1567 PXDlength(pxd, mp->logical_size >> tblk->sb->s_blocksize_bits);
1568
1569 lrd->backchain = cpu_to_le32(lmLog(log, tblk, lrd, tlck));
1570
1571 /* mark page as homeward bound */
1572 tlck->flag |= tlckWRITEPAGE;
1573
1574 return;
1575 }
1576

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

Attachment: .config.gz
Description: application/gzip