Re: [PATCH v3 4/5] btrfs: do not infinite loop in data reclaim if we aborted
From: kernel test robot <hidden>
Date: 2021-10-01 21:49:53
Also in:
oe-kbuild-all
Hi Josef, I love your patch! Yet something to improve: [auto build test ERROR on v5.15-rc3] [cannot apply to kdave/for-next next-20210922] [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/Josef-Bacik/Miscellaneous-error-handling-patches/20210929-185151 base: 5816b3e6577eaa676ceb00a848f0fd65fe2adc29 config: nios2-allyesconfig (attached as .config) compiler: nios2-linux-gcc (GCC) 11.2.0 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 # https://github.com/0day-ci/linux/commit/4d626ae95cb373b954751bcdadacf6b0f92f3a6c git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Josef-Bacik/Miscellaneous-error-handling-patches/20210929-185151 git checkout 4d626ae95cb373b954751bcdadacf6b0f92f3a6c # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=nios2 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <redacted> All errors (new ones prefixed by >>): fs/btrfs/space-info.c: In function 'maybe_fail_all_tickets':
quoted
fs/btrfs/space-info.c:888:30: error: implicit declaration of function 'btrfs_has_fs_error'; did you mean 'btrfs_handle_fs_error'? [-Werror=implicit-function-declaration]
888 | const bool aborted = btrfs_has_fs_error(fs_info);
| ^~~~~~~~~~~~~~~~~~
| btrfs_handle_fs_error
cc1: all warnings being treated as errors
vim +888 fs/btrfs/space-info.c
867
868 /*
869 * maybe_fail_all_tickets - we've exhausted our flushing, start failing tickets
870 * @fs_info - fs_info for this fs
871 * @space_info - the space info we were flushing
872 *
873 * We call this when we've exhausted our flushing ability and haven't made
874 * progress in satisfying tickets. The reservation code handles tickets in
875 * order, so if there is a large ticket first and then smaller ones we could
876 * very well satisfy the smaller tickets. This will attempt to wake up any
877 * tickets in the list to catch this case.
878 *
879 * This function returns true if it was able to make progress by clearing out
880 * other tickets, or if it stumbles across a ticket that was smaller than the
881 * first ticket.
882 */
883 static bool maybe_fail_all_tickets(struct btrfs_fs_info *fs_info,
884 struct btrfs_space_info *space_info)
885 {
886 struct reserve_ticket *ticket;
887 u64 tickets_id = space_info->tickets_id;
> 888 const bool aborted = btrfs_has_fs_error(fs_info);
889
890 trace_btrfs_fail_all_tickets(fs_info, space_info);
891
892 if (btrfs_test_opt(fs_info, ENOSPC_DEBUG)) {
893 btrfs_info(fs_info, "cannot satisfy tickets, dumping space info");
894 __btrfs_dump_space_info(fs_info, space_info);
895 }
896
897 while (!list_empty(&space_info->tickets) &&
898 tickets_id == space_info->tickets_id) {
899 ticket = list_first_entry(&space_info->tickets,
900 struct reserve_ticket, list);
901
902 if (!aborted && ticket->steal &&
903 steal_from_global_rsv(fs_info, space_info, ticket))
904 return true;
905
906 if (!aborted && btrfs_test_opt(fs_info, ENOSPC_DEBUG))
907 btrfs_info(fs_info, "failing ticket with %llu bytes",
908 ticket->bytes);
909
910 remove_ticket(space_info, ticket);
911 if (aborted)
912 ticket->error = -EIO;
913 else
914 ticket->error = -ENOSPC;
915 wake_up(&ticket->wait);
916
917 /*
918 * We're just throwing tickets away, so more flushing may not
919 * trip over btrfs_try_granting_tickets, so we need to call it
920 * here to see if we can make progress with the next ticket in
921 * the list.
922 */
923 if (!aborted)
924 btrfs_try_granting_tickets(fs_info, space_info);
925 }
926 return (tickets_id != space_info->tickets_id);
927 }
928
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Attachments
- .config.gz [application/gzip] 60767 bytes