Re: [PATCH v1 05/14] fs: split off __alloc_page_buffers function

kernel test robot
2022-02-14T23:28:27Z

Hi Stefan,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on f1baf68e1383f6ed93eb9cff2866d46562607a43]

url: https://github.com/0day-ci/linux/commits/Stefan-Roesch/Support-sync-buffered-writes-for-io-uring/20220215-014908
base: f1baf68e1383f6ed93eb9cff2866d46562607a43
config: arm-s5pv210_defconfig (https://download.01.org/0day-ci/archive/20220215/202202150743.R5ymlf5z-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project ea071884b0cc7210b3cc5fe858f0e892a779a23b)
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/e8b24c1ab111c127cbe1daaac3b607c626fb03a8
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Stefan-Roesch/Support-sync-buffered-writes-for-io-uring/20220215-014908
git checkout e8b24c1ab111c127cbe1daaac3b607c626fb03a8
# 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=arm SHELL=/bin/bash

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

All warnings (new ones prefixed by >>):

>> fs/buffer.c:805:21: warning: no previous prototype for function '__alloc_page_buffers' [-Wmissing-prototypes]
struct buffer_head *__alloc_page_buffers(struct page *page, unsigned long size,
^
fs/buffer.c:805:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
struct buffer_head *__alloc_page_buffers(struct page *page, unsigned long size,
^
static
1 warning generated.

vim +/__alloc_page_buffers +805 fs/buffer.c

804
> 805 struct buffer_head *__alloc_page_buffers(struct page *page, unsigned long size,
806 gfp_t gfp)
807 {
808 struct buffer_head *bh, *head;
809 long offset;
810 struct mem_cgroup *memcg, *old_memcg;
811
812 /* The page lock pins the memcg */
813 memcg = page_memcg(page);
814 old_memcg = set_active_memcg(memcg);
815
816 head = NULL;
817 offset = PAGE_SIZE;
818 while ((offset -= size) >= 0) {
819 bh = alloc_buffer_head(gfp);
820 if (!bh)
821 goto no_grow;
822
823 bh->b_this_page = head;
824 bh->b_blocknr = -1;
825 head = bh;
826
827 bh->b_size = size;
828
829 /* Link the buffer to its page */
830 set_bh_page(bh, page, offset);
831 }
832 out:
833 set_active_memcg(old_memcg);
834 return head;
835 /*
836 * In case anything failed, we just free everything we got.
837 */
838 no_grow:
839 if (head) {
840 do {
841 bh = head;
842 head = head->b_this_page;
843 free_buffer_head(bh);
844 } while (head);
845 }
846
847 goto out;
848 }
849

---
0-DAY CI Kernel Test Service, Intel Corporation