Re: [PATCH] afs: Fix afs_write_end() when called with copied == 0 [ver #2]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi David,

I love your patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on linux/master v5.10-rc3 next-20201113]
[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/David-Howells/afs-Fix-afs_write_end-when-called-with-copied-0-ver-2/20201115-012626
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git f01c30de86f1047e9bae1b1b1417b0ce8dcd15b1
config: x86_64-randconfig-a006-20201115 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 9a85643cd357e412cff69067bb5c4840e228c2ab)
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 x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # https://github.com/0day-ci/linux/commit/3486f1e413fba9587ced6c768d75e993ef78ce9d
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review David-Howells/afs-Fix-afs_write_end-when-called-with-copied-0-ver-2/20201115-012626
        git checkout 3486f1e413fba9587ced6c768d75e993ef78ce9d
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

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

All errors (new ones prefixed by >>):

>> fs/afs/write.c:202:3: error: implicit declaration of function 'SetPageUptoodate' [-Werror,-Wimplicit-function-declaration]
                   SetPageUptoodate(page);
                   ^
   fs/afs/write.c:202:3: note: did you mean 'SetPageUptodate'?
   include/linux/page-flags.h:539:29: note: 'SetPageUptodate' declared here
   static __always_inline void SetPageUptodate(struct page *page)
                               ^
   1 error generated.

vim +/SetPageUptoodate +202 fs/afs/write.c

   158	
   159	/*
   160	 * finalise part of a write to a page
   161	 */
   162	int afs_write_end(struct file *file, struct address_space *mapping,
   163			  loff_t pos, unsigned len, unsigned copied,
   164			  struct page *page, void *fsdata)
   165	{
   166		struct afs_vnode *vnode = AFS_FS_I(file_inode(file));
   167		struct key *key = afs_file_key(file);
   168		unsigned long priv;
   169		unsigned int f, from = pos & (PAGE_SIZE - 1);
   170		unsigned int t, to = from + copied;
   171		loff_t i_size, maybe_i_size;
   172		int ret = 0;
   173	
   174		_enter("{%llx:%llu},{%lx}",
   175		       vnode->fid.vid, vnode->fid.vnode, page->index);
   176	
   177		if (copied == 0)
   178			goto out;
   179	
   180		maybe_i_size = pos + copied;
   181	
   182		i_size = i_size_read(&vnode->vfs_inode);
   183		if (maybe_i_size > i_size) {
   184			write_seqlock(&vnode->cb_lock);
   185			i_size = i_size_read(&vnode->vfs_inode);
   186			if (maybe_i_size > i_size)
   187				i_size_write(&vnode->vfs_inode, maybe_i_size);
   188			write_sequnlock(&vnode->cb_lock);
   189		}
   190	
   191		if (!PageUptodate(page)) {
   192			if (copied < len) {
   193				/* Try and load any missing data from the server.  The
   194				 * unmarshalling routine will take care of clearing any
   195				 * bits that are beyond the EOF.
   196				 */
   197				ret = afs_fill_page(vnode, key, pos + copied,
   198						    len - copied, page);
   199				if (ret < 0)
   200					goto out;
   201			}
 > 202			SetPageUptoodate(page);
   203		}
   204	
   205		if (PagePrivate(page)) {
   206			priv = page_private(page);
   207			f = afs_page_dirty_from(priv);
   208			t = afs_page_dirty_to(priv);
   209			if (from < f)
   210				f = from;
   211			if (to > t)
   212				t = to;
   213			priv = afs_page_dirty(f, t);
   214			set_page_private(page, priv);
   215			trace_afs_page_dirty(vnode, tracepoint_string("dirty+"),
   216					     page->index, priv);
   217		} else {
   218			priv = afs_page_dirty(from, to);
   219			attach_page_private(page, (void *)priv);
   220			trace_afs_page_dirty(vnode, tracepoint_string("dirty"),
   221					     page->index, priv);
   222		}
   223	
   224		set_page_dirty(page);
   225		if (PageDirty(page))
   226			_debug("dirtied");
   227		ret = copied;
   228	
   229	out:
   230		unlock_page(page);
   231		put_page(page);
   232		return ret;
   233	}
   234	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux