On 8/16/22 8:35 AM, kernel test robot wrote:
tree: https://github.com/ceph/ceph-client.git testing
head: bc940dc5cc27be90472e00ddf510b28b29ffd6ce
commit: a5cb140194256429d5ce74439e8165390d9380a6 [14/39] libceph: add new iov_iter-based ceph_msg_data_type and ceph_osd_data_type
config: x86_64-rhel-8.3-kselftests (https://download.01.org/0day-ci/archive/20220816/202208160842.GUNdBYbK-lkp@xxxxxxxxx/config)
compiler: gcc-11 (Debian 11.3.0-5) 11.3.0
reproduce (this is a W=1 build):
# https://github.com/ceph/ceph-client/commit/a5cb140194256429d5ce74439e8165390d9380a6
git remote add ceph-client https://github.com/ceph/ceph-client.git
git fetch --no-tags ceph-client testing
git checkout a5cb140194256429d5ce74439e8165390d9380a6
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash net/ceph/
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@xxxxxxxxx>
All errors (new ones prefixed by >>):
net/ceph/messenger.c: In function 'ceph_msg_data_iter_next':
net/ceph/messenger.c:988:15: error: implicit declaration of function 'iov_iter_get_pages'; did you mean 'iov_iter_get_pages2'? [-Werror=implicit-function-declaration]
988 | len = iov_iter_get_pages(&cursor->iov_iter, &page, PAGE_SIZE,
| ^~~~~~~~~~~~~~~~~~
| iov_iter_get_pages2
cc1: some warnings being treated as errors
Thanks for reporting this.
Al has changed it to auto-advance iterator, the following patch should
fix it:
diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
index 945f6d1a9efa..020474cf137c 100644
--- a/net/ceph/messenger.c
+++ b/net/ceph/messenger.c
@@ -985,25 +985,12 @@ static struct page *ceph_msg_data_iter_next(struct
ceph_msg_data_cursor *cursor,
if (cursor->lastlen)
iov_iter_revert(&cursor->iov_iter, cursor->lastlen);
- len = iov_iter_get_pages(&cursor->iov_iter, &page, PAGE_SIZE,
- 1, page_offset);
+ len = iov_iter_get_pages2(&cursor->iov_iter, &page, PAGE_SIZE,
+ 1, page_offset);
BUG_ON(len < 0);
cursor->lastlen = len;
- /*
- * FIXME: Al Viro says that he will soon change iov_iter_get_pages
- * to auto-advance the iterator. Emulate that here for now.
- */
- iov_iter_advance(&cursor->iov_iter, len);
-
- /*
- * FIXME: The assumption is that the pages represented by the
iov_iter
- * are pinned, with the references held by the upper-level
- * callers, or by virtue of being under writeback.
Eventually,
- * we'll get an iov_iter_get_pages variant that doesn't
take page
- * refs. Until then, just put the page ref.
- */
VM_BUG_ON_PAGE(!PageWriteback(page) && page_count(page) < 2, page);
put_page(page);
-- Xiubo
vim +988 net/ceph/messenger.c
977
978 static struct page *ceph_msg_data_iter_next(struct ceph_msg_data_cursor *cursor,
979 size_t *page_offset,
980 size_t *length)
981 {
982 struct page *page;
983 ssize_t len;
984
985 if (cursor->lastlen)
986 iov_iter_revert(&cursor->iov_iter, cursor->lastlen);
987
> 988 len = iov_iter_get_pages(&cursor->iov_iter, &page, PAGE_SIZE,
989 1, page_offset);
990 BUG_ON(len < 0);
991
992 cursor->lastlen = len;
993
994 /*
995 * FIXME: Al Viro says that he will soon change iov_iter_get_pages
996 * to auto-advance the iterator. Emulate that here for now.
997 */
998 iov_iter_advance(&cursor->iov_iter, len);
999
1000 /*
1001 * FIXME: The assumption is that the pages represented by the iov_iter
1002 * are pinned, with the references held by the upper-level
1003 * callers, or by virtue of being under writeback. Eventually,
1004 * we'll get an iov_iter_get_pages variant that doesn't take page
1005 * refs. Until then, just put the page ref.
1006 */
1007 VM_BUG_ON_PAGE(!PageWriteback(page) && page_count(page) < 2, page);
1008 put_page(page);
1009
1010 *length = min_t(size_t, len, cursor->resid);
1011 return page;
1012 }
1013