From: kernel test robot <lkp@intel.com>
To: Andreas Gruenbacher <agruenba@redhat.com>
Cc: cluster-devel@redhat.com, oe-kbuild-all@lists.linux.dev
Subject: [Cluster-devel] [gfs2:extents 14/14] fs/gfs2/extents.c:318: warning: Function parameter or member 'ip' not described in 'find_extent'
Date: Tue, 10 Oct 2023 17:21:55 +0800 [thread overview]
Message-ID: <202310101746.0Tygjkh3-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git extents
head: 86474c69cac46872bd311318c02fb8e9e25abd10
commit: 86474c69cac46872bd311318c02fb8e9e25abd10 [14/14] gfs2: Add some initial extents-based inode code
config: sparc-allyesconfig (https://download.01.org/0day-ci/archive/20231010/202310101746.0Tygjkh3-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231010/202310101746.0Tygjkh3-lkp@intel.com/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 <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202310101746.0Tygjkh3-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> fs/gfs2/extents.c:318: warning: Function parameter or member 'ip' not described in 'find_extent'
>> fs/gfs2/extents.c:318: warning: Function parameter or member 'block' not described in 'find_extent'
>> fs/gfs2/extents.c:416: warning: Function parameter or member 'ip' not described in 'insert_extent'
>> fs/gfs2/extents.c:416: warning: Function parameter or member 'path' not described in 'insert_extent'
>> fs/gfs2/extents.c:416: warning: Function parameter or member 'new_ex' not described in 'insert_extent'
vim +318 fs/gfs2/extents.c
306
307 /**
308 * find_extent - look up the path to an extent
309 *
310 * Upon success, a new path into the extent tree is returned. In this path,
311 * pc_ex of the last path component is NULL if the tree is empty, and
312 * points to the closest extent starting before or at @block otherwise.
313 *
314 * Return: an ERR_PTR upon failure.
315 */
316 static struct gfs2_extent_path *
317 find_extent(struct gfs2_inode *ip, u64 block)
> 318 {
319 struct gfs2_extent_path *path;
320 struct gfs2_extent_pc *pc, *last_pc;
321 u32 mtype = GFS2_METATYPE_XI;
322 int ret;
323
324 if (!gfs2_has_extents(ip) || ip->i_height < 1)
325 return ERR_PTR(-EINVAL);
326
327 path = kzalloc(sizeof(*path) + (ip->i_height - 1) * sizeof(*pc), GFP_NOFS);
328 if (!path)
329 return ERR_PTR(-ENOMEM);
330 path->p_height = ip->i_height;
331 pc = first_path_component(path);
332 last_pc = last_path_component(path);
333 ret = gfs2_meta_inode_buffer(ip, &pc->pc_bh);
334 if (ret)
335 goto fail;
336 ret = verify_inode(ip, pc->pc_bh);
337 if (ret)
338 goto fail;
339 pc->pc_eh = (void *)pc->pc_bh->b_data + sizeof(struct gfs2_dinode);
340 while (pc != last_pc) {
341 struct gfs2_extent_idx *ei;
342
343 ei = search_index(pc->pc_eh, block);
344 if (!ei) {
345 ret = -EIO;
346 goto fail;
347 }
348 pc->pc_ei = ei;
349 pc--;
350 if (pc == last_pc)
351 mtype = GFS2_METATYPE_XL;
352 ret = gfs2_meta_buffer(ip, mtype, ei_leaf(ei), &pc->pc_bh);
353 if (ret)
354 goto fail;
355 ret = verify_block(mtype, pc->pc_bh);
356 if (ret)
357 goto fail;
358 pc->pc_eh = (void *)pc->pc_bh->b_data + sizeof(struct gfs2_meta_header);
359 }
360 last_pc->pc_ex = search_extent(last_pc->pc_eh, block);
361 return path;
362
363 fail:
364 gfs2_free_ext_path(path);
365 return ERR_PTR(ret);
366 }
367
368 static bool extent_includes(struct gfs2_extent *ex, u64 block)
369 {
370 u64 start = ex_start(ex);
371
372 return block >= start && block < start + ex_len(ex);
373 }
374
375 static bool
376 extents_can_be_merged(struct gfs2_extent *left, struct gfs2_extent *right)
377 {
378 u16 len = ex_len(left);
379
380 if (ex_start(left) + len != ex_start(right))
381 return false;
382 if (ex_addr(left) + len != ex_addr(right))
383 return false;
384 if (left->ex_flags != right->ex_flags)
385 return false;
386 return true;
387 }
388
389 static void
390 remove_extent_at(struct gfs2_extent *ex, struct gfs2_extent_header *eh)
391 {
392 struct gfs2_extent *last_ex = last_extent(eh);
393
394 memmove(ex, ex + 1, (last_ex - ex) * sizeof(*ex));
395 memset(last_ex, 0, sizeof(*last_ex));
396 be16_add_cpu(&eh->eh_entries, -1);
397 }
398
399 static void
400 insert_extent_at(struct gfs2_extent *ex, struct gfs2_extent_header *eh)
401 {
402 struct gfs2_extent *last_ex = last_extent(eh);
403
404 memmove(ex + 1, ex, (last_ex - ex + 1) * sizeof(*ex));
405 be16_add_cpu(&eh->eh_entries, 1);
406 }
407
408 /**
409 * insert_extent -
410 *
411 * non-overlapping
412 */
413 static int
414 insert_extent(struct gfs2_inode *ip, struct gfs2_extent_path *path,
415 struct gfs2_extent *new_ex)
> 416 {
417 struct gfs2_extent_pc *pc;
418 struct gfs2_extent *ex, *last_ex;
419 struct gfs2_extent_header *eh;
420
421 if (path->p_height != 1)
422 return -EIO;
423
424 pc = last_path_component(path);
425 eh = pc->pc_eh;
426 ex = pc->pc_ex;
427 last_ex = last_extent(eh);
428 if (!ex) {
429 /* empty tree */
430 BUG_ON(eh->eh_entries);
431 *first_extent(eh) = *new_ex;
432 eh->eh_entries = cpu_to_be16(1);
433 return 0;
434 }
435
436 if (ex_start(ex) < ex_start(new_ex)) {
437 if (extents_can_be_merged(ex, new_ex)) {
438 /* append */
439 be16_add_cpu(&ex->ex_len, ex_len(new_ex));
440 goto merge_right;
441 }
442
443 if (ex != last_ex && extents_can_be_merged(new_ex, ex + 1)) {
444 ex++;
445 goto prepend;
446 }
447 ex++;
448 } else {
449 if (extents_can_be_merged(new_ex, ex))
450 goto prepend;
451 }
452
453 /* insert */
454 if (leaf_needs_splitting(path))
455 return -ENOSPC;
456 insert_extent_at(ex, eh);
457 *ex = *new_ex;
458 return 0;
459
460 prepend:
461 ex->ex_start = new_ex->ex_start;
462 ex->ex_addr = new_ex->ex_addr;
463 be16_add_cpu(&ex->ex_len, ex_len(new_ex));
464 return 0;
465
466 merge_right:
467 if (ex < last_ex && extents_can_be_merged(ex, ex + 1)) {
468 be16_add_cpu(&ex->ex_len, ex_len(ex + 1));
469 remove_extent_at(ex + 1, eh);
470 }
471 return 0;
472 }
473
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2023-10-10 9:23 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202310101746.0Tygjkh3-lkp@intel.com \
--to=lkp@intel.com \
--cc=agruenba@redhat.com \
--cc=cluster-devel@redhat.com \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).