Merge tag 'for-5.0-rc2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 20 Jan 2019 18:35:26 +0000 (07:35 +1300)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 20 Jan 2019 18:35:26 +0000 (07:35 +1300)
Pull btrfs fixes from David Sterba:
 "A handful of fixes (some of them in testing for a long time):

   - fix some test failures regarding cleanup after transaction abort

   - revert of a patch that could cause a deadlock

   - delayed iput fixes, that can help in ENOSPC situation when there's
     low space and a lot data to write"

* tag 'for-5.0-rc2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
  btrfs: wakeup cleaner thread when adding delayed iput
  btrfs: run delayed iputs before committing
  btrfs: wait on ordered extents on abort cleanup
  btrfs: handle delayed ref head accounting cleanup in abort
  Revert "btrfs: balance dirty metadata pages in btrfs_finish_ordered_io"

1  2 
fs/btrfs/ctree.h

diff --combined fs/btrfs/ctree.h
index 0a68cf7032f5ed753b85aa017bcff7a4690005b8,8b1d06fa222dddb92bab398573856750cf5ea271..7a2a2621f0d9d7402ab2bfc2b10d9421c96dbbb0
@@@ -35,6 -35,7 +35,7 @@@
  struct btrfs_trans_handle;
  struct btrfs_transaction;
  struct btrfs_pending_snapshot;
+ struct btrfs_delayed_ref_root;
  extern struct kmem_cache *btrfs_trans_handle_cachep;
  extern struct kmem_cache *btrfs_bit_radix_cachep;
  extern struct kmem_cache *btrfs_path_cachep;
@@@ -786,6 -787,9 +787,9 @@@ enum 
         * main phase. The fs_info::balance_ctl is initialized.
         */
        BTRFS_FS_BALANCE_RUNNING,
+       /* Indicate that the cleaner thread is awake and doing something. */
+       BTRFS_FS_CLEANER_RUNNING,
  };
  
  struct btrfs_fs_info {
        struct mutex unused_bg_unpin_mutex;
        struct mutex delete_unused_bgs_mutex;
  
 -      /* For btrfs to record security options */
 -      struct security_mnt_opts security_opts;
 -
        /*
         * Chunks that can't be freed yet (under a trim/discard operation)
         * and will be latter freed. Protected by fs_info->chunk_mutex.
@@@ -2661,6 -2668,9 +2665,9 @@@ int btrfs_run_delayed_refs(struct btrfs
                           unsigned long count);
  int btrfs_async_run_delayed_refs(struct btrfs_fs_info *fs_info,
                                 unsigned long count, u64 transid, int wait);
+ void btrfs_cleanup_ref_head_accounting(struct btrfs_fs_info *fs_info,
+                                 struct btrfs_delayed_ref_root *delayed_refs,
+                                 struct btrfs_delayed_ref_head *head);
  int btrfs_lookup_data_extent(struct btrfs_fs_info *fs_info, u64 start, u64 len);
  int btrfs_lookup_extent_info(struct btrfs_trans_handle *trans,
                             struct btrfs_fs_info *fs_info, u64 bytenr,
@@@ -3018,6 -3028,7 +3025,6 @@@ static inline void free_fs_info(struct 
        kfree(fs_info->free_space_root);
        kfree(fs_info->super_copy);
        kfree(fs_info->super_for_commit);
 -      security_free_mnt_opts(&fs_info->security_opts);
        kvfree(fs_info);
  }