]> git.baikalelectronics.ru Git - kernel.git/commitdiff
Merge tag 'xfs-4.18-merge-3' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 5 Jun 2018 20:24:20 +0000 (13:24 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 5 Jun 2018 20:24:20 +0000 (13:24 -0700)
Pull xfs updates from Darrick Wong:
 "New features this cycle include the ability to relabel mounted
  filesystems, support for fallocated swapfiles, and using FUA for pure
  data O_DSYNC directio writes. With this cycle we begin to integrate
  online filesystem repair and refactor the growfs code in preparation
  for eventual subvolume support, though the road ahead for both
  features is quite long.

  There are also numerous refactorings of the iomap code to remove
  unnecessary log overhead, to disentangle some of the quota code, and
  to prepare for buffer head removal in a future upstream kernel.

  Metadata validation continues to improve, both in the hot path
  veifiers and the online filesystem check code. I anticipate sending a
  second pull request in a few days with more metadata validation
  improvements.

  This series has been run through a full xfstests run over the weekend
  and through a quick xfstests run against this morning's master, with
  no major failures reported.

  Summary:

   - Strengthen inode number and structure validation when allocating
     inodes.

   - Reduce pointless buffer allocations during cache miss

   - Use FUA for pure data O_DSYNC directio writes

   - Various iomap refactorings

   - Strengthen quota metadata verification to avoid unfixable broken
     quota

   - Make AGFL block freeing a deferred operation to avoid blowing out
     transaction reservations when running complex operations

   - Get rid of the log item descriptors to reduce log overhead

   - Fix various reflink bugs where inodes were double-joined to
     transactions

   - Don't issue discards when trimming unwritten extents

   - Refactor incore dquot initialization and retrieval interfaces

   - Fix some locking problmes in the quota scrub code

   - Strengthen btree structure checks in scrub code

   - Rewrite swapfile activation to use iomap and support unwritten
     extents

   - Make scrub exit to userspace sooner when corruptions or
     cross-referencing problems are found

   - Make scrub invoke the data fork scrubber directly on metadata
     inodes

   - Don't do background reclamation of post-eof and cow blocks when the
     fs is suspended

   - Fix secondary superblock buffer lifespan hinting

   - Refactor growfs to use table-dispatched functions instead of long
     stringy functions

   - Move growfs code to libxfs

   - Implement online fs label getting and setting

   - Introduce online filesystem repair (in a very limited capacity)

   - Fix unit conversion problems in the realtime freemap iteration
     functions

   - Various refactorings and cleanups in preparation to remove buffer
     heads in a future release

   - Reimplement the old bmap call with iomap

   - Remove direct buffer head accesses from seek hole/data

   - Various bug fixes"

* tag 'xfs-4.18-merge-3' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: (121 commits)
  fs: use ->is_partially_uptodate in page_cache_seek_hole_data
  fs: remove the buffer_unwritten check in page_seek_hole_data
  fs: move page_cache_seek_hole_data to iomap.c
  xfs: use iomap_bmap
  iomap: add an iomap-based bmap implementation
  iomap: add a iomap_sector helper
  iomap: use __bio_add_page in iomap_dio_zero
  iomap: move IOMAP_F_BOUNDARY to gfs2
  iomap: fix the comment describing IOMAP_NOWAIT
  iomap: inline data should be an iomap type, not a flag
  mm: split ->readpages calls to avoid non-contiguous pages lists
  mm: return an unsigned int from __do_page_cache_readahead
  mm: give the 'ret' variable a better name __do_page_cache_readahead
  block: add a lower-level bio_add_page interface
  xfs: fix error handling in xfs_refcount_insert()
  xfs: fix xfs_rtalloc_rec units
  xfs: strengthen rtalloc query range checks
  xfs: xfs_rtbuf_get should check the bmapi_read results
  xfs: xfs_rtword_t should be unsigned, not signed
  dax: change bdev_dax_supported() to support boolean returns
  ...

1  2 
block/bio.c
fs/ext4/inline.c
fs/ext4/super.c
fs/gfs2/bmap.c
fs/xfs/xfs_aops.c
fs/xfs/xfs_iops.c
fs/xfs/xfs_super.c
include/linux/bio.h
mm/internal.h

diff --cc block/bio.c
Simple merge
Simple merge
diff --cc fs/ext4/super.c
Simple merge
diff --cc fs/gfs2/bmap.c
index a7b586e02693738144460c105b166bccba4e8628,8efa6297e19c43b0e62f4b58c3004756b758f772..ed6699705c13c5ca462be1f22cfb5dee7edec38f
@@@ -767,12 -680,13 +767,13 @@@ static void gfs2_stuffed_iomap(struct i
                      sizeof(struct gfs2_dinode);
        iomap->offset = 0;
        iomap->length = i_size_read(inode);
-       iomap->type = IOMAP_MAPPED;
-       iomap->flags = IOMAP_F_DATA_INLINE;
+       iomap->type = IOMAP_INLINE;
  }
  
+ #define IOMAP_F_GFS2_BOUNDARY IOMAP_F_PRIVATE
  /**
 - * gfs2_iomap_begin - Map blocks from an inode to disk blocks
 + * gfs2_iomap_get - Map blocks from an inode to disk blocks
   * @inode: The inode
   * @pos: Starting position in bytes
   * @length: Length to map, in bytes
@@@ -838,20 -770,20 +839,20 @@@ static int gfs2_iomap_get(struct inode 
        if (*ptr == 0)
                goto do_alloc;
  
 -      iomap->type = IOMAP_MAPPED;
 -      iomap->addr = be64_to_cpu(*ptr) << inode->i_blkbits;
 +      bh = mp->mp_bh[ip->i_height - 1];
 +      len = gfs2_extent_length(bh->b_data, bh->b_size, ptr, len, &eob);
  
 -      bh = mp.mp_bh[ip->i_height - 1];
 -      len = gfs2_extent_length(bh->b_data, bh->b_size, ptr, lend - lblock, &eob);
 +      iomap->addr = be64_to_cpu(*ptr) << inode->i_blkbits;
 +      iomap->length = len << inode->i_blkbits;
 +      iomap->type = IOMAP_MAPPED;
 +      iomap->flags = IOMAP_F_MERGED;
        if (eob)
-               iomap->flags |= IOMAP_F_BOUNDARY;
+               iomap->flags |= IOMAP_F_GFS2_BOUNDARY;
 -      iomap->length = (u64)len << inode->i_blkbits;
  
 -out_release:
 -      release_metapath(&mp);
 -      bmap_unlock(ip, flags & IOMAP_WRITE);
  out:
 -      trace_gfs2_iomap_end(ip, iomap, ret);
 +      iomap->bdev = inode->i_sb->s_bdev;
 +unlock:
 +      up_read(&ip->i_rw_mutex);
        return ret;
  
  do_alloc:
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc mm/internal.h
Simple merge