public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <jaxboe@fusionio.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Chris Mason <chris.mason@oracle.com>
Subject: [GIT PULL] Core block IO bits for 2.6.39
Date: Thu, 24 Mar 2011 14:43:37 +0100	[thread overview]
Message-ID: <4D8B4A89.80608@fusionio.com> (raw)

Hi Linus,

This is the main pull request for the block IO layer and friends for
2.6.39.

There are two major things in this tree:

- The removal of the per-device plugging state for disks. On fast
  devices, it ended up hammering the queue lock quite hard. The new
  scheme puts the plugging state on the stack and allows an IO submitter
  to finish his batch of IO before pushing it to the queue. Once that
  push starts, we'll insert/merge with the existing queue.

  A pointer to this plugging context is stored in the task structure. If
  a task ends up blocking before it has submitted it's IO (usual cause
  would be memory allocation of some sort), the plugged list is
  auto-submitted before the task goes to sleep.

  While reducing the queue lock frequency, this patch also provides the
  nice benefit of getting rid of the aops->sync_page() callback. We used
  to use this for auto-unplugging the below device if we needed to wait
  on page IO. This is also the reason the diffstat looks so tasty, we
  end up removing a lot more lines of code than we add.

  Another nice benefit is that the API is now explicit. You call
  blk_start_plug() before starting an IO sequence, and blk_finish_plug()
  when that sequence is done and you want to flush it out. No more 'hey
  I'll plug behind his back, hope he remembers to unplug' games need to
  be played.

  I did not go overboard with adding plugging calls, so it may very well
  be that there are cases where we need to add this during the 2.6.39-rc
  cycle. I'd encourage everyone to test their favorite workload and keep
  an eye out for regressions.

- Final conversion of drivers to the new ->check_events() interface. So
  this work is now complete.

Other notable features/changes:

- Various fixes and improvements to the cfq-ioscheduled.

- Merging of FLUSH/FUA requests to speed up workloads that are intensive
  on durable writes.

- Updates and fixes to the block IO throttler.


Note that you'll have to do a trivial merge when pulling this in. I left
that as an exercise for you, since you've expressed interest in seeing
and doing those kinds of merges.

Please pull!

  git://git.kernel.dk/linux-2.6-block.git for-2.6.39/core




Dan Carpenter (1):
      block: NULL dereference on error path in __blkdev_get()

Gui Jianfeng (1):
      cfq-iosched: Fix update_vdisktime logic

Jens Axboe (20):
      Merge commit 'v2.6.38-rc6' into for-2.6.39/core
      cfq-iosched: fix race in cfq_set_request()
      Merge branch 'block-for-2.6.39-core' of ssh://master.kernel.org/.../tj/misc into for-2.6.39/core
      block: add API for delaying work/request_fn a little bit
      ide-cd: convert to blk_delay_queue() for a short pause
      scsi: convert to blk_delay_queue()
      block: initial patch for on-stack per-task plugging
      block: remove per-queue plugging
      fs: make generic file read/write functions plug
      read-ahead: use plugging
      fs: make mpage read/write_pages() plug
      aio: remove request submission batching
      block: kill off REQ_UNPLUG
      Merge branch 'for-2.6.39/stack-plug' into for-2.6.39/core
      block: fixup plugging stubs for !CONFIG_BLOCK
      fs: make fsync_buffers_list() plug
      jbd: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging
      jbd2: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging
      fs: assign sb->s_bdi to default_backing_dev_info if the bdi is going away
      block: attempt to merge with existing requests on plug flush

Justin TerAvest (7):
      cfq-iosched: Always provide group isolation.
      blk-cgroup: Lower minimum weight from 100 to 10.
      blk-cgroup: Add unaccounted time to timeslice_used.
      cfq-iosched: Don't update group weights when on service tree
      cfq-iosched: Don't set active queue in preempt
      blk-cgroup: Only give unaccounted_time under debug
      cfq-iosched: Don't clear queue stats when preempt.

