tree: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git staging-testing head: 0badacd779df08fbbc895cf6c488e100b86c1f39 commit: 73d65c8d1a851785af624870424b332f42af1b37 [752/791] staging: lustre: remove libcfs_all.h from lustre/include/*.h config: sh-allmodconfig (attached as .config) compiler: sh4-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross git checkout 73d65c8d1a851785af624870424b332f42af1b37 # save the attached .config to linux build tree make.cross ARCH=sh
All errors (new ones prefixed by >>):
drivers/staging/lustre/lustre/mdc/mdc_request.c: In function
'mdc_read_page_remote':
>> drivers/staging/lustre/lustre/mdc/mdc_request.c:1200:3: error: implicit
>> declaration of function 'prefetchw' [-Werror=implicit-function-declaration]
prefetchw(&page->flags);
^~~~~~~~~
cc1: some warnings being treated as errors
vim +/prefetchw +1200 drivers/staging/lustre/lustre/mdc/mdc_request.c
4f76f0ec wang di 2016-08-19 1114
4f76f0ec wang di 2016-08-19 1115 /**
4f76f0ec wang di 2016-08-19 1116 * Read pages from server.
4f76f0ec wang di 2016-08-19 1117 *
4f76f0ec wang di 2016-08-19 1118 * Page in MDS_READPAGE RPC is
packed in LU_PAGE_SIZE, and each page contains
4f76f0ec wang di 2016-08-19 1119 * a header lu_dirpage which
describes the start/end hash, and whether this
4f76f0ec wang di 2016-08-19 1120 * page is empty (contains no dir
entry) or hash collide with next page.
4f76f0ec wang di 2016-08-19 1121 * After client receives reply,
several pages will be integrated into dir page
4f76f0ec wang di 2016-08-19 1122 * in PAGE_SIZE (if PAGE_SIZE
greater than LU_PAGE_SIZE), and the
4f76f0ec wang di 2016-08-19 1123 * lu_dirpage for this integrated
page will be adjusted.
4f76f0ec wang di 2016-08-19 1124 **/
4f76f0ec wang di 2016-08-19 1125 static int mdc_read_page_remote(void
*data, struct page *page0)
4f76f0ec wang di 2016-08-19 1126 {
4f76f0ec wang di 2016-08-19 1127 struct readpage_param *rp =
data;
4f76f0ec wang di 2016-08-19 1128 struct page **page_pool;
4f76f0ec wang di 2016-08-19 1129 struct page *page;
4f76f0ec wang di 2016-08-19 1130 struct lu_dirpage *dp;
4f76f0ec wang di 2016-08-19 1131 int rd_pgs = 0; /* number of
pages read actually */
4f76f0ec wang di 2016-08-19 1132 int npages;
4f76f0ec wang di 2016-08-19 1133 struct md_op_data *op_data =
rp->rp_mod;
4f76f0ec wang di 2016-08-19 1134 struct ptlrpc_request *req;
4f76f0ec wang di 2016-08-19 1135 int max_pages =
op_data->op_max_pages;
4f76f0ec wang di 2016-08-19 1136 struct inode *inode;
4f76f0ec wang di 2016-08-19 1137 struct lu_fid *fid;
4f76f0ec wang di 2016-08-19 1138 int i;
4f76f0ec wang di 2016-08-19 1139 int rc;
4f76f0ec wang di 2016-08-19 1140
4f76f0ec wang di 2016-08-19 1141 LASSERT(max_pages > 0 &&
max_pages <= PTLRPC_MAX_BRW_PAGES);
4f76f0ec wang di 2016-08-19 1142 inode = op_data->op_data;
4f76f0ec wang di 2016-08-19 1143 fid = &op_data->op_fid1;
4f76f0ec wang di 2016-08-19 1144 LASSERT(inode);
4f76f0ec wang di 2016-08-19 1145
4f76f0ec wang di 2016-08-19 1146 page_pool = kcalloc(max_pages,
sizeof(page), GFP_NOFS);
4f76f0ec wang di 2016-08-19 1147 if (page_pool) {
4f76f0ec wang di 2016-08-19 1148 page_pool[0] = page0;
4f76f0ec wang di 2016-08-19 1149 } else {
4f76f0ec wang di 2016-08-19 1150 page_pool = &page0;
4f76f0ec wang di 2016-08-19 1151 max_pages = 1;
4f76f0ec wang di 2016-08-19 1152 }
4f76f0ec wang di 2016-08-19 1153
4f76f0ec wang di 2016-08-19 1154 for (npages = 1; npages <
max_pages; npages++) {
453f85d4 Mel Gorman 2017-11-15 1155 page =
page_cache_alloc(inode->i_mapping);
4f76f0ec wang di 2016-08-19 1156 if (!page)
4f76f0ec wang di 2016-08-19 1157 break;
4f76f0ec wang di 2016-08-19 1158 page_pool[npages] =
page;
4f76f0ec wang di 2016-08-19 1159 }
4f76f0ec wang di 2016-08-19 1160
4f76f0ec wang di 2016-08-19 1161 rc = mdc_getpage(rp->rp_exp,
fid, rp->rp_off, page_pool, npages, &req);
4f76f0ec wang di 2016-08-19 1162 if (!rc) {
4f76f0ec wang di 2016-08-19 1163 int lu_pgs =
req->rq_bulk->bd_nob_transferred;
4f76f0ec wang di 2016-08-19 1164
4f76f0ec wang di 2016-08-19 1165 rd_pgs =
(req->rq_bulk->bd_nob_transferred +
4f76f0ec wang di 2016-08-19 1166 PAGE_SIZE -
1) >> PAGE_SHIFT;
4f76f0ec wang di 2016-08-19 1167 lu_pgs >>=
LU_PAGE_SHIFT;
4f76f0ec wang di 2016-08-19 1168
LASSERT(!(req->rq_bulk->bd_nob_transferred & ~LU_PAGE_MASK));
4f76f0ec wang di 2016-08-19 1169
3cbbf5ed John L. Hammond 2016-09-18 1170 CDEBUG(D_INODE, "read
%d(%d) pages\n", rd_pgs, lu_pgs);
4f76f0ec wang di 2016-08-19 1171
4f76f0ec wang di 2016-08-19 1172
mdc_adjust_dirpages(page_pool, rd_pgs, lu_pgs);
4f76f0ec wang di 2016-08-19 1173
4f76f0ec wang di 2016-08-19 1174 SetPageUptodate(page0);
4f76f0ec wang di 2016-08-19 1175 }
4f76f0ec wang di 2016-08-19 1176
4f76f0ec wang di 2016-08-19 1177 unlock_page(page0);
4f76f0ec wang di 2016-08-19 1178 ptlrpc_req_finished(req);
4f76f0ec wang di 2016-08-19 1179 CDEBUG(D_CACHE, "read %d/%d
pages\n", rd_pgs, npages);
4f76f0ec wang di 2016-08-19 1180 for (i = 1; i < npages; i++) {
4f76f0ec wang di 2016-08-19 1181 unsigned long offset;
4f76f0ec wang di 2016-08-19 1182 __u64 hash;
4f76f0ec wang di 2016-08-19 1183 int ret;
4f76f0ec wang di 2016-08-19 1184
4f76f0ec wang di 2016-08-19 1185 page = page_pool[i];
4f76f0ec wang di 2016-08-19 1186
4f76f0ec wang di 2016-08-19 1187 if (rc < 0 || i >=
rd_pgs) {
4f76f0ec wang di 2016-08-19 1188 put_page(page);
4f76f0ec wang di 2016-08-19 1189 continue;
4f76f0ec wang di 2016-08-19 1190 }
4f76f0ec wang di 2016-08-19 1191
4f76f0ec wang di 2016-08-19 1192 SetPageUptodate(page);
4f76f0ec wang di 2016-08-19 1193
4f76f0ec wang di 2016-08-19 1194 dp = kmap(page);
4f76f0ec wang di 2016-08-19 1195 hash =
le64_to_cpu(dp->ldp_hash_start);
4f76f0ec wang di 2016-08-19 1196 kunmap(page);
4f76f0ec wang di 2016-08-19 1197
4f76f0ec wang di 2016-08-19 1198 offset =
hash_x_index(hash, rp->rp_hash64);
4f76f0ec wang di 2016-08-19 1199
4f76f0ec wang di 2016-08-19 @1200 prefetchw(&page->flags);
4f76f0ec wang di 2016-08-19 1201 ret =
add_to_page_cache_lru(page, inode->i_mapping, offset,
4f76f0ec wang di 2016-08-19 1202
GFP_KERNEL);
4f76f0ec wang di 2016-08-19 1203 if (!ret)
4f76f0ec wang di 2016-08-19 1204
unlock_page(page);
4f76f0ec wang di 2016-08-19 1205 else
4f76f0ec wang di 2016-08-19 1206
CDEBUG(D_VFSTRACE, "page %lu add to page cache failed: rc = %d\n",
4f76f0ec wang di 2016-08-19 1207 offset,
ret);
4f76f0ec wang di 2016-08-19 1208 put_page(page);
4f76f0ec wang di 2016-08-19 1209 }
4f76f0ec wang di 2016-08-19 1210
4f76f0ec wang di 2016-08-19 1211 if (page_pool != &page0)
4f76f0ec wang di 2016-08-19 1212 kfree(page_pool);
4f76f0ec wang di 2016-08-19 1213
4f76f0ec wang di 2016-08-19 1214 return rc;
4f76f0ec wang di 2016-08-19 1215 }
4f76f0ec wang di 2016-08-19 1216
:::::: The code at line 1200 was first introduced by commit
:::::: 4f76f0ec093c2f9ef049495c78d486bfb48e4de0 staging: lustre: llite: move
dir cache to MDC layer
:::::: TO: wang di <[email protected]>
:::::: CC: Greg Kroah-Hartman <[email protected]>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
.config.gz
Description: application/gzip
_______________________________________________ devel mailing list [email protected] http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
