Merge tag 'for-6.6/block-2023-08-28' of git://git.kernel.dk/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 30 Aug 2023 03:21:42 +0000 (20:21 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 30 Aug 2023 03:21:42 +0000 (20:21 -0700)
Pull block updates from Jens Axboe:
 "Pretty quiet round for this release. This contains:

   - Add support for zoned storage to ublk (Andreas, Ming)

   - Series improving performance for drivers that mark themselves as
     needing a blocking context for issue (Bart)

   - Cleanup the flush logic (Chengming)

   - sed opal keyring support (Greg)

   - Fixes and improvements to the integrity support (Jinyoung)

   - Add some exports for bcachefs that we can hopefully delete again in
     the future (Kent)

   - deadline throttling fix (Zhiguo)

   - Series allowing building the kernel without buffer_head support
     (Christoph)

   - Sanitize the bio page adding flow (Christoph)

   - Write back cache fixes (Christoph)

   - MD updates via Song:
      - Fix perf regression for raid0 large sequential writes (Jan)
      - Fix split bio iostat for raid0 (David)
      - Various raid1 fixes (Heinz, Xueshi)
      - raid6test build fixes (WANG)
      - Deprecate bitmap file support (Christoph)
      - Fix deadlock with md sync thread (Yu)
      - Refactor md io accounting (Yu)
      - Various non-urgent fixes (Li, Yu, Jack)

   - Various fixes and cleanups (Arnd, Azeem, Chengming, Damien, Li,
     Ming, Nitesh, Ruan, Tejun, Thomas, Xu)"

* tag 'for-6.6/block-2023-08-28' of git://git.kernel.dk/linux: (113 commits)
  block: use strscpy() to instead of strncpy()
  block: sed-opal: keyring support for SED keys
  block: sed-opal: Implement IOC_OPAL_REVERT_LSP
  block: sed-opal: Implement IOC_OPAL_DISCOVERY
  blk-mq: prealloc tags when increase tagset nr_hw_queues
  blk-mq: delete redundant tagset map update when fallback
  blk-mq: fix tags leak when shrink nr_hw_queues
  ublk: zoned: support REQ_OP_ZONE_RESET_ALL
  md: raid0: account for split bio in iostat accounting
  md/raid0: Fix performance regression for large sequential writes
  md/raid0: Factor out helper for mapping and submitting a bio
  md raid1: allow writebehind to work on any leg device set WriteMostly
  md/raid1: hold the barrier until handle_read_error() finishes
  md/raid1: free the r1bio before waiting for blocked rdev
  md/raid1: call free_r1bio() before allow_barrier() in raid_end_bio_io()
  blk-cgroup: Fix NULL deref caused by blkg_policy_data being installed before init
  drivers/rnbd: restore sysfs interface to rnbd-client
  md/raid5-cache: fix null-ptr-deref for r5l_flush_stripe_to_raid()
  raid6: test: only check for Altivec if building on powerpc hosts
  raid6: test: make sure all intermediate and artifact files are .gitignored
  ...

25 files changed:
1  2 
block/blk-cgroup.c
block/blk-core.c
block/blk-mq.c
block/fops.c
drivers/block/nbd.c
drivers/block/ublk_drv.c
drivers/md/dm-raid.c
drivers/md/md.c
drivers/nvme/host/ioctl.c
fs/Kconfig
fs/buffer.c
fs/ext4/inode.c
fs/f2fs/file.c
fs/gfs2/file.c
fs/internal.h
fs/iomap/buffered-io.c
fs/super.c
fs/udf/file.c
include/linux/bio.h
include/linux/blk-mq.h
include/linux/blkdev.h
include/linux/buffer_head.h
include/linux/iomap.h
include/linux/mm.h
mm/migrate.c