Li, Shaohua (1):
      cfq-iosched: removing unnecessary think time checking

Liu Yuan (1):
      block/genhd: Change some numerals into macros

Martin K. Petersen (2):
      block: biovec_slab vs. CONFIG_BLK_DEV_INTEGRITY
      block: Require subsystems to explicitly allocate bio_set integrity mempool

Mike Snitzer (2):
      block: skip elevator data initialization for flush requests
      block: share request flush fields with  elevator_private

Randy Dunlap (1):
      Documentation/iostats.txt: bit-size reference etc.

Shaohua Li (4):
      cfq-iosched: give busy sync queue no dispatch limit
      fs: make aio plug
      mm: make generic_writepages() use plugging
      block: fix non-atomic access to genhd inflight structures

Tao Ma (2):
      blktrace: Use rq->cmd_flags directly in blk_add_trace_rq.
      block: remove obsolete comments for blkdev_issue_zeroout.

Tejun Heo (20):
      block: add REQ_FLUSH_SEQ
      block: improve flush bio completion
      block: reimplement FLUSH/FUA to support merge
      Merge branch 'for-linus' of ../linux-2.6-block into block-for-2.6.39/core
      block: Don't implicitly trigger event check on disk_unblock_events()
      block: Don't check events on close unless it was blocked
      block: Don't check events while open is in progress
      ide: Convert to bdops->check_events()
      floppy,{ami|ata}flop: Convert to bdops->check_events()
      gdrom,viocd: Convert to bdops->check_events()
      paride: Convert to bdops->check_events()
      dac960: Convert to bdops->check_events()
      swim[3]: Convert to bdops->check_events()
      ub: Convert to bdops->check_events()
      xsysace: Convert to bdops->check_events()
      i2o_block: Convert to bdops->check_events()
      s390/tape_block: Convert to bdops->check_events()
      umem: Drop dummy ->media_changed()
      pktcdvd: Convert to bdops->check_events()
      staging: Convert to bdops->check_events()

