tree: https://kernel.googlesource.com/pub/scm/linux/kernel/git/viro/vfs.git work.dcache head: e50d966a90a5dba0be0bb0ba34a478c797ac929f commit: 14909c0b28db6df6b3fe86568a163acab07c643d [4/11] ceph: don't open-code the check for dead lockref config: ia64-allmodconfig (attached as .config) compiler: ia64-linux-gcc (GCC) 7.4.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 14909c0b28db6df6b3fe86568a163acab07c643d # save the attached .config to linux build tree GCC_VERSION=7.4.0 make.cross ARCH=ia64 If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@xxxxxxxxx> All errors (new ones prefixed by >>): fs//ceph/dir.c: In function '__dentry_leases_walk': >> fs//ceph/dir.c:1258:33: error: expected identifier before '&' token if (__lockref_is_dead(dentry->&d_lockref)) { ^ vim +1258 fs//ceph/dir.c 1231 1232 static unsigned long 1233 __dentry_leases_walk(struct ceph_mds_client *mdsc, 1234 struct ceph_lease_walk_control *lwc, 1235 int (*check)(struct dentry*, void*)) 1236 { 1237 struct ceph_dentry_info *di, *tmp; 1238 struct dentry *dentry, *last = NULL; 1239 struct list_head* list; 1240 LIST_HEAD(dispose); 1241 unsigned long freed = 0; 1242 int ret = 0; 1243 1244 list = lwc->dir_lease ? &mdsc->dentry_dir_leases : &mdsc->dentry_leases; 1245 spin_lock(&mdsc->dentry_list_lock); 1246 list_for_each_entry_safe(di, tmp, list, lease_list) { 1247 if (!lwc->nr_to_scan) 1248 break; 1249 --lwc->nr_to_scan; 1250 1251 dentry = di->dentry; 1252 if (last == dentry) 1253 break; 1254 1255 if (!spin_trylock(&dentry->d_lock)) 1256 continue; 1257 > 1258 if (__lockref_is_dead(dentry->&d_lockref)) { 1259 list_del_init(&di->lease_list); 1260 goto next; 1261 } 1262 1263 ret = check(dentry, lwc); 1264 if (ret & TOUCH) { 1265 /* move it into tail of dir lease list */ 1266 __dentry_dir_lease_touch(mdsc, di); 1267 if (!last) 1268 last = dentry; 1269 } 1270 if (ret & DELETE) { 1271 /* stale lease */ 1272 di->flags &= ~CEPH_DENTRY_REFERENCED; 1273 if (dentry->d_lockref.count > 0) { 1274 /* update_dentry_lease() will re-add 1275 * it to lease list, or 1276 * ceph_d_delete() will return 1 when 1277 * last reference is dropped */ 1278 list_del_init(&di->lease_list); 1279 } else { 1280 di->flags |= CEPH_DENTRY_SHRINK_LIST; 1281 list_move_tail(&di->lease_list, &dispose); 1282 dget_dlock(dentry); 1283 } 1284 } 1285 next: 1286 spin_unlock(&dentry->d_lock); 1287 if (ret & STOP) 1288 break; 1289 } 1290 spin_unlock(&mdsc->dentry_list_lock); 1291 1292 while (!list_empty(&dispose)) { 1293 di = list_first_entry(&dispose, struct ceph_dentry_info, 1294 lease_list); 1295 dentry = di->dentry; 1296 spin_lock(&dentry->d_lock); 1297 1298 list_del_init(&di->lease_list); 1299 di->flags &= ~CEPH_DENTRY_SHRINK_LIST; 1300 if (di->flags & CEPH_DENTRY_REFERENCED) { 1301 spin_lock(&mdsc->dentry_list_lock); 1302 if (di->flags & CEPH_DENTRY_LEASE_LIST) { 1303 list_add_tail(&di->lease_list, 1304 &mdsc->dentry_leases); 1305 } else { 1306 __dentry_dir_lease_touch(mdsc, di); 1307 } 1308 spin_unlock(&mdsc->dentry_list_lock); 1309 } else { 1310 freed++; 1311 } 1312 1313 spin_unlock(&dentry->d_lock); 1314 /* ceph_d_delete() does the trick */ 1315 dput(dentry); 1316 } 1317 return freed; 1318 } 1319 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip