)]}'
{
  "log": [
    {
      "commit": "a91a2785b200864aef2270ed6a3babac7a253a20",
      "tree": "3d21d7ef82ddabbdbfb74499d68a73f15adc819f",
      "parents": [
        "82f04ab47e1d94d78503591a7460b2cad9601ede"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Thu Mar 17 11:11:05 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 17 11:11:05 2011 +0100"
      },
      "message": "block: Require subsystems to explicitly allocate bio_set integrity mempool\n\nMD and DM create a new bio_set for every metadevice. Each bio_set has an\nintegrity mempool attached regardless of whether the metadevice is\ncapable of passing integrity metadata. This is a waste of memory.\n\nInstead we defer the allocation decision to MD and DM since we know at\nmetadevice creation time whether integrity passthrough is needed or not.\n\nAutomatic integrity mempool allocation can then be removed from\nbioset_create() and we make an explicit integrity allocation for the\nfs_bio_set.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nReported-by: Zdenek Kabelac \u003czkabelac@redhat.com\u003e\nAcked-by: Mike Snitzer \u003csnizer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "4c63f5646e405b5010cc9499419060bf2e838f5b",
      "tree": "df91ba315032c8ec4aafeb3ab96fdfa7c6c656e1",
      "parents": [
        "cafb0bfca1a73efd6d8a4a6a6a716e6134b96c24",
        "69d60eb96ae8a73cf9b79cf28051caf973006011"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:58:35 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:58:35 2011 +0100"
      },
      "message": "Merge branch \u0027for-2.6.39/stack-plug\u0027 into for-2.6.39/core\n\nConflicts:\n\tblock/blk-core.c\n\tblock/blk-flush.c\n\tdrivers/md/raid1.c\n\tdrivers/md/raid10.c\n\tdrivers/md/raid5.c\n\tfs/nilfs2/btnode.c\n\tfs/nilfs2/mdt.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7eaceaccab5f40bbfda044629a6298616aeaed50",
      "tree": "33954d12f63e25a47eb6d86ef3d3d0a5e62bf752",
      "parents": [
        "73c101011926c5832e6e141682180c4debe2cf45"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "message": "block: remove per-queue plugging\n\nCode has been converted over to the new explicit on-stack plugging,\nand delay users have been converted to use the new API for that.\nSo lets kill off the old plugging along with aops-\u003esync_page().\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "da9cf5050a2e3dbc3cf26a8d908482eb4485ed49",
      "tree": "d5e7ea4ef419d07d294e88b47a4aaf2676a605eb",
      "parents": [
        "8f5f02c460b7ca74ce55ce126ce0c1e58a3f923d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Feb 21 18:25:57 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Feb 21 18:25:57 2011 +1100"
      },
      "message": "md: avoid spinlock problem in blk_throtl_exit\n\nblk_throtl_exit assumes that -\u003equeue_lock still exists,\nso make sure that it does.\nTo do this, we stop redirecting -\u003equeue_lock to conf-\u003edevice_lock\nand leave it pointing where it is initialised - __queue_lock.\n\nAs the blk_plug functions check the -\u003equeue_lock is held, we now\ntake that spin_lock explicitly around the plug functions.  We don\u0027t\nneed the locking, just the warning removal.\n\nThis is needed for any kernel with the blk_throtl code, which is\nwhich is 2.6.37 and later.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e9c7469bb4f502dafc092166201bea1ad5fc0fbf",
      "tree": "04202b0bb88623d3005c909eaafcb280778902da",
      "parents": [
        "7bc9fddab074d6bb630344e1969e28d20b140621"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:18 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:38 2010 +0200"
      },
      "message": "md: implment REQ_FLUSH/FUA support\n\nThis patch converts md to support REQ_FLUSH/FUA instead of now\ndeprecated REQ_HARDBARRIER.  In the core part (md.c), the following\nchanges are notable.\n\n* Unlike REQ_HARDBARRIER, REQ_FLUSH/FUA don\u0027t interfere with\n  processing of other requests and thus there is no reason to mark the\n  queue congested while FLUSH/FUA is in progress.\n\n* REQ_FLUSH/FUA failures are final and its users don\u0027t need retry\n  logic.  Retry logic is removed.\n\n* Preflush needs to be issued to all member devices but FUA writes can\n  be handled the same way as other writes - their processing can be\n  deferred to request_queue of member devices.  md_barrier_request()\n  is renamed to md_flush_request() and simplified accordingly.\n\nFor linear, raid0 and multipath, the core changes are enough.  raid1,\n5 and 10 need the following conversions.\n\n* raid1: Handling of FLUSH/FUA bio\u0027s can simply be deferred to\n  request_queues of member devices.  Barrier related logic removed.\n\n* raid5: Queue draining logic dropped.  FUA bit is propagated through\n  biodrain and stripe resconstruction such that all the updated parts\n  of the stripe are written out with FUA writes if any of the dirtying\n  writes was FUA.  preread_active_stripes handling in make_request()\n  is updated as suggested by Neil Brown.\n\n* raid10: FUA bit needs to be propagated to write clones.\n\nlinear, raid0, 1, 5 and 10 tested.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Neil Brown \u003cneilb@suse.de\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": "19fdb9eefb21b72edbc365b838502780c392bad6",
      "tree": "deae04c48532d6eab64ed4b0396737bb854b5506",
      "parents": [
        "be6800a73aa2f3dc14744c3b80e676d189789f04",
        "3ff195b011d7decf501a4d55aeed312731094796"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 22 08:31:36 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 22 08:31:36 2010 +1000"
      },
      "message": "Merge commit \u00273ff195b011d7decf501a4d55aeed312731094796\u0027 into for-linus\n\nConflicts:\n\tdrivers/md/md.c\n\n- Resolved conflict in md_update_sb\n- Added extra \u0027NULL\u0027 arg to new instance of sysfs_get_dirent.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2dc40f80945ac3e5ec05c3a6c75baf09b13cee51",
      "tree": "b1f171090517f548e7c17302cef12a77aa9563b9",
      "parents": [
        "b5a20961f3479dda48bdc340354ee5469997839d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 03 15:12:04 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:59 2010 +1000"
      },
      "message": "md/linear: standardise all printk messages\n\n  md/linear:mdname:\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "21a52c6d05c15f862797736393915bfa8cd40ee9",
      "tree": "44ffb633d209457979177a52132761a368fcb976",
      "parents": [
        "cca9cf90c504d98644ace52c474770970729f0eb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 01 15:02:13 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:55 2010 +1000"
      },
      "message": "md: pass mddev to make_request functions rather than request_queue\n\nWe used to pass the personality make_request function direct\nto the block layer so the first argument had to be a queue.\nBut now we have the intermediary md_make_request so it makes\nat lot more sense to pass a struct mddev_s.\nIt makes it possible to have an mddev without its own queue too.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "490773268cf64f68da2470e07b52c7944da6312d",
      "tree": "d394aafa7203c316db6b63f128b8894e18993fca",
      "parents": [
        "2b7f22284d71975e37a82db154386348eec0e52c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Mar 25 16:20:56 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:52 2010 +1000"
      },
      "message": "md: move io accounting out of personalities into md_make_request\n\nWhile I generally prefer letting personalities do as much as possible,\ngiven that we have a central md_make_request anyway we may as well use\nit to simplify code.\nAlso this centralises knowledge of -\u003egendisk which will help later.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ef2f80ff7325b2c1888ff02ead28957b5840bf51",
      "tree": "f7d4eb0a1816c8a608ba61a9368203d7b0ac4978",
      "parents": [
        "e2218350465e7e0931676b4849b594c978437bce"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 17 11:27:00 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 17 14:38:18 2010 +1000"
      },
      "message": "md/linear: avoid possible oops and array stop\n\nSince commit ef286f6fa673cd7fb367e1b145069d8dbfcc6081\nit has been important that each personality clears\n-\u003eprivate in the -\u003estop() function, or sets it to a\nattribute group to be removed.\nlinear.c doesn\u0027t.  This can sometimes lead to an oops,\nthough it doesn\u0027t always.\n\nSuitable for 2.6.33-stable and 2.6.34.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "627a2d3c29427637f4c5d31ccc7fcbd8d312cd71",
      "tree": "f0de68842ca3b47d0152254e60d31cc561009119",
      "parents": [
        "25cf84cf377c0aae5dbcf937ea89bc7893db5176"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 08 16:44:38 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 16 17:04:24 2010 +1100"
      },
      "message": "md: deal with merge_bvec_fn in component devices better.\n\nIf a component device has a merge_bvec_fn then as we never call it\nwe must ensure we never need to.  Currently this is done by setting\nmax_sector to 1 PAGE, however this does not stop a bio being created\nwith several sub-page iovecs that would violate the merge_bvec_fn.\n\nSo instead set max_segments to 1 and set the segment boundary to the\nsame as a page boundary to ensure there is only ever one single-page\nsegment of IO requested at a time.\n\nThis can particularly be an issue when \u0027xen\u0027 is used as it is\nknown to submit multiple small buffers in a single bio.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\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": "0efb9e6191e1d3d34c1db90b829b742bc36d532e",
      "tree": "5960d97df87a7eeea56d7dbe801259fc43398d5e",
      "parents": [
        "1e50915fe0bbf7a46db0fa7e1e604d3fc95f057d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:58 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: add MODULE_DESCRIPTION for all md related modules.\n\nSuggested by  Oren Held \u003corenhe@il.ibm.com\u003e\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a2826aa92e2e14db372eda01d333267258944033",
      "tree": "9cdd3329205bf480a4782705a3db1738e3faae44",
      "parents": [
        "efa593390e70b0e3c39f6b2dca8876b6b1461e41"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:49 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:49 2009 +1100"
      },
      "message": "md: support barrier requests on all personalities.\n\nPreviously barriers were only supported on RAID1.  This is because\nother levels requires synchronisation across all devices and so needed\na different approach.\nHere is that approach.\n\nWhen a barrier arrives, we send a zero-length barrier to every active\ndevice.  When that completes - and if the original request was not\nempty -  we submit the barrier request itself (with the barrier flag\ncleared) and then submit a fresh load of zero length barriers.\n\nThe barrier request itself is asynchronous, but any subsequent\nrequest will block until the barrier completes.\n\nThe reason for clearing the barrier flag is that a barrier request is\nallowed to fail.  If we pass a non-empty barrier through a striping\nraid level it is conceivable that part of it could succeed and part\ncould fail.  That would be way too hard to deal with.\nSo if the first run of zero length barriers succeed, we assume all is\nsufficiently well that we send the request and ignore errors in the\nsecond run of barriers.\n\nRAID5 needs extra care as write requests may not have been submitted\nto the underlying devices yet.  So we flush the stripe cache before\nproceeding with the barrier.\n\nNote that the second set of zero-length barriers are submitted\nimmediately after the original request is submitted.  Thus when\na personality finds mddev-\u003ebarrier to be set during make_request,\nit should not return from make_request until the corresponding\nper-device request(s) have been queued.\n\nThat will be done in later patches.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\n"
    },
    {
      "commit": "3fa841d7e7266f6fcc1b3885b905f5153ba897d8",
      "tree": "7afa971a10eddcf52787340ea43fa1e910b5805b",
      "parents": [
        "0da3c6194ec2f32617b272df4505a1cf022faea5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:10:29 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:10:29 2009 +1000"
      },
      "message": "md: report device as congested when suspended\n\nThis should writeback from coming when the device is temporarily\nsuspended.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\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": "449aad3e25358812c43afc60918c5ad3819488e7",
      "tree": "45fab3b82fc1ed06959537a0801319045cf4c102",
      "parents": [
        "64bd660b51b2da92e99a5e97349f6558349f11c5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:58 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:58 2009 +1000"
      },
      "message": "md: Use revalidate_disk to effect changes in size of device.\n\nAs revalidate_disk calls check_disk_size_change, it will cause\nany capacity change of a gendisk to be propagated to the blockdev\ninode.  So use that instead of mucking about with locks and\ni_size_write.\n\nAlso add a call to revalidate_disk in do_md_run and a few other places\nwhere the gendisk capacity is changed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ac5e7113e74872928844d00085bd47c988f12728",
      "tree": "dabce6a99c2af9f00b33660f6b2d906cce836764",
      "parents": [
        "95fc17aac45300f45968aacd97a536ddd8db8101"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Aug 03 10:59:47 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:47 2009 +1000"
      },
      "message": "md: Push down data integrity code to personalities.\n\nThis patch replaces md_integrity_check() by two new public functions:\nmd_integrity_register() and md_integrity_add_rdev() which are both\npersonality-independent.\n\nmd_integrity_register() is called from the -\u003erun and -\u003ehot_remove\nmethods of all personalities that support data integrity.  The\nfunction iterates over the component devices of the array and\ndetermines if all active devices are integrity capable and if their\nprofiles match. If this is the case, the common profile is registered\nfor the mddev via blk_integrity_register().\n\nThe second new function, md_integrity_add_rdev() is called from the\n-\u003ehot_add_disk methods, i.e. whenever a new device is being added\nto a raid array. If the new device does not support data integrity,\nor has a profile different from the one already registered, data\nintegrity for the mddev is disabled.\n\nFor raid0 and linear, only the call to md_integrity_register() from\nthe -\u003erun method is necessary.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8f6c2e4b325a8e9f8f47febb2fd0ed4fae7d45a9",
      "tree": "6e383e2ec48b5c90fe07325a7f6ab38ea1a97dfa",
      "parents": [
        "5a4f13fad1ab5bd08dea78fc55321e429d83cddf"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Jul 01 11:13:45 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 11:13:45 2009 +1000"
      },
      "message": "md: Use new topology calls to indicate alignment and I/O sizes\n\nSwitch MD over to the new disk_stack_limits() function which checks for\naligment and adjusts preferred I/O sizes when stacking.\n\nAlso indicate preferred I/O sizes where applicable.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "495d357301e1de01fabe30ce9a555301fb4675c3",
      "tree": "cff9506eec5e4008004a913acf8f58d85eae6de6",
      "parents": [
        "af11c397fd8835c70ec0bb777104e4ab98b2d660"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:49:42 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:49:42 2009 +1000"
      },
      "message": "md/linear: use call_rcu to free obsolete \u0027conf\u0027 structures.\n\nCurrent, when we update the \u0027conf\u0027 structure, when adding a\ndrive to a linear array, we keep the old version around until\nthe array is finally stopped, as it is not safe to free it\nimmediately.\n\nNow that we have rcu protection on all accesses to \u0027conf\u0027,\nwe can use call_rcu to free it more promptly.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "af11c397fd8835c70ec0bb777104e4ab98b2d660",
      "tree": "59371fb1f955083f890dd6434e4c2f0ab9b7a97a",
      "parents": [
        "0894cc3066aaa3e75a99383c0d25feebf9b688ac"
      ],
      "author": {
        "name": "SandeepKsinha",
        "email": "sandeepksinha@gmail.com",
        "time": "Thu Jun 18 08:49:35 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:49:35 2009 +1000"
      },
      "message": "md linear: Protecting mddev with rcu locks to avoid races\n\n\nDue to the lack of memory ordering guarantees, we may have races around\nmddev-\u003econf.\n\nIn particular, the correct contents of the structure we get from\ndereferencing -\u003eprivate might not be visible to this CPU yet, and\nthey might not be correct w.r.t mddev-\u003eraid_disks.\n\nThis patch addresses the problem using rcu protection to avoid\nsuch race conditions.\n\nSigned-off-by: SandeepKsinha \u003csandeepksinha@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0894cc3066aaa3e75a99383c0d25feebf9b688ac",
      "tree": "651664e6b288e36dc9553443e334e650139851c8",
      "parents": [
        "8190e754e0723de7cecb80bdd9eb93911dfa04a1"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Jun 18 08:49:23 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:49:23 2009 +1000"
      },
      "message": "md: Move check for bitmap presence to personality code.\n\nIf the superblock of a component device indicates the presence of a\nbitmap but the corresponding raid personality does not support bitmaps\n(raid0, linear, multipath, faulty), then something is seriously wrong\nand we\u0027d better refuse to run such an array.\n\nCurrently, this check is performed while the superblocks are examined,\ni.e. before entering personality code. Therefore the generic md layer\nmust know which raid levels support bitmaps and which do not.\n\nThis patch avoids this layer violation without adding identical code\nto various personalities. This is accomplished by introducing a new\npublic function to md.c, md_check_no_bitmap(), which replaces the\nhard-coded checks in the superblock loading functions.\n\nA call to md_check_no_bitmap() is added to the -\u003erun method of each\npersonality which does not support bitmaps and assembly is aborted\nif at least one component device contains a bitmap.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "13f2682b7216ebebd72b3d5868fe7fccec91a92d",
      "tree": "a5ba7509f0f6d61b2d7b478494a210794a8e55e3",
      "parents": [
        "1b57f132231593923cb4ab99943ddd777e8745bc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:48:55 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:48:55 2009 +1000"
      },
      "message": "md: raid0/linear: ensure device sizes are rounded to chunk size.\n\nThis is currently ensured by common code, but it is more reliable to\nensure it where it is needed in personality code.\nAll the other personalities that care already round the size to\nthe chunk_size.  raid0 and linear are the only hold-outs.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9d8f0363623b3da12c43007cf77f5e1a4e8a5964",
      "tree": "0fee53971a397ade209dd36c4f1ed50db6450faf",
      "parents": [
        "fbb704efb784e2c8418e34dc3013af76bdd58101"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Jun 18 08:45:01 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:45:01 2009 +1000"
      },
      "message": "md: Make mddev-\u003echunk_size sector-based.\n\nThis patch renames the chunk_size field to chunk_sectors with the\nimplied change of semantics.  Since\n\n\tis_power_of_2(chunk_size) \u003d is_power_of_2(chunk_sectors \u003c\u003c 9)\n\t\t\t\t  \u003d is_power_of_2(chunk_sectors)\n\nthese bits don\u0027t need an adjustment for the shift.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "aece3d1f40879759f641dfbfdbb9e2593adeb43c",
      "tree": "0264ac8e02f4d08472c11b04305f8c39695d9007",
      "parents": [
        "4db7cdc859f56ecf0a186e0cfb238b5bb3af2efb"
      ],
      "author": {
        "name": "Sandeep K Sinha",
        "email": "sandeepksinha@gmail.com",
        "time": "Tue Jun 16 16:57:08 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:57:08 2009 +1000"
      },
      "message": "md: Binary search in linear raid\n\nReplace the linear search with binary search in which_dev.\n\nSigned-off-by: Sandeep K Sinha \u003csandeepksinha@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4db7cdc859f56ecf0a186e0cfb238b5bb3af2efb",
      "tree": "1ab673db74f584f0c954e0556db63304bc3de81c",
      "parents": [
        "45d4582f219619e368ea91ea1189085e1c5f1969"
      ],
      "author": {
        "name": "Sandeep K Sinha",
        "email": "sandeepksinha@gmail.com",
        "time": "Tue Jun 16 16:56:13 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:56:13 2009 +1000"
      },
      "message": "md: Removing num_sector and replacing start_sector with end_sector\n\nRemove num_sectors from dev_info and replace start_sector with\nend_sector.  This makes a lot of comparisons much simpler.\n\nSigned-off-by: Sandeep K Sinha \u003csandeepksinha@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "45d4582f219619e368ea91ea1189085e1c5f1969",
      "tree": "15c38d1090d67ecb600c395a5155f2630804d851",
      "parents": [
        "070ec55d07157a3041f92654135c3c6e2eaaf901"
      ],
      "author": {
        "name": "Sandeep K Sinha",
        "email": "sandeepksinha@gmail.com",
        "time": "Tue Jun 16 16:55:26 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:55:26 2009 +1000"
      },
      "message": "md: Removal of hash table in linear raid\n\nGet rid of sector_div and hash table for linear raid and replace\nwith a linear search in which_dev.\nThe hash table adds a lot of complexity for little if any gain.\nUltimately a binary search will be used which will have smaller\ncache foot print, a similar number of memory access, and no\ndivisions.\n\nSigned-off-by: Sandeep K Sinha \u003csandeepksinha@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "070ec55d07157a3041f92654135c3c6e2eaaf901",
      "tree": "10f24d859e669ba4a671204ce4176a2b43fdaae5",
      "parents": [
        "a6b3deafe0c50e3e873e8ed5cc8abfcb25c05eff"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:54:21 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:54:21 2009 +1000"
      },
      "message": "md: remove mddev_to_conf \"helper\" macro\n\nHaving a macro just to cast a void* isn\u0027t really helpful.\nI would must rather see that we are simply de-referencing -\u003eprivate,\nthan have to know what the macro does.\n\nSo open code the macro everywhere and remove the pointless cast.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\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": "1f403624bde3c678a166984b1e6a727a0ce06f2b",
      "tree": "b66ed37091e825bcde1cd0d333d4ebba86772805",
      "parents": [
        "80c3a6ce4ba4470379b9e6a4d9bcd9d2ee26ae03"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 14:59:03 2009 +1100"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 14:59:03 2009 +1100"
      },
      "message": "md: centralize -\u003earray_sectors modifications\n\nGet personalities out of the business of directly modifying\n-\u003earray_sectors.  Lays groundwork to introduce policy on when\n-\u003earray_sectors can be modified.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "80c3a6ce4ba4470379b9e6a4d9bcd9d2ee26ae03",
      "tree": "de88622f05a7e681ac7bff7714e8f2d8953b66ac",
      "parents": [
        "93ed05e2a56b5ee06c0100a169433b11c4aa5d0b"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 17 18:10:40 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 14:57:49 2009 +1100"
      },
      "message": "md: add \u0027size\u0027 as a personality method\n\nIn preparation for giving userspace control over -\u003earray_sectors we need\nto be able to retrieve the \u0027default\u0027 size, and the \u0027anticipated\u0027 size\nwhen a reshape is requested.  For personalities that do not reshape emit\na warning if anything but the default size is requested.\n\nIn the raid5 case we need to update -\u003eprevious_raid_disks to make the\nnew \u0027default\u0027 size available.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "dd8ac336c13fd8afdb082ebacb1cddd5cf727889",
      "tree": "0baa8111d7406774525a1053be461135257d73d2",
      "parents": [
        "58c0fed400603a802968b23ddf78f029c5a84e41"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: Represent raid device size in sectors.\n\nThis patch renames the \"size\" field of struct mdk_rdev_s to\n\"sectors\" and changes this field to store sectors instead of\nblocks.\n\nAll users of this field, linear.c, raid0.c and md.c, are fixed up\naccordingly which gets rid of many multiplications and divisions.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "43b2e5d86d8bdd77386226db0bc961529492c043",
      "tree": "601a885b1410324678cf319eee77cc54a02f2cf3",
      "parents": [
        "bff61975b3d6c18ee31457cc5b4d73042f44915f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: move md_k.h from include/linux/raid/ to drivers/md/\n\nIt really is nicer to keep related code together..\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bff61975b3d6c18ee31457cc5b4d73042f44915f",
      "tree": "3aff48088b35172e74f56ae54f0b53e76a0c2150",
      "parents": [
        "92022950c6b1bb3da90b2976b20271cdfd98b8a3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: move lots of #include lines out of .h files and into .c\n\nThis makes the includes more explicit, and is preparation for moving\nmd_k.h to drivers/md/md.h\n\nRemove include/raid/md.h as its only remaining use was to #include\nother files.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ef740c372dfd80e706dbf955d4e4aedda6c0c148",
      "tree": "8d9ef9db346ee1ba319a125c9de83cdde049510d",
      "parents": [
        "2a40a8aed083d988df6822bb9b1b08fb7ce21e1d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Mar 31 14:27:03 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:03 2009 +1100"
      },
      "message": "md: move headers out of include/linux/raid/\n\nMove the headers with the local structures for the disciplines and\nbitmap.h into drivers/md/ so that they are more easily grepable for\nhacking and not far away.  md.h is left where it is for now as there\nare some uses from the outside.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "852c8bf484a0e17ee27f413ef26e87f522af5607",
      "tree": "a2bf0b7c3a277c65cdad307a3d48ee358868769c",
      "parents": [
        "4706b349f4a8312d31b3d0cf61fe721699356920"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Feb 06 15:10:52 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Feb 06 15:10:52 2009 +1100"
      },
      "message": "md: Fix a bug in linear.c causing which_dev() to return the wrong device.\n\nab5bd5cbc8d4b868378d062eed3d4240930fbb86 introduced the following\nbug in linear software raid for large arrays on 32 bit machines:\n\nwhich_dev() computes the device holding a given sector by shifting\ndown the sector number to a 32 bit range, dividing by the array\nspacing and looking up the resulting index in the hash table of\nthe array.\n\nBecause the computed index might be slightly too small, a loop at\nthe end of which_dev() increases the index until the given sector\nactually falls into the range of the device associated with that index.\n\nThe changes of the above mentioned commit caused this loop to check\nwhether the _index_ rather than the sector number is small enough,\neffectively bypassing the loop and thus possibly returning the wrong\ndevice.\n\nAs reported by Simon Kirby, this leads to errors such as\n\n\tlinear_make_request: Sector 2340486136 out of bounds on dev sdi: 156301312 sectors, offset 2109870464\n\nFix this bug by introducing a local variable for the index so that\nthe variable containing the passed sector is left unchanged.\n\nCc: stable@kernel.org\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "159ec1fc060ab22b157a62364045f5e98749c4d3",
      "tree": "1de0edfd782245b271d2898e36ae76c00e1e1b6d",
      "parents": [
        "ccacc7d2cf03114a24ab903f710118e9e5d43273"
      ],
      "author": {
        "name": "Cheng Renquan",
        "email": "crquan@gmail.com",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "message": "md: use list_for_each_entry macro directly\n\nThe rdev_for_each macro defined in \u003clinux/raid/md_k.h\u003e is identical to\nlist_for_each_entry_safe, from \u003clinux/list.h\u003e, it should be defined to\nuse list_for_each_entry_safe, instead of reinventing the wheel.\n\nBut some calls to each_entry_safe don\u0027t really need a safe version,\njust a direct list_for_each_entry is enough, this could save a temp\nvariable (tmp) in every function that used rdev_for_each.\n\nIn this patch, most rdev_for_each loops are replaced by list_for_each_entry,\ntotally save many tmp vars; and only in the other situations that will call\nlist_del to delete an entry, the safe version is used.\n\nSigned-off-by: Cheng Renquan \u003ccrquan@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f1cd14ae52985634d0389e934eba25b5ecf24565",
      "tree": "131e1fedd27d63d30896233d695594508bdbd04f",
      "parents": [
        "a53a6c85756339f82ff19e001e90cfba2d6299a8"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Nov 06 19:41:24 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 06 19:41:24 2008 +1100"
      },
      "message": "md: linear: Fix a division by zero bug for very small arrays.\n\nWe currently oops with a divide error on starting a linear software\nraid array consisting of at least two very small (\u003c 500K) devices.\n\nThe bug is caused by the calculation of the hash table size which\ntries to compute sector_div(sz, base) with \"base\" being zero due to\nthe small size of the component devices of the array.\n\nFix this by requiring the hash spacing to be at least one which\nimplies that also \"base\" is non-zero.\n\nThis bug has existed since about 2.6.14.\n\nCc: stable@kernel.org\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fb4d8c76e56a887b9eee99fbc55fe82b18625d30",
      "tree": "0ca96887e40db671957b79d493830b9527b04949",
      "parents": [
        "ab5bd5cbc8d4b868378d062eed3d4240930fbb86"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: Remove unnecessary #includes, #defines, and function declarations.\n\nA lot of cruft has gathered over the years.  Time to remove it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ab5bd5cbc8d4b868378d062eed3d4240930fbb86",
      "tree": "39c6299f79398d7f00b50c4ba39c52e2aea22e00",
      "parents": [
        "23242fbb470ff4c8c4d41f178832cf1929273d7d"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: Convert remaining 1k representations in linear.c to sectors.\n\nThis patch renames hash_spacing and preshift to  spacing and\nsector_shift respectively with the following change of semantics:\n\nCase 1: (sizeof(sector_t) \u003c\u003d sizeof(u32)).\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn this case, we have sector_shift \u003d preshift \u003d 0 and spacing \u003d\n2 * hash_spacing.\n\nHence, the index for the hash table which is computed by the new code\nin which_dev() as sector / spacing equals the old value which was\n(sector/2) / hash_spacing.\n\nNote also that the value of nb_zone stays the same because both sz\nand base double.\n\nCase 2: (sizeof(sector_t) \u003e sizeof(u32)).\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n(aka the shifting dance case). Here we have sector_shift \u003d preshift +\n1 and\n\nspacing \u003d 2 * hash_spacing\n\nduring the computation of nb_zone and curr_sector, but\n\nspacing \u003d hash_spacing\n\nin which_dev() because in the last hunk of the patch for linear.c we\nshift down conf-\u003espacing (\u003d 2 * hash_spacing) by one more bit than\nin the old code.\n\nHence in the computation of nb_zone, sz and base have the same value\nas before, so nb_zone is not affected. Also curr_sector in the next\nhunk stays the same.\n\nIn which_dev() the hash table index is computed as\n\n(sector \u003e\u003e sector_shift) / spacing\n\nIn view of sector_shift \u003d preshift + 1 and spacing \u003d hash_spacing,\nthis equals\n\n((sector/2) \u003e\u003e preshift) / hash_spacing\n\nwhich is the value computed by the old code.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "23242fbb470ff4c8c4d41f178832cf1929273d7d",
      "tree": "c6c98d6c5fdb0caf2d0a496531a2bb18d0a9ad53",
      "parents": [
        "6283815d1853b7daf31dc4adb83e5c1dc9568251"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: linear.c: Make two local variables sector-based.\n\nThis is a preparation for representing also the remaining fields of struct\nlinear_private_data as sectors.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6283815d1853b7daf31dc4adb83e5c1dc9568251",
      "tree": "cd4f00ce17e7c274091ca9015b164d6f06611975",
      "parents": [
        "451708d2a439accbce136637ed4f156fc27371ab"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: linear: Represent dev_info-\u003esize and dev_info-\u003eoffset in sectors.\n\nRename them to num_sectors and start_sector which is more descriptive.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "451708d2a439accbce136637ed4f156fc27371ab",
      "tree": "fb0723deef88e3bfa04a112f1d92b034c55abc75",
      "parents": [
        "481d86c7ebe2ce59dfb6ccb720efa9d3fc1cf7cd"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: linear.c: Remove broken debug code.\n\nconf-\u003esmallest_size is undefined since day one of the git repo..\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "481d86c7ebe2ce59dfb6ccb720efa9d3fc1cf7cd",
      "tree": "55c51ebaa5fe89469666bd8e275d55fa244cadb1",
      "parents": [
        "e61130228ea5740e31e9646ea6d1c9d9089746c3"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: linear.c: Remove pointless initialization of curr_offset.\n\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e61130228ea5740e31e9646ea6d1c9d9089746c3",
      "tree": "6d9dec9957dae58ad516a8b17af50f93f6448309",
      "parents": [
        "80268ee9270ebe4847365a7426de91d179e870d0"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: linear.c: Fix typo in comment.\n\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6feef531f55cf4a20fd9eb39f5352e5745203603",
      "tree": "2c52b800edcbdf01abefcf27e900985c087f1b36",
      "parents": [
        "ad3316bf4eeb53c89164f759767f911072b56203"
      ],
      "author": {
        "name": "Denis ChengRq",
        "email": "crquan@gmail.com",
        "time": "Thu Oct 09 08:57:05 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:57:05 2008 +0200"
      },
      "message": "block: mark bio_split_pool static\n\nSince all bio_split calls refer the same single bio_split_pool, the bio_split\nfunction can use bio_split_pool directly instead of the mempool_t parameter;\n\nthen the mempool_t parameter can be removed from bio_split param list, and\nbio_split_pool is only referred in fs/bio.c file, can be marked static.\n\nSigned-off-by: Denis ChengRq \u003ccrquan@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "074a7aca7afa6f230104e8e65eba3420263714a5",
      "tree": "f418313e45bd55be8156c8a3e8f9a216cf63058d",
      "parents": [
        "eddb2e26b5ee3c5da68ba4bf1921ba20e2097bff"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:56:14 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:08 2008 +0200"
      },
      "message": "block: move stats from disk to part0\n\nMove stats related fields - stamp, in_flight, dkstats - from disk to\npart0 and unify stat handling such that...\n\n* part_stat_*() now updates part0 together if the specified partition\n  is not part0.  ie. part_stat_*() are now essentially all_stat_*().\n\n* {disk|all}_stat_*() are gone.\n\n* part_round_stats() is updated similary.  It handles part0 stats\n  automatically and disk_round_stats() is killed.\n\n* part_{inc|dec}_in_fligh() is implemented which automatically updates\n  part0 stats for parts other than part0.\n\n* disk_map_sector_rcu() is updated to return part0 if no part matches.\n  Combined with the above changes, this makes NULL special case\n  handling in callers unnecessary.\n\n* Separate stats show code paths for disk are collapsed into part\n  stats show code paths.\n\n* Rename disk_stat_lock/unlock() to part_stat_lock/unlock()\n\nWhile at it, reposition stat handling macros a bit and add missing\nparentheses around macro parameters.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c9959059161ddd7bf4670cf47367033d6b2f79c4",
      "tree": "6454db55f8e34361fe472358e10e0c5cfac1e366",
      "parents": [
        "e71bf0d0ee89e51b92776391c5634938236977d5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:47:21 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:06 2008 +0200"
      },
      "message": "block: fix diskstats access\n\nThere are two variants of stat functions - ones prefixed with double\nunderbars which don\u0027t care about preemption and ones without which\ndisable preemption before manipulating per-cpu counters.  It\u0027s unclear\nwhether the underbarred ones assume that preemtion is disabled on\nentry as some callers don\u0027t do that.\n\nThis patch unifies diskstats access by implementing disk_stat_lock()\nand disk_stat_unlock() which take care of both RCU (for partition\naccess) and preemption (for per-cpu counter access).  diskstats access\nshould always be enclosed between the two functions.  As such, there\u0027s\nno need for the versions which disables preemption.  They\u0027re removed\nand double underbars ones are renamed to drop the underbars.  As an\nextra argument is added, there\u0027s no danger of using the old version\nunconverted.\n\ndisk_stat_lock() uses get_cpu() and returns the cpu index and all\ndiskstat functions which access per-cpu counters now has @cpu\nargument to help RT.\n\nThis change adds RCU or preemption operations at some places but also\ncollapses several preemption ops into one at others.  Overall, the\nperformance difference should be negligible as all involved ops are\nvery lightweight per-cpu ones.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "8a392625b665c676a77c62f8608d10ff430bcb83",
      "tree": "4000a65d61baed73200e47f91dea5263ed16edd0",
      "parents": [
        "519f0141f1c42e2b8b59c7dea005cbf6095358e8",
        "4b80991c6cb9efa607bc4fd6f3ecdf5511c31bb0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 21 10:29:12 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 21 10:29:12 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md: (52 commits)\n  md: Protect access to mddev-\u003edisks list using RCU\n  md: only count actual openers as access which prevent a \u0027stop\u0027\n  md: linear: Make array_size sector-based and rename it to array_sectors.\n  md: Make mddev-\u003earray_size sector-based.\n  md: Make super_type-\u003erdev_size_change() take sector-based sizes.\n  md: Fix check for overlapping devices.\n  md: Tidy up rdev_size_store a bit:\n  md: Remove some unused macros.\n  md: Turn rdev-\u003esb_offset into a sector-based quantity.\n  md: Make calc_dev_sboffset() return a sector count.\n  md: Replace calc_dev_size() by calc_num_sectors().\n  md: Make update_size() take the number of sectors.\n  md: Better control of when do_md_stop is allowed to stop the array.\n  md: get_disk_info(): Don\u0027t convert between signed and unsigned and back.\n  md: Simplify restart_array().\n  md: alloc_disk_sb(): Return proper error value.\n  md: Simplify sb_equal().\n  md: Simplify uuid_equal().\n  md: sb_equal(): Fix misleading printk.\n  md: Fix a typo in the comment to cmd_match().\n  ...\n"
    },
    {
      "commit": "d6e2215052810678bc9782fd980b52706fc71f50",
      "tree": "63f355d1e072b6c4c48913e114c0154a5b08d792",
      "parents": [
        "f233ea5c9e0d8b95e4283bf6a3436b88f6fd3586"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Jul 21 17:05:25 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:25 2008 +1000"
      },
      "message": "md: linear: Make array_size sector-based and rename it to array_sectors.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f233ea5c9e0d8b95e4283bf6a3436b88f6fd3586",
      "tree": "8a36b621de46da23f3957c6e3ea4d653c2937544",
      "parents": [
        "15f4a5fdf3aa07b53f6a7969664741db5882e485"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Jul 21 17:05:22 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:22 2008 +1000"
      },
      "message": "md: Make mddev-\u003earray_size sector-based.\n\nThis patch renames the array_size field of struct mddev_s to array_sectors\nand converts all instances to use units of 512 byte sectors instead of 1k\nblocks.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "cc371e66e340f35eed8dc4651c7c18e754c7fb26",
      "tree": "5a2d6727eb07a05999c531a90da43ab1c36b713e",
      "parents": [
        "b24498d477a14680fc3bb3ad884fa9fa76a2d237"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jul 03 09:53:43 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 03 13:21:15 2008 +0200"
      },
      "message": "Add bvec_merge_data to handle stacked devices and -\u003emerge_bvec()\n\nWhen devices are stacked, one device\u0027s merge_bvec_fn may need to perform\nthe mapping and then call one or more functions for its underlying devices.\n\nThe following bio fields are used:\n  bio-\u003ebi_sector\n  bio-\u003ebi_bdev\n  bio-\u003ebi_size\n  bio-\u003ebi_rw  using bio_data_dir()\n\nThis patch creates a new struct bvec_merge_data holding a copy of those\nfields to avoid having to change them directly in the struct bio when\ngoing down the stack only to have to change them back again on the way\nback up.  (And then when the bio gets mapped for real, the whole\nexercise gets repeated, but that\u0027s a problem for another day...)\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "13864515f7bf6cabd60e63c62e09d311386ae1f1",
      "tree": "3f46035321aedab46c787cac01b17e6b24934423",
      "parents": [
        "9bbbca3a0ee09293108b67835c6bdf6196d7bcb3"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@novell.com",
        "time": "Sat Jun 28 08:31:19 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:19 2008 +1000"
      },
      "message": "linear: correct disk numbering error check\n\nFrom: \"Nikanth Karthikesan\" \u003cknikanth@novell.com\u003e\n\nCorrect disk numbering problem check.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e7e72bf641b1fc7b9df6f40bd2c36dfccd8d647c",
      "tree": "81b1db5434c9635bf23fb40415056e10390cd692",
      "parents": [
        "4920916f728fe3c51f54c25ab7b3d271254aab5a"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Wed May 14 16:05:54 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 14 19:11:15 2008 -0700"
      },
      "message": "Remove blkdev warning triggered by using md\n\nAs setting and clearing queue flags now requires that we hold a spinlock\non the queue, and as blk_queue_stack_limits is called without that lock,\nget the lock inside blk_queue_stack_limits.\n\nFor blk_queue_stack_limits to be able to find the right lock, each md\npersonality needs to set q-\u003equeue_lock to point to the appropriate lock.\nThose personalities which didn\u0027t previously use a spin_lock, us\nq-\u003e__queue_lock.  So always initialise that lock when allocated.\n\nWith this in place, setting/clearing of the QUEUE_FLAG_PLUGGED bit will no\nlonger cause warnings as it will be clear that the proper lock is held.\n\nThanks to Dan Williams for review and fixing the silly bugs.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: Dan Williams \u003cdan.j.williams@intel.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Alistair John Strachan \u003calistair@devzero.co.uk\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Jacek Luczak \u003cdifrost.kernel@gmail.com\u003e\nCc: Prakash Punnoor \u003cprakash@punnoor.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d089c6af10c2be5988f03667d6d22fe6085fbe5e",
      "tree": "815eb0596bd7c908f30c268da6b5c5eff0e0bc21",
      "parents": [
        "29ac4aa3fc68a86279aca50f20df4d614de2e204"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 06 01:39:59 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:19 2008 -0800"
      },
      "message": "md: change ITERATE_RDEV to rdev_for_each\n\nAs this is more in line with common practice in the kernel.  Also swap the\nargs around to be more like list_for_each.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2ad8b1ef11c98c5603580878aebf9f1bc74129e4",
      "tree": "f7bdc2484513f6ffd174b1385bb216dcf97d2c78",
      "parents": [
        "d85532ed284e63b5c56eaf2418f262822af60be4"
      ],
      "author": {
        "name": "Alan D. Brunelle",
        "email": "Alan.Brunelle@hp.com",
        "time": "Wed Nov 07 14:26:56 2007 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Nov 09 13:41:32 2007 +0100"
      },
      "message": "Add UNPLUG traces to all appropriate places\n\nAdded blk_unplug interface, allowing all invocations of unplugs to result\nin a generated blktrace UNPLUG.\n\nSigned-off-by: Alan D. Brunelle \u003cAlan.Brunelle@hp.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "fd5d806266935179deda1502101624832eacd01f",
      "tree": "b0d01c2ed7d754f2a6daef6c77d108a81d8a470e",
      "parents": [
        "bf2de6f5a4faf0197268f18d08969b003b87b6e8"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Oct 16 11:05:02 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Oct 16 11:05:02 2007 +0200"
      },
      "message": "block: convert blkdev_issue_flush() to use empty barriers\n\nThen we can get rid of -\u003eissue_flush_fn() and all the driver private\nimplementations of that.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6712ecf8f648118c3363c142196418f89a510b90",
      "tree": "347d39a7d5a7ed96d3b1afecd28de2a0f98b98c9",
      "parents": [
        "5bb23a688b2de23d7765a1dd439d89c038378978"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Sep 27 12:47:43 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Wed Oct 10 09:25:57 2007 +0200"
      },
      "message": "Drop \u0027size\u0027 argument from bio_endio and bi_end_io\n\nAs bi_end_io is only called once when the reqeust is complete,\nthe \u0027size\u0027 argument is now redundant.  Remove it.\n\nNow there is no need for bio_endio to subtract the size completed\nfrom bi_size.  So don\u0027t do that either.\n\nWhile we are at it, change bi_end_io to return void.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "165125e1e480f9510a5ffcfbfee4e3ee38c05f23",
      "tree": "8009c8a5ff09e26dc2418d42f66ecafb055c52a2",
      "parents": [
        "f695baf2df9e0413d3521661070103711545207a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 24 09:28:11 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 24 09:28:11 2007 +0200"
      },
      "message": "[BLOCK] Get rid of request_queue_t typedef\n\nSome of the code has been gradually transitioned to using the proper\nstruct request_queue, but there\u0027s lots left. So do a full sweet of\nthe kernel and get rid of this typedef and replace its uses with\nthe proper type.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a778b73ff793d34c0082f76110f73a7754915067",
      "tree": "54bf868afb3375cfdb0d01d6ce9e5eea47395f85",
      "parents": [
        "ab6085c795a71b6a21afe7469d30a365338add7a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 23 13:58:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:14 2007 -0700"
      },
      "message": "md: fix bug with linear hot-add and elsewhere\n\nAdding a drive to a linear array seems to have stopped working, due to changes\nelsewhere in md, and insufficient ongoing testing...\n\nSo the patch to make linear hot-add work in the first place introduced a\nsubtle bug elsewhere that interracts poorly with older version of mdadm.\n\nThis fixes it all up.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bed31ed9e1cd71d98ff0bc9212100adee523a10a",
      "tree": "bbba995c877dfc161d0ad5e789be684084e1dfe0",
      "parents": [
        "48670a1e018a9c0b83dc78e3b71ffb26391ee4b6"
      ],
      "author": {
        "name": "Andy Isaacson",
        "email": "adi@hexapodia.org",
        "time": "Fri Mar 16 13:38:04 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Mar 16 19:25:03 2007 -0700"
      },
      "message": "[PATCH] fix read past end of array in md/linear.c\n\nWhen iterating through an array, one must be careful to test one\u0027s index\nvariable rather than another similarly-named variable.\n\nThe loop will read off the end of conf-\u003edisks[] in the following\n(pathological) case:\n\n  % dd bs\u003d1 seek\u003d840716287 if\u003d/dev/zero of\u003dd1 count\u003d1\n  % for i in 2 3 4; do dd if\u003d/dev/zero of\u003dd$i bs\u003d1k count\u003d$(($i+150)); done\n  % ./vmlinux ubd0\u003droot ubd1\u003dd1 ubd2\u003dd2 ubd3\u003dd3 ubd4\u003dd4\n  # mdadm -C /dev/md0 --level\u003dlinear --raid-devices\u003d4 /dev/ubd[1234]\n\nadding some printks, I saw this:\n\n  [42949374.960000] hash_spacing \u003d 821120\n  [42949374.960000] cnt          \u003d 4\n  [42949374.960000] min_spacing  \u003d 801\n  [42949374.960000] j\u003d0 size\u003d820928 sz\u003d820928\n  [42949374.960000] i\u003d0 sz\u003d820928 hash_spacing\u003d820928\n  [42949374.960000] j\u003d1 size\u003d64 sz\u003d64\n  [42949374.960000] j\u003d2 size\u003d64 sz\u003d128\n  [42949374.960000] j\u003d3 size\u003d64 sz\u003d192\n  [42949374.960000] j\u003d4 size\u003d1515870810 sz\u003d1515871002\n\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nAcked-by: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nCc: \u003cstable@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": "26be34dc3a46be983352dd89683db374b0cb73fa",
      "tree": "296ed9d019ac56d4a6ea0909f1cf11bdfd08a3e5",
      "parents": [
        "c04be0aa82ff535e3676ab3e573957bdeef41879"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 03 01:15:53 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:18 2006 -0700"
      },
      "message": "[PATCH] md: define backing_dev_info.congested_fn for raid0 and linear\n\nEach backing_dev needs to be able to report whether it is congested, either by\nmodulating BDI_*_congested in -\u003estate, or by defining a -\u003econgested_fn.\nmd/raid did neither of these.  This patch add a congested_fn which simply\nchecks all component devices to see if they are congested.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f9abd1ace43d6186268856dbec2ebf411218d6ca",
      "tree": "63ab66465c56e8e9fcbbf765f135838171fdd77d",
      "parents": [
        "af2bc7d222c2700ccda060184d7bced7d7cb9fc2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Aug 05 12:14:07 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Aug 06 08:57:46 2006 -0700"
      },
      "message": "[PATCH] md: Fix a bug that recently crept into md/linear\n\nA recent patch that allowed linear arrays to be reconfigured on-line\nallowed in a bug which results in divide by zero - not all\nmddev-\u003earray_size were converted to conf-\u003earray_size.\n\nThis patch finished the conversion and fixed the bug.\n\nThe offending patch was commit 7c7546ccf6463edbeee8d9aac6de7be1cd80d08a.\n\nThanks to Simon Kirby \u003csim@netnation.com\u003e for the bug report.\n\nCc: Simon Kirby \u003csim@netnation.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7c7546ccf6463edbeee8d9aac6de7be1cd80d08a",
      "tree": "56c1f734db9f8a66a7c8c5ef11fb35e07dbb2f91",
      "parents": [
        "5fd6c1dce06ec24ef3de20fe0c7ecf2ba9fe5ef9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jun 26 00:27:41 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:37 2006 -0700"
      },
      "message": "[PATCH] md: allow a linear array to have drives added while active\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d9d166c2a9d5d01af34396793950aa695883eed4",
      "tree": "6cb593cc0636476ebec9a9690aa48997510f9701",
      "parents": [
        "8bb93aaca2062cd54cc2c58c76ee8409cae209a7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:51 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:09 2006 -0800"
      },
      "message": "[PATCH] md: allow array level to be set textually via sysfs\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2604b703b6b3db80e3c75ce472a54dfd0b7bf9f4",
      "tree": "8c0e985c455ff35af24fbe60d8a3f5a276034370",
      "parents": [
        "a24a8dd858e0ba50f06a9fd8f61fe8c4fe7a8d8e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:06 2006 -0800"
      },
      "message": "[PATCH] md: remove personality numbering from md\n\nmd supports multiple different RAID level, each being implemented by a\n\u0027personality\u0027 (which is often in a separate module).\n\nThese personalities have fairly artificial \u0027numbers\u0027.  The numbers\nare use to:\n 1- provide an index into an array where the various personalities\n    are recorded\n 2- identify the module (via an alias) which implements are particular\n    personality.\n\nNeither of these uses really justify the existence of personality numbers.\nThe array can be replaced by a linked list which is searched (array lookup\nonly happens very rarely).  Module identification can be done using an alias\nbased on level rather than \u0027personality\u0027 number.\n\nThe current \u0027raid5\u0027 modules support two level (4 and 5) but only one\npersonality.  This slight awkwardness (which was handled in the mapping from\nlevel to personality) can be better handled by allowing raid5 to register 2\npersonalities.\n\nWith this change in place, the core md module does not need to have an\nexhaustive list of all possible personalities, so other personalities can be\nadded independently.\n\nThis patch also moves the check for chunksize being non-zero into the -\u003erun\nroutines for the personalities that need it, rather than having it in core-md.\n This has a side effect of allowing \u0027faulty\u0027 and \u0027linear\u0027 not to have a\nchunk-size set.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9ffae0cf3ea02f75d163922accfd3e592d87adde",
      "tree": "4974727e9f36e1b618b68d2789644ee3a0d7a371",
      "parents": [
        "2d1f3b5d1b2cd11a162eb29645df749ec0036413"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:32 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:05 2006 -0800"
      },
      "message": "[PATCH] md: convert md to use kzalloc throughout\n\nReplace multiple kmalloc/memset pairs with kzalloc calls.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a362357b6cd62643d4dda3b152639303d78473da",
      "tree": "fe4ce823e638ded151edcb142f28a240860f0d33",
      "parents": [
        "d72d904a5367ad4ca3f2c9a2ce8c3a68f0b28bf0"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Nov 01 09:26:16 2005 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Nov 01 09:26:16 2005 +0100"
      },
      "message": "[BLOCK] Unify the seperate read/write io stat fields into arrays\n\nInstead of having -\u003eread_sectors and -\u003ewrite_sectors, combine the two\ninto -\u003esectors[2] and similar for the other fields. This saves a branch\nseveral places in the io path, since we don\u0027t have to care for what the\nactual io direction is. On my x86-64 box, that\u0027s 200 bytes less text in\njust the core (not counting the various drivers).\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "15945fee6f09bff1f86b1a735b5888dc59cf38e3",
      "tree": "ed2f66ceccfa30867035e7ba7be46159e97e4e4d",
      "parents": [
        "4b6d287f627b5fb6a49f78f9e81649ff98c62bb7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@cse.unsw.edu.au",
        "time": "Fri Sep 09 16:23:47 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 09 16:39:10 2005 -0700"
      },
      "message": "[PATCH] md: support md/linear array with components greater than 2 terabytes.\n\nlinear currently uses division by the size of the smallest componenet device\nto find which device a request goes to.  If that smallest device is larger\nthan 2 terabytes, then the division will not work on some systems.\n\nSo we introduce a pre-shift, and take care not to make the hash table too\nlarge, much like the code in raid0.\n\nAlso get rid of conf-\u003enr_zones, which is not needed.\n\nSigned-off-by: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e5dcdd80a60627371f40797426273048630dc8ca",
      "tree": "1621f68394ceaa4da86d89c6da3b93fd306415fc",
      "parents": [
        "3ec67ac1a399d576d48b0736096bcce7721fe3cf"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@cse.unsw.edu.au",
        "time": "Fri Sep 09 16:23:41 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 09 16:39:09 2005 -0700"
      },
      "message": "[PATCH] md: fail IO request to md that require a barrier.\n\nmd does not yet support BIO_RW_BARRIER, so be honest about it and fail\n(-EOPNOTSUPP) any such requests.\n\nSigned-off-by: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "990a8baf568ca1d0ae65e59783ff821794118d07",
      "tree": "1fe187b2f119f7a9d96d56380b211f9ddb9f8390",
      "parents": [
        "8a5e9cf1d6626586ff08e49f400a006a9f0c3275"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "juhl-lkml@dif.dk",
        "time": "Tue Jun 21 17:17:30 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 19:07:48 2005 -0700"
      },
      "message": "[PATCH] md: remove unneeded NULL checks before kfree\n\nThis patch removes some unneeded checks of pointers being NULL before\ncalling kfree() on them.  kfree() handles NULL pointers just fine, checking\nfirst is pointless.\n\nSigned-off-by: Jesper Juhl \u003cjuhl-lkml@dif.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "29ac8e056f2016a8404edc02749d095019aa1f82",
      "tree": "e397738144d80b3c3d78edde36ab739892f4d3dc",
      "parents": [
        "8f332287bc3f2801ba43682fd79baf24dc8ac1ce"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@cse.unsw.edu.au",
        "time": "Mon May 16 21:53:15 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue May 17 07:59:11 2005 -0700"
      },
      "message": "[PATCH] md: fix splitting of md/linear request that cross a device boundary\n\nWhen a request crosses a boundary between devices, it needs to be split.\nBut where we should calculate the amount of the request before the boundary\nto find the split-point, we care currently calculating the amount that is\n*after* the boundary !!!\n\nSigned-off-by: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