Vivek Goyal (7):
      block: Initialize ->queue_lock to internal lock at queue allocation time
      loop: No need to initialize ->queue_lock explicitly before calling blk_cleanup_queue()
      block: Move blk_throtl_exit() call to blk_cleanup_queue()
      blk-throttle: process limit change only through one function
      blk-throttle: Some cleanups and race fixes in limit  update code
      blk-throttle: Use blk_plug in throttle dispatch
      blk-throttle: Reset group slice when limits are changed

 Documentation/block/biodoc.txt                     |    5 -
 Documentation/cgroups/blkio-controller.txt         |   30 +-
 Documentation/iostats.txt                          |   17 +-
 block/blk-cgroup.c                                 |   16 +-
 block/blk-cgroup.h                                 |   14 +-
 block/blk-core.c                                   |  646 ++++++++++++--------
 block/blk-exec.c                                   |    4 +-
 block/blk-flush.c                                  |  439 +++++++++----
 block/blk-lib.c                                    |    2 -
 block/blk-merge.c                                  |    6 +
 block/blk-settings.c                               |   15 -
 block/blk-sysfs.c                                  |    2 -
 block/blk-throttle.c                               |  139 +++--
 block/blk.h                                        |   16 +-
 block/cfq-iosched.c                                |  163 +++---
 block/cfq.h                                        |    6 +-
 block/deadline-iosched.c                           |    9 -
 block/elevator.c                                   |  108 ++--
 block/genhd.c                                      |   18 +-
 block/noop-iosched.c                               |    8 -
 drivers/block/DAC960.c                             |    8 +-
 drivers/block/amiflop.c                            |    9 +-
 drivers/block/ataflop.c                            |   14 +-
 drivers/block/cciss.c                              |    6 -
 drivers/block/cpqarray.c                           |    3 -
 drivers/block/drbd/drbd_actlog.c                   |    4 +-
 drivers/block/drbd/drbd_bitmap.c                   |    1 -
 drivers/block/drbd/drbd_int.h                      |   16 +-
 drivers/block/drbd/drbd_main.c                     |   36 +-
 drivers/block/drbd/drbd_receiver.c                 |   29 +-
 drivers/block/drbd/drbd_req.c                      |    4 -
 drivers/block/drbd/drbd_worker.c                   |    1 -
 drivers/block/drbd/drbd_wrappers.h                 |   18 -
 drivers/block/floppy.c                             |   11 +-
 drivers/block/loop.c                               |   16 -
 drivers/block/paride/pcd.c                         |   18 +-
 drivers/block/paride/pd.c                          |    7 +-
 drivers/block/paride/pf.c                          |   10 +-
 drivers/block/pktcdvd.c                            |   15 +-
 drivers/block/swim.c                               |    8 +-
 drivers/block/swim3.c                              |   11 +-
 drivers/block/ub.c                                 |   10 +-
 drivers/block/umem.c                               |   26 +-
 drivers/block/xsysace.c                            |    9 +-
 drivers/cdrom/gdrom.c                              |   16 +-
 drivers/cdrom/viocd.c                              |   17 +-
 drivers/ide/ide-atapi.c                            |    3 +-
 drivers/ide/ide-cd.c                               |   23 +-
 drivers/ide/ide-cd.h                               |    3 +-
 drivers/ide/ide-cd_ioctl.c                         |    8 +-
 drivers/ide/ide-gd.c                               |   14 +-
 drivers/ide/ide-io.c                               |    4 -
 drivers/ide/ide-park.c                             |    2 +-
 drivers/md/bitmap.c                                |    5 +-
 drivers/md/dm-crypt.c                              |    9 +-
 drivers/md/dm-io.c                                 |    2 +-
 drivers/md/dm-kcopyd.c                             |   55 +--
 drivers/md/dm-raid.c                               |    2 +-
 drivers/md/dm-raid1.c                              |    2 -
 drivers/md/dm-table.c                              |   31 +-
 drivers/md/dm.c                                    |   52 +-
 drivers/md/dm.h                                    |    2 +-
 drivers/md/linear.c                                |   20 +-
 drivers/md/md.c                                    |   20 +-
 drivers/md/multipath.c                             |   38 +-
 drivers/md/raid0.c                                 |   19 +-
 drivers/md/raid1.c                                 |   91 +---
 drivers/md/raid10.c                                |   97 +---
 drivers/md/raid5.c                                 |   63 +--
 drivers/md/raid5.h                                 |    2 +-
 drivers/message/i2o/i2o_block.c                    |   17 +-
 drivers/mmc/card/queue.c                           |    3 +-
 drivers/s390/block/dasd.c                          |    2 +-
 drivers/s390/char/tape_block.c                     |   12 +-
 drivers/scsi/scsi_lib.c                            |   44 +-
 drivers/scsi/scsi_transport_fc.c                   |    2 +-
 drivers/scsi/scsi_transport_sas.c                  |    6 +-
 drivers/staging/hv/blkvsc_drv.c                    |   11 +-
 .../westbridge/astoria/block/cyasblkdev_block.c    |   11 +-
 drivers/target/target_core_iblock.c                |    7 +-
 fs/adfs/inode.c                                    |    1 -
 fs/affs/file.c                                     |    2 -
 fs/aio.c                                           |   77 +---
 fs/befs/linuxvfs.c                                 |    1 -
 fs/bfs/file.c                                      |    1 -
 fs/bio-integrity.c                                 |    3 +
 fs/bio.c                                           |   10 +-
 fs/block_dev.c                                     |   27 +-
 fs/btrfs/disk-io.c                                 |   79 ---
 fs/btrfs/extent_io.c                               |    2 +-
 fs/btrfs/inode.c                                   |    1 -
 fs/btrfs/volumes.c                                 |   91 +---
 fs/buffer.c                                        |   51 +--
 fs/cifs/file.c                                     |   30 -
 fs/direct-io.c                                     |    7 +-
 fs/efs/inode.c                                     |    1 -
 fs/exofs/inode.c                                   |    1 -
 fs/ext2/inode.c                                    |    2 -
 fs/ext3/inode.c                                    |    3 -
 fs/ext4/inode.c                                    |    4 -
 fs/ext4/page-io.c                                  |    3 +-
 fs/fat/inode.c                                     |    1 -
 fs/freevxfs/vxfs_subr.c                            |    1 -
 fs/fuse/inode.c                                    |    1 -
 fs/gfs2/aops.c                                     |    3 -
 fs/gfs2/log.c                                      |    4 +-
 fs/gfs2/lops.c                                     |   12 +-
 fs/gfs2/meta_io.c                                  |    3 +-
 fs/hfs/inode.c                                     |    2 -
 fs/hfsplus/inode.c                                 |    2 -
 fs/hpfs/file.c                                     |    1 -
 fs/isofs/inode.c                                   |    1 -
 fs/jbd/commit.c                                    |   22 +-
 fs/jbd2/commit.c                                   |   22 +-
 fs/jfs/inode.c                                     |    1 -
 fs/jfs/jfs_metapage.c                              |    1 -
 fs/logfs/dev_bdev.c                                |    2 -
 fs/minix/inode.c                                   |    1 -
 fs/mpage.c                                         |    8 +
 fs/nilfs2/btnode.c                                 |    7 +-
 fs/nilfs2/gcinode.c                                |    1 -
 fs/nilfs2/inode.c                                  |    1 -
 fs/nilfs2/mdt.c                                    |    9 +-
 fs/nilfs2/page.c                                   |    5 +-
 fs/nilfs2/page.h                                   |    3 +-
 fs/nilfs2/segbuf.c                                 |    2 +-
 fs/ntfs/aops.c                                     |    4 -
 fs/ntfs/compress.c                                 |    3 +-
 fs/ocfs2/aops.c                                    |    1 -
 fs/ocfs2/cluster/heartbeat.c                       |    4 -
 fs/omfs/file.c                                     |    1 -
 fs/partitions/check.c                              |    3 +-
 fs/qnx4/inode.c                                    |    1 -
 fs/reiserfs/inode.c                                |    1 -
 fs/super.c                                         |    2 +
 fs/sync.c                                          |    4 +-
 fs/sysv/itree.c                                    |    1 -
 fs/ubifs/super.c                                   |    1 -
 fs/udf/file.c                                      |    1 -
 fs/udf/inode.c                                     |    1 -
 fs/ufs/inode.c                                     |    1 -
 fs/ufs/truncate.c                                  |    2 +-
 fs/xfs/linux-2.6/xfs_aops.c                        |    4 +-
 fs/xfs/linux-2.6/xfs_buf.c                         |   13 +-
 include/linux/backing-dev.h                        |   16 -
 include/linux/bio.h                                |    1 -
 include/linux/blk_types.h                          |    6 +-
 include/linux/blkdev.h                             |  101 +++-
 include/linux/buffer_head.h                        |    1 -
 include/linux/device-mapper.h                      |    5 -
 include/linux/elevator.h                           |   10 +-
 include/linux/fs.h                                 |   29 +-
 include/linux/genhd.h                              |   12 +-
 include/linux/pagemap.h                            |   12 -
 include/linux/sched.h                              |    6 +
 include/linux/swap.h                               |    2 -
 kernel/exit.c                                      |    1 +
 kernel/fork.c                                      |    3 +
 kernel/power/block_io.c                            |    2 +-
 kernel/sched.c                                     |   12 +
 kernel/trace/blktrace.c                            |   15 +-
 mm/backing-dev.c                                   |    8 +-
 mm/filemap.c                                       |   74 +--
 mm/memory-failure.c                                |    8 +-
 mm/nommu.c                                         |    4 -
 mm/page-writeback.c                                |   10 +-
 mm/page_io.c                                       |    2 +-
 mm/readahead.c                                     |   18 +-
 mm/shmem.c                                         |    1 -
 mm/swap_state.c                                    |    5 +-
 mm/swapfile.c                                      |   37 --
 mm/vmscan.c                                        |    2 +-
 172 files changed, 1520 insertions(+), 2112 deletions(-)

