[zab-rpdfs:rpdfs-initial 83/93] fs/rpdfs/ehtable.c:344:12: warning: variable 'pl' set but not used
kernel test robot <[email protected]> Sat, 01 Aug 2026 20:34:22 +0800
| Newsgroups | dev.linux.lists.oe-kbuild-all |
|---|---|
| Message-ID | <[email protected]> |
tree: https://git.kernel.org/pub/scm/linux/kernel/git/zab/linux-rpdfs.git rpdfs-initial head: 7dd9571ed4664ad741e8519b4a4369a2d84523f6 commit: 2658c3c902752b51b9bebb9bb36cf7dcde32d28d [83/93] rpdfs: add meta code for caching metadata config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20260801/[email protected]/config) compiler: alpha-linux-gcc (GCC) 16.1.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260801/[email protected]/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <[email protected]> | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ All warnings (new ones prefixed by >>): In file included from fs/rpdfs/ehtable.c:9: fs/rpdfs/meta.h:8:43: warning: 'struct rpdfs_iget_data' declared inside parameter list will not be visible outside of this definition or declaration 8 | int rpdfs_folio_loc_from_block_key(struct rpdfs_iget_data *igd, pgoff_t *index, | ^~~~~~~~~~~~~~~ fs/rpdfs/ehtable.c: In function 'compact_items': >> fs/rpdfs/ehtable.c:344:12: warning: variable 'pl' set but not used [-Wunused-but-set-variable=] 344 | u8 pl; | ^~ fs/rpdfs/ehtable.c: In function 'read_items': >> fs/rpdfs/ehtable.c:454:12: warning: variable '_unused' set but not used [-Wunused-but-set-variable=] 454 | u8 _unused; | ^~~~~~~ vim +/pl +344 fs/rpdfs/ehtable.c bc6c59466912ed0 Zach Brown 2026-07-09 325 bc6c59466912ed0 Zach Brown 2026-07-09 326 /* bc6c59466912ed0 Zach Brown 2026-07-09 327 * Compact the block by moving all the items to the front of the block, bc6c59466912ed0 Zach Brown 2026-07-09 328 * gathering free space at the end of the block. bc6c59466912ed0 Zach Brown 2026-07-09 329 * bc6c59466912ed0 Zach Brown 2026-07-09 330 * This isn't the most efficient thing in the world. We're using a bc6c59466912ed0 Zach Brown 2026-07-09 331 * trivial loop that moves items and updates the offsets individually. bc6c59466912ed0 Zach Brown 2026-07-09 332 * Moving larger runs of items and then updating all their offsets would bc6c59466912ed0 Zach Brown 2026-07-09 333 * probably be quicker. bc6c59466912ed0 Zach Brown 2026-07-09 334 */ bc6c59466912ed0 Zach Brown 2026-07-09 335 static void compact_items(struct rpdfs_ehtable_block *ehb) bc6c59466912ed0 Zach Brown 2026-07-09 336 { bc6c59466912ed0 Zach Brown 2026-07-09 337 struct rpdfs_ehtable_entry *ent; bc6c59466912ed0 Zach Brown 2026-07-09 338 struct rpdfs_ehtable_item *item; bc6c59466912ed0 Zach Brown 2026-07-09 339 u16 *indirect; bc6c59466912ed0 Zach Brown 2026-07-09 340 u16 size; bc6c59466912ed0 Zach Brown 2026-07-09 341 u16 off; bc6c59466912ed0 Zach Brown 2026-07-09 342 u16 nr; bc6c59466912ed0 Zach Brown 2026-07-09 343 u16 i; bc6c59466912ed0 Zach Brown 2026-07-09 @344 u8 pl; bc6c59466912ed0 Zach Brown 2026-07-09 345 bc6c59466912ed0 Zach Brown 2026-07-09 346 if (ehb->tail_free == ehb->total_free) bc6c59466912ed0 Zach Brown 2026-07-09 347 return; bc6c59466912ed0 Zach Brown 2026-07-09 348 bc6c59466912ed0 Zach Brown 2026-07-09 349 indirect = get_cpu_var(pcpu_indirect); bc6c59466912ed0 Zach Brown 2026-07-09 350 nr = 0; bc6c59466912ed0 Zach Brown 2026-07-09 351 bc6c59466912ed0 Zach Brown 2026-07-09 352 /* gather populated indices */ bc6c59466912ed0 Zach Brown 2026-07-09 353 for_each_entry(ehb, 0, ent, pl) { bc6c59466912ed0 Zach Brown 2026-07-09 354 if (!ent_is_empty(ent)) { bc6c59466912ed0 Zach Brown 2026-07-09 355 indirect[nr++] = ent_index(ehb, ent); bc6c59466912ed0 Zach Brown 2026-07-09 356 if (nr == le16_to_cpu(ehb->nr_entries)) bc6c59466912ed0 Zach Brown 2026-07-09 357 break; bc6c59466912ed0 Zach Brown 2026-07-09 358 } bc6c59466912ed0 Zach Brown 2026-07-09 359 } bc6c59466912ed0 Zach Brown 2026-07-09 360 bc6c59466912ed0 Zach Brown 2026-07-09 361 /* sort indirect indices by offset */ bc6c59466912ed0 Zach Brown 2026-07-09 362 sort_r(indirect, nr, sizeof(indirect[0]), cmp_indirect_ent_offset, NULL, ehb); bc6c59466912ed0 Zach Brown 2026-07-09 363 bc6c59466912ed0 Zach Brown 2026-07-09 364 off = ptr_offset(ehb, &ehb->entries[RPDFS_EHTABLE_ENTRIES]); bc6c59466912ed0 Zach Brown 2026-07-09 365 for (i = 0; i < nr; i++) { bc6c59466912ed0 Zach Brown 2026-07-09 366 ent = indirect_entry(ehb, indirect, i); bc6c59466912ed0 Zach Brown 2026-07-09 367 item = ent_item(ehb, ent); bc6c59466912ed0 Zach Brown 2026-07-09 368 size = item_size(item); bc6c59466912ed0 Zach Brown 2026-07-09 369 bc6c59466912ed0 Zach Brown 2026-07-09 370 if (le16_to_cpu(ent->offset) != off) { bc6c59466912ed0 Zach Brown 2026-07-09 371 memmove(offset_item(ehb, off), item, size); bc6c59466912ed0 Zach Brown 2026-07-09 372 ent->offset = cpu_to_le16(off); bc6c59466912ed0 Zach Brown 2026-07-09 373 } bc6c59466912ed0 Zach Brown 2026-07-09 374 off += size; bc6c59466912ed0 Zach Brown 2026-07-09 375 } bc6c59466912ed0 Zach Brown 2026-07-09 376 bc6c59466912ed0 Zach Brown 2026-07-09 377 put_cpu_var(indirect); bc6c59466912ed0 Zach Brown 2026-07-09 378 bc6c59466912ed0 Zach Brown 2026-07-09 379 /* zero the newly vacated free space at the end */ bc6c59466912ed0 Zach Brown 2026-07-09 380 memset(offset_item(ehb, off), 0, free_offset(ehb) - off); bc6c59466912ed0 Zach Brown 2026-07-09 381 bc6c59466912ed0 Zach Brown 2026-07-09 382 ehb->tail_free = ehb->total_free; bc6c59466912ed0 Zach Brown 2026-07-09 383 } bc6c59466912ed0 Zach Brown 2026-07-09 384 bc6c59466912ed0 Zach Brown 2026-07-09 385 bc6c59466912ed0 Zach Brown 2026-07-09 386 /* bc6c59466912ed0 Zach Brown 2026-07-09 387 * Copy the items in the block referenced by the indirect index array bc6c59466912ed0 Zach Brown 2026-07-09 388 * into the buffer. We fill an array of iargs structs from the start of bc6c59466912ed0 Zach Brown 2026-07-09 389 * the buffer and copy keys and values from the end of the buffer. bc6c59466912ed0 Zach Brown 2026-07-09 390 */ bc6c59466912ed0 Zach Brown 2026-07-09 391 static int fill_item_args(struct rpdfs_ehtable_block *ehb, u16 *indirect, u16 nr, bc6c59466912ed0 Zach Brown 2026-07-09 392 void *buf, size_t size) bc6c59466912ed0 Zach Brown 2026-07-09 393 { bc6c59466912ed0 Zach Brown 2026-07-09 394 struct rpdfs_ehtable_item_args *iargs; bc6c59466912ed0 Zach Brown 2026-07-09 395 struct rpdfs_ehtable_item *item; bc6c59466912ed0 Zach Brown 2026-07-09 396 struct rpdfs_ehtable_entry *ent; bc6c59466912ed0 Zach Brown 2026-07-09 397 u16 copied = 0; bc6c59466912ed0 Zach Brown 2026-07-09 398 u16 len; bc6c59466912ed0 Zach Brown 2026-07-09 399 u16 i; bc6c59466912ed0 Zach Brown 2026-07-09 400 bc6c59466912ed0 Zach Brown 2026-07-09 401 for (i = 0; i < nr; i++) { bc6c59466912ed0 Zach Brown 2026-07-09 402 ent = indirect_entry(ehb, indirect, i); bc6c59466912ed0 Zach Brown 2026-07-09 403 item = ent_item(ehb, ent); bc6c59466912ed0 Zach Brown 2026-07-09 404 len = sizeof(struct rpdfs_ehtable_item_args) + get_key_size(item) + bc6c59466912ed0 Zach Brown 2026-07-09 405 get_val_size(item); bc6c59466912ed0 Zach Brown 2026-07-09 406 bc6c59466912ed0 Zach Brown 2026-07-09 407 if (size < len) bc6c59466912ed0 Zach Brown 2026-07-09 408 break; bc6c59466912ed0 Zach Brown 2026-07-09 409 bc6c59466912ed0 Zach Brown 2026-07-09 410 iargs = buf; bc6c59466912ed0 Zach Brown 2026-07-09 411 iargs->hash = le32_to_cpu(ent->hash); bc6c59466912ed0 Zach Brown 2026-07-09 412 iargs->pos = ent_pos(ent); bc6c59466912ed0 Zach Brown 2026-07-09 413 iargs->key_size = get_key_size(item); bc6c59466912ed0 Zach Brown 2026-07-09 414 iargs->val_size = get_val_size(item); bc6c59466912ed0 Zach Brown 2026-07-09 415 iargs->val = buf + size - iargs->val_size; bc6c59466912ed0 Zach Brown 2026-07-09 416 iargs->key = iargs->val - iargs->key_size; bc6c59466912ed0 Zach Brown 2026-07-09 417 memcpy((void *)iargs->key, item_key(item), iargs->key_size); bc6c59466912ed0 Zach Brown 2026-07-09 418 memcpy((void *)iargs->val, item_val(item), iargs->val_size); bc6c59466912ed0 Zach Brown 2026-07-09 419 bc6c59466912ed0 Zach Brown 2026-07-09 420 copied++; bc6c59466912ed0 Zach Brown 2026-07-09 421 buf = iargs + 1; bc6c59466912ed0 Zach Brown 2026-07-09 422 size -= len; bc6c59466912ed0 Zach Brown 2026-07-09 423 } bc6c59466912ed0 Zach Brown 2026-07-09 424 bc6c59466912ed0 Zach Brown 2026-07-09 425 return copied; bc6c59466912ed0 Zach Brown 2026-07-09 426 } bc6c59466912ed0 Zach Brown 2026-07-09 427 bc6c59466912ed0 Zach Brown 2026-07-09 428 /* bc6c59466912ed0 Zach Brown 2026-07-09 429 * Copy items from the block to the caller's buffer. We fill an array bc6c59466912ed0 Zach Brown 2026-07-09 430 * of iargs structs at the start of the buffer that reference their keys bc6c59466912ed0 Zach Brown 2026-07-09 431 * and values in the buffer. bc6c59466912ed0 Zach Brown 2026-07-09 432 * bc6c59466912ed0 Zach Brown 2026-07-09 433 * Items are copied in pos sorted order, starting with the caller's pos. bc6c59466912ed0 Zach Brown 2026-07-09 434 * The number of items read and copied into the buffer is returned. bc6c59466912ed0 Zach Brown 2026-07-09 435 * bc6c59466912ed0 Zach Brown 2026-07-09 436 * We work in groups of populated entries that start with a base index. bc6c59466912ed0 Zach Brown 2026-07-09 437 * In each group, we only collect the entries with a greater pos and bc6c59466912ed0 Zach Brown 2026-07-09 438 * which are in our base group so that we skip wrapped entries when we bc6c59466912ed0 Zach Brown 2026-07-09 439 * encounter them in the front of the block. Once we hit an empty entry bc6c59466912ed0 Zach Brown 2026-07-09 440 * we know we've hit a gap in the sort order by hash, so we must have bc6c59466912ed0 Zach Brown 2026-07-09 441 * hit a gap in the sort order by pos. We sort the entries by pos and bc6c59466912ed0 Zach Brown 2026-07-09 442 * fill the buffer. bc6c59466912ed0 Zach Brown 2026-07-09 443 */ bc6c59466912ed0 Zach Brown 2026-07-09 444 static u16 read_items(struct rpdfs_ehtable_block *ehb, u32 pos, void *buf, size_t size) bc6c59466912ed0 Zach Brown 2026-07-09 445 { bc6c59466912ed0 Zach Brown 2026-07-09 446 struct rpdfs_ehtable_item_args *iargs; bc6c59466912ed0 Zach Brown 2026-07-09 447 struct rpdfs_ehtable_entry *ent; bc6c59466912ed0 Zach Brown 2026-07-09 448 bool stop_at_empty = false; bc6c59466912ed0 Zach Brown 2026-07-09 449 u16 *indirect; bc6c59466912ed0 Zach Brown 2026-07-09 450 u16 copied = 0; bc6c59466912ed0 Zach Brown 2026-07-09 451 u16 filled; bc6c59466912ed0 Zach Brown 2026-07-09 452 u16 start; bc6c59466912ed0 Zach Brown 2026-07-09 453 u16 nr = 0; bc6c59466912ed0 Zach Brown 2026-07-09 @454 u8 _unused; bc6c59466912ed0 Zach Brown 2026-07-09 455 u8 pl = 0; bc6c59466912ed0 Zach Brown 2026-07-09 456 bc6c59466912ed0 Zach Brown 2026-07-09 457 /* entries aren't sorted by pos, be sure to check all pos at hash */ bc6c59466912ed0 Zach Brown 2026-07-09 458 start = least_pos_hash(pos); bc6c59466912ed0 Zach Brown 2026-07-09 459 bc6c59466912ed0 Zach Brown 2026-07-09 460 indirect = get_cpu_var(pcpu_indirect); bc6c59466912ed0 Zach Brown 2026-07-09 461 bc6c59466912ed0 Zach Brown 2026-07-09 462 for_each_entry(ehb, start, ent, _unused) { bc6c59466912ed0 Zach Brown 2026-07-09 463 if (ent == &ehb->entries[RPDFS_EHTABLE_ENTRIES - 1]) bc6c59466912ed0 Zach Brown 2026-07-09 464 stop_at_empty = true; bc6c59466912ed0 Zach Brown 2026-07-09 465 bc6c59466912ed0 Zach Brown 2026-07-09 466 if (ent_is_empty(ent)) { bc6c59466912ed0 Zach Brown 2026-07-09 467 if (nr > 0) { bc6c59466912ed0 Zach Brown 2026-07-09 468 sort_r(indirect, nr, sizeof(indirect[0]), bc6c59466912ed0 Zach Brown 2026-07-09 469 cmp_indirect_ent_pos, NULL, ehb); bc6c59466912ed0 Zach Brown 2026-07-09 470 filled = fill_item_args(ehb, indirect, nr, buf, size); bc6c59466912ed0 Zach Brown 2026-07-09 471 if (filled == 0) bc6c59466912ed0 Zach Brown 2026-07-09 472 break; bc6c59466912ed0 Zach Brown 2026-07-09 473 bc6c59466912ed0 Zach Brown 2026-07-09 474 iargs = buf; bc6c59466912ed0 Zach Brown 2026-07-09 475 iargs += filled - 1; bc6c59466912ed0 Zach Brown 2026-07-09 476 buf = iargs + 1; bc6c59466912ed0 Zach Brown 2026-07-09 477 size = (void *)iargs->key - buf; bc6c59466912ed0 Zach Brown 2026-07-09 478 copied += filled; bc6c59466912ed0 Zach Brown 2026-07-09 479 bc6c59466912ed0 Zach Brown 2026-07-09 480 if (filled < nr || copied == le16_to_cpu(ehb->nr_entries)) bc6c59466912ed0 Zach Brown 2026-07-09 481 break; bc6c59466912ed0 Zach Brown 2026-07-09 482 bc6c59466912ed0 Zach Brown 2026-07-09 483 nr = 0; bc6c59466912ed0 Zach Brown 2026-07-09 484 } bc6c59466912ed0 Zach Brown 2026-07-09 485 bc6c59466912ed0 Zach Brown 2026-07-09 486 pl = 0; bc6c59466912ed0 Zach Brown 2026-07-09 487 bc6c59466912ed0 Zach Brown 2026-07-09 488 if (stop_at_empty) bc6c59466912ed0 Zach Brown 2026-07-09 489 break; bc6c59466912ed0 Zach Brown 2026-07-09 490 } else { bc6c59466912ed0 Zach Brown 2026-07-09 491 if (ent->probe_len <= pl && ent_pos(ent) >= pos) bc6c59466912ed0 Zach Brown 2026-07-09 492 indirect[nr++] = ent_index(ehb, ent); bc6c59466912ed0 Zach Brown 2026-07-09 493 pl++; bc6c59466912ed0 Zach Brown 2026-07-09 494 } bc6c59466912ed0 Zach Brown 2026-07-09 495 } bc6c59466912ed0 Zach Brown 2026-07-09 496 bc6c59466912ed0 Zach Brown 2026-07-09 497 put_cpu_var(indirect); bc6c59466912ed0 Zach Brown 2026-07-09 498 bc6c59466912ed0 Zach Brown 2026-07-09 499 return copied; bc6c59466912ed0 Zach Brown 2026-07-09 500 } bc6c59466912ed0 Zach Brown 2026-07-09 501 :::::: The code at line 344 was first introduced by commit :::::: bc6c59466912ed0c3e69c4283a40e05484ed517c rpdfs: add ehtable for indexing key-value pairs :::::: TO: Zach Brown <[email protected]> :::::: CC: Zach Brown <[email protected]> -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki