Message ID | 20220901225849.42898-10-shr@fb.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | io-uring/btrfs: support async buffered writes | expand |
Hi Stefan,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on b90cb1053190353cc30f0fef0ef1f378ccc063c5]
url: https://github.com/intel-lab-lkp/linux/commits/Stefan-Roesch/io-uring-btrfs-support-async-buffered-writes/20220902-070208
base: b90cb1053190353cc30f0fef0ef1f378ccc063c5
config: i386-randconfig-a003 (https://download.01.org/0day-ci/archive/20220902/202209022236.e41DKuIt-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-5) 11.3.0
reproduce (this is a W=1 build):
# https://github.com/intel-lab-lkp/linux/commit/b24b542d1de60f99e6bfeb7971168c9a9bc8b7e4
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Stefan-Roesch/io-uring-btrfs-support-async-buffered-writes/20220902-070208
git checkout b24b542d1de60f99e6bfeb7971168c9a9bc8b7e4
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>, old ones prefixed by <<):
>> ERROR: modpost: "balance_dirty_pages_ratelimited_flags" [fs/btrfs/btrfs.ko] undefined!
On 9/2/22 8:34 AM, kernel test robot wrote: > Hi Stefan, > > Thank you for the patch! Yet something to improve: > > [auto build test ERROR on b90cb1053190353cc30f0fef0ef1f378ccc063c5] > > url: https://github.com/intel-lab-lkp/linux/commits/Stefan-Roesch/io-uring-btrfs-support-async-buffered-writes/20220902-070208 > base: b90cb1053190353cc30f0fef0ef1f378ccc063c5 > config: i386-randconfig-a003 (https://download.01.org/0day-ci/archive/20220902/202209022236.e41DKuIt-lkp@intel.com/config) > compiler: gcc-11 (Debian 11.3.0-5) 11.3.0 > reproduce (this is a W=1 build): > # https://github.com/intel-lab-lkp/linux/commit/b24b542d1de60f99e6bfeb7971168c9a9bc8b7e4 > git remote add linux-review https://github.com/intel-lab-lkp/linux > git fetch --no-tags linux-review Stefan-Roesch/io-uring-btrfs-support-async-buffered-writes/20220902-070208 > git checkout b24b542d1de60f99e6bfeb7971168c9a9bc8b7e4 > # save the config file > mkdir build_dir && cp config build_dir/.config > make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash > > If you fix the issue, kindly add following tag where applicable > Reported-by: kernel test robot <lkp@intel.com> > > All errors (new ones prefixed by >>, old ones prefixed by <<): > >>> ERROR: modpost: "balance_dirty_pages_ratelimited_flags" [fs/btrfs/btrfs.ko] undefined! Stefan, we need an EXPORT_SYMBOL_GPL() on balance_dirty_pages_ratelimited_flags() since it can now be used in a modular fashion.
On 9/2/22 7:43 AM, Jens Axboe wrote: > On 9/2/22 8:34 AM, kernel test robot wrote: >> Hi Stefan, >> >> Thank you for the patch! Yet something to improve: >> >> [auto build test ERROR on b90cb1053190353cc30f0fef0ef1f378ccc063c5] >> >> url: https://github.com/intel-lab-lkp/linux/commits/Stefan-Roesch/io-uring-btrfs-support-async-buffered-writes/20220902-070208 >> base: b90cb1053190353cc30f0fef0ef1f378ccc063c5 >> config: i386-randconfig-a003 (https://download.01.org/0day-ci/archive/20220902/202209022236.e41DKuIt-lkp@intel.com/config ) >> compiler: gcc-11 (Debian 11.3.0-5) 11.3.0 >> reproduce (this is a W=1 build): >> # https://github.com/intel-lab-lkp/linux/commit/b24b542d1de60f99e6bfeb7971168c9a9bc8b7e4 >> git remote add linux-review https://github.com/intel-lab-lkp/linux >> git fetch --no-tags linux-review Stefan-Roesch/io-uring-btrfs-support-async-buffered-writes/20220902-070208 >> git checkout b24b542d1de60f99e6bfeb7971168c9a9bc8b7e4 >> # save the config file >> mkdir build_dir && cp config build_dir/.config >> make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash >> >> If you fix the issue, kindly add following tag where applicable >> Reported-by: kernel test robot <lkp@intel.com> >> >> All errors (new ones prefixed by >>, old ones prefixed by <<): >> >>>> ERROR: modpost: "balance_dirty_pages_ratelimited_flags" [fs/btrfs/btrfs.ko] undefined! > > Stefan, we need an EXPORT_SYMBOL_GPL() on > balance_dirty_pages_ratelimited_flags() since it can now be used in a > modular fashion. > In the new version the function is exported.
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 0789ef9f083b..b498541228ca 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -1654,6 +1654,7 @@ static noinline ssize_t btrfs_buffered_write(struct kiocb *iocb, loff_t old_isize = i_size_read(inode); unsigned int ilock_flags = 0; bool nowait = iocb->ki_flags & IOCB_NOWAIT; + unsigned int bdp_flags = nowait ? BDP_ASYNC : 0; if (nowait) ilock_flags |= BTRFS_ILOCK_TRY; @@ -1756,6 +1757,10 @@ static noinline ssize_t btrfs_buffered_write(struct kiocb *iocb, release_bytes = reserve_bytes; again: + ret = balance_dirty_pages_ratelimited_flags(inode->i_mapping, bdp_flags); + if (unlikely(ret)) + break; + /* * This is going to setup the pages array with the number of * pages we want, so we don't really need to worry about the @@ -1860,8 +1865,6 @@ static noinline ssize_t btrfs_buffered_write(struct kiocb *iocb, cond_resched(); - balance_dirty_pages_ratelimited(inode->i_mapping); - pos += copied; num_written += copied; }
This replaces the call to function balance_dirty_pages_ratelimited() in the function btrfs_buffered_write() with a call to balance_dirty_pages_ratelimited_flags(). It also moves the function after the again label. This can cause the function to be called a bit later, but this should have no impact in the real world. Signed-off-by: Stefan Roesch <shr@fb.com> --- fs/btrfs/file.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)