All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chandan Rajendra <chandan@linux.vnet.ibm.com>
To: linux-btrfs@vger.kernel.org
Cc: Chandan Rajendra <chandan@linux.vnet.ibm.com>,
	jbacik@fb.com, clm@fb.com, bo.li.liu@oracle.com, dsterba@suse.cz,
	chandan@mykolab.com
Subject: [PATCH V10 00/12]  Btrfs: Pre subpagesize-blocksize cleanups
Date: Thu, 21 Jan 2016 15:55:52 +0530	[thread overview]
Message-ID: <1453371964-4917-1-git-send-email-chandan@linux.vnet.ibm.com> (raw)

The patches posted along with this cover letter are cleanups made
during the development of subpagesize-blocksize patchset. I have
tested the patchset by running fstests on ppc64 and x86_64 machines.

Changes from V9:
1. Dropped the patch "Btrfs: prepare_pages: Retry adding a page to the
   page cache". This issue has already been fixed in the upstream
   kernel.
2. Added a patch to fix a data corruption issue that is observed after
   a clone operation.

Changes from V8:
1. Removed the patch "Btrfs: Return valid delalloc range when the page
   does not have PG_Dirty flag set or has been invalidated". The patch
   was written with the understanding that writepage_delalloc() could
   return delalloc_start which is greater than
   "page_offset(locked_page) + PAGE_CACHE_SIZE - 1". This scenario can
   never occur with the mainline kernel because in
   find_delalloc_range() even if EXTENT_DELALLOC bit isn't set for
   the file range corresponding to the locked page, we would
   definitely have EXTENT_UPTODATE bit set.
   The core subpagesize-blocksize patchset tracks "uptodate" status
   using a per-page bitmap and this caused find_delalloc_range to
   change its default behaviour.

Changes from V7:
1. The second argument passed to btrfs_delalloc_release_space() in
   btrfs_page_mkwrite() was incorrect. Version V8 fixes this.
   
Changes from V6:
1. Rebased on linux-btrfs/integration-4.4 branch. As a result the
   following patches have been trivially modified.
`  - Btrfs: __btrfs_buffered_write: Reserve/release extents aligned
     to block size.
   - Btrfs: fallocate: Work with sectorsized blocks.
   - Btrfs: btrfs_page_mkwrite: Reserve space in sectorsized units.

Changes from V5:
1. Introduced BTRFS_BYTES_TO_BLKS() helper to compute the number of
   filesystem blocks spanning across a range of bytes. A call to this
   macro replaces code such as "nr_blks = bytes >> inode->i_blkbits".

Changes from V4:
1. Removed the RFC tag.

Changes from V3:
Two new issues have been been fixed by the patches,
1. Btrfs: prepare_pages: Retry adding a page to the page cache.
2. Btrfs: Return valid delalloc range when the page does not have
   PG_Dirty flag set or has been invalidated.
IMHO, The above issues are also applicable to the "page size == block
size" scenario but for reasons unknown to me they aren't seen even
when the tests are run for a long time.

Changes from V2:
1. For detecting logical errors, Use ASSERT() calls instead of calls to
   BUG_ON().
2. In the patch "Btrfs: Compute and look up csums based on sectorsized
   blocks", fix usage of kmap_atomic/kunmap_atomic such that between the
   kmap_atomic() and kunmap_atomic() calls we do not invoke any function
   that might cause the current task to sleep.
   
Changes from V1:
1. Call round_[down,up]() functions instead of doing hard coded alignment.

Chandan Rajendra (12):
  Btrfs: __btrfs_buffered_write: Reserve/release extents aligned to
    block size
  Btrfs: Compute and look up csums based on sectorsized blocks
  Btrfs: Direct I/O read: Work on sectorsized blocks
  Btrfs: fallocate: Work with sectorsized blocks
  Btrfs: btrfs_page_mkwrite: Reserve space in sectorsized units
  Btrfs: Search for all ordered extents that could span across a page
  Btrfs: Use (eb->start, seq) as search key for tree modification log
  Btrfs: btrfs_submit_direct_hook: Handle map_length < bio vector length
  Btrfs: Limit inline extents to root->sectorsize
  Btrfs: Fix block size returned to user space
  Btrfs: Clean pte corresponding to page straddling i_size
  Btrfs: btrfs_ioctl_clone: Truncate complete page after performing
    clone operation

 fs/btrfs/ctree.c     |  34 +++----
 fs/btrfs/ctree.h     |   5 +-
 fs/btrfs/extent_io.c |   3 +-
 fs/btrfs/file-item.c |  92 ++++++++++++-------
 fs/btrfs/file.c      |  99 ++++++++++++--------
 fs/btrfs/inode.c     | 248 ++++++++++++++++++++++++++++++++++++---------------
 fs/btrfs/ioctl.c     |   5 +-
 7 files changed, 321 insertions(+), 165 deletions(-)

-- 
2.1.0


             reply	other threads:[~2016-01-21 10:27 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-21 10:25 Chandan Rajendra [this message]
2016-01-21 10:25 ` [PATCH V10 01/12] Btrfs: __btrfs_buffered_write: Reserve/release extents aligned to block size Chandan Rajendra
2016-01-21 10:25 ` [PATCH V10 02/12] Btrfs: Compute and look up csums based on sectorsized blocks Chandan Rajendra
2016-01-21 10:25 ` [PATCH V10 03/12] Btrfs: Direct I/O read: Work " Chandan Rajendra
2016-01-21 10:25 ` [PATCH V10 04/12] Btrfs: fallocate: Work with " Chandan Rajendra
2016-01-21 10:25 ` [PATCH V10 05/12] Btrfs: btrfs_page_mkwrite: Reserve space in sectorsized units Chandan Rajendra
2016-01-21 10:25 ` [PATCH V10 06/12] Btrfs: Search for all ordered extents that could span across a page Chandan Rajendra
2016-01-21 10:25 ` [PATCH V10 07/12] Btrfs: Use (eb->start, seq) as search key for tree modification log Chandan Rajendra
2016-01-21 10:26 ` [PATCH V10 08/12] Btrfs: btrfs_submit_direct_hook: Handle map_length < bio vector length Chandan Rajendra
2016-01-21 10:26 ` [PATCH V10 09/12] Btrfs: Limit inline extents to root->sectorsize Chandan Rajendra
2016-01-21 10:26 ` [PATCH V10 10/12] Btrfs: Fix block size returned to user space Chandan Rajendra
2016-01-21 10:26 ` [PATCH V10 11/12] Btrfs: Clean pte corresponding to page straddling i_size Chandan Rajendra
2016-01-21 10:26 ` [PATCH V10 12/12] Btrfs: btrfs_ioctl_clone: Truncate complete page after performing clone operation Chandan Rajendra
2016-01-29 13:30 ` [PATCH V10 00/12] Btrfs: Pre subpagesize-blocksize cleanups David Sterba

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=1453371964-4917-1-git-send-email-chandan@linux.vnet.ibm.com \
    --to=chandan@linux.vnet.ibm.com \
    --cc=bo.li.liu@oracle.com \
    --cc=chandan@mykolab.com \
    --cc=clm@fb.com \
    --cc=dsterba@suse.cz \
    --cc=jbacik@fb.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.