Merge tag 'vfs-5.8-merge-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 3 Jun 2020 02:45:12 +0000 (19:45 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 3 Jun 2020 02:45:12 +0000 (19:45 -0700)
Pull DAX updates part one from Darrick Wong:
 "After many years of LKML-wrangling about how to enable programs to
  query and influence the file data access mode (DAX) when a filesystem
  resides on storage devices such as persistent memory, Ira Weiny has
  emerged with a proposed set of standard behaviors that has not been
  shot down by anyone! We're more or less standardizing on the current
  XFS behavior and adapting ext4 to do the same.

  This is the first of a handful pull requests that will make ext4 and
  XFS present a consistent interface for user programs that care about
  DAX. We add a statx attribute that programs can check to see if DAX is
  enabled on a particular file. Then, we update the DAX documentation to
  spell out the user-visible behaviors that filesystems will guarantee
  (until the next storage industry shakeup). The on-disk inode flag has
  been in XFS for a few years now.

  Summary:

   - Clean up io_is_direct.

   - Add a new statx flag to indicate when file data access is being
     done via DAX (as opposed to the page cache).

   - Update the documentation for how system administrators and
     application programmers can take advantage of the (still
     experimental DAX) feature"

Link: https://lore.kernel.org/lkml/20200505002016.1085071-1-ira.weiny@intel.com/
* tag 'vfs-5.8-merge-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
  Documentation/dax: Update Usage section
  fs/stat: Define DAX statx attribute
  fs: Remove unneeded IS_DAX() check in io_is_direct()

1  2 
Documentation/filesystems/dax.txt
drivers/block/loop.c
fs/stat.c
include/linux/fs.h
include/uapi/linux/stat.h

Simple merge
index 4212288ab157cf439ce1ef36b3421ea4530f3a51,14372df0f35498bbd0f8adb59c671a92e690c609..2e96d8b8758b63c7869df1e7403974bc824124f2
@@@ -1144,20 -1022,21 +1144,20 @@@ static int loop_configure(struct loop_d
        lo->old_gfp_mask = mapping_gfp_mask(mapping);
        mapping_set_gfp_mask(mapping, lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS));
  
 -      if (!(lo_flags & LO_FLAGS_READ_ONLY) && file->f_op->fsync)
 +      if (!(lo->lo_flags & LO_FLAGS_READ_ONLY) && file->f_op->fsync)
                blk_queue_write_cache(lo->lo_queue, true, false);
  
 -      if ((lo->lo_backing_file->f_flags & O_DIRECT) && inode->i_sb->s_bdev) {
 +      if (config->block_size)
 +              bsize = config->block_size;
-       else if (io_is_direct(lo->lo_backing_file) && inode->i_sb->s_bdev)
++      else if ((lo->lo_backing_file->f_flags & O_DIRECT) && inode->i_sb->s_bdev)
                /* In case of direct I/O, match underlying block size */
 -              unsigned short bsize = bdev_logical_block_size(
 -                      inode->i_sb->s_bdev);
 +              bsize = bdev_logical_block_size(inode->i_sb->s_bdev);
 +      else
 +              bsize = 512;
  
 -              blk_queue_logical_block_size(lo->lo_queue, bsize);
 -              blk_queue_physical_block_size(lo->lo_queue, bsize);
 -              blk_queue_io_min(lo->lo_queue, bsize);
 -      }
 +      blk_queue_logical_block_size(lo->lo_queue, bsize);
 +      blk_queue_physical_block_size(lo->lo_queue, bsize);
 +      blk_queue_io_min(lo->lo_queue, bsize);
  
        loop_update_rotational(lo);
        loop_update_dio(lo);
diff --cc fs/stat.c
Simple merge
Simple merge
index 6df9348bb277e4d7e6987ce658fad5cec2a8833c,e5f9d5517f6ba524e3593a9d6ef459960d9f4c5f..82cc58fe936818ff213e0c1719ca8972db466155
@@@ -181,8 -168,8 +181,9 @@@ struct statx 
  #define STATX_ATTR_NODUMP             0x00000040 /* [I] File is not to be dumped */
  #define STATX_ATTR_ENCRYPTED          0x00000800 /* [I] File requires key to decrypt in fs */
  #define STATX_ATTR_AUTOMOUNT          0x00001000 /* Dir: Automount trigger */
 +#define STATX_ATTR_MOUNT_ROOT         0x00002000 /* Root of a mount */
  #define STATX_ATTR_VERITY             0x00100000 /* [I] Verity protected file */
+ #define STATX_ATTR_DAX                        0x00002000 /* [I] File is DAX */
  
  
  #endif /* _UAPI_LINUX_STAT_H */