From: kernel test robot <lkp@intel.com>
To: Jan Kara <jack@suse.cz>, linux-fsdevel@vger.kernel.org
Cc: kbuild-all@lists.01.org, clang-built-linux@googlegroups.com,
Christoph Hellwig <hch@infradead.org>,
Amir Goldstein <amir73il@gmail.com>,
Dave Chinner <david@fromorbit.com>, Ted Tso <tytso@mit.edu>,
Jan Kara <jack@suse.cz>, Jaegeuk Kim <jaegeuk@kernel.org>,
Chao Yu <yuchao0@huawei.com>, Chao Yu <chao@kernel.org>,
linux-f2fs-devel@lists.sourceforge.net
Subject: Re: [PATCH 07/12] f2fs: Convert to using invalidate_lock
Date: Sat, 24 Apr 2021 04:05:04 +0800 [thread overview]
Message-ID: <202104240353.hrooocwr-lkp@intel.com> (raw)
In-Reply-To: <20210423173018.23133-7-jack@suse.cz>
[-- Attachment #1: Type: text/plain, Size: 5429 bytes --]
Hi Jan,
I love your patch! Yet something to improve:
[auto build test ERROR on ext4/dev]
[also build test ERROR on fuse/for-next linus/master v5.12-rc8]
[cannot apply to hnaz-linux-mm/master next-20210423]
[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/Jan-Kara/fs-Hole-punch-vs-page-cache-filling-races/20210424-013114
base: https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git dev
config: arm-randconfig-r031-20210423 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 06234f758e1945084582cf80450b396f75a9c06e)
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 arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://github.com/0day-ci/linux/commit/7a9e8e67e7f7d0070294e9f0a3567a3f28985383
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Jan-Kara/fs-Hole-punch-vs-page-cache-filling-races/20210424-013114
git checkout 7a9e8e67e7f7d0070294e9f0a3567a3f28985383
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=arm
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/file.c:3567:14: error: use of undeclared identifier 'mapping'
down_write(&mapping->invalidate_lock);
^
fs/f2fs/file.c:3603:12: error: use of undeclared identifier 'mapping'
up_write(&mapping->invalidate_lock);
^
2 errors generated.
vim +/mapping +3567 fs/f2fs/file.c
3515
3516 static int f2fs_release_compress_blocks(struct file *filp, unsigned long arg)
3517 {
3518 struct inode *inode = file_inode(filp);
3519 struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
3520 pgoff_t page_idx = 0, last_idx;
3521 unsigned int released_blocks = 0;
3522 int ret;
3523 int writecount;
3524
3525 if (!f2fs_sb_has_compression(F2FS_I_SB(inode)))
3526 return -EOPNOTSUPP;
3527
3528 if (!f2fs_compressed_file(inode))
3529 return -EINVAL;
3530
3531 if (f2fs_readonly(sbi->sb))
3532 return -EROFS;
3533
3534 ret = mnt_want_write_file(filp);
3535 if (ret)
3536 return ret;
3537
3538 f2fs_balance_fs(F2FS_I_SB(inode), true);
3539
3540 inode_lock(inode);
3541
3542 writecount = atomic_read(&inode->i_writecount);
3543 if ((filp->f_mode & FMODE_WRITE && writecount != 1) ||
3544 (!(filp->f_mode & FMODE_WRITE) && writecount)) {
3545 ret = -EBUSY;
3546 goto out;
3547 }
3548
3549 if (IS_IMMUTABLE(inode)) {
3550 ret = -EINVAL;
3551 goto out;
3552 }
3553
3554 ret = filemap_write_and_wait_range(inode->i_mapping, 0, LLONG_MAX);
3555 if (ret)
3556 goto out;
3557
3558 F2FS_I(inode)->i_flags |= F2FS_IMMUTABLE_FL;
3559 f2fs_set_inode_flags(inode);
3560 inode->i_ctime = current_time(inode);
3561 f2fs_mark_inode_dirty_sync(inode, true);
3562
3563 if (!atomic_read(&F2FS_I(inode)->i_compr_blocks))
3564 goto out;
3565
3566 down_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]);
> 3567 down_write(&mapping->invalidate_lock);
3568
3569 last_idx = DIV_ROUND_UP(i_size_read(inode), PAGE_SIZE);
3570
3571 while (page_idx < last_idx) {
3572 struct dnode_of_data dn;
3573 pgoff_t end_offset, count;
3574
3575 set_new_dnode(&dn, inode, NULL, NULL, 0);
3576 ret = f2fs_get_dnode_of_data(&dn, page_idx, LOOKUP_NODE);
3577 if (ret) {
3578 if (ret == -ENOENT) {
3579 page_idx = f2fs_get_next_page_offset(&dn,
3580 page_idx);
3581 ret = 0;
3582 continue;
3583 }
3584 break;
3585 }
3586
3587 end_offset = ADDRS_PER_PAGE(dn.node_page, inode);
3588 count = min(end_offset - dn.ofs_in_node, last_idx - page_idx);
3589 count = round_up(count, F2FS_I(inode)->i_cluster_size);
3590
3591 ret = release_compress_blocks(&dn, count);
3592
3593 f2fs_put_dnode(&dn);
3594
3595 if (ret < 0)
3596 break;
3597
3598 page_idx += count;
3599 released_blocks += ret;
3600 }
3601
3602 up_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]);
3603 up_write(&mapping->invalidate_lock);
3604 out:
3605 inode_unlock(inode);
3606
3607 mnt_drop_write_file(filp);
3608
3609 if (ret >= 0) {
3610 ret = put_user(released_blocks, (u64 __user *)arg);
3611 } else if (released_blocks &&
3612 atomic_read(&F2FS_I(inode)->i_compr_blocks)) {
3613 set_sbi_flag(sbi, SBI_NEED_FSCK);
3614 f2fs_warn(sbi, "%s: partial blocks were released i_ino=%lx "
3615 "iblocks=%llu, released=%u, compr_blocks=%u, "
3616 "run fsck to fix.",
3617 __func__, inode->i_ino, inode->i_blocks,
3618 released_blocks,
3619 atomic_read(&F2FS_I(inode)->i_compr_blocks));
3620 }
3621
3622 return ret;
3623 }
3624
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 33609 bytes --]
WARNING: multiple messages have this Message-ID
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH 07/12] f2fs: Convert to using invalidate_lock
Date: Sat, 24 Apr 2021 04:05:04 +0800 [thread overview]
Message-ID: <202104240353.hrooocwr-lkp@intel.com> (raw)
In-Reply-To: <20210423173018.23133-7-jack@suse.cz>
[-- Attachment #1: Type: text/plain, Size: 5588 bytes --]
Hi Jan,
I love your patch! Yet something to improve:
[auto build test ERROR on ext4/dev]
[also build test ERROR on fuse/for-next linus/master v5.12-rc8]
[cannot apply to hnaz-linux-mm/master next-20210423]
[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/Jan-Kara/fs-Hole-punch-vs-page-cache-filling-races/20210424-013114
base: https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git dev
config: arm-randconfig-r031-20210423 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 06234f758e1945084582cf80450b396f75a9c06e)
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 arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://github.com/0day-ci/linux/commit/7a9e8e67e7f7d0070294e9f0a3567a3f28985383
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Jan-Kara/fs-Hole-punch-vs-page-cache-filling-races/20210424-013114
git checkout 7a9e8e67e7f7d0070294e9f0a3567a3f28985383
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=arm
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/file.c:3567:14: error: use of undeclared identifier 'mapping'
down_write(&mapping->invalidate_lock);
^
fs/f2fs/file.c:3603:12: error: use of undeclared identifier 'mapping'
up_write(&mapping->invalidate_lock);
^
2 errors generated.
vim +/mapping +3567 fs/f2fs/file.c
3515
3516 static int f2fs_release_compress_blocks(struct file *filp, unsigned long arg)
3517 {
3518 struct inode *inode = file_inode(filp);
3519 struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
3520 pgoff_t page_idx = 0, last_idx;
3521 unsigned int released_blocks = 0;
3522 int ret;
3523 int writecount;
3524
3525 if (!f2fs_sb_has_compression(F2FS_I_SB(inode)))
3526 return -EOPNOTSUPP;
3527
3528 if (!f2fs_compressed_file(inode))
3529 return -EINVAL;
3530
3531 if (f2fs_readonly(sbi->sb))
3532 return -EROFS;
3533
3534 ret = mnt_want_write_file(filp);
3535 if (ret)
3536 return ret;
3537
3538 f2fs_balance_fs(F2FS_I_SB(inode), true);
3539
3540 inode_lock(inode);
3541
3542 writecount = atomic_read(&inode->i_writecount);
3543 if ((filp->f_mode & FMODE_WRITE && writecount != 1) ||
3544 (!(filp->f_mode & FMODE_WRITE) && writecount)) {
3545 ret = -EBUSY;
3546 goto out;
3547 }
3548
3549 if (IS_IMMUTABLE(inode)) {
3550 ret = -EINVAL;
3551 goto out;
3552 }
3553
3554 ret = filemap_write_and_wait_range(inode->i_mapping, 0, LLONG_MAX);
3555 if (ret)
3556 goto out;
3557
3558 F2FS_I(inode)->i_flags |= F2FS_IMMUTABLE_FL;
3559 f2fs_set_inode_flags(inode);
3560 inode->i_ctime = current_time(inode);
3561 f2fs_mark_inode_dirty_sync(inode, true);
3562
3563 if (!atomic_read(&F2FS_I(inode)->i_compr_blocks))
3564 goto out;
3565
3566 down_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]);
> 3567 down_write(&mapping->invalidate_lock);
3568
3569 last_idx = DIV_ROUND_UP(i_size_read(inode), PAGE_SIZE);
3570
3571 while (page_idx < last_idx) {
3572 struct dnode_of_data dn;
3573 pgoff_t end_offset, count;
3574
3575 set_new_dnode(&dn, inode, NULL, NULL, 0);
3576 ret = f2fs_get_dnode_of_data(&dn, page_idx, LOOKUP_NODE);
3577 if (ret) {
3578 if (ret == -ENOENT) {
3579 page_idx = f2fs_get_next_page_offset(&dn,
3580 page_idx);
3581 ret = 0;
3582 continue;
3583 }
3584 break;
3585 }
3586
3587 end_offset = ADDRS_PER_PAGE(dn.node_page, inode);
3588 count = min(end_offset - dn.ofs_in_node, last_idx - page_idx);
3589 count = round_up(count, F2FS_I(inode)->i_cluster_size);
3590
3591 ret = release_compress_blocks(&dn, count);
3592
3593 f2fs_put_dnode(&dn);
3594
3595 if (ret < 0)
3596 break;
3597
3598 page_idx += count;
3599 released_blocks += ret;
3600 }
3601
3602 up_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]);
3603 up_write(&mapping->invalidate_lock);
3604 out:
3605 inode_unlock(inode);
3606
3607 mnt_drop_write_file(filp);
3608
3609 if (ret >= 0) {
3610 ret = put_user(released_blocks, (u64 __user *)arg);
3611 } else if (released_blocks &&
3612 atomic_read(&F2FS_I(inode)->i_compr_blocks)) {
3613 set_sbi_flag(sbi, SBI_NEED_FSCK);
3614 f2fs_warn(sbi, "%s: partial blocks were released i_ino=%lx "
3615 "iblocks=%llu, released=%u, compr_blocks=%u, "
3616 "run fsck to fix.",
3617 __func__, inode->i_ino, inode->i_blocks,
3618 released_blocks,
3619 atomic_read(&F2FS_I(inode)->i_compr_blocks));
3620 }
3621
3622 return ret;
3623 }
3624
---
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: 33609 bytes --]
next prev parent reply other threads:[~2021-04-23 20:05 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-23 17:29 [PATCH 0/12 v4] fs: Hole punch vs page cache filling races Jan Kara
2021-04-23 17:29 ` [PATCH 01/12] mm: Fix comments mentioning i_mutex Jan Kara
2021-04-23 17:29 ` [PATCH 02/12] mm: Protect operations adding pages to page cache with invalidate_lock Jan Kara
2021-04-23 18:30 ` Matthew Wilcox
2021-04-23 18:30 ` [f2fs-dev] " Matthew Wilcox
2021-04-23 23:04 ` Dave Chinner
2021-04-23 23:04 ` [f2fs-dev] " Dave Chinner
2021-04-26 15:46 ` Jan Kara
2021-04-26 15:46 ` [f2fs-dev] " Jan Kara
2021-04-23 17:29 ` [PATCH 03/12] ext4: Convert to use mapping->invalidate_lock Jan Kara
2021-04-23 17:29 ` [PATCH 04/12] ext2: Convert to using invalidate_lock Jan Kara
2021-04-23 17:29 ` [PATCH 05/12] xfs: Convert to use invalidate_lock Jan Kara
2021-04-23 22:39 ` Dave Chinner
2021-04-23 17:29 ` [PATCH 06/12] zonefs: Convert to using invalidate_lock Jan Kara
2021-04-26 6:40 ` Damien Le Moal
2021-04-26 16:24 ` Jan Kara
2021-04-23 17:29 ` [PATCH 07/12] f2fs: " Jan Kara
2021-04-23 19:15 ` kernel test robot
2021-04-23 19:15 ` kernel test robot
2021-04-23 20:05 ` kernel test robot [this message]
2021-04-23 20:05 ` kernel test robot
2021-04-23 17:29 ` [PATCH 08/12] fuse: " Jan Kara
2021-04-23 17:29 ` [PATCH 09/12] shmem: " Jan Kara
2021-04-29 4:12 ` Hugh Dickins
2021-04-29 4:12 ` Hugh Dickins
2021-04-29 9:30 ` Jan Kara
2021-04-23 17:29 ` [PATCH 10/12] shmem: Use invalidate_lock to protect fallocate Jan Kara
2021-04-23 19:27 ` kernel test robot
2021-04-23 19:27 ` kernel test robot
2021-04-29 3:24 ` Hugh Dickins
2021-04-29 3:24 ` Hugh Dickins
2021-04-29 9:20 ` Jan Kara
2021-04-23 17:29 ` [PATCH 11/12] ceph: Fix race between hole punch and page fault Jan Kara
2021-04-23 17:29 ` [PATCH 12/12] cifs: " Jan Kara
2021-04-23 22:07 ` [PATCH 0/12 v4] fs: Hole punch vs page cache filling races Dave Chinner
2021-04-23 22:07 ` [f2fs-dev] " Dave Chinner
2021-04-23 23:51 ` Matthew Wilcox
2021-04-23 23:51 ` [f2fs-dev] " Matthew Wilcox
2021-04-24 6:11 ` Christoph Hellwig
2021-04-24 6:11 ` [f2fs-dev] " Christoph Hellwig
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=202104240353.hrooocwr-lkp@intel.com \
--to=lkp@intel.com \
--cc=amir73il@gmail.com \
--cc=chao@kernel.org \
--cc=clang-built-linux@googlegroups.com \
--cc=david@fromorbit.com \
--cc=hch@infradead.org \
--cc=jack@suse.cz \
--cc=jaegeuk@kernel.org \
--cc=kbuild-all@lists.01.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=linux-fsdevel@vger.kernel.org \
--cc=tytso@mit.edu \
--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.