From: kernel test robot <lkp@intel.com>
To: Chao Yu <yuchao0@huawei.com>, Chao Yu <chao@kernel.org>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
Chao Yu <yuchao0@huawei.com>, Chao Yu <chao@kernel.org>,
linux-kernel@vger.kernel.org
Subject: [chao:feature/dax 2/9] fs/f2fs/gc.c:1522:30: error: no member named 'i_dax_task' in 'struct f2fs_inode_info'
Date: Mon, 20 Dec 2021 20:49:41 +0800 [thread overview]
Message-ID: <202112202023.RCgYHT6K-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/chao/linux.git feature/dax
head: d08999836fd60ab725eee1f5a5fb3b00f7bcefd3
commit: cb4f6683be8c466d963c263ea71dc4164f1eca10 [2/9] f2fs: support dax file operations
config: mips-randconfig-r002-20211220 (https://download.01.org/0day-ci/archive/20211220/202112202023.RCgYHT6K-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 683cbc12b33e5c8dc8d29bf5ed79fbf45763aadd)
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
# install mips cross compiling tool for clang build
# apt-get install binutils-mips-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/chao/linux.git/commit/?id=cb4f6683be8c466d963c263ea71dc4164f1eca10
git remote add chao https://git.kernel.org/pub/scm/linux/kernel/git/chao/linux.git
git fetch --no-tags chao feature/dax
git checkout cb4f6683be8c466d963c263ea71dc4164f1eca10
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash fs/f2fs/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> fs/f2fs/gc.c:1522:30: error: no member named 'i_dax_task' in 'struct f2fs_inode_info'
if (IS_DAX(inode) && fi->i_dax_task == current)
~~ ^
1 error generated.
vim +1522 fs/f2fs/gc.c
1405
1406 /*
1407 * This function tries to get parent node of victim data block, and identifies
1408 * data block validity. If the block is valid, copy that with cold status and
1409 * modify parent node.
1410 * If the parent node is not valid or the data block address is different,
1411 * the victim data block is ignored.
1412 */
1413 static int gc_data_segment(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
1414 struct gc_inode_list *gc_list, unsigned int segno, int gc_type,
1415 bool force_migrate)
1416 {
1417 struct super_block *sb = sbi->sb;
1418 struct f2fs_summary *entry;
1419 block_t start_addr;
1420 int off;
1421 int phase = 0;
1422 int submitted = 0;
1423 unsigned int usable_blks_in_seg = f2fs_usable_blks_in_seg(sbi, segno);
1424
1425 start_addr = START_BLOCK(sbi, segno);
1426
1427 next_step:
1428 entry = sum;
1429
1430 for (off = 0; off < usable_blks_in_seg; off++, entry++) {
1431 struct page *data_page;
1432 struct inode *inode;
1433 struct node_info dni; /* dnode info for the data */
1434 unsigned int ofs_in_node, nofs;
1435 block_t start_bidx;
1436 nid_t nid = le32_to_cpu(entry->nid);
1437
1438 /*
1439 * stop BG_GC if there is not enough free sections.
1440 * Or, stop GC if the segment becomes fully valid caused by
1441 * race condition along with SSR block allocation.
1442 */
1443 if ((gc_type == BG_GC && has_not_enough_free_secs(sbi, 0, 0)) ||
1444 (!force_migrate && get_valid_blocks(sbi, segno, true) ==
1445 BLKS_PER_SEC(sbi)))
1446 return submitted;
1447
1448 if (check_valid_map(sbi, segno, off) == 0)
1449 continue;
1450
1451 if (phase == 0) {
1452 f2fs_ra_meta_pages(sbi, NAT_BLOCK_OFFSET(nid), 1,
1453 META_NAT, true);
1454 continue;
1455 }
1456
1457 if (phase == 1) {
1458 f2fs_ra_node_page(sbi, nid);
1459 continue;
1460 }
1461
1462 /* Get an inode by ino with checking validity */
1463 if (!is_alive(sbi, entry, &dni, start_addr + off, &nofs))
1464 continue;
1465
1466 if (phase == 2) {
1467 f2fs_ra_node_page(sbi, dni.ino);
1468 continue;
1469 }
1470
1471 ofs_in_node = le16_to_cpu(entry->ofs_in_node);
1472
1473 if (phase == 3) {
1474 inode = f2fs_iget(sb, dni.ino);
1475 if (IS_ERR(inode) || is_bad_inode(inode) ||
1476 special_file(inode->i_mode))
1477 continue;
1478
1479 if (!down_write_trylock(
1480 &F2FS_I(inode)->i_gc_rwsem[WRITE])) {
1481 iput(inode);
1482 sbi->skipped_gc_rwsem++;
1483 continue;
1484 }
1485
1486 start_bidx = f2fs_start_bidx_of_node(nofs, inode) +
1487 ofs_in_node;
1488
1489 if (f2fs_post_read_required(inode)) {
1490 int err = ra_data_block(inode, start_bidx);
1491
1492 up_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]);
1493 if (err) {
1494 iput(inode);
1495 continue;
1496 }
1497 add_gc_inode(gc_list, inode);
1498 continue;
1499 }
1500
1501 data_page = f2fs_get_read_data_page(inode,
1502 start_bidx, REQ_RAHEAD, true);
1503 up_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]);
1504 if (IS_ERR(data_page)) {
1505 iput(inode);
1506 continue;
1507 }
1508
1509 f2fs_put_page(data_page, 0);
1510 add_gc_inode(gc_list, inode);
1511 continue;
1512 }
1513
1514 /* phase 4 */
1515 inode = find_gc_inode(gc_list, dni.ino);
1516 if (inode) {
1517 struct f2fs_inode_info *fi = F2FS_I(inode);
1518 bool locked = false;
1519 int err;
1520
1521 if (S_ISREG(inode->i_mode)) {
> 1522 if (IS_DAX(inode) && fi->i_dax_task == current)
1523 goto move_data;
1524 if (!down_write_trylock(&fi->i_gc_rwsem[READ])) {
1525 sbi->skipped_gc_rwsem++;
1526 continue;
1527 }
1528 if (!down_write_trylock(
1529 &fi->i_gc_rwsem[WRITE])) {
1530 sbi->skipped_gc_rwsem++;
1531 up_write(&fi->i_gc_rwsem[READ]);
1532 continue;
1533 }
1534 locked = true;
1535
1536 /* wait for all inflight aio data */
1537 inode_dio_wait(inode);
1538 }
1539
1540 move_data:
1541 start_bidx = f2fs_start_bidx_of_node(nofs, inode)
1542 + ofs_in_node;
1543 if (f2fs_post_read_required(inode))
1544 err = move_data_block(inode, start_bidx,
1545 gc_type, segno, off);
1546 else
1547 err = move_data_page(inode, start_bidx, gc_type,
1548 segno, off);
1549
1550 if (!err && (gc_type == FG_GC ||
1551 f2fs_post_read_required(inode)))
1552 submitted++;
1553
1554 if (locked) {
1555 up_write(&fi->i_gc_rwsem[WRITE]);
1556 up_write(&fi->i_gc_rwsem[READ]);
1557 }
1558
1559 stat_inc_data_blk_count(sbi, 1, gc_type);
1560 }
1561 }
1562
1563 if (++phase < 5)
1564 goto next_step;
1565
1566 return submitted;
1567 }
1568
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [chao:feature/dax 2/9] fs/f2fs/gc.c:1522:30: error: no member named 'i_dax_task' in 'struct f2fs_inode_info'
Date: Mon, 20 Dec 2021 20:49:41 +0800 [thread overview]
Message-ID: <202112202023.RCgYHT6K-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 7091 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/chao/linux.git feature/dax
head: d08999836fd60ab725eee1f5a5fb3b00f7bcefd3
commit: cb4f6683be8c466d963c263ea71dc4164f1eca10 [2/9] f2fs: support dax file operations
config: mips-randconfig-r002-20211220 (https://download.01.org/0day-ci/archive/20211220/202112202023.RCgYHT6K-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 683cbc12b33e5c8dc8d29bf5ed79fbf45763aadd)
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
# install mips cross compiling tool for clang build
# apt-get install binutils-mips-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/chao/linux.git/commit/?id=cb4f6683be8c466d963c263ea71dc4164f1eca10
git remote add chao https://git.kernel.org/pub/scm/linux/kernel/git/chao/linux.git
git fetch --no-tags chao feature/dax
git checkout cb4f6683be8c466d963c263ea71dc4164f1eca10
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash fs/f2fs/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> fs/f2fs/gc.c:1522:30: error: no member named 'i_dax_task' in 'struct f2fs_inode_info'
if (IS_DAX(inode) && fi->i_dax_task == current)
~~ ^
1 error generated.
vim +1522 fs/f2fs/gc.c
1405
1406 /*
1407 * This function tries to get parent node of victim data block, and identifies
1408 * data block validity. If the block is valid, copy that with cold status and
1409 * modify parent node.
1410 * If the parent node is not valid or the data block address is different,
1411 * the victim data block is ignored.
1412 */
1413 static int gc_data_segment(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
1414 struct gc_inode_list *gc_list, unsigned int segno, int gc_type,
1415 bool force_migrate)
1416 {
1417 struct super_block *sb = sbi->sb;
1418 struct f2fs_summary *entry;
1419 block_t start_addr;
1420 int off;
1421 int phase = 0;
1422 int submitted = 0;
1423 unsigned int usable_blks_in_seg = f2fs_usable_blks_in_seg(sbi, segno);
1424
1425 start_addr = START_BLOCK(sbi, segno);
1426
1427 next_step:
1428 entry = sum;
1429
1430 for (off = 0; off < usable_blks_in_seg; off++, entry++) {
1431 struct page *data_page;
1432 struct inode *inode;
1433 struct node_info dni; /* dnode info for the data */
1434 unsigned int ofs_in_node, nofs;
1435 block_t start_bidx;
1436 nid_t nid = le32_to_cpu(entry->nid);
1437
1438 /*
1439 * stop BG_GC if there is not enough free sections.
1440 * Or, stop GC if the segment becomes fully valid caused by
1441 * race condition along with SSR block allocation.
1442 */
1443 if ((gc_type == BG_GC && has_not_enough_free_secs(sbi, 0, 0)) ||
1444 (!force_migrate && get_valid_blocks(sbi, segno, true) ==
1445 BLKS_PER_SEC(sbi)))
1446 return submitted;
1447
1448 if (check_valid_map(sbi, segno, off) == 0)
1449 continue;
1450
1451 if (phase == 0) {
1452 f2fs_ra_meta_pages(sbi, NAT_BLOCK_OFFSET(nid), 1,
1453 META_NAT, true);
1454 continue;
1455 }
1456
1457 if (phase == 1) {
1458 f2fs_ra_node_page(sbi, nid);
1459 continue;
1460 }
1461
1462 /* Get an inode by ino with checking validity */
1463 if (!is_alive(sbi, entry, &dni, start_addr + off, &nofs))
1464 continue;
1465
1466 if (phase == 2) {
1467 f2fs_ra_node_page(sbi, dni.ino);
1468 continue;
1469 }
1470
1471 ofs_in_node = le16_to_cpu(entry->ofs_in_node);
1472
1473 if (phase == 3) {
1474 inode = f2fs_iget(sb, dni.ino);
1475 if (IS_ERR(inode) || is_bad_inode(inode) ||
1476 special_file(inode->i_mode))
1477 continue;
1478
1479 if (!down_write_trylock(
1480 &F2FS_I(inode)->i_gc_rwsem[WRITE])) {
1481 iput(inode);
1482 sbi->skipped_gc_rwsem++;
1483 continue;
1484 }
1485
1486 start_bidx = f2fs_start_bidx_of_node(nofs, inode) +
1487 ofs_in_node;
1488
1489 if (f2fs_post_read_required(inode)) {
1490 int err = ra_data_block(inode, start_bidx);
1491
1492 up_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]);
1493 if (err) {
1494 iput(inode);
1495 continue;
1496 }
1497 add_gc_inode(gc_list, inode);
1498 continue;
1499 }
1500
1501 data_page = f2fs_get_read_data_page(inode,
1502 start_bidx, REQ_RAHEAD, true);
1503 up_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]);
1504 if (IS_ERR(data_page)) {
1505 iput(inode);
1506 continue;
1507 }
1508
1509 f2fs_put_page(data_page, 0);
1510 add_gc_inode(gc_list, inode);
1511 continue;
1512 }
1513
1514 /* phase 4 */
1515 inode = find_gc_inode(gc_list, dni.ino);
1516 if (inode) {
1517 struct f2fs_inode_info *fi = F2FS_I(inode);
1518 bool locked = false;
1519 int err;
1520
1521 if (S_ISREG(inode->i_mode)) {
> 1522 if (IS_DAX(inode) && fi->i_dax_task == current)
1523 goto move_data;
1524 if (!down_write_trylock(&fi->i_gc_rwsem[READ])) {
1525 sbi->skipped_gc_rwsem++;
1526 continue;
1527 }
1528 if (!down_write_trylock(
1529 &fi->i_gc_rwsem[WRITE])) {
1530 sbi->skipped_gc_rwsem++;
1531 up_write(&fi->i_gc_rwsem[READ]);
1532 continue;
1533 }
1534 locked = true;
1535
1536 /* wait for all inflight aio data */
1537 inode_dio_wait(inode);
1538 }
1539
1540 move_data:
1541 start_bidx = f2fs_start_bidx_of_node(nofs, inode)
1542 + ofs_in_node;
1543 if (f2fs_post_read_required(inode))
1544 err = move_data_block(inode, start_bidx,
1545 gc_type, segno, off);
1546 else
1547 err = move_data_page(inode, start_bidx, gc_type,
1548 segno, off);
1549
1550 if (!err && (gc_type == FG_GC ||
1551 f2fs_post_read_required(inode)))
1552 submitted++;
1553
1554 if (locked) {
1555 up_write(&fi->i_gc_rwsem[WRITE]);
1556 up_write(&fi->i_gc_rwsem[READ]);
1557 }
1558
1559 stat_inc_data_blk_count(sbi, 1, gc_type);
1560 }
1561 }
1562
1563 if (++phase < 5)
1564 goto next_step;
1565
1566 return submitted;
1567 }
1568
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
next reply other threads:[~2021-12-20 12:50 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-20 12:49 kernel test robot [this message]
2021-12-20 12:49 ` [chao:feature/dax 2/9] fs/f2fs/gc.c:1522:30: error: no member named 'i_dax_task' in 'struct f2fs_inode_info' kernel test robot
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=202112202023.RCgYHT6K-lkp@intel.com \
--to=lkp@intel.com \
--cc=chao@kernel.org \
--cc=kbuild-all@lists.01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=yuchao0@huawei.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 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.