OSDN Git Service

Merge tag 'f2fs-for-4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 11 Jun 2018 17:16:13 +0000 (10:16 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 11 Jun 2018 17:16:13 +0000 (10:16 -0700)
Pull f2fs updates from Jaegeuk Kim:
 "In this round, we've mainly focused on discard, aka unmap, control
  along with fstrim for Android-specific usage model. In addition, we've
  fixed writepage flow which returned EAGAIN previously resulting in EIO
  of fsync(2) due to mapping's error state. In order to avoid old MM bug
  [1], we decided not to use __GFP_ZERO for the mapping for node and
  meta page caches. As always, we've cleaned up many places for future
  fsverity and symbol conflicts.

  Enhancements:
   - do discard/fstrim in lower priority considering fs utilization
   - split large discard commands into smaller ones for better responsiveness
   - add more sanity checks to address syzbot reports
   - add a mount option, fsync_mode=nobarrier, which can reduce # of cache flushes
   - clean up symbol namespace with modified function names
   - be strict on block allocation and IO control in corner cases

  Bug fixes:
   - don't use __GFP_ZERO for mappings
   - fix error reports in writepage to avoid fsync() failure
   - avoid selinux denial on CAP_RESOURCE on resgid/resuid
   - fix some subtle race conditions in GC/atomic writes/shutdown
   - fix overflow bugs in sanity_check_raw_super
   - fix missing bits on get_flags

  Clean-ups:
   - prepare the generic flow for future fsverity integration
   - fix some broken coding standard"

[1] https://lkml.org/lkml/2018/4/8/661

* tag 'f2fs-for-4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (79 commits)
  f2fs: fix to clear FI_VOLATILE_FILE correctly
  f2fs: let sync node IO interrupt async one
  f2fs: don't change wbc->sync_mode
  f2fs: fix to update mtime correctly
  fs: f2fs: insert space around that ':' and ', '
  fs: f2fs: add missing blank lines after declarations
  fs: f2fs: changed variable type of offset "unsigned" to "loff_t"
  f2fs: clean up symbol namespace
  f2fs: make set_de_type() static
  f2fs: make __f2fs_write_data_pages() static
  f2fs: fix to avoid accessing cross the boundary
  f2fs: fix to let caller retry allocating block address
  disable loading f2fs module on PAGE_SIZE > 4KB
  f2fs: fix error path of move_data_page
  f2fs: don't drop dentry pages after fs shutdown
  f2fs: fix to avoid race during access gc_thread pointer
  f2fs: clean up with clear_radix_tree_dirty_tag
  f2fs: fix to don't trigger writeback during recovery
  f2fs: clear discard_wake earlier
  f2fs: let discard thread wait a little longer if dev is busy
  ...

1  2 
fs/crypto/crypto.c
fs/crypto/fscrypt_private.h
fs/f2fs/namei.c
fs/f2fs/super.c
fs/f2fs/sysfs.c
include/linux/fscrypt_notsupp.h
include/linux/fscrypt_supp.h

Simple merge
Simple merge
diff --cc fs/f2fs/namei.c
@@@ -292,9 -295,10 +295,9 @@@ static int f2fs_create(struct inode *di
                goto out;
        f2fs_unlock_op(sbi);
  
-       alloc_nid_done(sbi, ino);
+       f2fs_alloc_nid_done(sbi, ino);
  
 -      unlock_new_inode(inode);
 -      d_instantiate(dentry, inode);
 +      d_instantiate_new(dentry, inode);
  
        if (IS_DIRSYNC(dir))
                f2fs_sync_fs(sbi->sb, 1);
@@@ -657,9 -662,10 +660,9 @@@ static int f2fs_mkdir(struct inode *dir
                goto out_fail;
        f2fs_unlock_op(sbi);
  
-       alloc_nid_done(sbi, inode->i_ino);
+       f2fs_alloc_nid_done(sbi, inode->i_ino);
  
 -      unlock_new_inode(inode);
 -      d_instantiate(dentry, inode);
 +      d_instantiate_new(dentry, inode);
  
        if (IS_DIRSYNC(dir))
                f2fs_sync_fs(sbi->sb, 1);
@@@ -708,9 -714,10 +711,9 @@@ static int f2fs_mknod(struct inode *dir
                goto out;
        f2fs_unlock_op(sbi);
  
-       alloc_nid_done(sbi, inode->i_ino);
+       f2fs_alloc_nid_done(sbi, inode->i_ino);
  
 -      unlock_new_inode(inode);
 -      d_instantiate(dentry, inode);
 +      d_instantiate_new(dentry, inode);
  
        if (IS_DIRSYNC(dir))
                f2fs_sync_fs(sbi->sb, 1);
diff --cc fs/f2fs/super.c
Simple merge
diff --cc fs/f2fs/sysfs.c
Simple merge
Simple merge
Simple merge