All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: fdmanana@gmail.com
Cc: linux-btrfs@vger.kernel.org
Subject: re: Btrfs: make fsync work after cloning into a file
Date: Fri, 20 Mar 2015 17:38:40 +0300	[thread overview]
Message-ID: <20150320143840.GC5108@mwanda> (raw)

Hello Filipe Manana,

The patch 7ffbb598a059: "Btrfs: make fsync work after cloning into a
file" from Jun 9, 2014, leads to the following static checker warning:

	fs/btrfs/inode.c:6602 btrfs_get_extent()
	warn: we tested 'create' before and it was 'false'

fs/btrfs/inode.c
  6589  
  6590                  if (new_inline)
                            ^^^^^^^^^^
This implies that "create == 0".

  6591                          goto out;
  6592  
  6593                  size = btrfs_file_extent_inline_len(leaf, path->slots[0], item);
  6594                  extent_offset = page_offset(page) + pg_offset - extent_start;
  6595                  copy_size = min_t(u64, PAGE_CACHE_SIZE - pg_offset,
  6596                                  size - extent_offset);
  6597                  em->start = extent_start + extent_offset;
  6598                  em->len = ALIGN(copy_size, root->sectorsize);
  6599                  em->orig_block_len = em->len;
  6600                  em->orig_start = em->start;
  6601                  ptr = btrfs_file_extent_inline_start(item) + extent_offset;
  6602                  if (create == 0 && !PageUptodate(page)) {
                            ^^^^^^^^^^^
No need to check here.

  6603                          if (btrfs_file_extent_compression(leaf, item) !=
  6604                              BTRFS_COMPRESS_NONE) {
  6605                                  ret = uncompress_inline(path, inode, page,
  6606                                                          pg_offset,
  6607                                                          extent_offset, item);
  6608                                  if (ret) {
  6609                                          err = ret;
  6610                                          goto out;
  6611                                  }
  6612                          } else {
  6613                                  map = kmap(page);
  6614                                  read_extent_buffer(leaf, map + pg_offset, ptr,
  6615                                                     copy_size);
  6616                                  if (pg_offset + copy_size < PAGE_CACHE_SIZE) {
  6617                                          memset(map + pg_offset + copy_size, 0,
  6618                                                 PAGE_CACHE_SIZE - pg_offset -
  6619                                                 copy_size);
  6620                                  }
  6621                                  kunmap(page);
  6622                          }
  6623                          flush_dcache_page(page);
  6624                  } else if (create && PageUptodate(page)) {
                                   ^^^^^^
Or here.

  6625                          BUG();
  6626                          if (!trans) {

regards,
dan carpenter

             reply	other threads:[~2015-03-20 14:38 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-20 14:38 Dan Carpenter [this message]
2015-03-20 15:10 ` Btrfs: make fsync work after cloning into a file Filipe David Manana

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=20150320143840.GC5108@mwanda \
    --to=dan.carpenter@oracle.com \
    --cc=fdmanana@gmail.com \
    --cc=linux-btrfs@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.