]> Git Repo - linux.git/commitdiff
Merge tag 'block-5.14-2021-07-30' of git://git.kernel.dk/linux-block
authorLinus Torvalds <[email protected]>
Fri, 30 Jul 2021 18:08:12 +0000 (11:08 -0700)
committerLinus Torvalds <[email protected]>
Fri, 30 Jul 2021 18:08:12 +0000 (11:08 -0700)
Pull block fixes from Jens Axboe:

 - gendisk freeing fix (Christoph)

 - blk-iocost wake ordering fix (Tejun)

 - tag allocation error handling fix (John)

 - loop locking fix. While this isn't the prettiest fix in the world,
   nobody has any good alternatives for 5.14. Something to likely
   revisit for 5.15. (Tetsuo)

* tag 'block-5.14-2021-07-30' of git://git.kernel.dk/linux-block:
  block: delay freeing the gendisk
  blk-iocost: fix operation ordering in iocg_wake_fn()
  blk-mq-sched: Fix blk_mq_sched_alloc_tags() error handling
  loop: reintroduce global lock for safe loop_validate_file() traversal

1  2 
fs/block_dev.c

diff --combined fs/block_dev.c
index 0c424a0cadaa524f594fc94b00045a42ee4bdcca,a38b0f33211cd0a6e562d1bbe14aa8f93044973f..9ef4f1fc2cb0186c43066826c130fac24e5cf4e1
@@@ -812,6 -812,8 +812,8 @@@ static void bdev_free_inode(struct inod
        free_percpu(bdev->bd_stats);
        kfree(bdev->bd_meta_info);
  
+       if (!bdev_is_partition(bdev))
+               kfree(bdev->bd_disk);
        kmem_cache_free(bdev_cachep, BDEV_I(inode));
  }
  
@@@ -1609,7 -1611,7 +1611,7 @@@ static long block_ioctl(struct file *fi
   * Does not take i_mutex for the write and thus is not for general purpose
   * use.
   */
 -ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from)
 +static ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from)
  {
        struct file *file = iocb->ki_filp;
        struct inode *bd_inode = bdev_file_inode(file);
        blk_finish_plug(&plug);
        return ret;
  }
 -EXPORT_SYMBOL_GPL(blkdev_write_iter);
  
 -ssize_t blkdev_read_iter(struct kiocb *iocb, struct iov_iter *to)
 +static ssize_t blkdev_read_iter(struct kiocb *iocb, struct iov_iter *to)
  {
        struct file *file = iocb->ki_filp;
        struct inode *bd_inode = bdev_file_inode(file);
        iov_iter_reexpand(to, iov_iter_count(to) + shorted);
        return ret;
  }
 -EXPORT_SYMBOL_GPL(blkdev_read_iter);
 -
 -/*
 - * Try to release a page associated with block device when the system
 - * is under memory pressure.
 - */
 -static int blkdev_releasepage(struct page *page, gfp_t wait)
 -{
 -      struct super_block *super = BDEV_I(page->mapping->host)->bdev.bd_super;
 -
 -      if (super && super->s_op->bdev_try_to_free_page)
 -              return super->s_op->bdev_try_to_free_page(super, page, wait);
 -
 -      return try_to_free_buffers(page);
 -}
  
  static int blkdev_writepages(struct address_space *mapping,
                             struct writeback_control *wbc)
@@@ -1685,6 -1703,7 +1687,6 @@@ static const struct address_space_opera
        .write_begin    = blkdev_write_begin,
        .write_end      = blkdev_write_end,
        .writepages     = blkdev_writepages,
 -      .releasepage    = blkdev_releasepage,
        .direct_IO      = blkdev_direct_IO,
        .migratepage    = buffer_migrate_page_norefs,
        .is_dirty_writeback = buffer_check_dirty_writeback,
This page took 0.067522 seconds and 4 git commands to generate.