Simple merge
Simple merge
diff --cc block/blk-mq.c
Simple merge
diff --cc block/fops.c
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc drivers/md/md.c
Simple merge
Simple merge
diff --cc fs/Kconfig
Simple merge
diff --cc fs/buffer.c
Simple merge
diff --cc fs/ext4/inode.c
Simple merge
diff --cc fs/f2fs/file.c
Simple merge
diff --cc fs/gfs2/file.c
Simple merge
diff --cc fs/internal.h
Simple merge
Simple merge
diff --cc fs/super.c
@@@ -1206,13 -1027,14 +1206,15 @@@ void emergency_remount(void
  
  static void do_thaw_all_callback(struct super_block *sb)
  {
 -      down_write(&sb->s_umount);
 -      if (sb->s_root && sb->s_flags & SB_BORN) {
 +      bool born = super_lock_excl(sb);
 +
 +      if (born && sb->s_root) {
-               emergency_thaw_bdev(sb);
+               if (IS_ENABLED(CONFIG_BLOCK))
+                       while (sb->s_bdev && !thaw_bdev(sb->s_bdev))
+                               pr_warn("Emergency Thaw on %pg\n", sb->s_bdev);
 -              thaw_super_locked(sb);
 +              thaw_super_locked(sb, FREEZE_HOLDER_USERSPACE);
        } else {
 -              up_write(&sb->s_umount);
 +              super_unlock_excl(sb);
        }
  }
  
diff --cc fs/udf/file.c
@@@ -63,13 -63,13 +63,13 @@@ static vm_fault_t udf_page_mkwrite(stru
        else
                end = PAGE_SIZE;
        err = __block_write_begin(page, 0, end, udf_get_block);
 -      if (!err)
 -              err = block_commit_write(page, 0, end);
 -      if (err < 0) {
 +      if (err) {
                unlock_page(page);
-               ret = block_page_mkwrite_return(err);
+               ret = vmf_fs_error(err);
                goto out_unlock;
        }
 +
 +      block_commit_write(page, 0, end);
  out_dirty:
        set_page_dirty(page);
        wait_for_stable_page(page);
Simple merge
Simple merge
Simple merge
@@@ -194,9 -192,10 +192,8 @@@ void buffer_check_dirty_writeback(struc
  void mark_buffer_dirty(struct buffer_head *bh);
  void mark_buffer_write_io_error(struct buffer_head *bh);
  void touch_buffer(struct buffer_head *bh);
 -void set_bh_page(struct buffer_head *bh,
 -              struct page *page, unsigned long offset);
  void folio_set_bh(struct buffer_head *bh, struct folio *folio,
                  unsigned long offset);
- bool try_to_free_buffers(struct folio *);
  struct buffer_head *folio_alloc_buffers(struct folio *folio, unsigned long size,
                                        bool retry);
  struct buffer_head *alloc_page_buffers(struct page *page, unsigned long size,
@@@ -286,21 -276,9 +274,9 @@@ int cont_write_begin(struct file *, str
                        unsigned, struct page **, void **,
                        get_block_t *, loff_t *);
  int generic_cont_expand_simple(struct inode *inode, loff_t size);
 -int block_commit_write(struct page *page, unsigned from, unsigned to);
 +void block_commit_write(struct page *page, unsigned int from, unsigned int to);
  int block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf,
                                get_block_t get_block);
- /* Convert errno to return value from ->page_mkwrite() call */
- static inline vm_fault_t block_page_mkwrite_return(int err)
- {
-       if (err == 0)
-               return VM_FAULT_LOCKED;
-       if (err == -EFAULT || err == -EAGAIN)
-               return VM_FAULT_NOPAGE;
-       if (err == -ENOMEM)
-               return VM_FAULT_OOM;
-       /* -ENOSPC, -EDQUOT, -EIO ... */
-       return VM_FAULT_SIGBUS;
- }
  sector_t generic_block_bmap(struct address_space *, sector_t, get_block_t *);
  int block_truncate_page(struct address_space *, loff_t, get_block_t *);
  
Simple merge
Simple merge
diff --cc mm/migrate.c
Simple merge