Lots of exciting things this time!

- support for rbd object-map and fast-diff features (myself).  This
  will speed up reads, discards and things like snap diffs on sparse
  images.

- ceph.snap.btime vxattr to expose snapshot creation time (David
  Disseldorp).  This will be used to integrate with "Restore Previous
  Versions" feature added in Windows 7 for folks who reexport ceph
  through SMB.

- security xattrs for ceph (Zheng Yan).  Only selinux is supported
  for now due to the limitations of ->dentry_init_security().

- support for MSG_ADDR2, FS_BTIME and FS_CHANGE_ATTR features (Jeff
  Layton).  This is actually a single feature bit which was missing
  because of the filesystem pieces.  With this in, the kernel client
  will finally be reported as "luminous" by "ceph features" -- it is
  still being reported as "jewel" even though all required Luminous
  features were implemented in 4.13.

- stop NULL-terminating ceph vxattrs (Jeff Layton).  The convention
  with xattrs is to not terminate and this was causing inconsistencies
  with ceph-fuse.

- change filesystem time granularity from 1 us to 1 ns, again fixing
  an inconsistency with ceph-fuse (Luis Henriques).

On top of this there are some additional dentry name handling and cap
flushing fixes from Zheng.  Finally, Jeff is formally taking over for
Zheng as the filesystem maintainer.
ceph: fix end offset in truncate_inode_pages_range call

Commit e450f4d1a5d6 ("ceph: pass inclusive lend parameter to
filemap_write_and_wait_range()") fixed the end offset parameter used to
call filemap_write_and_wait_range and invalidate_inode_pages2_range.
Unfortunately it missed truncate_inode_pages_range, introducing a
regression that is easily detected by xfstest generic/130.

The problem is that when doing direct IO it is possible that an extra page
is truncated from the page cache when the end offset is page aligned.
This can cause data loss if that page hasn't been sync'ed to the OSDs.

While there, change code to use PAGE_ALIGN macro instead.

Cc: stable@vger.kernel.org
Fixes: e450f4d1a5d6 ("ceph: pass inclusive lend parameter to filemap_write_and_wait_range()")
Signed-off-by: Luis Henriques <lhenriques@suse.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
1 file changed