Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5084fdf0 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull ext4 updates from Ted Ts'o:
 "This merge request includes the dax-4.0-iomap-pmd branch which is
  needed for both ext4 and xfs dax changes to use iomap for DAX. It also
  includes the fscrypt branch which is needed for ubifs encryption work
  as well as ext4 encryption and fscrypt cleanups.

  Lots of cleanups and bug fixes, especially making sure ext4 is robust
  against maliciously corrupted file systems --- especially maliciously
  corrupted xattr blocks and a maliciously corrupted superblock. Also
  fix ext4 support for 64k block sizes so it works well on ppcle. Fixed
  mbcache so we don't miss some common xattr blocks that can be merged"

* tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (86 commits)
  dax: Fix sleep in atomic contex in grab_mapping_entry()
  fscrypt: Rename FS_WRITE_PATH_FL to FS_CTX_HAS_BOUNCE_BUFFER_FL
  fscrypt: Delay bounce page pool allocation until needed
  fscrypt: Cleanup page locking requirements for fscrypt_{decrypt,encrypt}_page()
  fscrypt: Cleanup fscrypt_{decrypt,encrypt}_page()
  fscrypt: Never allocate fscrypt_ctx on in-place encryption
  fscrypt: Use correct index in decrypt path.
  fscrypt: move the policy flags and encryption mode definitions to uapi header
  fscrypt: move non-public structures and constants to fscrypt_private.h
  fscrypt: unexport fscrypt_initialize()
  fscrypt: rename get_crypt_info() to fscrypt_get_crypt_info()
  fscrypto: move ioctl processing more fully into common code
  fscrypto: remove unneeded Kconfig dependencies
  MAINTAINERS: fscrypto: recommend linux-fsdevel for fscrypto patches
  ext4: do not perform data journaling when data is encrypted
  ext4: return -ENOMEM instead of success
  ext4: reject inodes with negative size
  ext4: remove another test in ext4_alloc_file_blocks()
  Documentation: fix description of ext4's block_validity mount option
  ext4: fix checks for data=ordered and journal_async_commit options
  ...
parents 09cb6464 a551d7c8
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -58,22 +58,22 @@ Implementation Tips for Filesystem Writers
Filesystem support consists of
- adding support to mark inodes as being DAX by setting the S_DAX flag in
  i_flags
- implementing the direct_IO address space operation, and calling
  dax_do_io() instead of blockdev_direct_IO() if S_DAX is set
- implementing ->read_iter and ->write_iter operations which use dax_iomap_rw()
  when inode has S_DAX flag set
- implementing an mmap file operation for DAX files which sets the
  VM_MIXEDMAP and VM_HUGEPAGE flags on the VMA, and setting the vm_ops to
  include handlers for fault, pmd_fault and page_mkwrite (which should
  probably call dax_fault(), dax_pmd_fault() and dax_mkwrite(), passing the
  appropriate get_block() callback)
- calling dax_truncate_page() instead of block_truncate_page() for DAX files
- calling dax_zero_page_range() instead of zero_user() for DAX files
  include handlers for fault, pmd_fault, page_mkwrite, pfn_mkwrite. These
  handlers should probably call dax_iomap_fault() (for fault and page_mkwrite
  handlers), dax_iomap_pmd_fault(), dax_pfn_mkwrite() passing the appropriate
  iomap operations.
- calling iomap_zero_range() passing appropriate iomap operations instead of
  block_truncate_page() for DAX files
- ensuring that there is sufficient locking between reads, writes,
  truncates and page faults

The get_block() callback passed to the DAX functions may return
uninitialised extents.  If it does, it must ensure that simultaneous
calls to get_block() (for example by a page-fault racing with a read()
or a write()) work correctly.
The iomap handlers for allocating blocks must make sure that allocated blocks
are zeroed out and converted to written extents before being returned to avoid
exposure of uninitialized data through mmap.

These filesystems may be used for inspiration:
- ext2: see Documentation/filesystems/ext2.txt
+6 −7
Original line number Diff line number Diff line
@@ -351,14 +351,13 @@ nouid32 Disables 32-bit UIDs and GIDs. This is for
			interoperability  with  older kernels which only
			store and expect 16-bit values.

block_validity		This options allows to enables/disables the in-kernel
block_validity(*)	These options enable or disable the in-kernel
noblock_validity	facility for tracking filesystem metadata blocks
			within internal data structures.  This allows multi-
			block allocator and other routines to quickly locate
			extents which might overlap with filesystem metadata
			blocks. This option is intended for debugging
			purposes and since it negatively affects the
			performance, it is off by default.
			block allocator and other routines to notice
			bugs or corrupted allocation bitmaps which cause
			blocks to be allocated which overlap with
			filesystem metadata blocks.

dioread_lock		Controls whether or not ext4 should use the DIO read
dioread_nolock		locking. If the dioread_nolock option is specified
+1 −0
Original line number Diff line number Diff line
@@ -5240,6 +5240,7 @@ F: include/linux/fscache*.h
FS-CRYPTO: FILE SYSTEM LEVEL ENCRYPTION SUPPORT
M:	Theodore Y. Ts'o <tytso@mit.edu>
M:	Jaegeuk Kim <jaegeuk@kernel.org>
L:	linux-fsdevel@vger.kernel.org
S:	Supported
F:	fs/crypto/
F:	include/linux/fscrypto.h
+0 −1
Original line number Diff line number Diff line
@@ -55,7 +55,6 @@ config FS_DAX_PMD
	depends on FS_DAX
	depends on ZONE_DEVICE
	depends on TRANSPARENT_HUGEPAGE
	depends on BROKEN

endif # BLOCK

+0 −2
Original line number Diff line number Diff line
@@ -8,9 +8,7 @@ config FS_ENCRYPTION
	select CRYPTO_XTS
	select CRYPTO_CTS
	select CRYPTO_CTR
	select CRYPTO_SHA256
	select KEYS
	select ENCRYPTED_KEYS
	help
	  Enable encryption of files and directories.  This
	  feature is similar to ecryptfs, but it is more memory
Loading