-- 
Jens Axboe


             reply	other threads:[~2011-03-24 13:43 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-24 13:43 Jens Axboe [this message]
2011-03-24 18:30 ` [GIT PULL] Core block IO bits for 2.6.39 - early Oops Markus Trippelsdorf
2011-03-24 18:36   ` Jens Axboe
2011-03-24 18:47     ` Markus Trippelsdorf
2011-03-24 18:51     ` Jens Axboe
2011-03-24 18:54       ` Markus Trippelsdorf
2011-03-24 18:58         ` Jens Axboe
2011-03-24 19:34           ` Markus Trippelsdorf
2011-03-24 19:36             ` Jens Axboe
2011-03-24 19:45               ` Markus Trippelsdorf
2011-03-24 19:57                 ` Jens Axboe
2011-03-24 20:06                   ` Markus Trippelsdorf
2011-03-24 21:01                     ` Jens Axboe
2011-03-24 21:41                       ` Markus Trippelsdorf
2011-03-25  7:23                         ` Jens Axboe
2011-03-25  8:37                           ` Markus Trippelsdorf
2011-03-25  8:44                             ` Jens Axboe
2011-03-25  9:27                               ` Markus Trippelsdorf
2011-03-25  9:57                               ` Markus Trippelsdorf
2011-03-25 10:11                                 ` Jens Axboe
2011-03-25 12:44                                 ` Jens Axboe
2011-03-25 13:09                                   ` Markus Trippelsdorf
2011-03-25 14:10                                     ` Jens Axboe
2011-03-25 14:14                                       ` Markus Trippelsdorf
2011-03-25 14:18                                         ` Chris Mason
2011-03-25 14:19                                           ` Chris Mason
2011-03-25 14:24                                             ` Markus Trippelsdorf
2011-03-25 14:20                                         ` Jens Axboe
2011-03-25 14:28                                           ` Markus Trippelsdorf
2011-03-25 15:51                                             ` Jens Axboe
2011-03-25 15:58                                               ` Markus Trippelsdorf
2011-03-25 16:01                                                 ` Jens Axboe
2011-03-24 22:06                       ` Markus Trippelsdorf
2011-03-25  4:41             ` Dave Chinner
2011-03-25  7:26               ` Jens Axboe
2011-03-25 11:59               ` Theodore Tso
2011-03-25 12:14                 ` Jens Axboe
2011-03-25 12:33                   ` Ted Ts'o
2011-03-25 12:43                     ` Jens Axboe
2011-03-25 13:01               ` Chris Mason
2011-03-25 21:35 ` [GIT PULL] Core block IO bits for 2.6.39 Geert Uytterhoeven
2011-03-26  6:29   ` Jens Axboe
2011-03-26  7:21     ` Geert Uytterhoeven
2011-03-26  8:25       ` Jens Axboe
2011-03-26  8:34         ` Geert Uytterhoeven
2011-03-26  9:26           ` Jens Axboe
2011-03-26 16:48     ` Linus Torvalds
2011-03-26 16:53       ` Jens Axboe
2011-03-26 18:48         ` Jens Axboe
2011-03-27 13:21       ` Alan Cox
2011-03-27 11:49 ` Avi Kivity
2011-03-27 12:00   ` Jens Axboe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D8B4A89.80608@fusionio.com \
    --to=jaxboe@fusionio.com \
    --cc=chris.mason@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox