)]}'
{
  "log": [
    {
      "commit": "8d57a98ccd0b4489003473979da8f5a1363ba7a3",
      "tree": "2982997ce66bb6a92c020b7189966c3097095fd7",
      "parents": [
        "93caf8e69eac763f6a20cf253ace8e7fc1ab7953"
      ],
      "author": {
        "name": "Adrian Hunter",
        "email": "adrian.hunter@nokia.com",
        "time": "Wed Aug 11 14:17:49 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 08:43:30 2010 -0700"
      },
      "message": "block: add secure discard\n\nSecure discard is the same as discard except that all copies of the\ndiscarded sectors (perhaps created by garbage collection) must also be\nerased.\n\nSigned-off-by: Adrian Hunter \u003cadrian.hunter@nokia.com\u003e\nAcked-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Kyungmin Park \u003ckmpark@infradead.org\u003e\nCc: Madhusudhan Chikkature \u003cmadhu.cr@ti.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Ben Gardiner \u003cbengardiner@nanometrics.ca\u003e\nCc: \u003clinux-mmc@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "edca4a380584a65a16839bdee33ec82244f0f88e",
      "tree": "f0e24d4712cf98eb5876157ae1f49bebc6d701ef",
      "parents": [
        "f6c4c8e19a087dae7dc651ccbd1ff8b843eedee2"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Aug 03 12:54:51 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:53:04 2010 +0200"
      },
      "message": "block: disallow FS recursion from sb_issue_discard allocation\n\nFilesystems can call sb_issue_discard on a memory reclaim path\n(e.g. ext4 calls sb_issue_discard during journal commit).\n\nUse GFP_NOFS in sb_issue_discard to avoid recursing back into the FS.\n\nReported-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8a6cfeb6deca3a8fefd639d898b0d163c0b5d368",
      "tree": "9a633ad48c3b1ada0519ee7bade0602f940037f6",
      "parents": [
        "34484062445fe905bf02c72f87ddda21881acda3"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Thu Jul 08 10:18:46 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:25:00 2010 +0200"
      },
      "message": "block: push down BKL into .locked_ioctl\n\nAs a preparation for the removal of the big kernel\nlock in the block layer, this removes the BKL\nfrom the common ioctl handling code, moving it\ninto every single driver still using it.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a89f5c899db3c6be4bb426e4efb72ecee29a93b5",
      "tree": "b71bcb7885c1ff5dc2001800852b6144db640157",
      "parents": [
        "82b6d57fb11644fe25c8a1346627ad0027673dae"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Tue Jul 06 09:03:18 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:24:21 2010 +0200"
      },
      "message": "block: remove unused REQ_TYPE_LINUX_BLOCK\n\nNobody uses REQ_TYPE_LINUX_BLOCK (and its REQ_LB_OP_*).\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nAcked-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "00fff26539bfe3fad21c164fc4002d9ede056fb0",
      "tree": "4909c8eed03133b1d46f689e465ed1f579b8e282",
      "parents": [
        "afc23068103ccfbf1917eb2a007bc15ab5418cc9"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Sat Jul 03 17:45:40 2010 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:24:15 2010 +0200"
      },
      "message": "block: remove q-\u003eprepare_flush_fn completely\n\nThis removes q-\u003eprepare_flush_fn completely (changes the\nblk_queue_ordered API).\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "28018c242a4ec7017bbbf81d2d3952f820a27118",
      "tree": "03732bef20d0e4dad30d81d9b9ad9ffcf5a2e41c",
      "parents": [
        "e597cd09f711b28b8466ebdc2f12e55b44fa81e4"
      ],
      "author": {
        "name": "James Bottomley",
        "email": "James.Bottomley@suse.de",
        "time": "Thu Jul 01 19:49:17 2010 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:23:47 2010 +0200"
      },
      "message": "block: implement an unprep function corresponding directly to prep\n\nReviewed-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "66ac0280197981f88774e74b60c8e5f9f07c1dba",
      "tree": "d093ce493146779926df88b5831805c6f9ee14e1",
      "parents": [
        "082439004b31adc146e96e5f1c574dd2b57dcd93"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 18 16:59:42 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:23:08 2010 +0200"
      },
      "message": "block: don\u0027t allocate a payload for discard request\n\nAllocating a fixed payload for discard requests always was a horrible hack,\nand it\u0027s not coming to byte us when adding support for discard in DM/MD.\n\nSo change the code to leave the allocation of a payload to the lowlevel\ndriver.  Unfortunately that means we\u0027ll need another hack, which allows\nus to update the various block layer length fields indicating that we\nhave a payload.  Instead of hiding this in sd.c, which we already partially\ndo for UNMAP support add a documented helper in the core block layer for it.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7b6d91daee5cac6402186ff224c3af39d79f4a0e",
      "tree": "b1518cf0b6c301178e0a320f80610cd5b3aa7625",
      "parents": [
        "33659ebbae262228eef4e0fe990f393d1f0ed941"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "message": "block: unify flags for struct bio and struct request\n\nRemove the current bio flags and reuse the request flags for the bio, too.\nThis allows to more easily trace the type of I/O from the filesystem\ndown to the block driver.  There were two flags in the bio that were\nmissing in the requests:  BIO_RW_UNPLUG and BIO_RW_AHEAD.  Also I\u0027ve\nrenamed two request flags that had a superflous RW in them.\n\nNote that the flags are in bio.h despite having the REQ_ name - as\nblkdev.h includes bio.h that is the only way to go for now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "33659ebbae262228eef4e0fe990f393d1f0ed941",
      "tree": "fcb537f09359c8dad3a6f6e16dc4319562dc42cc",
      "parents": [
        "7e005f79791dcd58436c88ded4a7f5aed1b82147"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Aug 07 18:17:56 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:17:56 2010 +0200"
      },
      "message": "block: remove wrappers for request type/flags\n\nRemove all the trivial wrappers for the cmd_type and cmd_flags fields in\nstruct requests.  This allows much easier grepping for different request\ntypes instead of unwinding through macros.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "bfe172310e58225f0d07f9354b683abacbd6a0d8",
      "tree": "6f50393419bd29dabb27316e6875bc5715816789",
      "parents": [
        "b375a612ad931264b71cf162d692b4420f2578a9"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Mon May 31 15:59:03 2010 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:15:49 2010 +0200"
      },
      "message": "block: kill ISA_DMA_THRESHOLD usage\n\nblock uses ISA_DMA_THRESHOLD for BLK_BOUNCE_ISA. Only SCSI uses\nISA_DMA_THRESHOLD for ancient drivers with non-zero\nunchecked_isa_dma. Nowadays drivers (and subsystems) use dma_mask\nproperly instead of ISA_DMA_THRESHOLD.\n\nDocumentation/scsi/scsi_mid_low_api.txt says:\n\nunchecked_isa_dma - 1\u003d\u003eonly use bottom 16 MB of ram (ISA DMA addressing\n                   restriction), 0\u003d\u003ecan use full 32 bit (or better) DMA\n                   address space\n\nSo block simply uses DMA_BIT_MASK(24) for BLK_BOUNCE_ISA for SCSI.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nAcked-by: James Bottomley \u003cJames.Bottomley@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "e2e1a148bc45855816ae6b4692ce29d0020fa22e",
      "tree": "fd5ec8a580d4333b471acfe50f6f92b4cc880087",
      "parents": [
        "841fdffdd382722d33579a6aa1487e8a4e526dbd"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Jun 09 10:42:09 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:13:00 2010 +0200"
      },
      "message": "block: add sysfs knob for turning off disk entropy contributions\n\nThere are two reasons for doing this:\n\n- On SSD disks, the completion times aren\u0027t as random as they\n  are for rotational drives. So it\u0027s questionable whether they\n  should contribute to the random pool in the first place.\n\n- Calling add_disk_randomness() has a lot of overhead.\n\nThis adds /sys/block/\u003cdev\u003e/queue/add_random that will allow you to\nswitch off on a per-device basis. The default setting is on, so there\nshould be no functional changes from this patch.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "28f4197e5d4707311febeec8a0eb97cb5fd93c97",
      "tree": "9f7c5808e0c069b449b67856207c5ee4f740bd34",
      "parents": [
        "713b686494a577b3c4f4f9f585a4705fc30d51c2"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jun 01 12:23:18 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jun 01 12:23:18 2010 +0200"
      },
      "message": "block: disable preemption before using sched_clock()\n\nCommit 9195291e5f05e01d67f9a09c756b8aca8f009089 added calls to\nsched_clock() from preemptible code. sched_clock() is both the\nwrong interface AND cannot be called without preempt disabled.\n\nApply a temporary fix to get rid of the warnings, a real patch\nis in the works.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d79df0b1eda0099a22cbcece01ce5e7d222450de",
      "tree": "eb9c938fa5faf285fb091d7446508a32229ceea4",
      "parents": [
        "6e80e8ed5eb92d0112674aabe82951266a6a1051",
        "c8d1a126924fcbc1d61ceb830226e0c7afdcc841"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 15:26:46 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 15:26:46 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6: (577 commits)\n  Staging: ramzswap: Handler for swap slot free callback\n  swap: Add swap slot free callback to block_device_operations\n  swap: Add flag to identify block swap devices\n  Staging: vt6655: use ETH_FRAME_LEN macro instead of custom one\n  Staging: vt6655: use ETH_DATA_LEN macro instead of custom one\n  Staging: vt6655: use ETH_FCS_LEN macro instead of custom one\n  Staging: vt6656: use ETH_HLEN macro instead of custom one\n  Staging: comedi: quatech_daqp_cs.c Replace eos semaphore with a completion.\n  Staging: dt3155v4l: remove private memory allocator\n  Staging: crystalhd: Remove typedefs from driver\n  Staging: winbond: Fix for pointer name format issue in mds.c\n  Staging: vt6656: removed custom UCHAR/USHORT/UINT/ULONG/ULONGLONG typedefs\n  Staging: vt6656: removed custom CHAR/SHORT/INT/LONG typedefs\n  Staging: comedi: Altered the way printk is used in 8255.c\n  staging: iio: adis16350 and similar IMU driver\n  Staging: iio: max1363 Fix two bugs in single_channel_from_ring\n  Staging: iio: adis16220 extract bin_attribute structures from state\n  Staging: iio: adis16220 vibration sensor driver\n  Staging: comedi: Kconfig dependancy fixes\n  Staging: comedi: fix up build error from last Kconfig changes\n  ...\n"
    },
    {
      "commit": "c3e33e043f5e9c583aa59d5591a614b2a8243d3a",
      "tree": "fe8fef91dafb670fad1f433ae48514472b8d23e5",
      "parents": [
        "56bca01738733709bef076e2e97bbd01e5659f24"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat May 15 20:09:29 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 20:01:02 2010 +0200"
      },
      "message": "block,ide: simplify bdops-\u003eset_capacity() to -\u003eunlock_native_capacity()\n\nbdops-\u003eset_capacity() is unnecessarily generic.  All that\u0027s required\nis a simple one way notification to lower level driver telling it to\ntry to unlock native capacity.  There\u0027s no reason to pass in target\ncapacity or return the new capacity.  The former is always the\ninherent native capacity and the latter can be handled via the usual\ndevice resize / revalidation path.  In fact, the current API is always\nused that way.\n\nReplace -\u003eset_capacity() with -\u003eunlock_native_capacity() which take\nonly @disk and doesn\u0027t return anything.  IDE which is the only current\nuser of the API is converted accordingly.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Ben Hutchings \u003cben@decadent.org.uk\u003e\nCc: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b3a27d0529c6e5206f1b60f60263e3ecfd0d77cb",
      "tree": "50ce5c6ce06ed700160491f2cd0e93d318ccc7fd",
      "parents": [
        "b27256439568950f30864ccecaeb6dfb588089d5"
      ],
      "author": {
        "name": "Nitin Gupta",
        "email": "ngupta@vflare.org",
        "time": "Mon May 17 11:02:43 2010 +0530"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue May 18 15:07:52 2010 -0700"
      },
      "message": "swap: Add swap slot free callback to block_device_operations\n\nThis callback is required when RAM based devices are used as swap disks.\nOne such device is ramzswap which is used as compressed in-memory swap\ndisk.  For such devices, we need a callback as soon as a swap slot is no\nlonger used to allow freeing memory allocated for this slot.  Without this\ncallback, stale data can quickly accumulate in memory defeating the whole\npurpose of such devices.\n\nSigned-off-by: Nitin Gupta \u003cngupta@vflare.org\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nAcked-by: Nigel Cunningham \u003cnigel@tuxonice.net\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "01effb0dc1451fad55925873ffbfb88fa4eadce0",
      "tree": "40fc70111217d23bbb5453fe08214d28ed4c7713",
      "parents": [
        "0f3942a39ed768c967cb71ea0e9be7fc94112713"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue May 11 08:57:42 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue May 11 08:57:42 2010 +0200"
      },
      "message": "block: allow initialization of previously allocated request_queue\n\nblk_init_queue() allocates the request_queue structure and then\ninitializes it as needed (request_fn, elevator, etc).\n\nSplit initialization out to blk_init_allocated_queue_node.\nIntroduce blk_init_allocated_queue wrapper function to model existing\nblk_init_queue and blk_init_queue_node interfaces.\n\nExport elv_register_queue to allow a newly added elevator to be\nregistered with sysfs.  Export elv_unregister_queue for symmetry.\n\nThese changes allow DM to initialize a device\u0027s request_queue with more\nprecision.  In particular, DM no longer unconditionally initializes a\nfull request_queue (elevator et al).  It only does so for a\nrequest-based DM device.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "3f14d792f9a8fede64ce918dbb517f934497a4f8",
      "tree": "1eb1d1803ebe21c05f38bc75c70ee966701a1fe8",
      "parents": [
        "f31e7e4022841c43c53b847b86b1bf97a08b2c94"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Wed Apr 28 17:55:09 2010 +0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 28 19:47:36 2010 +0200"
      },
      "message": "blkdev: add blkdev_issue_zeroout helper function\n\n- Add bio_batch helper primitive. This is rather generic primitive\n  for submitting/waiting a complex request which consists of several\n  bios.\n- blkdev_issue_zeroout() generate number of zero filed write bios.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "fbd9b09a177a481eda256447c881f014f29034fe",
      "tree": "ef7e213045382f82a1e3e3cf134d196a1045dd7a",
      "parents": [
        "6b4517a7913a09d3259bb1d21c9cb300f12294bd"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Wed Apr 28 17:55:06 2010 +0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 28 19:47:36 2010 +0200"
      },
      "message": "blkdev: generalize flags for blkdev_issue_fn functions\n\nThe patch just convert all blkdev_issue_xxx function to common\nset of flags. Wait/allocation semantics preserved.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "7f1dc8a2d2f45fc557b27fd56115338b1d34fc24",
      "tree": "355619d9483aca33f5c45642ce0bf8a042ea3236",
      "parents": [
        "8d2a91f8960b230b8bbcc4d97ed2015f5271c87d"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Wed Apr 21 17:44:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 21 17:44:16 2010 +0200"
      },
      "message": "blkio: Fix blkio crash during rq stat update\n\nblkio + cfq was crashing even when two sequential readers were put in two\nseparate cgroups (group_isolation\u003d0).\n\nThe reason being that cfqq can migrate across groups based on its being\nsync-noidle or not, it can happen that at request insertion time, cfqq\nbelonged to one cfqg and at request dispatch time, it belonged to root\ngroup. In this case request stats per cgroup can go wrong and it also runs\ninto BUG_ON().\n\nThis patch implements rq stashing away a cfq group pointer and not relying\non cfqq-\u003ecfqg pointer alone for rq stat accounting.\n\n[   65.163523] ------------[ cut here ]------------\n[   65.164301] kernel BUG at block/blk-cgroup.c:117!\n[   65.164301] invalid opcode: 0000 [#1] SMP\n[   65.164301] last sysfs file: /sys/devices/pci0000:00/0000:00:05.0/0000:60:00.1/host9/rport-9:0-0/target9:0:0/9:0:0:2/block/sde/stat\n[   65.164301] CPU 1\n[   65.164301] Modules linked in: dm_round_robin dm_multipath qla2xxx scsi_transport_fc dm_zero dm_mirror dm_region_hash dm_log dm_mod [last unloaded: scsi_wait_scan]\n[   65.164301]\n[   65.164301] Pid: 4505, comm: fio Not tainted 2.6.34-rc4-blk-for-35 #34 0A98h/HP xw8600 Workstation\n[   65.164301] RIP: 0010:[\u003cffffffff8121924f\u003e]  [\u003cffffffff8121924f\u003e] blkiocg_update_io_remove_stats+0x5b/0xaf\n[   65.164301] RSP: 0018:ffff8800ba5a79e8  EFLAGS: 00010046\n[   65.164301] RAX: 0000000000000096 RBX: ffff8800bb268d60 RCX: 0000000000000000\n[   65.164301] RDX: ffff8800bb268eb8 RSI: 0000000000000000 RDI: ffff8800bb268e00\n[   65.164301] RBP: ffff8800ba5a7a08 R08: 0000000000000064 R09: 0000000000000001\n[   65.164301] R10: 0000000000079640 R11: ffff8800a0bd5bf0 R12: ffff8800bab4af01\n[   65.164301] R13: ffff8800bab4af00 R14: ffff8800bb1d8928 R15: 0000000000000000\n[   65.164301] FS:  00007f18f75056f0(0000) GS:ffff880001e40000(0000) knlGS:0000000000000000\n[   65.164301] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033\n[   65.164301] CR2: 000000000040e7f0 CR3: 00000000ba52b000 CR4: 00000000000006e0\n[   65.164301] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\n[   65.164301] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\n[   65.164301] Process fio (pid: 4505, threadinfo ffff8800ba5a6000, task ffff8800ba45ae80)\n[   65.164301] Stack:\n[   65.164301]  ffff8800ba5a7a08 ffff8800ba722540 ffff8800bab4af68 ffff8800bab4af68\n[   65.164301] \u003c0\u003e ffff8800ba5a7a38 ffffffff8121d814 ffff8800ba722540 ffff8800bab4af68\n[   65.164301] \u003c0\u003e ffff8800ba722540 ffff8800a08f6800 ffff8800ba5a7a68 ffffffff8121d8ca\n[   65.164301] Call Trace:\n[   65.164301]  [\u003cffffffff8121d814\u003e] cfq_remove_request+0xe4/0x116\n[   65.164301]  [\u003cffffffff8121d8ca\u003e] cfq_dispatch_insert+0x84/0xe1\n[   65.164301]  [\u003cffffffff8121e833\u003e] cfq_dispatch_requests+0x767/0x8e8\n[   65.164301]  [\u003cffffffff8120e524\u003e] ? submit_bio+0xc3/0xcc\n[   65.164301]  [\u003cffffffff810ad657\u003e] ? sync_page_killable+0x0/0x35\n[   65.164301]  [\u003cffffffff8120ea8d\u003e] blk_peek_request+0x191/0x1a7\n[   65.164301]  [\u003cffffffffa000109c\u003e] ? dm_get_live_table+0x44/0x4f [dm_mod]\n[   65.164301]  [\u003cffffffffa0002799\u003e] dm_request_fn+0x38/0x14c [dm_mod]\n[   65.164301]  [\u003cffffffff810ad657\u003e] ? sync_page_killable+0x0/0x35\n[   65.164301]  [\u003cffffffff8120f600\u003e] __generic_unplug_device+0x32/0x37\n[   65.164301]  [\u003cffffffff8120f8a0\u003e] generic_unplug_device+0x2e/0x3c\n[   65.164301]  [\u003cffffffffa00011a6\u003e] dm_unplug_all+0x42/0x5b [dm_mod]\n[   65.164301]  [\u003cffffffff8120b063\u003e] blk_unplug+0x29/0x2d\n[   65.164301]  [\u003cffffffff8120b079\u003e] blk_backing_dev_unplug+0x12/0x14\n[   65.164301]  [\u003cffffffff81108a82\u003e] block_sync_page+0x35/0x39\n[   65.164301]  [\u003cffffffff810ad64e\u003e] sync_page+0x41/0x4a\n[   65.164301]  [\u003cffffffff810ad665\u003e] sync_page_killable+0xe/0x35\n[   65.164301]  [\u003cffffffff81589027\u003e] __wait_on_bit_lock+0x46/0x8f\n[   65.164301]  [\u003cffffffff810ad52d\u003e] __lock_page_killable+0x66/0x6d\n[   65.164301]  [\u003cffffffff81055fd4\u003e] ? wake_bit_function+0x0/0x33\n[   65.164301]  [\u003cffffffff810ad560\u003e] lock_page_killable+0x2c/0x2e\n[   65.164301]  [\u003cffffffff810aebfd\u003e] generic_file_aio_read+0x361/0x4f0\n[   65.164301]  [\u003cffffffff810e906c\u003e] do_sync_read+0xcb/0x108\n[   65.164301]  [\u003cffffffff811e32a3\u003e] ? security_file_permission+0x16/0x18\n[   65.164301]  [\u003cffffffff810e96d3\u003e] vfs_read+0xab/0x108\n[   65.164301]  [\u003cffffffff810e97f0\u003e] sys_read+0x4a/0x6e\n[   65.164301]  [\u003cffffffff81002b5b\u003e] system_call_fastpath+0x16/0x1b\n[   65.164301] Code: 00 74 1c 48 8b 8b 60 01 00 00 48 85 c9 75 04 0f 0b eb fe 48 ff c9 48 89 8b 60 01 00 00 eb 1a 48 8b 8b 58 01 00 00 48 85 c9 75 04 \u003c0f\u003e 0b eb fe 48 ff c9 48 89 8b 58 01 00 00 45 84 e4 74 16 48 8b\n[   65.164301] RIP  [\u003cffffffff8121924f\u003e] blkiocg_update_io_remove_stats+0x5b/0xaf\n[   65.164301]  RSP \u003cffff8800ba5a79e8\u003e\n[   65.164301] ---[ end trace 1b2b828753032e68 ]---\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "84c124da9ff50bd71fab9c939ee5b7cd8bef2bd9",
      "tree": "f94ad03b56c71ebbe6b92265054c5e24af25b869",
      "parents": [
        "31373d09da5b7fe21fe6f781e92bd534a3495f00"
      ],
      "author": {
        "name": "Divyesh Shah",
        "email": "dpshah@google.com",
        "time": "Fri Apr 09 08:31:19 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 09 08:31:19 2010 +0200"
      },
      "message": "blkio: Changes to IO controller additional stats patches\n\nthat include some minor fixes and addresses all comments.\n\nChangelog: (most based on Vivek Goyal\u0027s comments)\no renamed blkiocg_reset_write to blkiocg_reset_stats\no more clarification in the documentation on io_service_time and io_wait_time\no Initialize blkg-\u003estats_lock\no rename io_add_stat to blkio_add_stat and declare it static\no use bool for direction and sync\no derive direction and sync info from existing rq methods\no use 12 for major:minor string length\no define io_service_time better to cover the NCQ case\no add a separate reset_stats interface\no make the indexed stats a 2d array to simplify macro and function pointer code\no blkio.time now exports in jiffies as before\no Added stats description in patch description and\n  Documentation/cgroup/blkio-controller.txt\no Prefix all stats functions with blkio and make them static as applicable\no replace IO_TYPE_MAX with IO_TYPE_TOTAL\no Moved #define constant to top of blk-cgroup.c\no Pass dev_t around instead of char *\no Add note to documentation file about resetting stats\no use BLK_CGROUP_MODULE in addition to BLK_CGROUP config option in #ifdef\n  statements\no Avoid struct request specific knowledge in blk-cgroup. blk-cgroup.h now has\n  rq_direction() and rq_sync() functions which are used by CFQ and when using\n  io-controller at a higher level, bio_* functions can be added.\n\nSigned-off-by: Divyesh Shah\u003cdpshah@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9195291e5f05e01d67f9a09c756b8aca8f009089",
      "tree": "e46a151fe39be2bc23d0683bedb2cbefe916fb5b",
      "parents": [
        "303a3acb2362f16c7e7f4c53b40c2f4b396dc8d5"
      ],
      "author": {
        "name": "Divyesh Shah",
        "email": "dpshah@google.com",
        "time": "Thu Apr 01 15:01:41 2010 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 02 08:44:37 2010 +0200"
      },
      "message": "blkio: Increment the blkio cgroup stats for real now\n\nWe also add start_time_ns and io_start_time_ns fields to struct request\nhere to record the time when a request is created and when it is\ndispatched to device. We use ns uints here as ms and jiffies are\nnot very useful for non-rotational media.\n\nSigned-off-by: Divyesh Shah\u003cdpshah@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "181fdde3b4268cb7b4af76ba6337e7ec8accbb36",
      "tree": "6f2e3f177f21f6e299e84bc9075ac1ae257a301c",
      "parents": [
        "b4b7a4ef097f288f724420b473dbf92a89c0ab7e"
      ],
      "author": {
        "name": "Richard Kennedy",
        "email": "richard@rsk.demon.co.uk",
        "time": "Fri Mar 19 08:58:16 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Mar 19 08:58:16 2010 +0100"
      },
      "message": "block: remove 16 bytes of padding from struct request on 64bits\n\nRemove alignment padding to shrink struct request from 336 to 320 bytes\nso needing one fewer cacheline and therefore removing 48 bytes from\nstruct request_queue.\n\nSigned-off-by: Richard Kennedy \u003crichard@rsk.demon.co.uk\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ee714f2dd33e726346e34f5cda12543162f4753e",
      "tree": "63252755cc38a81085191e6b851a6a04623cc9b9",
      "parents": [
        "2cda2728aa1c8c006418a24f867b25e5eb7a32e2"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Mar 10 00:48:32 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Mar 15 12:47:59 2010 +0100"
      },
      "message": "block: Finalize conversion of block limits functions\n\nRemove compatibility wrappers and update remaining drivers.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "8a78362c4eefc1deddbefe2c7f38aabbc2429d6b",
      "tree": "c095d95af1aec0f9cee5975b1dcdc6bc1d17d401",
      "parents": [
        "086fa5ff0854c676ec333760f4c0154b3b242616"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Feb 26 00:20:39 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 26 13:58:08 2010 +0100"
      },
      "message": "block: Consolidate phys_segment and hw_segment limits\n\nExcept for SCSI no device drivers distinguish between physical and\nhardware segment limits.  Consolidate the two into a single segment\nlimit.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "086fa5ff0854c676ec333760f4c0154b3b242616",
      "tree": "ee63fb3c7c7d964bd799355b7cde18ba95f91f07",
      "parents": [
        "eb28d31bc97e6374d81f404da309401ffaed467b"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Feb 26 00:20:38 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 26 13:58:08 2010 +0100"
      },
      "message": "block: Rename blk_queue_max_sectors to blk_queue_max_hw_sectors\n\nThe block layer calling convention is blk_queue_\u003climit name\u003e.\nblk_queue_max_sectors predates this practice, leading to some confusion.\nRename the function to appropriately reflect that its intended use is to\nset max_hw_sectors.\n\nAlso introduce a temporary wrapper for backwards compability.  This can\nbe removed after the merge window is closed.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "eb28d31bc97e6374d81f404da309401ffaed467b",
      "tree": "580d750832dd1da39a5c93b91b8e069db3395b1c",
      "parents": [
        "e751e76a5f7adeee7438e68b0965559ad2864d0d"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Feb 26 00:20:37 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 26 13:58:08 2010 +0100"
      },
      "message": "block: Add BLK_ prefix to definitions\n\nAdd a BLK_ prefix to block layer constants.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e751e76a5f7adeee7438e68b0965559ad2864d0d",
      "tree": "06b1863a484203d7a217fa33964ef2d80a2ad712",
      "parents": [
        "2800aac1114548a9b47b6e0d398117cc01b89685"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Feb 26 00:20:36 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 26 13:58:07 2010 +0100"
      },
      "message": "block: Remove unused accessor function\n\nblk_queue_max_hw_sectors is no longer called by any subsystem and can be\nremoved.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "7f03292ee16e68be96aa88904afc6152f8d37736",
      "tree": "5c32738f0348449c2fa9688d52e6ecf4445d76f0",
      "parents": [
        "c5ecc484c528ff50bdbb16fbfbac758ee368b329",
        "baac35c4155a8aa826c70acee6553368ca5243a2"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Feb 25 08:48:05 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Feb 25 08:48:05 2010 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into for-2.6.34\n\nConflicts:\n\tinclude/linux/blkdev.h\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "79da0644a8e0838522828f106e4049639eea6baf",
      "tree": "4dbb8e1a3a4be78a79f14e8ebac5d6fe817a2fb4",
      "parents": [
        "9f3a6284880ceea452903e2043c88d7226736318"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Feb 23 08:40:43 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Feb 23 08:40:43 2010 +0100"
      },
      "message": "Revert \"block: improve queue_should_plug() by looking at IO depths\"\n\nThis reverts commit fb1e75389bd06fd5987e9cda1b4e0305c782f854.\n\n\"Benjamin S.\" \u003csbenni@gmx.de\u003e reports that the patch in question\ncauses a big drop in sequential throughput for him, dropping from\n200MB/sec down to only 70MB/sec.\n\nNeeds to be investigated more fully, for now lets just revert the\noffending commit.\n\nConflicts:\n\n\tinclude/linux/blkdev.h\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "488991e28e55b4fbca8067edf0259f69d1a6f92c",
      "tree": "fea5e0aca42e338137cc050e66aaeb5f539e3d21",
      "parents": [
        "47483e25205f1f8d79784f0f7c733941bc080ec0"
      ],
      "author": {
        "name": "Alan D. Brunelle",
        "email": "Alan.Brunelle@hp.com",
        "time": "Fri Jan 29 09:04:08 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 29 09:04:08 2010 +0100"
      },
      "message": "block: Added in stricter no merge semantics for block I/O\n\nUpdated \u0027nomerges\u0027 tunable to accept a value of \u00272\u0027 - indicating that _no_\nmerges at all are to be attempted (not even the simple one-hit cache).\n\nThe following table illustrates the additional benefit - 5 minute runs of\na random I/O load were applied to a dozen devices on a 16-way x86_64 system.\n\nnomerges        Throughput      %System         Improvement (tput / %sys)\n--------        ------------    -----------     -------------------------\n0               12.45 MB/sec    0.669365609\n1               12.50 MB/sec    0.641519199     0.40% / 2.71%\n2               12.52 MB/sec    0.639849750     0.56% / 2.96%\n\nSigned-off-by: Alan D. Brunelle \u003calan.brunelle@hp.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e03a72e13648ac6277bf2bab6b8324d51f89c0fa",
      "tree": "a01a2e072a5b225f22bd8bfa75f5270a527a4e4b",
      "parents": [
        "ce289321b7dc1eb108e3df0dec872b7429ef49f7"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Mon Jan 11 03:21:51 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 11 14:30:09 2010 +0100"
      },
      "message": "block: Stop using byte offsets\n\nAll callers of the stacking functions use 512-byte sector units rather\nthan byte offsets.  Simplify the code so the stacking functions take\nsectors when specifying data offsets.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "17be8c245054b9c7786545af3ba3ca4e54cd4ad9",
      "tree": "563687812bbb1b08643dfcc25997e34eb22a71b5",
      "parents": [
        "dd3d145d49c5816b79acc6761ebbd842bc50b0ee"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Mon Jan 11 03:21:49 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 11 14:29:20 2010 +0100"
      },
      "message": "block: bdev_stack_limits wrapper\n\nDM does not want to know about partition offsets.  Add a partition-aware\nwrapper that DM can use when stacking block devices.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nReviewed-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "dd3d145d49c5816b79acc6761ebbd842bc50b0ee",
      "tree": "107bdb2f46c6aa6bc482909d7ebdbb1da40b7b4f",
      "parents": [
        "fe0b393f2c0a0d23a9bc9ed7dc51a1ee511098bd"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Mon Jan 11 03:21:48 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 11 14:29:19 2010 +0100"
      },
      "message": "block: Fix discard alignment calculation and printing\n\nDiscard alignment reporting for partitions was incorrect.  Update to\nmatch the algorithm used elsewhere.\n\nThe alignment can be negative (misaligned).  Fix format string\naccordingly.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9bd3f98821a83041e77ee25158b80b535d02d7b4",
      "tree": "cfe440e45ff404e8128388e4579ac16d52807665",
      "parents": [
        "e79e95db5cffb2e01170d510686489c40937faa1"
      ],
      "author": {
        "name": "Gui Jianfeng",
        "email": "guijianfeng@cn.fujitsu.com",
        "time": "Wed Dec 30 08:41:07 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Dec 30 08:41:07 2009 +0100"
      },
      "message": "block: blk_rq_err_sectors cleanup\n\nblk_rq_err_sectors() seems useless, get rid of it.\n\nSigned-off-by: Gui Jianfeng \u003cguijianfeng@cn.fujitsu.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "81744ee44ab2845c16ffd7d6f762f7b4a49a4750",
      "tree": "c3d0cca0e71080ecd8423cef8af1c632fc444764",
      "parents": [
        "2f7a2d89a8b5915d89ad9ebeb0065db7d5831cea"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Tue Dec 29 08:35:35 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Dec 29 08:35:35 2009 +0100"
      },
      "message": "block: Fix incorrect alignment offset reporting and update documentation\n\nqueue_sector_alignment_offset returned the wrong value which caused\npartitions to report an incorrect alignment_offset.  Since offset\nalignment calculation is needed several places it has been split into a\nseparate helper function.  The topology stacking function has been\nupdated accordingly.\n\nFurthermore, comments have been added to clarify how the stacking\nfunction works.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nTested-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "98262f2762f0067375f83824d81ea929e37e6bfe",
      "tree": "a26618d5c305eed975501c80cb02bc0f1b6e4524",
      "parents": [
        "464191c65b85a8ec68a6e1a6293af625287c807e"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Thu Dec 03 09:24:48 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 09:24:48 2009 +0100"
      },
      "message": "block: Allow devices to indicate whether discarded blocks are zeroed\n\nThe discard ioctl is used by mkfs utilities to clear a block device\nprior to putting metadata down.  However, not all devices return zeroed\nblocks after a discard.  Some drives return stale data, potentially\ncontaining old superblocks.  It is therefore important to know whether\ndiscarded blocks are properly zeroed.\n\nBoth ATA and SCSI drives have configuration bits that indicate whether\nzeroes are returned after a discard operation.  Implement a block level\ninterface that allows this information to be bubbled up the stack and\nqueried via a new block device ioctl.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "2d4dc890b5c8fabd818a8586607e6843c4375e62",
      "tree": "9976ed7b0eed0056f8289aeb6a2b0abf8c940454",
      "parents": [
        "3586e917f2c7df769d173c4ec99554cb40a911e5"
      ],
      "author": {
        "name": "Ilya Loginov",
        "email": "isloginov@gmail.com",
        "time": "Thu Nov 26 09:16:19 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Nov 26 09:16:19 2009 +0100"
      },
      "message": "block: add helpers to run flush_dcache_page() against a bio and a request\u0027s pages\n\nMtdblock driver doesn\u0027t call flush_dcache_page for pages in request.  So,\nthis causes problems on architectures where the icache doesn\u0027t fill from\nthe dcache or with dcache aliases.  The patch fixes this.\n\nThe ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE symbol was introduced to avoid\npointless empty cache-thrashing loops on architectures for which\nflush_dcache_page() is a no-op.  Every architecture was provided with this\nflush pages on architectires where ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE is\nequal 1 or do nothing otherwise.\n\nSee \"fix mtd_blkdevs problem with caches on some architectures\" discussion\non LKML for more information.\n\nSigned-off-by: Ilya Loginov \u003cisloginov@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Peter Horton \u003cphorton@bitbox.co.uk\u003e\nCc: \"Ed L. Cashin\" \u003cecashin@coraid.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "86b37281411cf1e9bc0a6b5406c45edb7bd9ea5d",
      "tree": "729db57dd52054af1bc16b4afb131093dfc9d255",
      "parents": [
        "cf7c25cf91f632a3528669fc0876e1fc8355ff9b"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Tue Nov 10 11:50:21 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Nov 10 11:50:21 2009 +0100"
      },
      "message": "block: Expose discard granularity\n\nWhile SSDs track block usage on a per-sector basis, RAID arrays often\nhave allocation blocks that are bigger.  Allow the discard granularity\nand alignment to be set and teach the topology stacking logic how to\nhandle them.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b9d128f1088ea5245109dfc9bbceb128b6371a77",
      "tree": "63e85f281dd372e77af4022e2235a4e5a46287de",
      "parents": [
        "a870a3a485ddf7c0dec549269ed71d169556d61c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 29 13:59:26 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 29 13:59:26 2009 +0100"
      },
      "message": "block: move bdi/address_space unplug functions to backing-dev.h\n\nThere\u0027s nothing block related about them, the backing device\nis used by things like NFS etc as well. This gets rid of the\nneed to protect such calls by CONFIG_BLOCK.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "23e018a1b083ecb4b8bb2fb43d58e7c19b5d7959",
      "tree": "a6361448bd596ccef393778e6f85e29413a01213",
      "parents": [
        "48e025e63ac908ed6ec5394a294f4ecd510a7476"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Oct 05 08:52:35 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Oct 05 11:03:58 2009 +0200"
      },
      "message": "block: get rid of kblock_schedule_delayed_work()\n\nIt was briefly introduced to allow CFQ to to delayed scheduling,\nbut we ended up removing that feature again. So lets kill the\nfunction and export, and just switch CFQ back to the normal work\nschedule since it is now passing in a \u00270\u0027 delay from all call\nsites.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ac481c20ef8f6c6f2be75d581863f40c43874ef7",
      "tree": "90512cadc1c9dea89c0a24149166d3ab464d065e",
      "parents": [
        "61f0c1dcaaac71faabac6ef7c839b29f20204bea"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Sat Oct 03 20:52:01 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sat Oct 03 20:52:01 2009 +0200"
      },
      "message": "block: Topology ioctls\n\nNot all users of the topology information want to use libblkid.  Provide\nthe topology information through bdev ioctls.\n\nAlso clarify sector size comments for existing BLK ioctls.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "8e2967555571659d2c8a70dd120710110ed7bba4",
      "tree": "22716c5388f0269f5c1cef54958ae27df256c498",
      "parents": [
        "365722bb917b08b7323b5a4a0a3386cc7d00397d"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sat Oct 03 16:26:03 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sat Oct 03 16:27:13 2009 +0200"
      },
      "message": "cfq-iosched: implement slower async initiate and queue ramp up\n\nThis slowly ramps up the async queue depth based on the time\npassed since the sync IO, and doesn\u0027t allow async at all until\na sync slice period has passed.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "67efc9258010da35b27b3854d0880c7e193004ed",
      "tree": "d98ad032d8c701084539d5673c2d7d7ca5962a3f",
      "parents": [
        "c15227de132f1295f3db6b7df9079956b1020fd8"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Sep 30 13:54:20 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 01 21:19:34 2009 +0200"
      },
      "message": "block: allow large discard requests\n\nCurrently we set the bio size to the byte equivalent of the blocks to\nbe trimmed when submitting the initial DISCARD ioctl.  That means it\nis subject to the max_hw_sectors limitation of the HBA which is\nmuch lower than the size of a DISCARD request we can support.\nAdd a separate max_discard_sectors tunable to limit the size for discard\nrequests.\n\nWe limit the max discard request size in bytes to 32bit as that is the\nlimit for bio-\u003ebi_size.  This could be much larger if we had a way to pass\nthat information through the block layer.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c15227de132f1295f3db6b7df9079956b1020fd8",
      "tree": "ad06f119f283cf8a6313681055e8132ba2851ddb",
      "parents": [
        "3bd0f0c763e497c8674b28e3df2732f48683dabd"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Sep 30 13:52:12 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 01 21:19:30 2009 +0200"
      },
      "message": "block: use normal I/O path for discard requests\n\nprepare_discard_fn() was being called in a place where memory allocation\nwas effectively impossible.  This makes it inappropriate for all but\nthe most trivial translations of Linux\u0027s DISCARD operation to the block\ncommand set.  Additionally adding a payload there makes the ownership\nof the bio backing unclear as it\u0027s now allocated by the device driver\nand not the submitter as usual.\n\nIt is replaced with QUEUE_FLAG_DISCARD which is used to indicate whether\nthe queue supports discard operations or not.  blkdev_issue_discard now\nallocates a one-page, sector-length payload which is the right thing\nfor the common ATA and SCSI implementations.\n\nThe mtd implementation of prepare_discard_fn() is replaced with simply\nchecking for the request being a discard.\n\nLargely based on a previous patch from Matthew Wilcox \u003cmatthew@wil.cx\u003e\nwhich did the prepare_discard_fn but not the different payload allocation\nyet.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "746cd1e7e4a555ddaee53b19a46e05c9c61eaf09",
      "tree": "d129194669e0122113a5cc86003a4a7711450284",
      "parents": [
        "3d2257f157c2324acbc0fa0fa54e8626a987edd2"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sat Sep 12 07:35:43 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Sep 14 08:24:53 2009 +0200"
      },
      "message": "block: use blkdev_issue_discard in blk_ioctl_discard\n\nblk_ioctl_discard duplicates large amounts of code from blkdev_issue_discard,\nthe only difference between the two is that blkdev_issue_discard needs to\nsend a barrier discard request and blk_ioctl_discard a non-barrier one,\nand blk_ioctl_discard needs to wait on the request.  To facilitates this\nadd a flags argument to blkdev_issue_discard to control both aspects of the\nbehaviour.  This will be very useful later on for using the waiting\nfuncitonality for other callers.\n\nBased on an earlier patch from Matthew Wilcox \u003cmatthew@wil.cx\u003e.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "3c5820c743479285ce2678fd3c12b1fd39fe998f",
      "tree": "8f6b3980f5e8da4912b44eee4688d51ce12c97a3",
      "parents": [
        "06d2188644c85c56d243efab914f368d1d23c4a3"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Sep 11 21:54:52 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Sep 14 08:24:52 2009 +0200"
      },
      "message": "block: Optimal I/O limit wrapper\n\nImplement blk_limits_io_opt() and make blk_queue_io_opt() a wrapper\naround it. DM needs this to avoid poking at the queue_limits directly.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "01e97f6b897bf06ec83375d691f2f4d57f5b3a09",
      "tree": "72a99783584254b06b19dd41da7ecaf2d13760c3",
      "parents": [
        "b217a903ab6581cba04f88c44284dcdd2a752561"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Sep 03 20:06:47 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:34:33 2009 +0200"
      },
      "message": "block: enable rq CPU completion affinity by default\n\nTest results here look good, and on big OLTP runs it has also shown\nto significantly increase cycles attributed to the database and\ncause a performance boost.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "fb1e75389bd06fd5987e9cda1b4e0305c782f854",
      "tree": "6658e13f80d4f6450f5a69c82d3bf1b590ecf234",
      "parents": [
        "1f98a13f623e0ef666690a18c1250335fc6d7ef1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 30 08:18:24 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:33:31 2009 +0200"
      },
      "message": "block: improve queue_should_plug() by looking at IO depths\n\nInstead of just checking whether this device uses block layer\ntagging, we can improve the detection by looking at the maximum\nqueue depth it has reached. If that crosses 4, then deem it a\nqueuing device.\n\nThis is important on high IOPS devices, since plugging hurts\nthe performance there (it can be as much as 10-15% of the sys\ntime).\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1f98a13f623e0ef666690a18c1250335fc6d7ef1",
      "tree": "15ca2dddffaa18a0d1844957f4f8cc707cbb8117",
      "parents": [
        "e7e503aedb1f4d165081cb8d47a58c38f80f0cb4"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:32:04 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:33:31 2009 +0200"
      },
      "message": "bio: first step in sanitizing the bio-\u003ebi_rw flag testing\n\nGet rid of any functions that test for these bits and make callers\nuse bio_rw_flagged() directly. Then it is at least directly apparent\nwhat variable and flag they check.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "80a761fd33cf812f771e212139157bf8f58d4b3f",
      "tree": "21ea67ad749c15f25cb8a9278fe9bd7643c0ba31",
      "parents": [
        "a82afdfcb8c0df09776b6458af6b68fc58b2e87b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 03 17:48:17 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:33:30 2009 +0200"
      },
      "message": "block: implement mixed merge of different failfast requests\n\nFailfast has characteristics from other attributes.  When issuing,\nexecuting and successuflly completing requests, failfast doesn\u0027t make\nany difference.  It only affects how a request is handled on failure.\nAllowing requests with different failfast settings to be merged cause\nnormal IOs to fail prematurely while not allowing has performance\npenalties as failfast is used for read aheads which are likely to be\nlocated near in-flight or to-be-issued normal IOs.\n\nThis patch introduces the concept of \u0027mixed merge\u0027.  A request is a\nmixed merge if it is merge of segments which require different\nhandling on failure.  Currently the only mixable attributes are\nfailfast ones (or lack thereof).\n\nWhen a bio with different failfast settings is added to an existing\nrequest or requests of different failfast settings are merged, the\nmerged request is marked mixed.  Each bio carries failfast settings\nand the request always tracks failfast state of the first bio.  When\nthe request fails, blk_rq_err_bytes() can be used to determine how\nmany bytes can be safely failed without crossing into an area which\nrequires further retrials.\n\nThis allows request merging regardless of failfast settings while\nkeeping the failure handling correct.\n\nThis patch only implements mixed merge but doesn\u0027t enable it.  The\nnext one will update SCSI to make use of mixed merge.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Niel Lambrechts \u003cniel.lambrechts@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a82afdfcb8c0df09776b6458af6b68fc58b2e87b",
      "tree": "d53910e4c2e9d1502cf2a7ce67a67cc54decb7fa",
      "parents": [
        "0d03d59d9b31cd1e33b7e46a80b6fef66244b1f2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 03 17:48:16 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:33:27 2009 +0200"
      },
      "message": "block: use the same failfast bits for bio and request\n\nbio and request use the same set of failfast bits.  This patch makes\nthe following changes to simplify things.\n\n* enumify BIO_RW* bits and reorder bits such that BIOS_RW_FAILFAST_*\n  bits coincide with __REQ_FAILFAST_* bits.\n\n* The above pushes BIO_RW_AHEAD out of sync with __REQ_FAILFAST_DEV\n  but the matching is useless anyway.  init_request_from_bio() is\n  responsible for setting FAILFAST bits on FS requests and non-FS\n  requests never use BIO_RW_AHEAD.  Drop the code and comment from\n  blk_rq_bio_prep().\n\n* Define REQ_FAILFAST_MASK which is OR of all FAILFAST bits and\n  simplify FAILFAST flags handling in init_request_from_bio().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "7c958e32649e0c35801762878fb0b6da8c55a515",
      "tree": "610b1e685b5f634ca591865cc9f5ce22f1e3e6c1",
      "parents": [
        "fef246672b009cf3f7a74e2fc9a76932ef2eeed2"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Jul 31 11:49:11 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sat Aug 01 10:24:35 2009 +0200"
      },
      "message": "block: Add a wrapper for setting minimum request size without a queue\n\nIntroduce blk_limits_io_min() and make blk_queue_io_min() call it.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "373c0a7ed3ea3b34efedb7c83ffb521adff7c894",
      "tree": "1fcc8cdcf8deab3ed1d16ff3c0f2dfa38bcf7915",
      "parents": [
        "f00caa76297a534e30c3ec85382fbc3fd0dcbc69"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Jul 11 10:06:54 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 11 11:22:26 2009 -0700"
      },
      "message": "Fix compile error due to congestion_wait() changes\n\nMove the definition of BLK_RW_ASYNC/BLK_RW_SYNC into linux/backing-dev.h\nso that it is available to all callers of set/clear_bdi_congested().\n\nThis replaces commit 097041e576ee3a50d92dd643ee8ca65bf6a62e21 (\"fuse:\nFix build error\"), which will be reverted.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Larry Finger \u003cLarry.Finger@lwfinger.net\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ecb554a846f8e9d2a58f6d6c118168a63ac065aa",
      "tree": "c52b265969972d5df0fe104110bc5cbfb220f3a7",
      "parents": [
        "76da03467a1a78811777561bbb1fa56175ee4778"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Thu Jul 09 14:46:53 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.(none)",
        "time": "Fri Jul 10 20:31:53 2009 +0200"
      },
      "message": "block: fix sg SG_DXFER_TO_FROM_DEV regression\n\nI overlooked SG_DXFER_TO_FROM_DEV support when I converted sg to use\nthe block layer mapping API (2.6.28).\n\nDouglas Gilbert explained SG_DXFER_TO_FROM_DEV:\n\nhttp://www.spinics.net/lists/linux-scsi/msg37135.html\n\n\u003d\nThe semantics of SG_DXFER_TO_FROM_DEV were:\n   - copy user space buffer to kernel (LLD) buffer\n   - do SCSI command which is assumed to be of the DATA_IN\n     (data from device) variety. This would overwrite\n     some or all of the kernel buffer\n   - copy kernel (LLD) buffer back to the user space.\n\nThe idea was to detect short reads by filling the original\nuser space buffer with some marker bytes (\"0xec\" it would\nseem in this report). The \"resid\" value is a better way\nof detecting short reads but that was only added this century\nand requires co-operation from the LLD.\n\u003d\n\nThis patch changes the block layer mapping API to support this\nsemantics. This simply adds another field to struct rq_map_data and\nenables __bio_copy_iov() to copy data from user space even with READ\nrequests.\n\nIt\u0027s better to add the flags field and kills null_mapped and the new\nfrom_user fields in struct rq_map_data but that approach makes it\ndifficult to send this patch to stable trees because st and osst\ndrivers use struct rq_map_data (they were converted to use the block\nlayer in 2.6.29 and 2.6.30). Well, I should clean up the block layer\nmapping API.\n\nzhou sf reported this regiression and tested this patch:\n\nhttp://www.spinics.net/lists/linux-scsi/msg37128.html\nhttp://www.spinics.net/lists/linux-scsi/msg37168.html\n\nReported-by: zhou sf \u003csxzzsf@gmail.com\u003e\nTested-by: zhou sf \u003csxzzsf@gmail.com\u003e\nCc: stable@kernel.org\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "8aa7e847d834ed937a9ad37a0f2ad5b8584c1ab0",
      "tree": "76c8b4f1362a928d426f2201790ab5d128f57724",
      "parents": [
        "c2cc49a2f8a479dde96a599646d30b6cc9dbed78"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 09 14:52:32 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.(none)",
        "time": "Fri Jul 10 20:31:53 2009 +0200"
      },
      "message": "Fix congestion_wait() sync/async vs read/write confusion\n\nCommit 1faa16d22877f4839bd433547d770c676d1d964c accidentally broke\nthe bdi congestion wait queue logic, causing us to wait on congestion\nfor WRITE (\u003d\u003d 1) when we really wanted BLK_RW_ASYNC (\u003d\u003d 0) instead.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "018e0446890661504783f92388ecce7138c1566d",
      "tree": "d555758047dde4a26b2489d397a5a86be53723b9",
      "parents": [
        "7878cba9f0037f5599004b03a1260b32d9050360"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 26 16:27:10 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Jul 01 10:56:26 2009 +0200"
      },
      "message": "block: get rid of queue-private command filter\n\nThe initial patches to support this through sysfs export were broken\nand have been if 0\u0027ed out in any release. So lets just kill the code\nand reclaim some space in struct request_queue, if anyone would later\nlike to fixup the sysfs bits, the git history can easily restore\nthe removed bits.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e475bba2fdee9c3dbfe25f026f8fb8de69508ad2",
      "tree": "cb2a050b58fbd8cd7a4d82349164622fedc2c6d0",
      "parents": [
        "6923715ae39ed39ac2fc1993e5061668f4f71ad0"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Tue Jun 16 08:23:52 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jun 16 08:23:52 2009 +0200"
      },
      "message": "block: Introduce helper to reset queue limits to default values\n\nDM reuses the request queue when swapping in a new device table\nIntroduce blk_set_default_limits() which can be used to reset the the\nqueue_limits prior to stacking devices.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d614aec4752f8c61b2e7cb77806b6bd59aa50836",
      "tree": "3b0cfb3085c43415931dbf18666d582fb8ae3c75",
      "parents": [
        "db8e7f10ed67933ca272f4030eb7057b7f13de07",
        "ad7c52d0988a8965989dc06d630c52a5bde849d5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:29:42 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 12 09:29:42 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.31\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6\n\n* \u0027for-2.6.31\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: (29 commits)\n  ide: re-implement ide_pci_init_one() on top of ide_pci_init_two()\n  ide: unexport ide_find_dma_mode()\n  ide: fix PowerMac bootup oops\n  ide: skip probe if there are no devices on the port (v2)\n  sl82c105: add printk() logging facility\n  ide-tape: fix proc warning\n  ide: add IDE_DFLAG_NIEN_QUIRK device flag\n  ide: respect quirk_drives[] list on all controllers\n  hpt366: enable all quirks for devices on quirk_drives[] list\n  hpt366: sync quirk_drives[] list with pdc202xx_{new,old}.c\n  ide: remove superfluous SELECT_MASK() call from do_rw_taskfile()\n  ide: remove superfluous SELECT_MASK() call from ide_driveid_update()\n  icside: remove superfluous -\u003emaskproc method\n  ide-tape: fix IDE_AFLAG_* atomic accesses\n  ide-tape: change IDE_AFLAG_IGNORE_DSC non-atomically\n  pdc202xx_old: kill resetproc() method\n  pdc202xx_old: don\u0027t call pdc202xx_reset() on IRQ timeout\n  pdc202xx_old: use ide_dma_test_irq()\n  ide: preserve Host Protected Area by default (v2)\n  ide-gd: implement block device -\u003eset_capacity method (v2)\n  ...\n"
    },
    {
      "commit": "b0fd271d5fba0b2d00888363f3869e3f9b26caa9",
      "tree": "0ffd49c013476e3dc96c8bcb2ddc4c1828797be5",
      "parents": [
        "5e50b9ef975219304cc91d601530994861585bfe"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Jun 11 13:10:16 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jun 11 13:11:05 2009 +0200"
      },
      "message": "block: add request clone interface (v2)\n\nThis patch adds the following 2 interfaces for request-stacking drivers:\n\n  - blk_rq_prep_clone(struct request *clone, struct request *orig,\n\t\t      struct bio_set *bs, gfp_t gfp_mask,\n\t\t      int (*bio_ctr)(struct bio *, struct bio*, void *),\n\t\t      void *data)\n      * Clones bios in the original request to the clone request\n        (bio_ctr is called for each cloned bios.)\n      * Copies attributes of the original request to the clone request.\n        The actual data parts (e.g. -\u003ecmd, -\u003ebuffer, -\u003esense) are not\n        copied.\n\n  - blk_rq_unprep_clone(struct request *clone)\n      * Frees cloned bios from the clone request.\n\nRequest stacking drivers (e.g. request-based dm) need to make a clone\nrequest for a submitted request and dispatch it to other devices.\n\nTo allocate request for the clone, request stacking drivers may not\nbe able to use blk_get_request() because the allocation may be done\nin an irq-disabled context.\nSo blk_rq_prep_clone() takes a request allocated by the caller\nas an argument.\n\nFor each clone bio in the clone request, request stacking drivers\nshould be able to set up their own completion handler.\nSo blk_rq_prep_clone() takes a callback function which is called\nfor each clone bio, and a pointer for private data which is passed\nto the callback.\n\nNOTE:\nblk_rq_prep_clone() doesn\u0027t copy any actual data of the original\nrequest.  Pages are shared between original bios and cloned bios.\nSo caller must not complete the original request before the clone\nrequest.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9df1bb9b516daeece159ab7fb262d01a0359247c",
      "tree": "602c7b02e85b031d0269a1f70ece81bac524c0ac",
      "parents": [
        "3969251b80a7b143d01576780073fe0cc9ef6253"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jun 09 06:22:57 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jun 09 06:22:57 2009 +0200"
      },
      "message": "Revert \"block: Fix bounce limit setting in DM\"\n\nThis reverts commit a05c0205ba031c01bba33a21bf0a35920eb64833.\n\nDM doesn\u0027t need to access the bounce_pfn directly.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "db429e9ec0f9dee2d8e50c154f04f29f880fc9d6",
      "tree": "363328c6aa85f7a15cc061f7c71f3cc3a8cde970",
      "parents": [
        "02c33b123e59cab5771e52a012aeb810500260a2"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Sun Jun 07 13:52:52 2009 +0200"
      },
      "committer": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Sun Jun 07 13:52:52 2009 +0200"
      },
      "message": "partitions: add -\u003eset_capacity block device method\n\n* Add -\u003eset_capacity block device method and use it in rescan_partitions()\n  to attempt enabling native capacity of the device upon detecting the\n  partition which exceeds device capacity.\n\n* Add GENHD_FL_NATIVE_CAPACITY flag to try limit attempts of enabling\n  native capacity during partition scan.\n\nTogether with the consecutive patch implementing -\u003eset_capacity method in\nide-gd device driver this allows automatic disabling of Host Protected Area\n(HPA) if any partitions overlapping HPA are detected.\n\nCc: Robert Hancock \u003chancockrwd@gmail.com\u003e\nCc: Frans Pop \u003celendil@planet.nl\u003e\nCc: \"Andries E. Brouwer\" \u003cAndries.Brouwer@cwi.nl\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nEmphatically-Acked-by: Alan Cox \u003calan@linux.intel.com\u003e\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\n"
    },
    {
      "commit": "a05c0205ba031c01bba33a21bf0a35920eb64833",
      "tree": "517c7682fc415cdb122ee7fcfc75eff674cc7b78",
      "parents": [
        "dbdc9dd342f0a7e32f40f0d4ade662bdfe057484"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Jun 03 09:33:18 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Jun 03 09:33:18 2009 +0200"
      },
      "message": "block: Fix bounce limit setting in DM\n\nblk_queue_bounce_limit() is more than a wrapper about the request queue\nlimits.bounce_pfn variable.  Introduce blk_queue_bounce_pfn() which can\nbe called by stacking drivers that wish to set the bounce limit\nexplicitly.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c72758f33784e5e2a1a4bb9421ef3e6de8f9fcf3",
      "tree": "a83f7540cc894caafe74db911cba3998d6a9a164",
      "parents": [
        "cd43e26f071524647e660706b784ebcbefbd2e44"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri May 22 17:17:53 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 23:22:55 2009 +0200"
      },
      "message": "block: Export I/O topology for block devices and partitions\n\nTo support devices with physical block sizes bigger than 512 bytes we\nneed to ensure proper alignment.  This patch adds support for exposing\nI/O topology characteristics as devices are stacked.\n\n  logical_block_size is the smallest unit the device can address.\n\n  physical_block_size indicates the smallest I/O the device can write\n  without incurring a read-modify-write penalty.\n\n  The io_min parameter is the smallest preferred I/O size reported by\n  the device.  In many cases this is the same as the physical block\n  size.  However, the io_min parameter can be scaled up when stacking\n  (RAID5 chunk size \u003e physical block size).\n\n  The io_opt characteristic indicates the optimal I/O size reported by\n  the device.  This is usually the stripe width for arrays.\n\n  The alignment_offset parameter indicates the number of bytes the start\n  of the device/partition is offset from the device\u0027s natural alignment.\n  Partition tools and MD/DM utilities can use this to pad their offsets\n  so filesystems start on proper boundaries.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "025146e13b63483add912706c101fb0fb6f015cc",
      "tree": "42d2d42e2222f0a2d6373a0ddf0cbf733f75dcba",
      "parents": [
        "ae03bf639a5027d27270123f5f6e3ee6a412781d"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri May 22 17:17:51 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 23:22:55 2009 +0200"
      },
      "message": "block: Move queue limits to an embedded struct\n\nTo accommodate stacking drivers that do not have an associated request\nqueue we\u0027re moving the limits to a separate, embedded structure.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ae03bf639a5027d27270123f5f6e3ee6a412781d",
      "tree": "d705f41a188ad656b1f47f7952626a9f992e3b8f",
      "parents": [
        "e1defc4ff0cf57aca6c5e3ff99fa503f5943c1f1"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri May 22 17:17:50 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 23:22:54 2009 +0200"
      },
      "message": "block: Use accessor functions for queue limits\n\nConvert all external users of queue limits to using wrapper functions\ninstead of poking the request queue variables directly.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e1defc4ff0cf57aca6c5e3ff99fa503f5943c1f1",
      "tree": "d60d15a082171c58ac811d547d51a9c3119f23e3",
      "parents": [
        "9bd7de51ee8537094656149eaf45338cadb7d7d4"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri May 22 17:17:49 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 23:22:54 2009 +0200"
      },
      "message": "block: Do away with the notion of hardsect_size\n\nUntil now we have had a 1:1 mapping between storage device physical\nblock size and the logical block sized used when addressing the device.\nWith SATA 4KB drives coming out that will no longer be the case.  The\nsector size will be 4KB but the logical block size will remain\n512-bytes.  Hence we need to distinguish between the physical block size\nand the logical ditto.\n\nThis patch renames hardsect_size to logical_block_size.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e4b636366c00738b9609cda307014d71b1225b7f",
      "tree": "760b67b3624eda62e943e48ce93635c30a5b47bf",
      "parents": [
        "b9ed7252d219c1c663944bf03846eabb515dbe75",
        "279e677faa775ad16e75c32e1bf4a37f8158bc61"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 20:25:34 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 20:25:34 2009 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-2.6.31\n\nConflicts:\n\tdrivers/block/hd.c\n\tdrivers/block/mg_disk.c\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0a7ae2ff0d29bb3b327edff4c8ab67b3834fa811",
      "tree": "88309ac99a39e15b9b23525a00a15b1564957b32",
      "parents": [
        "ac36552a52a6ec8563ac0a109e2a0935673f4abb"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 20 08:54:31 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 20 08:54:31 2009 +0200"
      },
      "message": "block: change the tag sync vs async restriction logic\n\nMake them fully share the tag space, but disallow async requests using\nthe last any two slots.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a411f4bbb89f1f08687b344064d6775bce1e4658",
      "tree": "8898f98285e712f8b5bb99db184bc1a21b1a643c",
      "parents": [
        "c29b70f6ee4f2fa3ef07f55bc9082945861e5391"
      ],
      "author": {
        "name": "Boaz Harrosh",
        "email": "bharrosh@panasas.com",
        "time": "Sun May 17 19:00:01 2009 +0300"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue May 19 12:14:56 2009 +0200"
      },
      "message": "block: Un-export blk_rq_append_bio\n\nOSD was the last in-tree user of blk_rq_append_bio(). Now\nthat it is fixed blk_rq_append_bio is un-exported and\nis only used internally by block layer.\n\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "79eb63e9e5875b84341a3a05f8e6ae9cdb4bb6f6",
      "tree": "bdadc2037c1d0f24c6c73b71ae82fdd7b907e610",
      "parents": [
        "bc38bf106c967389a465d926be22c7371abba69d"
      ],
      "author": {
        "name": "Boaz Harrosh",
        "email": "bharrosh@panasas.com",
        "time": "Sun May 17 18:57:15 2009 +0300"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue May 19 12:14:56 2009 +0200"
      },
      "message": "block: Add blk_make_request(), takes bio, returns a request\n\nNew block API:\ngiven a struct bio allocates a new request. This is the parallel of\ngeneric_make_request for BLOCK_PC commands users.\n\nThe passed bio may be a chained-bio. The bio is bounced if needed\ninside the call to this member.\n\nThis is in the effort of un-exporting blk_rq_append_bio().\n\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nCC: Jeff Garzik \u003cjeff@garzik.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b1f744937f1be3e6d3009382a755679133cf782d",
      "tree": "0e90e43589ecfe28199030e8e396c0193199da7e",
      "parents": [
        "e6bb7a96c2c36f20c05ef648f15bd3c2b1834c78"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Mon May 11 17:56:09 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 11:06:48 2009 +0200"
      },
      "message": "block: move completion related functions back to blk-core.c\n\nLet\u0027s put the completion related functions back to block/blk-core.c\nwhere they have lived. We can also unexport blk_end_bidi_request() and\n__blk_end_bidi_request(), which nobody uses.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1822952ba2b9f22f79019d07ebbeca31dc14b718",
      "tree": "de3a727e811f33bc908cd6c4d2f0cf5a1693dab3",
      "parents": [
        "9934c8c04561413609d2bc38c6b9f268cba774a4"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Mon May 11 17:56:07 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 11:06:47 2009 +0200"
      },
      "message": "block: let blk_end_request_all handle bidi requests\n\nblk_end_request_all() and __blk_end_request_all() should finish all\nbytes including bidi, by definition. That\u0027s what all bidi users need ,\nbidi requests must be complete as a whole (partial completion is\nimpossible).\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9934c8c04561413609d2bc38c6b9f268cba774a4",
      "tree": "30dd8f7be54f9b2e03094de9cd03b6a9ee2909cd",
      "parents": [
        "2343046826a8ca426b07601d9593ee046c298b68"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri May 08 11:54:16 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 09:52:18 2009 +0200"
      },
      "message": "block: implement and enforce request peek/start/fetch\n\nTill now block layer allowed two separate modes of request execution.\nA request is always acquired from the request queue via\nelv_next_request().  After that, drivers are free to either dequeue it\nor process it without dequeueing.  Dequeue allows elv_next_request()\nto return the next request so that multiple requests can be in flight.\n\nExecuting requests without dequeueing has its merits mostly in\nallowing drivers for simpler devices which can\u0027t do sg to deal with\nsegments only without considering request boundary.  However, the\nbenefit this brings is dubious and declining while the cost of the API\nambiguity is increasing.  Segment based drivers are usually for very\nold or limited devices and as converting to dequeueing model isn\u0027t\ndifficult, it doesn\u0027t justify the API overhead it puts on block layer\nand its more modern users.\n\nPrevious patches converted all block low level drivers to dequeueing\nmodel.  This patch completes the API transition by...\n\n* renaming elv_next_request() to blk_peek_request()\n\n* renaming blkdev_dequeue_request() to blk_start_request()\n\n* adding blk_fetch_request() which is combination of peek and start\n\n* disallowing completion of queued (not started) requests\n\n* applying new API to all LLDs\n\nRenamings are for consistency and to break out of tree code so that\nit\u0027s apparent that out of tree drivers need updating.\n\n[ Impact: block request issue API cleanup, no functional change ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Mike Miller \u003cmike.miller@hp.com\u003e\nCc: unsik Kim \u003cdonari75@gmail.com\u003e\nCc: Paul Clements \u003cpaul.clements@steeleye.com\u003e\nCc: Tim Waugh \u003ctim@cyberelk.net\u003e\nCc: Geert Uytterhoeven \u003cGeert.Uytterhoeven@sonycom.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Laurent Vivier \u003cLaurent@lvivier.info\u003e\nCc: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nCc: Adrian McMenamin \u003cadrian@mcmen.demon.co.uk\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nCc: Borislav Petkov \u003cpetkovbb@googlemail.com\u003e\nCc: Sergei Shtylyov \u003csshtylyov@ru.mvista.com\u003e\nCc: Alex Dubov \u003coakad@yahoo.com\u003e\nCc: Pierre Ossman \u003cdrzeus@drzeus.cx\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Markus Lidel \u003cMarkus.Lidel@shadowconnect.com\u003e\nCc: Stefan Weinhuber \u003cwein@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Pete Zaitcev \u003czaitcev@redhat.com\u003e\nCc: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a2dec7b36364a5cc564c4d76cf16d2e7d33f5c05",
      "tree": "76dfb84ba5fa097a929ab81cf5718c6fcbc9d720",
      "parents": [
        "34b7d2c957199834c474c9d46739265643f4d9c7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu May 07 22:24:44 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 09:50:55 2009 +0200"
      },
      "message": "block: hide request sector and data_len\n\nBlock low level drivers for some reason have been pretty good at\nabusing block layer API.  Especially struct request\u0027s fields tend to\nget violated in all possible ways.  Make it clear that low level\ndrivers MUST NOT access or manipulate rq-\u003esector and rq-\u003edata_len\ndirectly by prefixing them with double underscores.\n\nThis change is also necessary to break build of out-of-tree codes\nwhich assume the previous block API where internal fields can be\nmanipulated and rq-\u003edata_len carries residual count on completion.\n\n[ Impact: hide internal fields, block API change ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "2e46e8b27aa57c6bd34b3102b40ee4d0144b4fab",
      "tree": "134f560f66c2af277f0f25e5b85f6c1acaddfc06",
      "parents": [
        "9780e2dd8254351f6cbe11304849126b51dbd561"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu May 07 22:24:41 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 09:50:54 2009 +0200"
      },
      "message": "block: drop request-\u003ehard_* and *nr_sectors\n\nstruct request has had a few different ways to represent some\nproperties of a request.  -\u003ehard_* represent block layer\u0027s view of the\nrequest progress (completion cursor) and the ones without the prefix\nare supposed to represent the issue cursor and allowed to be updated\nas necessary by the low level drivers.  The thing is that as block\nlayer supports partial completion, the two cursors really aren\u0027t\nnecessary and only cause confusion.  In addition, manual management of\nrequest detail from low level drivers is cumbersome and error-prone at\nthe very least.\n\nAnother interesting duplicate fields are rq-\u003e[hard_]nr_sectors and\nrq-\u003e{hard_cur|current}_nr_sectors against rq-\u003edata_len and\nrq-\u003ebio-\u003ebi_size.  This is more convoluted than the hard_ case.\n\nrq-\u003e[hard_]nr_sectors are initialized for requests with bio but\nblk_rq_bytes() uses it only for !pc requests.  rq-\u003edata_len is\ninitialized for all request but blk_rq_bytes() uses it only for pc\nrequests.  This causes good amount of confusion throughout block layer\nand its drivers and determining the request length has been a bit of\nblack magic which may or may not work depending on circumstances and\nwhat the specific LLD is actually doing.\n\nrq-\u003e{hard_cur|current}_nr_sectors represent the number of sectors in\nthe contiguous data area at the front.  This is mainly used by drivers\nwhich transfers data by walking request segment-by-segment.  This\nvalue always equals rq-\u003ebio-\u003ebi_size \u003e\u003e 9.  However, data length for\npc requests may not be multiple of 512 bytes and using this field\nbecomes a bit confusing.\n\nIn general, having multiple fields to represent the same property\nleads only to confusion and subtle bugs.  With recent block low level\ndriver cleanups, no driver is accessing or manipulating these\nduplicate fields directly.  Drop all the duplicates.  Now rq-\u003esector\nmeans the current sector, rq-\u003edata_len the current total length and\nrq-\u003ebio-\u003ebi_size the current segment length.  Everything else is\ndefined in terms of these three and available only through accessors.\n\n* blk_recalc_rq_sectors() is collapsed into blk_update_request() and\n  now handles pc and fs requests equally other than rq-\u003esector update.\n  This means that now pc requests can use partial completion too (no\n  in-kernel user yet tho).\n\n* bio_cur_sectors() is replaced with bio_cur_bytes() as block layer\n  now uses byte count as the primary data length.\n\n* blk_rq_pos() is now guranteed to be always correct.  In-block users\n  converted.\n\n* blk_rq_bytes() is now guaranteed to be always valid as is\n  blk_rq_sectors().  In-block users converted.\n\n* blk_rq_sectors() is now guaranteed to equal blk_rq_bytes() \u003e\u003e 9.\n  More convenient one is used.\n\n* blk_rq_bytes() and blk_rq_cur_bytes() are now inlined and take const\n  pointer to request.\n\n[ Impact: API cleanup, single way to represent one property of a request ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "5b93629b4509c03ffa87a9316412fedf6f58cb37",
      "tree": "ad5ceda3f718361b8df3057b4f9edcc79aa4cd9d",
      "parents": [
        "c3a4d78c580de4edc9ef0f7c59812fb02ceb037f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu May 07 22:24:38 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 09:50:53 2009 +0200"
      },
      "message": "block: implement blk_rq_pos/[cur_]sectors() and convert obvious ones\n\nImplement accessors - blk_rq_pos(), blk_rq_sectors() and\nblk_rq_cur_sectors() which return rq-\u003ehard_sector, rq-\u003ehard_nr_sectors\nand rq-\u003ehard_cur_sectors respectively and convert direct references of\nthe said fields to the accessors.\n\nThis is in preparation of request data length handling cleanup.\n\nGeert\t: suggested adding const to struct request * parameter to accessors\nSergei\t: spotted error in patch description\n\n[ Impact: cleanup ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Geert Uytterhoeven \u003cGeert.Uytterhoeven@sonycom.com\u003e\nAcked-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nTested-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nAcked-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nAckec-by: Sergei Shtylyov \u003csshtylyov@ru.mvista.com\u003e\nCc: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nCc: Borislav Petkov \u003cpetkovbb@googlemail.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c3a4d78c580de4edc9ef0f7c59812fb02ceb037f",
      "tree": "916ca44287100707508678e2cc0eff0c43b9ca39",
      "parents": [
        "9720aef2539c10e3a872e9a92beec225030d99db"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu May 07 22:24:37 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 11 09:50:53 2009 +0200"
      },
      "message": "block: add rq-\u003eresid_len\n\nrq-\u003edata_len served two purposes - the length of data buffer on issue\nand the residual count on completion.  This duality creates some\nheadaches.\n\nFirst of all, block layer and low level drivers can\u0027t really determine\nwhat rq-\u003edata_len contains while a request is executing.  It could be\nthe total request length or it coulde be anything else one of the\nlower layers is using to keep track of residual count.  This\ncomplicates things because blk_rq_bytes() and thus\n[__]blk_end_request_all() relies on rq-\u003edata_len for PC commands.\nDrivers which want to report residual count should first cache the\ntotal request length, update rq-\u003edata_len and then complete the\nrequest with the cached data length.\n\nSecondly, it makes requests default to reporting full residual count,\nie. reporting that no data transfer occurred.  The residual count is\nan exception not the norm; however, the driver should clear\nrq-\u003edata_len to zero to signify the normal cases while leaving it\nalone means no data transfer occurred at all.  This reverse default\nbehavior complicates code unnecessarily and renders block PC on some\ndrivers (ide-tape/floppy) unuseable.\n\nThis patch adds rq-\u003eresid_len which is used only for residual count.\n\nWhile at it, remove now unnecessasry blk_rq_bytes() caching in\nide_pc_intr() as rq-\u003edata_len is not changed anymore.\n\nBoaz\t: spotted missing conversion in osd\nSergei\t: spotted too early conversion to blk_rq_bytes() in ide-tape\n\n[ Impact: cleanup residual count handling, report 0 resid by default ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nCc: Borislav Petkov \u003cpetkovbb@googlemail.com\u003e\nCc: Sergei Shtylyov \u003csshtylyov@ru.mvista.com\u003e\nCc: Mike Miller \u003cmike.miller@hp.com\u003e\nCc: Eric Moore \u003cEric.Moore@lsi.com\u003e\nCc: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nCc: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Doug Gilbert \u003cdgilbert@interlog.com\u003e\nCc: Mike Miller \u003cmike.miller@hp.com\u003e\nCc: Eric Moore \u003cEric.Moore@lsi.com\u003e\nCc: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nCc: Pete Zaitcev \u003czaitcev@redhat.com\u003e\nCc: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "7b39da786a63e82d9d440075eae9018b79154d2a",
      "tree": "e0c415aa911136293d50e0116bafdc5128bd4080",
      "parents": [
        "2142babac999a5ba169348892a8e3ac222bec7a4",
        "96c16743973e8c1a7b9c655d10b7973408d6d1dd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 02 16:48:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 02 16:48:32 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6:\n  ide-cd: fix REQ_QUIET tests in cdrom_decode_status\n\nFix up trivial conflicts in include/linux/blkdev.h\n"
    },
    {
      "commit": "96c16743973e8c1a7b9c655d10b7973408d6d1dd",
      "tree": "965c9915d06762fa68cd033b71be2ac851722f0b",
      "parents": [
        "b930f964cfe65941c6b1ba61efedfe49da3f6353"
      ],
      "author": {
        "name": "Borislav Petkov",
        "email": "petkovbb@gmail.com",
        "time": "Thu Apr 30 18:24:34 2009 +0200"
      },
      "committer": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu Apr 30 18:24:34 2009 +0200"
      },
      "message": "ide-cd: fix REQ_QUIET tests in cdrom_decode_status\n\nOriginal patch (dfa4411cc3a690011cab90e9a536938795366cf9) was buggy.\nThis is a more proper fix which introduces blk_rq_quiet() macro\nalleviating the need for dumb, too short caching variables.\n\nThanks to Helge Deller and Bart for debugging this.\n\nSigned-off-by: Borislav Petkov \u003cpetkovbb@gmail.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Sergei Shtylyov \u003csshtylyov@ru.mvista.com\u003e\nReported-and-tested-by: Helge Deller \u003cdeller@gmx.de\u003e\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\n"
    },
    {
      "commit": "9fd8d0e1bcb848257968d9a7d73ca4d890ea8bd1",
      "tree": "6ecdb8af44feda12713c1bee34a1ad5e9e978ee8",
      "parents": [
        "9eb55b030c4b3227334ee4482402096cd1d1a6fe"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Apr 28 13:06:04 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 08:14:49 2009 +0200"
      },
      "message": "block: make blk_end_request_cur() return bool\n\nIn the process of mindlessly copying [__]blk_end_request_all(),\n[__]blk_end_request_cur() ended up returning void even though they\u0027re\npartial completion functions.  Fix it.\n\n[ Impact: fix braindead API ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "731ec497e5888c6792ad62613ae9be97eebcd7ca",
      "tree": "689a8442d8bdfd50ee6ab05b0c6acd0d229fe391",
      "parents": [
        "ec24751a6b57e1373a12361e581b2458bc9bb791"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 11:05:20 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 07:37:36 2009 +0200"
      },
      "message": "block: kill rq-\u003edata\n\nNow that all block request data transfer is done via bio, rq-\u003edata\nisn\u0027t used.  Kill it.\n\nWhile at it, make the roles of rq-\u003especial and buffer clear.\n\n[ Impact: drop now unncessary field from struct request ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\n"
    },
    {
      "commit": "f06d9a2b52e246a66b606130cea3f0d7b7be17a7",
      "tree": "020df1f9d54b00c72d8af02ac0827d496597e75a",
      "parents": [
        "40cbbb781d3eba5d6ac0860db078af490e5c7c6b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 11:05:19 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 07:37:36 2009 +0200"
      },
      "message": "block: replace end_request() with [__]blk_end_request_cur()\n\nend_request() has been kept around for backward compatibility;\nhowever, it\u0027s about time for it to go away.\n\n* There aren\u0027t too many users left.\n\n* Its use of @updtodate is pretty confusing.\n\n* In some cases, newer code ends up using mixture of end_request() and\n  [__]blk_end_request[_all](), which is way too confusing.\n\nSo, add [__]blk_end_request_cur() and replace end_request() with it.\nMost conversions are straightforward.  Noteworthy ones are...\n\n* paride/pcd: next_request() updated to take 0/-errno instead of 1/0.\n\n* paride/pf: pf_end_request() and next_request() updated to take\n  0/-errno instead of 1/0.\n\n* xd: xd_readwrite() updated to return 0/-errno instead of 1/0.\n\n* mtd/mtd_blkdevs: blktrans_discard_request() updated to return\n  0/-errno instead of 1/0.  Unnecessary local variable res\n  initialization removed from mtd_blktrans_thread().\n\n[ Impact: cleanup ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Joerg Dorchain \u003cjoerg@dorchain.net\u003e\nAcked-by: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nAcked-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nAcked-by: Laurent Vivier \u003cLaurent@lvivier.info\u003e\nCc: Tim Waugh \u003ctim@cyberelk.net\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Markus Lidel \u003cMarkus.Lidel@shadowconnect.com\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Pete Zaitcev \u003czaitcev@redhat.com\u003e\nCc: unsik Kim \u003cdonari75@gmail.com\u003e\n"
    },
    {
      "commit": "40cbbb781d3eba5d6ac0860db078af490e5c7c6b",
      "tree": "dec374543cf045fc630bccddbb7646c695094b0d",
      "parents": [
        "b243ddcbe9be146172baa544dadecebf156eda0e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 11:05:19 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 07:37:35 2009 +0200"
      },
      "message": "block: implement and use [__]blk_end_request_all()\n\nThere are many [__]blk_end_request() call sites which call it with\nfull request length and expect full completion.  Many of them ensure\nthat the request actually completes by doing BUG_ON() the return\nvalue, which is awkward and error-prone.\n\nThis patch adds [__]blk_end_request_all() which takes @rq and @error\nand fully completes the request.  BUG_ON() is added to to ensure that\nthis actually happens.\n\nMost conversions are simple but there are a few noteworthy ones.\n\n* cdrom/viocd: viocd_end_request() replaced with direct calls to\n  __blk_end_request_all().\n\n* s390/block/dasd: dasd_end_request() replaced with direct calls to\n  __blk_end_request_all().\n\n* s390/char/tape_block: tapeblock_end_request() replaced with direct\n  calls to blk_end_request_all().\n\n[ Impact: cleanup ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Mike Miller \u003cmike.miller@hp.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Alex Dubov \u003coakad@yahoo.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "2e60e02297cf54e367567f2d85b2ca56b1c4a906",
      "tree": "ea824afcaff58be894799a011f74d80c3560f372",
      "parents": [
        "0b302d5aa7975006fa2ec3d66386610b9b36c669"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 11:05:18 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 07:37:35 2009 +0200"
      },
      "message": "block: clean up request completion API\n\nRequest completion has gone through several changes and became a bit\nmessy over the time.  Clean it up.\n\n1. end_that_request_data() is a thin wrapper around\n   end_that_request_data_first() which checks whether bio is NULL\n   before doing anything and handles bidi completion.\n   blk_update_request() is a thin wrapper around\n   end_that_request_data() which clears nr_sectors on the last\n   iteration but doesn\u0027t use the bidi completion.\n\n   Clean it up by moving the initial bio NULL check and nr_sectors\n   clearing on the last iteration into end_that_request_data() and\n   renaming it to blk_update_request(), which makes blk_end_io() the\n   only user of end_that_request_data().  Collapse\n   end_that_request_data() into blk_end_io().\n\n2. There are four visible completion variants - blk_end_request(),\n   __blk_end_request(), blk_end_bidi_request() and end_request().\n   blk_end_request() and blk_end_bidi_request() uses blk_end_request()\n   as the backend but __blk_end_request() and end_request() use\n   separate implementation in __blk_end_request() due to different\n   locking rules.\n\n   blk_end_bidi_request() is identical to blk_end_io().  Collapse\n   blk_end_io() into blk_end_bidi_request(), separate out request\n   update into internal helper blk_update_bidi_request() and add\n   __blk_end_bidi_request().  Redefine [__]blk_end_request() as thin\n   inline wrappers around [__]blk_end_bidi_request().\n\n3. As the whole request issue/completion usages are about to be\n   modified and audited, it\u0027s a good chance to convert completion\n   functions return bool which better indicates the intended meaning\n   of return values.\n\n4. The function name end_that_request_last() is from the days when it\n   was a public interface and slighly confusing.  Give it a proper\n   internal name - blk_finish_request().\n\n5. Add description explaning that blk_end_bidi_request() can be safely\n   used for uni requests as suggested by Boaz Harrosh.\n\nThe only visible behavior change is from #1.  nr_sectors counts are\ncleared after the final iteration no matter which function is used to\ncomplete the request.  I couldn\u0027t find any place where the code\nassumes those nr_sectors counters contain the values for the last\nsegment and this change is good as it makes the API much more\nconsistent as the end result is now same whether a request is\ncompleted using [__]blk_end_request() alone or in combination with\nblk_update_request().\n\nAPI further cleaned up per Christoph\u0027s suggestion.\n\n[ Impact: cleanup, rq-\u003e*nr_sectors always updated after req completion ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "0b302d5aa7975006fa2ec3d66386610b9b36c669",
      "tree": "bba5de7b377ad167c4291cbdfd203ca7616d696d",
      "parents": [
        "158dbda0068e63c7cce7bd47c123bd1dfa5a902c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 11:05:18 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 07:37:34 2009 +0200"
      },
      "message": "block: kill blk_end_request_callback()\n\nWith recent IDE updates, blk_end_request_callback() doesn\u0027t have any\nuser now.  Kill it.\n\n[ Impact: removal of unused convoluted interface ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "5efccd17ceb0fc43837a331297c2c407969d7201",
      "tree": "6678ebea73ffc9f2ad35029eaaf49e68073e4e88",
      "parents": [
        "2eef33e439ba9ae387cdc3f1abcef2f3f6c4e7a8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 11:05:18 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 07:37:34 2009 +0200"
      },
      "message": "block: reorder request completion functions\n\nReorder request completion functions such that\n\n* All request completion functions are located together.\n\n* Functions which are used by only one caller is put right above the\n  caller.\n\n* end_request() is put after other completion functions but before\n  blk_update_request().\n\nThis change is for completion function cleanup which will follow.\n\n[ Impact: cleanup, code reorganization ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "a7f557923441186a3cdbabc54f1bcacf42b63bf5",
      "tree": "48e37802174cb98be43d89eb8bc4e466f4d79a02",
      "parents": [
        "a538cd03be6f363d039daa94199c28cfbd508455"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 11:05:17 2009 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 28 07:37:33 2009 +0200"
      },
      "message": "block: kill blk_start_queueing()\n\nblk_start_queueing() is identical to __blk_run_queue() except that it\ndoesn\u0027t check for recursion.  None of the current users depends on\nblk_start_queueing() running request_fn directly.  Replace usages of\nblk_start_queueing() with [__]blk_run_queue() and kill it.\n\n[ Impact: removal of mostly duplicate interface function ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "42dad7647aec49b3ad20dd0cb832b232a6ae514f",
      "tree": "b70d4cb7706f2647e65426e24f078ddf14d6e139",
      "parents": [
        "097102c2d04974bdfcfa16a5f3062d499842139c"
      ],
      "author": {
        "name": "Jerome Marchand",
        "email": "jmarchan@redhat.com",
        "time": "Wed Apr 22 14:01:49 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Apr 24 08:54:21 2009 +0200"
      },
      "message": "block: simplify I/O stat accounting\n\nThis simplifies I/O stat accounting switching code and separates it\ncompletely from I/O scheduler switch code.\n\nRequests are accounted according to the state of their request queue\nat the time of the request allocation. There is no need anymore to\nflush the request queue when switching I/O accounting state.\n\nSigned-off-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "2385327725419a76cfbca7258abd95908b8ba9eb",
      "tree": "dee9c8167092707fbd3f1b1c5fdadc33ccf924a5",
      "parents": [
        "75e50984f062de2abc4bd84c642923e2c48ce2ae"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 07 08:59:11 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 07 08:59:11 2009 +0200"
      },
      "message": "block: remove unused REQ_UNPLUG\n\nThe request inherits the unplug flag from the bio, but it isn\u0027t actually\nused. The bio flag stops at __make_request(), which tells it to unplug\nafter submission. Passing it on to the request doesn\u0027t make any sense.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "aeb6fafb8fa53266d70ca7474fcda2bdaf96524a",
      "tree": "ebe8e0c616a9dbfdfe5184b64d0150ea02d3d1b2",
      "parents": [
        "644b2d99b7a8677a56909a7b1fde31677eba4471"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Apr 06 14:48:07 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 08:04:54 2009 -0700"
      },
      "message": "block: Add flag for telling the IO schedulers NOT to anticipate more IO\n\nBy default, CFQ will anticipate more IO from a given io context if the\npreviously completed IO was sync. This used to be fine, since the only\nsync IO was reads and O_DIRECT writes. But with more \"normal\" sync writes\nbeing used now, we don\u0027t want to anticipate for those.\n\nAdd a bio/request flag that informs the IO scheduler that this is a sync\nrequest that we should not idle for. Introduce WRITE_ODIRECT specifically\nfor O_DIRECT writes, and make sure that the other sync writes set this\nflag.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1faa16d22877f4839bd433547d770c676d1d964c",
      "tree": "9a0d50be1ef0358c1f53d7107413100904e7d526",
      "parents": [
        "0221c81b1b8eb0cbb6b30a0ced52ead32d2b4e4c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Apr 06 14:48:01 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 08:04:53 2009 -0700"
      },
      "message": "block: change the request allocation/congestion logic to be sync/async based\n\nThis makes sure that we never wait on async IO for sync requests, instead\nof doing the split on writes vs reads.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1e42807918d17e8c93bf14fbb74be84b141334c1",
      "tree": "55b15f0f6b2c666efeb938d064f24fdd268faf40",
      "parents": [
        "5e4c91c84b194b26cf592779e451f4b5be777cba"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Feb 23 09:03:10 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Feb 26 10:45:48 2009 +0100"
      },
      "message": "block: reduce stack footprint of blk_recount_segments()\n\nblk_recalc_rq_segments() requires a request structure passed in, which\nwe don\u0027t have from blk_recount_segments(). So the latter allocates one on\nthe stack, using \u003e 400 bytes of stack for that. This can cause us to spill\nover one page of stack from ext4 at least:\n\n 0)     4560     400   blk_recount_segments+0x43/0x62\n 1)     4160      32   bio_phys_segments+0x1c/0x24\n 2)     4128      32   blk_rq_bio_prep+0x2a/0xf9\n 3)     4096      32   init_request_from_bio+0xf9/0xfe\n 4)     4064     112   __make_request+0x33c/0x3f6\n 5)     3952     144   generic_make_request+0x2d1/0x321\n 6)     3808      64   submit_bio+0xb9/0xc3\n 7)     3744      48   submit_bh+0xea/0x10e\n 8)     3696     368   ext4_mb_init_cache+0x257/0xa6a [ext4]\n 9)     3328     288   ext4_mb_regular_allocator+0x421/0xcd9 [ext4]\n10)     3040     160   ext4_mb_new_blocks+0x211/0x4b4 [ext4]\n11)     2880     336   ext4_ext_get_blocks+0xb61/0xd45 [ext4]\n12)     2544      96   ext4_get_blocks_wrap+0xf2/0x200 [ext4]\n13)     2448      80   ext4_da_get_block_write+0x6e/0x16b [ext4]\n14)     2368     352   mpage_da_map_blocks+0x7e/0x4b3 [ext4]\n15)     2016     352   ext4_da_writepages+0x2ce/0x43c [ext4]\n16)     1664      32   do_writepages+0x2d/0x3c\n17)     1632     144   __writeback_single_inode+0x162/0x2cd\n18)     1488      96   generic_sync_sb_inodes+0x1e3/0x32b\n19)     1392      16   sync_sb_inodes+0xe/0x10\n20)     1376      48   writeback_inodes+0x69/0xb3\n21)     1328     208   balance_dirty_pages_ratelimited_nr+0x187/0x2f9\n22)     1120     224   generic_file_buffered_write+0x1d4/0x2c4\n23)      896     176   __generic_file_aio_write_nolock+0x35f/0x393\n24)      720      80   generic_file_aio_write+0x6c/0xc8\n25)      640      80   ext4_file_write+0xa9/0x137 [ext4]\n26)      560     320   do_sync_write+0xf0/0x137\n27)      240      48   vfs_write+0xb3/0x13c\n28)      192      64   sys_write+0x4c/0x74\n29)      128     128   system_call_fastpath+0x16/0x1b\n\nSplit the segment counting out into a __blk_recalc_rq_segments() helper\nto avoid allocating an onstack request just for checking the physical\nsegment count.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0648e10d71c8e510d80772c4cb4220c97e9c34c7",
      "tree": "65cb4b2780a1c072209b79bbb1b34cb927416611",
      "parents": [
        "fb8ec18c316d869271137c97320dbfd2def56569"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Feb 02 08:43:48 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Feb 02 08:43:48 2009 +0100"
      },
      "message": "block: fix inconsistent parenthesisation of QUEUE_FLAG_DEFAULT\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "bc58ba9468d94d62c56ab9b47173583ec140b165",
      "tree": "e31bee7a5001efdd40ed568151d5fdfa8b1a746a",
      "parents": [
        "7598909e3ee2a08726276d6415b69dadb52d0d76"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 23 10:54:44 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 30 12:34:38 2009 +0100"
      },
      "message": "block: add sysfs file for controlling io stats accounting\n\nThis allows us to turn off disk stat accounting completely, for the cases\nwhere the 0.5-1% reduction in system time is important.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "213d9417fec62ef4c3675621b9364a667954d4dd",
      "tree": "d115a92085288d2d9c2ba0e8cbc573cccdcd8e46",
      "parents": [
        "1308835ffffe6d61ad1f48c5c381c9cc47f683ec"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jan 06 09:16:05 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 30 12:34:37 2009 +0100"
      },
      "message": "block: seperate bio/request unplug and sync bits\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "97ae77a1cd332c7b011d71315c8faabce6840c72",
      "tree": "fc243ca28ea474eaf81729079eeb3b259cd1b81b",
      "parents": [
        "56c451f4b583ccdf80c9e676179c9cb49de86745"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Thu Dec 18 14:49:38 2008 +0900"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Fri Jan 02 11:10:35 2009 -0600"
      },
      "message": "[SCSI] block: make blk_rq_map_user take a NULL user-space buffer for WRITE\n\nThe commit 818827669d85b84241696ffef2de485db46b0b5e (block: make\nblk_rq_map_user take a NULL user-space buffer) extended\nblk_rq_map_user to accept a NULL user-space buffer with a READ\ncommand. It was necessary to convert sg to use the block layer mapping\nAPI.\n\nThis patch extends blk_rq_map_user again for a WRITE command. It is\nnecessary to convert st and osst drivers to use the block layer\napping API.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "56c451f4b583ccdf80c9e676179c9cb49de86745",
      "tree": "7ad9daeafb88e3c4390bf7a2db0c203fe2642728",
      "parents": [
        "e623ddb4e940b266adc77ba1cc28a3554aa90e79"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Thu Dec 18 14:49:37 2008 +0900"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Fri Jan 02 11:10:08 2009 -0600"
      },
      "message": "[SCSI] block: fix the partial mappings with struct rq_map_data\n\nThis fixes bio_copy_user_iov to properly handle the partial mappings\nwith struct rq_map_data (which only sg uses for now but st and osst\nwill shortly). It adds the offset member to struct rq_map_data and\nchanges blk_rq_map_user to update it so that bio_copy_user_iov can add\nan appropriate page frame via bio_add_pc_page().\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "b374d18a4bfce705e4a99ae9f501b53e86ecb283",
      "tree": "7e773464725a78e96a2017fa36cf9d4a4e29f73b",
      "parents": [
        "abf137dd7712132ee56d5b3143c2ff61a72a5faa"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Oct 31 10:05:07 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:29:50 2008 +0100"
      },
      "message": "block: get rid of elevator_t typedef\n\nJust use struct elevator_queue everywhere instead.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "58eea927d2de43dc6f03d1ba2c46e55854b31540",
      "tree": "bb43f43891a3154741bb6a116dc2956342160f15",
      "parents": [
        "8f11b3e99a1136fcbb67316c3260f085299c0bff"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Nov 28 13:32:06 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:28:45 2008 +0100"
      },
      "message": "block: simplify empty barrier implementation\n\nEmpty barrier required special handling in __elv_next_request() to\ncomplete it without letting the low level driver see it.\n\nWith previous changes, barrier code is now flexible enough to skip the\nBAR step using the same barrier sequence selection mechanism.  Drop\nthe special handling and mask off q-\u003eordered from start_ordered().\n\nRemove blk_empty_barrier() test which now has no user.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "8f11b3e99a1136fcbb67316c3260f085299c0bff",
      "tree": "bb9b12fe23aceac19e24f674786612d0fcad2142",
      "parents": [
        "f671620e7d895af221bdfeda751d54fa55ed9546"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Nov 28 13:32:05 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:28:45 2008 +0100"
      },
      "message": "block: make barrier completion more robust\n\nBarrier completion had the following assumptions.\n\n* start_ordered() couldn\u0027t finish the whole sequence properly.  If all\n  actions are to be skipped, q-\u003eordseq is set correctly but the actual\n  completion was never triggered thus hanging the barrier request.\n\n* Drain completion in elv_complete_request() assumed that there\u0027s\n  always at least one request in the queue when drain completes.\n\nBoth assumptions are true but these assumptions need to be removed to\nimprove empty barrier implementation.  This patch makes the following\nchanges.\n\n* Make start_ordered() use blk_ordered_complete_seq() to mark skipped\n  steps complete and notify __elv_next_request() that it should fetch\n  the next request if the whole barrier has completed inside\n  start_ordered().\n\n* Make drain completion path in elv_complete_request() check whether\n  the queue is empty.  Empty queue also indicates drain completion.\n\n* While at it, convert 0/1 return from blk_do_ordered() to false/true.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    }
  ],
  "next": "f671620e7d895af221bdfeda751d54fa55ed9546"
}
