CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Qu Wenruo <[email protected]>
CC: David Sterba <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   68453767131a5deec1e8f9ac92a9042f929e585d
commit: e65f152e43484807b4caf7300e70d882e4652566 btrfs: refactor how we finish 
ordered extent io for endio functions
date:   9 months ago
:::::: branch date: 18 hours ago
:::::: commit date: 9 months ago
compiler: microblaze-linux-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


cppcheck warnings: (new ones prefixed by >>)
>> fs/btrfs/sysfs.c:1260:4: warning: %u in format string (no. 2) requires 
>> 'unsigned int' but the argument type is 'signed int'. 
>> [invalidPrintfArgType_uint]
      snprintf(name, BTRFS_FEATURE_NAME_MAX, "%s:%u",
      ^
>> kernel/trace/trace_events_synth.c:531:22: warning: Pointer addition with 
>> NULL pointer. [nullPointerArithmetic]
    pos += snprintf(buf + pos, LEN_OR_ZERO, """);
                        ^
   kernel/trace/trace_events_synth.c:563:43: note: Calling function 
'__set_synth_event_print_fmt', 2nd argument 'NULL' value is 0
    len = __set_synth_event_print_fmt(event, NULL, 0);
                                             ^
   kernel/trace/trace_events_synth.c:531:22: note: Null pointer addition
    pos += snprintf(buf + pos, LEN_OR_ZERO, """);
                        ^
   kernel/trace/trace_events_synth.c:538:22: warning: Pointer addition with 
NULL pointer. [nullPointerArithmetic]
    pos += snprintf(buf + pos, LEN_OR_ZERO, """);
                        ^
   kernel/trace/trace_events_synth.c:563:43: note: Calling function 
'__set_synth_event_print_fmt', 2nd argument 'NULL' value is 0
    len = __set_synth_event_print_fmt(event, NULL, 0);
                                             ^
   kernel/trace/trace_events_synth.c:538:22: note: Null pointer addition
    pos += snprintf(buf + pos, LEN_OR_ZERO, """);
                        ^

cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

>> fs/btrfs/sysfs.c:1260:4: warning: %u in format string (no. 2) requires 
>> 'unsigned int' but the argument type is 'signed int'. 
>> [invalidPrintfArgType_uint]
      snprintf(name, BTRFS_FEATURE_NAME_MAX, "%s:%u",
      ^
>> fs/btrfs/ordered-data.c:341:7: warning: Local variable entry_end shadows 
>> outer function [shadowFunction]
     u64 entry_end;
         ^
   fs/btrfs/ordered-data.c:22:12: note: Shadowed declaration
   static u64 entry_end(struct btrfs_ordered_extent *entry)
              ^
   fs/btrfs/ordered-data.c:341:7: note: Shadow variable
     u64 entry_end;
         ^

vim +341 fs/btrfs/ordered-data.c

dc17ff8f11d129 Chris Mason     2008-01-08  301  
163cf09c2a0ee5 Chris Mason     2010-11-28  302  /*
e65f152e434848 Qu Wenruo       2021-04-01  303   * Mark all ordered extents io 
inside the specified range finished.
163cf09c2a0ee5 Chris Mason     2010-11-28  304   *
e65f152e434848 Qu Wenruo       2021-04-01  305   * @page:        The invovled 
page for the opeartion.
e65f152e434848 Qu Wenruo       2021-04-01  306   *               For 
uncompressed buffered IO, the page status also needs to be
e65f152e434848 Qu Wenruo       2021-04-01  307   *               updated to 
indicate whether the pending ordered io is finished.
e65f152e434848 Qu Wenruo       2021-04-01  308   *               Can be NULL 
for direct IO and compressed write.
e65f152e434848 Qu Wenruo       2021-04-01  309   *               For these 
cases, callers are ensured they won't execute the
e65f152e434848 Qu Wenruo       2021-04-01  310   *               endio function 
twice.
e65f152e434848 Qu Wenruo       2021-04-01  311   * @finish_func: The function 
to be executed when all the IO of an ordered
e65f152e434848 Qu Wenruo       2021-04-01  312   *               extent are 
finished.
163cf09c2a0ee5 Chris Mason     2010-11-28  313   *
e65f152e434848 Qu Wenruo       2021-04-01  314   * This function is called for 
endio, thus the range must have ordered
e65f152e434848 Qu Wenruo       2021-04-01  315   * extent(s) coveri it.
163cf09c2a0ee5 Chris Mason     2010-11-28  316   */
e65f152e434848 Qu Wenruo       2021-04-01  317  void 
btrfs_mark_ordered_io_finished(struct btrfs_inode *inode,
e65f152e434848 Qu Wenruo       2021-04-01  318                                  
struct page *page, u64 file_offset,
e65f152e434848 Qu Wenruo       2021-04-01  319                                  
u64 num_bytes, btrfs_func_t finish_func,
e65f152e434848 Qu Wenruo       2021-04-01  320                                  
bool uptodate)
163cf09c2a0ee5 Chris Mason     2010-11-28  321  {
7095821ee1f57d Nikolay Borisov 2020-06-03  322          struct 
btrfs_ordered_inode_tree *tree = &inode->ordered_tree;
e65f152e434848 Qu Wenruo       2021-04-01  323          struct btrfs_fs_info 
*fs_info = inode->root->fs_info;
e65f152e434848 Qu Wenruo       2021-04-01  324          struct btrfs_workqueue 
*wq;
163cf09c2a0ee5 Chris Mason     2010-11-28  325          struct rb_node *node;
163cf09c2a0ee5 Chris Mason     2010-11-28  326          struct 
btrfs_ordered_extent *entry = NULL;
5fd02043553b02 Josef Bacik     2012-05-02  327          unsigned long flags;
e65f152e434848 Qu Wenruo       2021-04-01  328          u64 cur = file_offset;
e65f152e434848 Qu Wenruo       2021-04-01  329  
e65f152e434848 Qu Wenruo       2021-04-01  330          if 
(btrfs_is_free_space_inode(inode))
e65f152e434848 Qu Wenruo       2021-04-01  331                  wq = 
fs_info->endio_freespace_worker;
e65f152e434848 Qu Wenruo       2021-04-01  332          else
e65f152e434848 Qu Wenruo       2021-04-01  333                  wq = 
fs_info->endio_write_workers;
e65f152e434848 Qu Wenruo       2021-04-01  334  
e65f152e434848 Qu Wenruo       2021-04-01  335          if (page)
e65f152e434848 Qu Wenruo       2021-04-01  336                  
ASSERT(page->mapping && page_offset(page) <= file_offset &&
e65f152e434848 Qu Wenruo       2021-04-01  337                         
file_offset + num_bytes <= page_offset(page) + PAGE_SIZE);
163cf09c2a0ee5 Chris Mason     2010-11-28  338  
5fd02043553b02 Josef Bacik     2012-05-02  339          
spin_lock_irqsave(&tree->lock, flags);
e65f152e434848 Qu Wenruo       2021-04-01  340          while (cur < 
file_offset + num_bytes) {
e65f152e434848 Qu Wenruo       2021-04-01 @341                  u64 entry_end;
e65f152e434848 Qu Wenruo       2021-04-01  342                  u64 end;
e65f152e434848 Qu Wenruo       2021-04-01  343                  u32 len;
e65f152e434848 Qu Wenruo       2021-04-01  344  
e65f152e434848 Qu Wenruo       2021-04-01  345                  node = 
tree_search(tree, cur);
e65f152e434848 Qu Wenruo       2021-04-01  346                  /* No ordered 
extents at all */
58f74b2203d786 Qu Wenruo       2020-12-22  347                  if (!node)
e65f152e434848 Qu Wenruo       2021-04-01  348                          break;
163cf09c2a0ee5 Chris Mason     2010-11-28  349  
163cf09c2a0ee5 Chris Mason     2010-11-28  350                  entry = 
rb_entry(node, struct btrfs_ordered_extent, rb_node);
e65f152e434848 Qu Wenruo       2021-04-01  351                  entry_end = 
entry->file_offset + entry->num_bytes;
e65f152e434848 Qu Wenruo       2021-04-01  352                  /*
e65f152e434848 Qu Wenruo       2021-04-01  353                   * |<-- OE 
--->|  |
e65f152e434848 Qu Wenruo       2021-04-01  354                   *              
  cur
e65f152e434848 Qu Wenruo       2021-04-01  355                   * Go to next 
OE.
e65f152e434848 Qu Wenruo       2021-04-01  356                   */
e65f152e434848 Qu Wenruo       2021-04-01  357                  if (cur >= 
entry_end) {
e65f152e434848 Qu Wenruo       2021-04-01  358                          node = 
rb_next(node);
e65f152e434848 Qu Wenruo       2021-04-01  359                          /* No 
more ordered extents, exit */
e65f152e434848 Qu Wenruo       2021-04-01  360                          if 
(!node)
e65f152e434848 Qu Wenruo       2021-04-01  361                                  
break;
e65f152e434848 Qu Wenruo       2021-04-01  362                          entry = 
rb_entry(node, struct btrfs_ordered_extent,
e65f152e434848 Qu Wenruo       2021-04-01  363                                  
         rb_node);
e65f152e434848 Qu Wenruo       2021-04-01  364  
e65f152e434848 Qu Wenruo       2021-04-01  365                          /* Go 
to next ordered extent and continue */
e65f152e434848 Qu Wenruo       2021-04-01  366                          cur = 
entry->file_offset;
e65f152e434848 Qu Wenruo       2021-04-01  367                          
continue;
e65f152e434848 Qu Wenruo       2021-04-01  368                  }
e65f152e434848 Qu Wenruo       2021-04-01  369                  /*
e65f152e434848 Qu Wenruo       2021-04-01  370                   * |    |<--- 
OE --->|
e65f152e434848 Qu Wenruo       2021-04-01  371                   * cur
e65f152e434848 Qu Wenruo       2021-04-01  372                   * Go to the 
start of OE.
e65f152e434848 Qu Wenruo       2021-04-01  373                   */
e65f152e434848 Qu Wenruo       2021-04-01  374                  if (cur < 
entry->file_offset) {
e65f152e434848 Qu Wenruo       2021-04-01  375                          cur = 
entry->file_offset;
e65f152e434848 Qu Wenruo       2021-04-01  376                          
continue;
163cf09c2a0ee5 Chris Mason     2010-11-28  377                  }
e65f152e434848 Qu Wenruo       2021-04-01  378  
e65f152e434848 Qu Wenruo       2021-04-01  379                  /*
e65f152e434848 Qu Wenruo       2021-04-01  380                   * Now we are 
definitely inside one ordered extent.
e65f152e434848 Qu Wenruo       2021-04-01  381                   *
e65f152e434848 Qu Wenruo       2021-04-01  382                   * |<--- OE 
--->|
e65f152e434848 Qu Wenruo       2021-04-01  383                   *      |
e65f152e434848 Qu Wenruo       2021-04-01  384                   *      cur
e65f152e434848 Qu Wenruo       2021-04-01  385                   */
e65f152e434848 Qu Wenruo       2021-04-01  386                  end = 
min(entry->file_offset + entry->num_bytes,
e65f152e434848 Qu Wenruo       2021-04-01  387                            
file_offset + num_bytes) - 1;
e65f152e434848 Qu Wenruo       2021-04-01  388                  ASSERT(end + 1 
- cur < U32_MAX);
e65f152e434848 Qu Wenruo       2021-04-01  389                  len = end + 1 - 
cur;
e65f152e434848 Qu Wenruo       2021-04-01  390  
e65f152e434848 Qu Wenruo       2021-04-01  391                  if (page) {
e65f152e434848 Qu Wenruo       2021-04-01  392                          /*
e65f152e434848 Qu Wenruo       2021-04-01  393                           * 
Private2 bit indicates whether we still have pending
e65f152e434848 Qu Wenruo       2021-04-01  394                           * io 
unfinished for the ordered extent.
e65f152e434848 Qu Wenruo       2021-04-01  395                           *
e65f152e434848 Qu Wenruo       2021-04-01  396                           * If 
there's no such bit, we need to skip to next range.
e65f152e434848 Qu Wenruo       2021-04-01  397                           */
e65f152e434848 Qu Wenruo       2021-04-01  398                          if 
(!PagePrivate2(page)) {
e65f152e434848 Qu Wenruo       2021-04-01  399                                  
cur += len;
e65f152e434848 Qu Wenruo       2021-04-01  400                                  
continue;
e65f152e434848 Qu Wenruo       2021-04-01  401                          }
e65f152e434848 Qu Wenruo       2021-04-01  402                          
ClearPagePrivate2(page);
e65f152e434848 Qu Wenruo       2021-04-01  403                  }
e65f152e434848 Qu Wenruo       2021-04-01  404  
e65f152e434848 Qu Wenruo       2021-04-01  405                  /* Now we're 
fine to update the accounting */
e65f152e434848 Qu Wenruo       2021-04-01  406                  if 
(unlikely(len > entry->bytes_left)) {
e65f152e434848 Qu Wenruo       2021-04-01  407                          
WARN_ON(1);
0b246afa62b0cf Jeff Mahoney    2016-06-22  408                          
btrfs_crit(fs_info,
e65f152e434848 Qu Wenruo       2021-04-01  409  "bad ordered extent accounting, 
root=%llu ino=%llu OE offset=%llu OE len=%llu to_dec=%u left=%llu",
e65f152e434848 Qu Wenruo       2021-04-01  410                                  
   inode->root->root_key.objectid,
e65f152e434848 Qu Wenruo       2021-04-01  411                                  
   btrfs_ino(inode),
e65f152e434848 Qu Wenruo       2021-04-01  412                                  
   entry->file_offset,
e65f152e434848 Qu Wenruo       2021-04-01  413                                  
   entry->num_bytes,
e65f152e434848 Qu Wenruo       2021-04-01  414                                  
   len, entry->bytes_left);
e65f152e434848 Qu Wenruo       2021-04-01  415                          
entry->bytes_left = 0;
e65f152e434848 Qu Wenruo       2021-04-01  416                  } else {
e65f152e434848 Qu Wenruo       2021-04-01  417                          
entry->bytes_left -= len;
163cf09c2a0ee5 Chris Mason     2010-11-28  418                  }
e65f152e434848 Qu Wenruo       2021-04-01  419  
5fd02043553b02 Josef Bacik     2012-05-02  420                  if (!uptodate)
5fd02043553b02 Josef Bacik     2012-05-02  421                          
set_bit(BTRFS_ORDERED_IOERR, &entry->flags);
5fd02043553b02 Josef Bacik     2012-05-02  422  
58f74b2203d786 Qu Wenruo       2020-12-22  423                  /*
e65f152e434848 Qu Wenruo       2021-04-01  424                   * All the IO 
of the ordered extent is finished, we need to queue
e65f152e434848 Qu Wenruo       2021-04-01  425                   * the 
finish_func to be executed.
58f74b2203d786 Qu Wenruo       2020-12-22  426                   */
e65f152e434848 Qu Wenruo       2021-04-01  427                  if 
(entry->bytes_left == 0) {
e65f152e434848 Qu Wenruo       2021-04-01  428                          
set_bit(BTRFS_ORDERED_IO_DONE, &entry->flags);
e65f152e434848 Qu Wenruo       2021-04-01  429                          
cond_wake_up(&entry->wait);
e76edab7f059bc Elena Reshetova 2017-03-03  430                          
refcount_inc(&entry->refs);
e65f152e434848 Qu Wenruo       2021-04-01  431                          
spin_unlock_irqrestore(&tree->lock, flags);
e65f152e434848 Qu Wenruo       2021-04-01  432                          
btrfs_init_work(&entry->work, finish_func, NULL, NULL);
e65f152e434848 Qu Wenruo       2021-04-01  433                          
btrfs_queue_work(wq, &entry->work);
e65f152e434848 Qu Wenruo       2021-04-01  434                          
spin_lock_irqsave(&tree->lock, flags);
e65f152e434848 Qu Wenruo       2021-04-01  435                  }
e65f152e434848 Qu Wenruo       2021-04-01  436                  cur += len;
163cf09c2a0ee5 Chris Mason     2010-11-28  437          }
5fd02043553b02 Josef Bacik     2012-05-02  438          
spin_unlock_irqrestore(&tree->lock, flags);
163cf09c2a0ee5 Chris Mason     2010-11-28  439  }
163cf09c2a0ee5 Chris Mason     2010-11-28  440  

---
0-DAY CI Kernel Test Service
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to