)]}'
{
  "log": [
    {
      "commit": "3b7433b8a8a83c87972065b1852b7dcae691e464",
      "tree": "93fa2c003f8baef5ab0733b53bac77961ed5240c",
      "parents": [
        "4a386c3e177ca2fbc70c9283d0b46537844763a0",
        "6ee0578b4daaea01c96b172c6aacca43fd9807a6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 12:42:58 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 12:42:58 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: (55 commits)\n  workqueue: mark init_workqueues() as early_initcall()\n  workqueue: explain for_each_*cwq_cpu() iterators\n  fscache: fix build on !CONFIG_SYSCTL\n  slow-work: kill it\n  gfs2: use workqueue instead of slow-work\n  drm: use workqueue instead of slow-work\n  cifs: use workqueue instead of slow-work\n  fscache: drop references to slow-work\n  fscache: convert operation to use workqueue instead of slow-work\n  fscache: convert object to use workqueue instead of slow-work\n  workqueue: fix how cpu number is stored in work-\u003edata\n  workqueue: fix mayday_mask handling on UP\n  workqueue: fix build problem on !CONFIG_SMP\n  workqueue: fix locking in retry path of maybe_create_worker()\n  async: use workqueue for worker pool\n  workqueue: remove WQ_SINGLE_CPU and use WQ_UNBOUND instead\n  workqueue: implement unbound workqueue\n  workqueue: prepare for WQ_UNBOUND implementation\n  libata: take advantage of cmwq and remove concurrency limitations\n  workqueue: fix worker management invocation without pending works\n  ...\n\nFixed up conflicts in fs/cifs/* as per Tejun. Other trivial conflicts in\ninclude/linux/workqueue.h, kernel/trace/Kconfig and kernel/workqueue.c\n"
    },
    {
      "commit": "acad76272c6df8ea1900da334764c05a528598c3",
      "tree": "424215aa5b224ee51bb07e3df27fb22d86b62224",
      "parents": [
        "155bf48f10fc3c8e0e3125e221981328cd925cf4"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Mon Jul 05 15:45:20 2010 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Sun Aug 01 19:36:03 2010 -0400"
      },
      "message": "[libata] add ATA_CMD_DSM to ata_get_cmd_descript\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "ad72cf9885c536e3adae03f8337557ac9dd1e4bb",
      "tree": "e93af7f241987ffe365792c0130d182b0ac890d1",
      "parents": [
        "d313dd85ad846bc768d58e9ceb28588f917f4c9a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 02 10:03:52 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 02 10:59:24 2010 +0200"
      },
      "message": "libata: take advantage of cmwq and remove concurrency limitations\n\nlibata has two concurrency related limitations.\n\na. ata_wq which is used for polling PIO has single thread per CPU.  If\n   there are multiple devices doing polling PIO on the same CPU, they\n   can\u0027t be executed simultaneously.\n\nb. ata_aux_wq which is used for SCSI probing has single thread.  In\n   cases where SCSI probing is stalled for extended period of time\n   which is possible for ATAPI devices, this will stall all probing.\n\n#a is solved by increasing maximum concurrency of ata_wq.  Please note\nthat polling PIO might be used under allocation path and thus needs to\nbe served by a separate wq with a rescuer.\n\n#b is solved by using the default wq instead and achieving exclusion\nvia per-port mutex.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Jeff Garzik \u003cjgarzik@pobox.com\u003e\n"
    },
    {
      "commit": "fe06e5f9b7c61dc567edace3f4909672067f7d7e",
      "tree": "b2242169e8e3b32c63925ed9901fff9d49c26192",
      "parents": [
        "c429137a67b82788d24682153bb9c96501a9ef34"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon May 10 21:41:39 2010 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed May 19 13:36:46 2010 -0400"
      },
      "message": "libata-sff: separate out BMDMA EH\n\nSome of error handling logic in ata_sff_error_handler() and all of\nata_sff_post_internal_cmd() are for BMDMA.  Create\nata_bmdma_error_handler() and ata_bmdma_post_internal_cmd() and move\nBMDMA part into those.\n\nWhile at it, change DMA protocol check to ata_is_dma(), fix\npost_internal_cmd to call ap-\u003eops-\u003ebmdma_stop instead of directly\ncalling ata_bmdma_stop() and open code hardreset selection so that\nata_std_error_handler() doesn\u0027t have to know about sff hardreset.\n\nAs these two functions are BMDMA specific, there\u0027s no reason to check\nfor bmdma_addr before calling bmdma methods if the protocol of the\nfailed command is DMA.  sata_mv and pata_mpc52xx now don\u0027t need to set\n.post_internal_cmd to ATA_OP_NULL and pata_icside and sata_qstor don\u0027t\nneed to set it to their bmdma_stop routines.\n\nata_sff_post_internal_cmd() becomes noop and is removed.\n\nThis fixes p3 described in clean-up-BMDMA-initialization patch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "c429137a67b82788d24682153bb9c96501a9ef34",
      "tree": "b24ed75908f08cc9cddb19efc74fcb46be75de8f",
      "parents": [
        "5fe7454aa9c6ef5fcf506b0f2dfc20f696891f1a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon May 10 21:41:38 2010 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed May 19 13:35:49 2010 -0400"
      },
      "message": "libata-sff: port_task is SFF specific\n\nport_task is tightly bound to the standard SFF PIO HSM implementation.\nUsing it for any other purpose would be error-prone and there\u0027s no\nsuch user and if some drivers need such feature, it would be much\nbetter off using its own.  Move it inside CONFIG_ATA_SFF and rename it\nto sff_pio_task.\n\nThe only function which is exposed to the core layer is\nata_sff_flush_pio_task() which is renamed from ata_port_flush_task()\nand now also takes care of resetting hsm_task_state to HSM_ST_IDLE,\nwhich is possible as it\u0027s now specific to PIO HSM.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "a09bf4cd53b8ab000197ef81f15d50f29ecf973c",
      "tree": "541b102b5145690addaa72d76f83b8f79a337ee1",
      "parents": [
        "4c44f309cd396c18b096d31f03126824c685dbe2"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Apr 22 21:59:13 2010 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 22 21:59:13 2010 -0400"
      },
      "message": "libata: ensure NCQ error result taskfile is fully initialized\nbefore returning it via qc-\u003eresult_tf.\n\nCc: stable@kernel.org\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "fa41efdae7de61191a7bda3a00e88ef69afb5bb9",
      "tree": "6bd4a8d48bbf0e8be01304e0914a575916e2b9fc",
      "parents": [
        "c81eddb0e3728661d1585fbc564449c94165cc36"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 15 08:57:37 2010 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 22 21:47:52 2010 -0400"
      },
      "message": "libata: fix locking around blk_abort_request()\n\nblk_abort_request() expectes queue lock to be held by the caller.\nGrab it before calling the function.\n\nLack of this synchronization led to infinite loop on corrupt\nq-\u003etimeout_list.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: stable@kernel.org\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "534ead709235b967b659947c55d9130873a432c4",
      "tree": "8631f9b96e6e2d9e846012a62e165ce35e681290",
      "parents": [
        "24bc7347da73a9ed3383056c3d0f28c0e361621e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 14 16:18:09 2010 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed Jan 20 14:25:11 2010 -0500"
      },
      "message": "libata: retry FS IOs even if it has failed with AC_ERR_INVALID\n\nlibata currently doesn\u0027t retry if a command fails with AC_ERR_INVALID\nassuming that retrying won\u0027t get it any further even if retried.\nHowever, a failure may be classified as invalid through hardware\nglitch (incorrect reading of the error register or firmware bug) and\nthere isn\u0027t whole lot to gain by not retrying as actually invalid\ncommands will be failed immediately.  Also, commands serving FS IOs\nare extremely unlikely to be invalid.  Retry FS IOs even if it\u0027s\nmarked invalid.\n\nTransient and incorrect invalid failure was seen while debugging\nfirmware related issue on Samsung n130 on bko#14314.\n\n  http://bugzilla.kernel.org/show_bug.cgi?id\u003d14314\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Johannes Stezenbach \u003cjs@sig21.net\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "6013efd8860bf15c1f86f365332642cfe557152f",
      "tree": "9d7fe6d92ed9e067cda3b2e62d69f50175450e97",
      "parents": [
        "fd6c29e3dec9e44ecbcba3c57efa08af70a10f1e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Nov 19 15:36:45 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Dec 03 02:46:35 2009 -0500"
      },
      "message": "libata: retry failed FLUSH if device didn\u0027t fail it\n\nIf ATA device failed FLUSH, it means that the device failed to write\nout some amount of data and the error needs to be reported to upper\nlayers. As retries can\u0027t recover the lost data, FLUSH failures need to\nbe reported immediately in general.\n\nHowever, if FLUSH fails due to transmission errors, the FLUSH needs to\nbe retried; otherwise, filesystems may switch to RO mode and/or raid\narray may drop a drive for a random transmission glitch.\n\nThis condition can be rather easily reproduced on certain ahci\ncontrollers which go through a PHY event after powersave mode switch +\next4 combination.  Powersave mode switch is often closely followed by\nflush from the filesystem failing the FLUSH with ATA bus error which\nmakes the filesystem code believe that data is lost and drop to RO\nmode.  This was reported in the following bugzilla bug.\n\n  http://bugzilla.kernel.org/show_bug.cgi?id\u003d14543\n\nThis patch makes libata EH retry FLUSH if it wasn\u0027t failed by the\ndevice.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Andrey Vihrov \u003candrey.vihrov@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "4f7c2874995ac48a4622755b8bd159eb2fb6d8f4",
      "tree": "ab355d2b7392a8db4807bb7b31eb61190afa01e0",
      "parents": [
        "6489e3262e6b188a1a009b65e8a94b7aa17645b7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 15 23:37:32 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Oct 16 06:21:54 2009 -0400"
      },
      "message": "libata: fix PMP initialization\n\nCommit 842faa6c1a1d6faddf3377948e5cf214812c6c90 fixed error handling\nduring attach by not committing detected device class to dev-\u003eclass\nwhile attaching a new device.  However, this change missed the PMP\nclass check in the configuration loop causing a new PMP device to go\nthrough ata_dev_configure() as if it were an ATA or ATAPI device.\n\nAs PMP device doesn\u0027t have a regular IDENTIFY data, this makes\nata_dev_configure() tries to configure a PMP device using an invalid\ndata.  For the most part, it wasn\u0027t too harmful and went unnoticed but\nthis ends up clearing dev-\u003eflags which may have ATA_DFLAG_AN set by\nsata_pmp_attach().  This means that SATA_PMP_FEAT_NOTIFY ends up being\ndisabled on PMPs and on PMPs which honor the flag breaks hotplug\nsupport.\n\nThis problem was discovered and reported by Ethan Hsiao.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Ethan Hsiao \u003cethanhsiao@jmicron.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "3b761d3d437cffcaf160a5d37eb6b3b186e491d5",
      "tree": "c1f501cb350776f60eb1d4deaf206b10ed852c4e",
      "parents": [
        "f80ae7e45a0e03da188494c6e947a5c8b0cdfb4a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Oct 06 17:08:40 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Oct 06 20:58:18 2009 -0400"
      },
      "message": "libata: fix incorrect link online check during probe\n\nWhile trying to work around spurious detection retries for\nnon-existent devices on slave links, commit\n816ab89782ac139a8b65147cca990822bb7e8675 incorrectly added link\noffline check logic before ata_eh_thaw() was called.  This means that\nif an occupied link goes down briefly at the time that offline check\nwas performed, device class will be cleared to ATA_DEV_NONE and libata\nwouldn\u0027t retry thus failing detection of the device.\n\nThe offline check should be done after the port is thawed together\nwith online check so that such link glitches can be detected by the\ninterrupt handler and handled properly.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Tim Blechmann \u003ctim@klingt.org\u003e\nCc: stable@kernel.org\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "6521148c6449724c3b707820b9c535c7e8b8afcd",
      "tree": "b976cb33b4e7f09bdc765a09702659c14474c540",
      "parents": [
        "1e641060c4b564e820abdb6a4c7a603a0d386250"
      ],
      "author": {
        "name": "Robert Hancock",
        "email": "hancockrwd@gmail.com",
        "time": "Tue Jul 14 20:43:39 2009 -0600"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Sep 01 19:47:20 2009 -0400"
      },
      "message": "libata: add command name parsing for error output\n\nThis patch improve libata\u0027s output for error/notification messages\nto allow easier comprehension and debugging:\n\nWhen ATAPI commands issued through the SCSI layer fail, use SCSI\nfunctions to print the CDB in human-readable form instead of just\ndumping out the CDB in hex.\n\nPrint out the name of the failed command (as defined by the ATA\nspecification) in error handling output along with the raw register\ncontents.\n\nWhen reporting status of ACPI taskfile commands executed on resume,\nalso output the names of the commands being executed (or not) in\nreadable form.\n\nSince the extra data for printing command names increases kernel\nsize slightly, a config option has been added to allow disabling\ncommand name output (as well as some of the error register parsing)\nfor those highly sensitive to kernel text size.\n\nSigned-off-by: Robert Hancock \u003chancockrwd@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "1e641060c4b564e820abdb6a4c7a603a0d386250",
      "tree": "6ec27e9a33f0b64972a040deaca9eb3a25b19229",
      "parents": [
        "388539f3ff0cf1de926b03f94e1eec112358f74d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 17 11:58:33 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Sep 01 19:47:19 2009 -0400"
      },
      "message": "libata: clear eh_info on reset completion\n\nResets are done with port frozen but some controllers still issue\ninterrupts during reset and they may end up recording error conditions\nin ehi leading to unnecessary EH retrials.\n\nThis patch makes ata_eh_reset() clear ehi on reset completion.  As\nreset is the most severe recovery action, there\u0027s nothing to lose by\nclearing ehi on its completion.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Zdenek Kaspar \u003czkaspar82@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "54c38444fad6a99b4b19512f8f0055d69115e69e",
      "tree": "47d9271855d66676f1a70bac0f9e25d1781ce3e9",
      "parents": [
        "37d0892c5a94e208cf863e3b7bac014edee4346d"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue Apr 07 19:13:15 2009 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Sep 01 19:47:19 2009 -0400"
      },
      "message": "[libata] EH: freeze port before aborting commands\n\nCall the -\u003efreeze() hook before aborting qc\u0027s, because some hardware\nrequires special handling prior to accessing the taskfile registers\n(for diagnosis/analysis/reset).  Most notably, hardware may wish to\ndisable the DMA engine or interrupts in the -\u003efreeze() hook.\n\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "705d201414382b0966d7c903d738dfdb9380e4af",
      "tree": "8b5b6c19e6ea3837e4775cd3b00aa17c4442a1d4",
      "parents": [
        "044dcc824a167e3d39ba69a49e2b723dd10678f6"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Sun Jul 26 16:21:01 2009 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Jul 28 21:05:41 2009 -0400"
      },
      "message": "libata: add missing NULL pointer check to ata_eh_reset()\n\ndrivers/ata/libata-eh.c +2403 ata_eh_reset(80) warning: variable derefenced before check \u0027slave\u0027\n\nPlease note that this is _not_ a real bug at the moment since ata_eh_context\nstructure is embedded into ata_list structure and the code alwas checks for\n\u0027slave\u0027 before accessing \u0027sehc\u0027.\n\nAnyway lets add missing check and always have a valid \u0027sehc\u0027 pointer (which\nmakes code easier to understand and prevents introducing some possible bugs\nin the future).\n\nReported-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nCc: corbet@lwn.net\nCc: eteo@redhat.com\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "fe2c4d018fc6127610fef677e020b3bb41cfaaaf",
      "tree": "ce6bfcc0a34066c246667a31bf9f1d5f9538f651",
      "parents": [
        "6847e154e3cd74fca6084124c097980a7634285a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jul 08 12:16:37 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Jul 14 22:41:28 2009 -0400"
      },
      "message": "libata: fix follow-up SRST failure path\n\nata_eh_reset() was missing error return handling after follow-up SRST\nallowing EH to continue the normal probing path after reset failure.\nThis was discovered while testing new WD 2TB drives which take longer\nthan 10 secs to spin up and cause the first follow-up SRST to time\nout.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "98a1708de1bfa5fe1c490febba850d6043d3c7fa",
      "tree": "823104983ff8cd44fc8f3dbfbcc583dc69ee30b2",
      "parents": [
        "ab2274af0569a43c6da390e969759d1138799839"
      ],
      "author": {
        "name": "Martin Olsson",
        "email": "martin@minimum.se",
        "time": "Wed Apr 22 18:21:29 2009 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Jun 12 18:01:46 2009 +0200"
      },
      "message": "trivial: fix typos s/paramter/parameter/ and s/excute/execute/ in documentation and source comments.\n\nSigned-off-by: Martin Olsson \u003cmartin@minimum.se\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "6f9c1ea2c1cea2de3e5670a7cd98d9f7316b0952",
      "tree": "cd0059f189700e0762c55bb4488f15a5d4f61734",
      "parents": [
        "6ad58b245a543461bd55d51b8303f555419687b2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Apr 23 09:55:28 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon May 11 14:30:59 2009 -0400"
      },
      "message": "libata: clear ering on resume\n\nError timestamps are in jiffies which doesn\u0027t run while suspended and\nPHY events during resume isn\u0027t too uncommon.  When the two are\ncombined, it can lead to unnecessary speed downs if the machine is\nsuspended and resumed repeatedly.  Clear error history on resume.\n\nThis was reported and verified in bnc#486803 by Vladimir Botka.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Vladimir Botka \u003cvbotka@novell.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "842faa6c1a1d6faddf3377948e5cf214812c6c90",
      "tree": "345341d280d5ada012ab775f94f8cc1e92d6bad3",
      "parents": [
        "a4d7749be5de4a7261bcbe3c7d96c748792ec455"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun May 10 01:06:54 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon May 11 14:26:01 2009 -0400"
      },
      "message": "libata: fix attach error handling\n\nNew device attach path in ata_eh_revalidate_and_attach() is divided\ninto two separate loops because ATA requires IDENTIFY to be issued to\nslave first while the user expects to see device probe messages from\nthe master device.  new_mask is used to track which devices are the\nnew ones between the first loop and the second.\n\nThis usually works well but if an error occurs during configuration\nstage, ata_dev_revalidate_and_attach() returns with error code and\nforgets new_mask.  On the retry run, dev-\u003eclass is set and new_mask\nfor the device is clear, so the device just gets revalidated and thus\nends up skipping post-configuration procedure including scheduling of\nSCSI_HOTPLUG for the device.  When this occurs, ATA part of probing\nworks fine but SCSI probing usually doesn\u0027t happen and makes the\ndevice unreachable.\n\nThe behavior has been around for a very long time but it has been\nuncovered with the recent addition of 1_5_GBPS horkage which uses\n-EAGAIN return value from ata_dev_configure() to restart the probing\nsequence after forcing cable speed.\n\nThis can be fixed by making sure dev-\u003eclass is permanently set only\nafter all configurations are successfully complete.  Fix it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Tim Connors \u003ctconnors+linuxkml@astro.swin.edu.au\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "c96f1732e25362d10ee7bcac1df8412a2e6b7d23",
      "tree": "66e24eddb174d6751579ec5952f72cbbac0fb038",
      "parents": [
        "3d47aa8e7e7b2aa09256590388aa8dddc79280f9"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@redhat.com",
        "time": "Tue Mar 24 10:23:46 2009 +0000"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Mar 24 22:52:39 2009 -0400"
      },
      "message": "[libata] Improve timeout handling\n\nOn a timeout call a device specific handler early in the recovery so that\nwe can complete and process successful commands which timed out due to IRQ\nloss or the like rather more elegantly.\n\n[Revised to exclude the timeout handling on a few devices that inherit from\n SFF but are not SFF enough to use the default timeout handler]\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "d6515e6ff4ad3db4bd5ef2dd4e1026a7aca2482e",
      "tree": "0c9e899b0c120483661964283807205048071ec8",
      "parents": [
        "55f784c826af2506e417bcc484d7e0e4d27f1977"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 04 15:59:30 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Mar 05 07:25:43 2009 -0500"
      },
      "message": "libata: make sure port is thawed when skipping resets\n\nWhen SCR access is available and the link is offline, softreset is\nskipped as it only wastes time and some controllers don\u0027t respond very\nwell.  However, the skip path forgot to thaw the port, which not only\nblocks further event notification from the port but also causes\nrepeated EH invocations on the same event on drivers which rely on\n-\u003ethaw() to clear events if the IRQ is shared with another device or\nport.\n\nThis problem has always been there but is uncovered by recent sata_nv\nnf2/3 change which dropped hardreset support while maintaining SCR\naccess.  nf2/3 doesn\u0027t clear hotplug event mask from the interrupt\nhandler but relies on -\u003ethaw() to clear them.  When the hardreset was\nthere, the reset action was never skipped and the port was always\nthawed but, with the hardreset gone, -\u003eprereset() determines that\nthere\u0027s no need for softreset and both -\u003esoftreset() and -\u003ethaw() are\nskipped.  This leads to stuck hotplug event in the IRQ status register\ntriggering hotplug event whenever IRQ is delieverd on the same IRQ.\nAs the controller shares the same IRQ for both ports, this happens on\nevery IO if one port is occpupied and the other isn\u0027t.\n\nThis patch fixes the problem by making sure that the port is thawed on\nreset-skip path.\n\nbko#11615 reports this problem.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Robert Hancock \u003chancockrwd@gmail.com\u003e\nReported-by: Dan Andresan \u003cdanyer@gmail.com\u003e\nReported-by: Arne Woerner \u003carne_woerner@yahoo.com\u003e\nReported-by: Stefan Lippers-Hollmann \u003cs.L-H@gmx.de\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "b53570814692db79c3525523b6e9ec9874416c04",
      "tree": "854cfbcb231bb0914be2b0de9ea73dbf5cc07e6b",
      "parents": [
        "84bda12af31f930e4200c5244aa111de2485d7b0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Mar 02 18:55:16 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Mar 05 07:25:10 2009 -0500"
      },
      "message": "libata: don\u0027t use on-stack sense buffer\n\nsense_buffer is used as DMA target and shouldn\u0027t be allocated on\nstack.  Use ap-\u003esector_buf instead.  This problem is spotted by Chuck\nEbbert.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Chuck Ebbert \u003ccebbert@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "cf9a590a9eae3b99ca77d8db17afd2d7dbdd0986",
      "tree": "793d23cfe978d8048243baddd57b4ec8979c5e14",
      "parents": [
        "c2c7a89c5eabaea8c0c2aa0c1069e510144513ab"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 29 20:31:35 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Feb 02 23:04:19 2009 -0500"
      },
      "message": "libata: add no penalty retry request for EH device handling routines\n\nLet -EAGAIN from EH device handling routines trigger EH retry without\nconsuming its tries count.  This will be used to implement link SPD\nhorkage which requires hardreset to adjust SPD without affecting other\nEH decisions.  As it bypasses the forward progress guarantee provided\nby the tries count, the requester is responsible for ensuring forward\nprogress.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "c2c7a89c5eabaea8c0c2aa0c1069e510144513ab",
      "tree": "4cec432ebd36a103e366d56d2d62221674df5a99",
      "parents": [
        "a07d499b4759881db1359dd8812eecd00b0e0a28"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 29 20:31:34 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Feb 02 23:03:34 2009 -0500"
      },
      "message": "libata: improve probe failure handling\n\nWhen link is flaky at high speed, it isn\u0027t uncommon for a device to\nrepeatedly fail probing sequence early after successfully negotiating\nhigh link speed.  This often leads to consecutive hotplug events\nwithout successful probing.\n\nThis patch improves libata EH such that it remembers probing trials\nand if there have been more than two unsuccessful trials in the past\n60 seconds, slows down link speed to 1.5Gbps.\n\nAs link speed negotiation is the duty of the PHY layer proper, the\ngoal of this fallback mechanism is to provide the last resort when\neverything else fails, which unfortunately happens not too\ninfrequently, so no fancy 6-\u003e3-\u003e1.5 speeding down or highest\nsuccessful transmission speed seen kind of logics (yet).\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "a07d499b4759881db1359dd8812eecd00b0e0a28",
      "tree": "aaa5a5c95b64ab121ca89a71899abfe8837890f6",
      "parents": [
        "99cf610aa4840d822cdc67d194b23b55010ca9bd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 29 20:31:33 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Feb 02 23:03:22 2009 -0500"
      },
      "message": "libata: add @spd_limit to sata_down_spd_limit()\n\nAdd @spd_limit to sata_down_spd_limit() so that the caller can specify\nthe SPD limit it wants.  This parameter doesn\u0027t get in the way even\nwhen it\u0027s too low.  The closest possible limit is applied.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "99cf610aa4840d822cdc67d194b23b55010ca9bd",
      "tree": "68bc3d6c1f13849731bb7b4b11414b4b0e5fbffb",
      "parents": [
        "9913ff8abf1c70a8d52560dc931e1901d025ad27"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 29 20:31:32 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Feb 02 23:03:17 2009 -0500"
      },
      "message": "libata: clear dev-\u003eering in smarter way\n\ndev-\u003eering used to be cleared together with the rest of ata_device in\nata_dev_init() which is called whenever a probing event occurs.\ndev-\u003eering is about to be used to track probing failures so it needs\nto remain persistent over multiple porbing events.  This patch\nachieves this by doing the following.\n\n* Instead of CLEAR_OFFSET, define CLEAR_BEGIN and CLEAR_END and only\n  clear between BEGIN and END.  ering is moved after END.  The split\n  of persistent area is to allow hotter items remain at the head.\n\n* ering is explicitly cleared on ata_dev_disable() and when device\n  attach succeeds.  So, ering is persistent throug a device\u0027s life\n  time (unless explicitly cleared of course) and also through periods\n  inbetween disablement of an attached device and successful detection\n  of the next one.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "678afac678061ee41bc3007885003c125912a8e2",
      "tree": "134b4227b0826d14810f0d617090d5b7fe5e4369",
      "parents": [
        "d89293abd95bfd7dd9229087d6c30c1464c5ac83"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 29 20:31:30 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Feb 02 23:03:00 2009 -0500"
      },
      "message": "libata: move ata_dev_disable() to libata-eh.c\n\nata_dev_disable() is about to be more tightly integrated into EH\nlogic.  Move it to libata-eh.c.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "d89293abd95bfd7dd9229087d6c30c1464c5ac83",
      "tree": "70cc96e6ad14bf6ddbddc5d824e2e104a7387f66",
      "parents": [
        "8d993eaa9c3c61b8a5929a7f695078a1fcfb4869"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 29 20:31:29 2009 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Feb 02 23:02:57 2009 -0500"
      },
      "message": "libata: fix EH device failure handling\n\nThe dev-\u003epio_mode \u003e XFER_PIO_0 test is there to avoid unnecessary\nspeed down warning messages but it accidentally disabled SATA link spd\ndown during configuration phase after reset where PIO mode is always\nzero.\n\nThis patch fixes the problem by moving the test where it belongs.\nThis makes libata probing sequence behave better when the connection\nis flaky at higher link speeds which isn\u0027t too uncommon for eSATA\ndevices.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "ece180d1cfe5fa751eaa85bf796cf28b2150af15",
      "tree": "aca9d485036858ed3f1859e679473cebd3476845",
      "parents": [
        "ad74e4c18d0962397314460d0da312e72c8bd02d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 03 20:04:37 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Sun Dec 28 22:43:21 2008 -0500"
      },
      "message": "libata: perform port detach in EH\n\nata_port_detach() first made sure EH saw ATA_PFLAG_UNLOADING and then\nassumed EH context belongs to it and performed detach operation\nitself.  However, UNLOADING doesn\u0027t disable all of EH and this could\nlead to problems including triggering WARN_ON()\u0027s in EH path.\n\nThis patch makes port detach behave more like other EH actions such\nthat ata_port_detach() requests EH to detach and waits for completion.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "1eca4365be25c540650693e941bc06a66cf38f94",
      "tree": "e3ed82850da00308180bf166118f9f9e69d92898",
      "parents": [
        "3c92ec8ae91ecf59d88c798301833d7cf83f2179"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 03 20:03:17 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Sun Dec 28 22:43:20 2008 -0500"
      },
      "message": "libata: beef up iterators\n\nThere currently are the following looping constructs.\n\n* __ata_port_for_each_link() for all available links\n* ata_port_for_each_link() for edge links\n* ata_link_for_each_dev() for all devices\n* ata_link_for_each_dev_reverse() for all devices in reverse order\n\nNow there\u0027s a need for looping construct which is similar to\n__ata_port_for_each_link() but iterates over PMP links before the host\nlink.  Instead of adding another one with long name, do the following\ncleanup.\n\n* Implement and export ata_link_next() and ata_dev_next() which take\n  @mode parameter and can be used to build custom loop.\n* Implement ata_for_each_link() and ata_for_each_dev() which take\n  looping mode explicitly.\n\nThe following iteration modes are implemented.\n\n* ATA_LITER_EDGE\t\t: loop over edge links\n* ATA_LITER_HOST_FIRST\t\t: loop over all links, host link first\n* ATA_LITER_PMP_FIRST\t\t: loop over all links, PMP links first\n\n* ATA_DITER_ENABLED\t\t: loop over enabled devices\n* ATA_DITER_ENABLED_REVERSE\t: loop over enabled devices in reverse order\n* ATA_DITER_ALL\t\t\t: loop over all devices\n* ATA_DITER_ALL_REVERSE\t\t: loop over all devices in reverse order\n\nThis change removes exlicit device enabledness checks from many loops\nand makes it clear which ones are iterated over in which direction.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "19b723218bde79c60a394a3caee9eb156ac2d356",
      "tree": "5ea111eb99068ae04ec5bc5ab2089a288362b5c1",
      "parents": [
        "44901a96847b9967c057832b185e2f34ee6a14e5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Nov 04 17:08:40 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue Nov 11 03:01:21 2008 -0500"
      },
      "message": "libata: fix last_reset timestamp handling\n\nehc-\u003elast_reset is used to ensure that resets are not issued too\nclose to each other.  It\u0027s initialized to jiffies minus one minute\non EH entry.  However, when new links are initialized after PMP is\nprobed, new links have zero for this timestamp resulting in long wait\ndepending on the current jiffies.\n\nThis patch makes last_set considered iff ATA_EHI_DID_RESET is set, in\nwhich case last_reset is always initialized.  As an added precaution,\nWARN_ON() is added so that warning is printed if last_reset is\nin future.\n\nThis problem is spotted and debugged by Shane Huang.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Shane Huang \u003cShane.Huang@amd.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "90484ebfc96c5dc5c498ed72cf2d370575db9b76",
      "tree": "46ada261a4d318296bcbe08ac724fd32eb014a6d",
      "parents": [
        "e8b3b5e9f54512bfdb7c154da07ec0408cbd6c56"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sun Oct 26 15:43:03 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Oct 27 23:55:40 2008 -0400"
      },
      "message": "libata: clear saved xfer_mode and ncq_enabled on device detach\n\nlibata EH saves xfer_mode and ncq_enabled at start to later set\nDUBIOUS_XFER flag if it has changed.  These values need to be cleared\non device detach such that hot device swap doesn\u0027t accidentally miss\nDUBIOUS_XFER.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "4a9c7b3359889399aacb94019bbdfc9f38d4cff7",
      "tree": "a791790f02f2a0a5b3ea66c1526ae79f1711dca8",
      "parents": [
        "c77a036beceabbfd85b366193685cb49f38292bd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Oct 27 19:59:23 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Oct 27 23:55:12 2008 -0400"
      },
      "message": "libata: fix device iteration bugs\n\nThere were several places where only enabled devices should be\niterated over but device enabledness wasn\u0027t checked.\n\n* IDENTIFY data 40 wire check in cable_is_40wire()\n* xfer_mode/ncq_enabled saving in ata_scsi_error()\n* DUBIOUS_XFER handling in ata_set_mode()\n\nWhile at it, reformat comments in cable_is_40wire().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "816ab89782ac139a8b65147cca990822bb7e8675",
      "tree": "066f5e76a52f2cc5b6ad23c2606911dbe3af4921",
      "parents": [
        "a568d1d2e2aff4f114b087c06bfd350e945ad6cf"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Oct 22 00:31:34 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed Oct 22 20:42:43 2008 -0400"
      },
      "message": "libata: set device class to NONE if phys_offline\n\nReset methods don\u0027t have access to phys link status for slave links\nand may incorrectly indicate device presence causing unnecessary probe\nfailures for unoccupied links.  This patch clears device class to NONE\nduring post-reset processing if phys link is offline.\n\nAs on/offlineness semantics is strictly defined and used in multiple\nplaces by the core layer, this won\u0027t change behavior for drivers which\ndon\u0027t use slave links.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "a568d1d2e2aff4f114b087c06bfd350e945ad6cf",
      "tree": "1eafb8cd7ba2326811a1f33dd785135efdcd8dbf",
      "parents": [
        "848e4c68c4695beae563f9a3d59fce596b466a74"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Oct 21 20:37:21 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed Oct 22 20:40:21 2008 -0400"
      },
      "message": "libata-eh: fix slave link EH action mask handling\n\nSlave link action mask is transferred to master link and all the EH\nactions are taken by the master link.  ata_eh_about_to_do() and\nata_eh_done() are called with ATA_EH_ALL_ACTIONS to clear the slave\nlink actions during transfer.  This always sets ATA_PFLAG_RECOVERED\nflag causing spurious \"EH complete\" messages.\n\nDon\u0027t set ATA_PFLAG_RECOVERED for slave link actions.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "848e4c68c4695beae563f9a3d59fce596b466a74",
      "tree": "90c5ea1ff1b016f72888641f96f014336e969434",
      "parents": [
        "570106df6bdb4907ad7f70793079c762f34d561a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Oct 21 14:26:39 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Wed Oct 22 20:40:19 2008 -0400"
      },
      "message": "libata: transfer EHI control flags to slave ehc.i\n\nATA_EHI_NO_AUTOPSY and ATA_EHI_QUIET are used to control the behavior\nof EH.  As only the master link is visible outside EH, these flags are\nset only for the master link although they should also apply to the\nslave link, which causes spurious EH messages during probe and\nsuspend/resume.\n\nThis patch transfers those two flags to slave ehc.i before performing\nslave autopsy and reporting.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "e26feff647ef34423b048b940540a0059001ddb0",
      "tree": "acafe68602ee2f6f1a438c113073ffcc0040e949",
      "parents": [
        "d403a6484f0341bf0624d17ece46f24f741b6a92",
        "b911e473d24633c19414b54b82b9ff0b1a2419d7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 10 10:52:45 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 10 10:52:45 2008 -0700"
      },
      "message": "Merge branch \u0027for-2.6.28\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.28\u0027 of git://git.kernel.dk/linux-2.6-block: (132 commits)\n  doc/cdrom: Trvial documentation error, file not present\n  block_dev: fix kernel-doc in new functions\n  block: add some comments around the bio read-write flags\n  block: mark bio_split_pool static\n  block: Find bio sector offset given idx and offset\n  block: gendisk integrity wrapper\n  block: Switch blk_integrity_compare from bdev to gendisk\n  block: Fix double put in blk_integrity_unregister\n  block: Introduce integrity data ownership flag\n  block: revert part of d7533ad0e132f92e75c1b2eb7c26387b25a583c1\n  bio.h: Remove unused conditional code\n  block: remove end_{queued|dequeued}_request()\n  block: change elevator to use __blk_end_request()\n  gdrom: change to use __blk_end_request()\n  memstick: change to use __blk_end_request()\n  virtio_blk: change to use __blk_end_request()\n  blktrace: use BLKTRACE_BDEV_SIZE as the name size for setup structure\n  block: add lld busy state exporting interface\n  block: Fix blk_start_queueing() to not kick a stopped queue\n  include blktrace_api.h in headers_install\n  ...\n"
    },
    {
      "commit": "242f9dcb8ba6f68fcd217a119a7648a4f69290e9",
      "tree": "1bfe245ffbc50d204d76665cd8f90d85100f86a1",
      "parents": [
        "608aeef17a91747d6303de4df5e2c2e6899a95e8"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sun Sep 14 05:55:09 2008 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:13 2008 +0200"
      },
      "message": "block: unify request timeout handling\n\nRight now SCSI and others do their own command timeout handling.\nMove those bits to the block layer.\n\nInstead of having a timer per command, we try to be a bit more clever\nand simply have one per-queue. This avoids the overhead of having to\ntear down and setup a timer for each command, so it will result in a lot\nless timer fiddling.\n\nSigned-off-by: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "11fc33da8d8413d6bfa5143f454dfcb998c27617",
      "tree": "fb43a4954244cbbd84cb560dd1376d35ad90df84",
      "parents": [
        "d09addf65cb5b3b19a536aa3329efeedbc6bb56c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sat Aug 30 14:20:01 2008 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Sep 29 00:29:06 2008 -0400"
      },
      "message": "libata-eh: clear UNIT ATTENTION after reset\n\nResets make ATAPI devices raise UNIT ATTENTION which fails the next\ncommand.  As resets can happen asynchronously for unrelated reasons,\nthis sometimes disrupts innocent users.  For example, reading DVD\nfails after the system wakes up from suspend or the other device\nsharing the channel went through bus error.\n\nClearing UA has some problems as it might clear UA which the userland\nneeds to know about.  However, UA after resets can only be about the\nreset itself and benefits of clearing it overweights cons.  Missing UA\ncan only delay failure to one of the following commands anyway.  For\nexample, timeout while burning is in progress will trigger reset and\nreset the device state and probably corrupt the burning run.  Although\nthe userland application won\u0027t get the UA, its pending writes will\nfail.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "45fabbb77bd95adff7a80bde1c7a0ace1075fde6",
      "tree": "0e98efc190b25a11f84b8ae7d1ee0a17c41d3da8",
      "parents": [
        "ea6ce53cd5d005455ec0a3cc1d45d3af0cb90919"
      ],
      "author": {
        "name": "Elias Oltmanns",
        "email": "eo@nebensachen.de",
        "time": "Sun Sep 21 11:54:08 2008 +0200"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Sep 29 00:27:54 2008 -0400"
      },
      "message": "libata: Implement disk shock protection support\n\nOn user request (through sysfs), the IDLE IMMEDIATE command with UNLOAD\nFEATURE as specified in ATA-7 is issued to the device and processing of\nthe request queue is stopped thereafter until the specified timeout\nexpires or user space asks to resume normal operation. This is supposed\nto prevent the heads of a hard drive from accidentally crashing onto the\nplatter when a heavy shock is anticipated (like a falling laptop\nexpected to hit the floor). In fact, the whole port stops processing\ncommands until the timeout has expired in order to avoid any resets due\nto failed commands on another device.\n\nSigned-off-by: Elias Oltmanns \u003ceo@nebensachen.de\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "b1c72916abbdd0a55015c87358536ca0ebaf6735",
      "tree": "1064fe92f2c3600dd6587c880d907020896b3348",
      "parents": [
        "b5b3fa386b8f96c7fa92e507e5deddc2637924b4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 31 17:02:43 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Sep 29 00:25:28 2008 -0400"
      },
      "message": "libata: implement slave_link\n\nExplanation taken from the comment of ata_slave_link_init().\n\n In libata, a port contains links and a link contains devices.  There\n is single host link but if a PMP is attached to it, there can be\n multiple fan-out links.  On SATA, there\u0027s usually a single device\n connected to a link but PATA and SATA controllers emulating TF based\n interface can have two - master and slave.\n\n However, there are a few controllers which don\u0027t fit into this\n abstraction too well - SATA controllers which emulate TF interface\n with both master and slave devices but also have separate SCR\n register sets for each device.  These controllers need separate links\n for physical link handling (e.g. onlineness, link speed) but should\n be treated like a traditional M/S controller for everything else\n (e.g. command issue, softreset).\n\n slave_link is libata\u0027s way of handling this class of controllers\n without impacting core layer too much.  For anything other than\n physical link handling, the default host link is used for both master\n and slave.  For physical link handling, separate @ap-\u003eslave_link is\n used.  All dirty details are implemented inside libata core layer.\n From LLD\u0027s POV, the only difference is that prereset, hardreset and\n postreset are called once more for the slave link, so the reset\n sequence looks like the following.\n\n prereset(M) -\u003e prereset(S) -\u003e hardreset(M) -\u003e hardreset(S) -\u003e\n softreset(M) -\u003e postreset(M) -\u003e postreset(S)\n\n Note that softreset is called only for the master.  Softreset resets\n both M/S by definition, so SRST on master should handle both (the\n standard method will work just fine).\n\nAs slave_link excludes PMP support and only code paths which deal with\nthe attributes of physical link are affected, all the changes are\nlocalized to libata.h, libata-core.c and libata-eh.c.\n\n * ata_is_host_link() updated so that slave_link is considered as host\n   link too.\n\n * iterator extended to iterate over the slave_link when using the\n   underbarred version.\n\n * force param handling updated such that devno 16 is mapped to the\n   slave link/device.\n\n * ata_link_on/offline() updated to return the combined result from\n   master and slave link.  ata_phys_link_on/offline() are the direct\n   versions.\n\n * EH autopsy and report are performed separately for master slave\n   links.  Reset is udpated to implement the above described reset\n   sequence.\n\nExcept for reset update, most changes are minor, many of them just\nmodifying dev-\u003elink to ata_dev_phys_link(dev) or using phys online\ntest instead.\n\nAfter this update, LLDs can take full advantage of per-dev SCR\nregisters by simply turning on slave link.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "da0e21d3fa2340114fe24821718a1b57123e4664",
      "tree": "f0f1bde3d90cf149dd644800f63f74de61257a12",
      "parents": [
        "5dbfc9cb59d4ad75199949d7dd8a8c6d7bc518df"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 31 16:08:38 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Aug 22 02:19:44 2008 -0400"
      },
      "message": "libata: use ata_link_printk() when printing SError\n\nSError belongs to link not port.  Use ata_link_printk() to print it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "5dbfc9cb59d4ad75199949d7dd8a8c6d7bc518df",
      "tree": "b0574dea3b5bfcf9418abb1a08bfe24a77fbcd37",
      "parents": [
        "a674050e068a2919908730279f0b731ae6d2e005"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 31 16:08:02 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Aug 22 02:19:41 2008 -0400"
      },
      "message": "libata: always do follow-up SRST if hardreset returned -EAGAIN\n\nAs an optimization, follow-up SRST used to be skipped if\nclassification wasn\u0027t requested even when hardreset requested it via\n-EAGAIN.  However, some hardresets can\u0027t wait for device readiness and\nskipping SRST can cause timeout or other failures during revalidation.\nAlways perform follow-up SRST if hardreset returns -EAGAIN.  This\nmakes reset paths more predictable and thus less error-prone.\n\nWhile at it, move hardreset error checking such that it\u0027s done right\nafter hardreset is finished.  This simplifies followup SRST condition\ncheck a bit and makes the reset path easier to modify.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "a674050e068a2919908730279f0b731ae6d2e005",
      "tree": "aa0fe8d065233fc32e458a861a50b20271f99555",
      "parents": [
        "eb3a55a9f43f0f8e770c2abf70e65bdda2d5ff1e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 31 16:07:04 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Aug 22 02:19:39 2008 -0400"
      },
      "message": "libata: fix EH action overwriting in ata_eh_reset()\n\nehc-\u003ei.action got accidentally overwritten to ATA_EH_HARD/SOFTRESET in\nata_eh_reset().  The original intention was to clear reset action\nwhich wasn\u0027t selected.  This can cause unexpected behavior when other\nEH actions are scheduled together with reset.  Fix it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "05944bdf6fadb5394710269df6770dde447b23ca",
      "tree": "7dd0435f44518b01e5d3a229167e7122425e2255",
      "parents": [
        "6a55617ed5d1aa62b850de2cf66f5ede2eef4825"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Aug 13 20:19:09 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Aug 22 02:07:43 2008 -0400"
      },
      "message": "libata: implement no[hs]rst force params\n\nImplement force params nohrst, nosrst and norst.  This is to work\naround reset related problems and ease debugging.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "3eabddb8ed4f488664ff5d67968392bb424836a3",
      "tree": "54f86b3900246f91c0ff87943ef12e19c3fc7c15",
      "parents": [
        "ec6add99307d5149e17f6e358f19f0205b622407"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Jun 10 18:28:05 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Jul 14 15:59:33 2008 -0400"
      },
      "message": "libata-eh: update atapi_eh_request_sense() to take @dev instead of @qc\n\nUpdate atapi_eh_request_sense() to take @dev, @sense_buf and\n@dfl_sense_key instead of taking @qc and extracting information from\nit.  This change is to make the function more generic and allow it to\nbe called from other places.\n\nWhile at it, make cdb initialization use initializer.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "87fbc5a060faf2394bee88a93519f9b9d434727c",
      "tree": "6f90cacb1471e64051473c4e1e664b2dea8603e0",
      "parents": [
        "d8af0eb6046c56e7238171ca420622541db24926"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue May 20 02:17:54 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Jul 14 15:59:32 2008 -0400"
      },
      "message": "libata: improve EH internal command timeout handling\n\nATA_TMOUT_INTERNAL which was 30secs were used for all internal\ncommands which is way too long when something goes wrong.  This patch\nimplements command type based stepped timeouts.  Different command\ntypes can use different timeouts and each command type can use\ndifferent timeout values after timeouts.\n\nie. the initial timeout is set to a value which should cover most of\nthe cases but not too long so that run away cases don\u0027t delay things\ntoo much.  After the first try times out, the second try can use\nlonger timeout and if that one times out too, it can go for full 30sec\ntimeout.\n\nIDENTIFYs use 5s - 10s - 30s timeout and all other commands use 5s -\n10s timeouts.\n\nThis patch significantly cuts down the needed time to handle failure\ncases while still allowing libata to work with nut job devices through\nretries.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "d8af0eb6046c56e7238171ca420622541db24926",
      "tree": "64f5c8b15f1d9549f4a7130ae7cf09699507e514",
      "parents": [
        "0a2c0f56159999e20015241d3b8fa89b1ab14309"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue May 20 02:17:53 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Jul 14 15:59:32 2008 -0400"
      },
      "message": "libata: use ULONG_MAX to terminate reset timeout table\n\nThis doesn\u0027t introduce any functional changes.  This is to make reset\ntimeout table consistent with to-be-added command timeout tables.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "0a2c0f56159999e20015241d3b8fa89b1ab14309",
      "tree": "2c516452d3b3f85e9a4092b6092160e123d5f5d4",
      "parents": [
        "341c2c958ec7bdd9f54733a8b0b432fe76842a82"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue May 20 02:17:52 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Jul 14 15:59:32 2008 -0400"
      },
      "message": "libata: improve EH retry delay handling\n\nEH retries were delayed by 5 seconds to ensure that resets don\u0027t occur\nback-to-back.  However, this 5 second delay is superflous or excessive\nin many cases.  For example, after IDENTIFY times out, there\u0027s no\nreason to wait five more seconds before retrying.\n\nThis patch adds ehc-\u003elast_reset timestamp and record the timestamp for\nthe last reset trial or success and uses it to space resets by\nATA_EH_RESET_COOL_DOWN which is 5 secs and removes unconditional 5 sec\nsleeps.\n\nAs this change makes inter-try waits often shorter and they\u0027re\nredundant in nature, this patch also removes the \"retrying...\"\nmessages.\n\nWhile at it, convert explicit rounding up division to DIV_ROUND_UP().\n\nThis change speeds up EH in many cases w/o sacrificing robustness.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "341c2c958ec7bdd9f54733a8b0b432fe76842a82",
      "tree": "1af1983fe82ad032de6142229fe6c70f04466918",
      "parents": [
        "bce7f793daec3e65ec5c5705d2457b81fe7b5725"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue May 20 02:17:51 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon Jul 14 15:59:32 2008 -0400"
      },
      "message": "libata: consistently use msecs for time durations\n\nlibata has been using mix of jiffies and msecs for time druations.\nThis is getting confusing.  As writing sub HZ values in jiffies is\nPITA and msecs_to_jiffies() can\u0027t be used as initializer, unify unit\nfor all time durations to msecs.  So, durations are in msecs and\ndeadlines are in jiffies.  ata_deadline() is added to compute deadline\nfrom a start time and duration in msecs.\n\nWhile at it, drop now superflous _msec suffix from arguments and\nrename @timeout to @deadline if it represents a fixed point in time\nrather than duration.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "e0614db2a398d4d0dc5fb47fe2c2783141262a3e",
      "tree": "57723d4765f04821c47e3e0859d90fc5d9ab51bc",
      "parents": [
        "f046519fc85a8fdf6a058b4ac9d897cdee6f3e52"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 19 01:15:09 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon May 19 17:51:47 2008 -0400"
      },
      "message": "libata: ignore recovered PHY errors\n\nNo reason to get overzealous about recovered comm and data errors.\nSome PHYs habitually sets them w/o no good reason and being draconian\nabout these soft error conditions doesn\u0027t seem to help anybody.\n\nIf need ever rises, we might need to add soft PHY error condition, say\nAC_ERR_MAYBE_ATA_BUS and use it only to determine whether speed down\nis necessary but I don\u0027t think that\u0027s very likely to happen.  It\u0027s far\nmore likely we\u0027ll get timeouts or fatal transmission errors if\nrecovered errors are so prominent that they hamper operation.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "f046519fc85a8fdf6a058b4ac9d897cdee6f3e52",
      "tree": "f4ee1fc8edaeaa2fb0245b82925ef40243a9f26f",
      "parents": [
        "dc98c32cbe80750ae2d9d9fbdae305d38f005de7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 19 01:15:08 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon May 19 17:51:47 2008 -0400"
      },
      "message": "libata: kill hotplug related race condition\n\nOriginally, whole reset processing was done while the port is frozen\nand SError was cleared during @postreset().  This had two race\nconditions.  1: hotplug could occur after reset but before SError is\ncleared and libata won\u0027t know about it.  2: hotplug could occur after\nall the reset is complete but before the port is thawed.  As all\nevents are cleared on thaw, the hotplug event would be lost.\n\nCommit ac371987a81c61c2efbd6931245cdcaf43baad89 kills the first race\nby clearing SError during link resume but before link onlineness test.\nHowever, this doesn\u0027t fix race #2 and in some cases clearing SError\nafter SRST is a good idea.\n\nThis patch solves this problem by cross checking link onlineness with\nclassification result after SError is cleared and port is thawed.\nReset is retried if link is online but all devices attached to the\nlink are unknown.  As all devices will be revalidated, this one-way\ncheck is enough to ensure that all devices are detected and\nrevalidated reliably.\n\nThis, luckily, also fixes the cases where host controller returns\nbogus status while harddrive is spinning up after hotplug making\nclassification run before the device sends the first FIS and thus\ncauses misdetection.\n\nLow level drivers can bypass the logic by setting class explicitly to\nATA_DEV_NONE if ever necessary (currently none requires this).\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "dc98c32cbe80750ae2d9d9fbdae305d38f005de7",
      "tree": "52bff671e5ed5b39056bb4a5c531476c83e9f708",
      "parents": [
        "932648b007de76badc61c1b13d7282288dbe887e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 19 01:15:07 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon May 19 17:51:47 2008 -0400"
      },
      "message": "libata: move reset freeze/thaw handling into ata_eh_reset()\n\nPreviously reset freeze/thaw handling lived outside of ata_eh_reset()\nmainly because the original PMP reset code needed the port frozen\nwhile resetting all the fan-out ports, which is no longer the case.\n\nThis patch moves freeze/thaw handling into ata_eh_reset().\n@prereset() and @postreset() are now called w/o freezing the port\nalthough @prereset() an be called frozen if the port is frozen prior\nto entering ata_eh_reset().\n\nThis makes code simpler and will help removing hotplug event related\nraces.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "932648b007de76badc61c1b13d7282288dbe887e",
      "tree": "3a3c00f6068f530632012ee3a6aaccedbe1158ba",
      "parents": [
        "0cbf0711a1ebcc4d3aea8e11def684afc2c07ef8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 19 01:15:06 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Mon May 19 17:51:47 2008 -0400"
      },
      "message": "libata: reorganize ata_eh_reset() no reset method path\n\nReorganize ata_eh_reset() such that @prereset() is called even when no\nreset method is available and if block is used instead of goto to skip\nactual reset.  This makes no reset case behave better (readiness wait)\nand future changes easier.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "10acf3b0d3b46c6ef5d6f0722f72ad9b743ea848",
      "tree": "08aec05645770a3c0b90fb083c2e67e6aab4d572",
      "parents": [
        "a90103298fd5ccd9a9df6d47bde9a3f371707037"
      ],
      "author": {
        "name": "Mark Lord",
        "email": "liml@rtr.ca",
        "time": "Fri May 02 02:14:53 2008 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Tue May 06 11:37:58 2008 -0400"
      },
      "message": "libata: export ata_eh_analyze_ncq_error\n\nExport ata_eh_analyze_ncq_error() for subsequent use by sata_mv,\nas suggested by Tejun.\n\nSigned-off-by: Mark Lord \u003cmlord@pobox.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "a6116c9e60978a6deaa20691c67ffed727e50df1",
      "tree": "39d51e37b3d953ae9573e7418293ba8696efa133",
      "parents": [
        "1dc55e876182a13dcc5991c3aab893f38455d8a7"
      ],
      "author": {
        "name": "Mark Lord",
        "email": "liml@rtr.ca",
        "time": "Wed Apr 23 22:36:25 2008 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Fri Apr 25 01:11:37 2008 -0400"
      },
      "message": "libata-eh set tf flags in NCQ EH result_tf\n\nFix mis-reporting of NCQ errors by ensuring that result_tf-\u003eflags\nis properly initialized in libata-eh.  This allows ata_gen_ata_sense()\nto report the failed block number correctly to SCSI after a media error\nduring NCQ.\n\nThis patch may also be a candidate for backporting to earlier kernels.\nWithout this fix, SCSI will fail I/O on the entire request rather\nthan just the bad sector.  That can be bad for a request that was\nmerged from many independent read reads from different tasks.\n\nSigned-off-by: Mark Lord \u003cmlord@pobox.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "4f7faa3f2b99f8fb246c8cdeef971e55ceda4e52",
      "tree": "54602fe9e13d6ee571efe41174dd6ba1c63aec4c",
      "parents": [
        "b93fda12357b3f1aa55cf69d8e088372788ea9ea"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Jan 30 18:18:26 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:26 2008 -0400"
      },
      "message": "libata: make EH fail gracefully if no reset method is available\n\nWhen no reset method is available, libata currently oopses.  Although\nthe condition can\u0027t happen unless there\u0027s a bug in a low level driver,\noopsing isn\u0027t the best way to report the error condition.  Complain,\ndump stack and fail reset instead.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "45db2f6c95eee7c6622ea1b3edb9abafba58e3ab",
      "tree": "1c57efcf3e118b177dd7c9c1070b8af70694aff3",
      "parents": [
        "2a0c15ca39f5881aa1b472ca856bb7a2e584ece7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Apr 08 01:46:56 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:25 2008 -0400"
      },
      "message": "libata: move link onlineness check out of softreset methods\n\nCurrently, SATA softresets should do link onlineness check before\nactually performing SRST protocol but it doesn\u0027t really belong to\nsoftreset.\n\nThis patch moves onlineness check in softreset to ata_eh_reset() and\nata_eh_followup_srst_needed() to clean up code and help future sata_mv\nchanges which need clear separation between SCR and TF accesses.\n\nsata_fsl is peculiar in that its softreset really isn\u0027t softreset but\ncombination of hardreset and softreset.  This patch adds dummy private\n-\u003eprereset to keep the current behavior but the driver really should\nimplement separate hard and soft resets and return -EAGAIN from\nhardreset if it should be follwed by softreset.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "2a0c15ca39f5881aa1b472ca856bb7a2e584ece7",
      "tree": "28fe9136db8016720c272ba39df3a3b43a9715e2",
      "parents": [
        "e50e3ce5e70e36e6069a8cc8292df76058fa9e23"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Apr 08 01:25:35 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:25 2008 -0400"
      },
      "message": "libata: kill dead code paths in reset path\n\nSome code paths which had been made obsolete by recent reset\nsimplification were still around.  Kill them.\n\n* ata_eh_reset() checked for ATA_DEV_UNKNOWN to determine\n  classification failure.  This is no longer applicable.\n\n* ata_do_reset() should convert ATA_DEV_UNKNOWN to ATA_DEV_NONE\n  regardless of reset result (e.g. -EAGAIN).\n\n* LLDs don\u0027t need to convert ATA_DEV_UNKNOWN to ATA_DEV_NONE.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "071f44b1d2c051641b62a3571223314737ccbe59",
      "tree": "a07794c8109e5d82a78223ae0159eadbf862c463",
      "parents": [
        "48515f6c006c2a9d7b624ee8ad068018c2d3fe0e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:22 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:25 2008 -0400"
      },
      "message": "libata: implement PMP helpers\n\nImplement helpers to test whether PMP is supported, attached and\ndetermine pmp number to use when issuing SRST to a link.  While at it,\nmove ata_is_host_link() so that it\u0027s together with the two new PMP\nhelpers.\n\nThis change simplifies LLDs and helps making PMP support optional.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "305d2a1ab137d11d573319c315748a87060fe82d",
      "tree": "8dcf81b1742db21c6a745688de96a18944c83617",
      "parents": [
        "5958e3025fd9d97429163e074d9cfa3848f51f28"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:20 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:23 2008 -0400"
      },
      "message": "libata: unify mechanism to request follow-up SRST\n\nPreviously, there were two ways to trigger follow-up SRST from\nhardreset method - returning -EAGAIN and leaving all device classes\nunmodified.  Drivers never used the latter mechanism and the only use\ncase for the former was when hardreset couldn\u0027t classify.\n\nDrop the latter mechanism and let -EAGAIN mean \"perform follow-up SRST\nif classification is required\".  This change removes unnecessary\nfollow-up SRSTs and simplifies reset implementations.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "5958e3025fd9d97429163e074d9cfa3848f51f28",
      "tree": "f20492dc35fc2651452c871fbc812bd4f8379b40",
      "parents": [
        "ac371987a81c61c2efbd6931245cdcaf43baad89"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:20 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:23 2008 -0400"
      },
      "message": "libata: move PMP SCR access failure during reset to ata_eh_reset()\n\nIf PMP fan-out reset fails and SCR isn\u0027t accessible, PMP should be\nreset.  This used to be tested by sata_pmp_std_hardreset() and\ncommunicated to EH by -ERESTART.  However, this logic is generic and\ndoesn\u0027t really have much to do with specific hardreset implementation.\n\nThis patch moves SCR access failure detection logic to ata_eh_reset()\nwhere it belongs.  As this makes sata_pmp_std_hardreset() identical to\nsata_std_hardreset(), the function is killed and replaced with the\nstandard method.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "57c9efdfb3cee5d4564fcb5f70555e2edb1bc52a",
      "tree": "c2289500f093736853a94d2d9577036658676498",
      "parents": [
        "9dadd45b24145d6aee2fabb28d7aef972301892b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:19 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:23 2008 -0400"
      },
      "message": "libata: implement and use sata_std_hardreset()\n\nImplement sata_std_hardreset(), which simply wraps around\nsata_link_hardreset().  sata_std_hardreset() becomes new standard\nhardreset method for sata_port_ops and sata_sff_hardreset() moves from\nata_base_port_ops to ata_sff_port_ops, which is where it really\nbelongs.\n\nata_is_builtin_hardreset() is added so that both\nata_std_error_handler() and ata_sff_error_handler() skip both builtin\nhardresets if SCR isn\u0027t accessible.\n\npiix_sidpr_hardreset() in ata_piix.c is identical to\nsata_std_hardreset() in functionality and got replaced with the\nstandard function.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "9363c3825ea9ad76561eb48a395349dd29211ed6",
      "tree": "abe89a0f7c82b805d84b1a211c97b317f6628d5f",
      "parents": [
        "b67a1064cb1c1d3b43e01e8b43a6a8dcdefed733"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Apr 07 22:47:16 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:21 2008 -0400"
      },
      "message": "libata: rename SFF functions\n\nSFF functions have confusing names.  Some have sff prefix, some have\nbmdma, some std, some pci and some none.  Unify the naming by...\n\n* SFF functions which are common to both BMDMA and non-BMDMA are\n  prefixed with ata_sff_.\n\n* SFF functions which are specific to BMDMA are prefixed with\n  ata_bmdma_.\n\n* SFF functions which are specific to PCI but apply to both BMDMA and\n  non-BMDMA are prefixed with ata_pci_sff_.\n\n* SFF functions which are specific to PCI and BMDMA are prefixed with\n  ata_pci_bmdma_.\n\n* Drop generic prefixes from LLD specific routines.  For example,\n  bfin_std_dev_select -\u003e bfin_dev_select.\n\nThe following renames are noteworthy.\n\n  ata_qc_issue_prot() -\u003e ata_sff_qc_issue()\n  ata_pci_default_filter() -\u003e ata_bmdma_mode_filter()\n  ata_dev_try_classify() -\u003e ata_sff_dev_classify()\n\nThis rename is in preparation of separating SFF support out of libata\ncore layer.  This patch strictly renames functions and doesn\u0027t\nintroduce any behavior difference.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "03faab7827e4e45823fd27c47b84c133e20a0cd0",
      "tree": "046b04c7e650f5318beb330d70e855a889750154",
      "parents": [
        "a5987e0a1b569146ed9cfa0a8c275a21b344fcaa"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Mar 27 19:14:24 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:20 2008 -0400"
      },
      "message": "libata: implement ATA_QCFLAG_RETRY\n\nCurrently whether a command should be retried after failure is\ndetermined inside ata_eh_finish().  Add ATA_QCFLAG_RETRY and move the\nlogic into ata_eh_autopsy().  This makes things clearer and helps\nextending retry determination logic.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "a1efdaba2dbd6fb89e23a87b66d3f4dd92c9f5af",
      "tree": "6197c537892e0d887b2a90e369b74abf0500b9ac",
      "parents": [
        "959471936241bd83da7d0a76411cef6772140fe6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Mar 25 12:22:50 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:18 2008 -0400"
      },
      "message": "libata: make reset related methods proper port operations\n\nCurrently reset methods are not specified directly in the\nata_port_operations table.  If a LLD wants to use custom reset\nmethods, it should construct and use a error_handler which uses those\nreset methods.  It\u0027s done this way for two reasons.\n\nFirst, the ops table already contained too many methods and adding\nfour more of them would noticeably increase the amount of necessary\nboilerplate code all over low level drivers.\n\nSecond, as -\u003eerror_handler uses those reset methods, it can get\nconfusing.  ie. By overriding -\u003eerror_handler, those reset ops can be\nmade useless making layering a bit hazy.\n\nNow that ops table uses inheritance, the first problem doesn\u0027t exist\nanymore.  The second isn\u0027t completely solved but is relieved by\nproviding default values - most drivers can just override what it has\nimplemented and don\u0027t have to concern itself about higher level\ncallbacks.  In fact, there currently is no driver which actually\nmodifies error handling behavior.  Drivers which override\n-\u003eerror_handler just wraps the standard error handler only to prepare\nthe controller for EH.  I don\u0027t think making ops layering strict has\nany noticeable benefit.\n\nThis patch makes -\u003eprereset, -\u003esoftreset, -\u003ehardreset, -\u003epostreset and\ntheir PMP counterparts propoer ops.  Default ops are provided in the\nbase ops tables and drivers are converted to override individual reset\nmethods instead of creating custom error_handler.\n\n* ata_std_error_handler() doesn\u0027t use sata_std_hardreset() if SCRs\n  aren\u0027t accessible.  sata_promise doesn\u0027t need to use separate\n  error_handlers for PATA and SATA anymore.\n\n* softreset is broken for sata_inic162x and sata_sx4.  As libata now\n  always prefers hardreset, this doesn\u0027t really matter but the ops are\n  forced to NULL using ATA_OP_NULL for documentation purpose.\n\n* pata_hpt374 needs to use different prereset for the first and second\n  PCI functions.  This used to be done by branching from\n  hpt374_error_handler().  The proper way to do this is to use\n  separate ops and port_info tables for each function.  Converted.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "b558edddb1c42c70a30cfe494984d4be409f7b2b",
      "tree": "b03275d15675a519de7d4edde709892f885a5fa0",
      "parents": [
        "8cebf274dd1c955a6e03385a85fd6569ce445946"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jan 24 00:05:14 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:16 2008 -0400"
      },
      "message": "libata: kill ata_ehi_schedule_probe()\n\nata_ehi_schedule_probe() was created to hide details of link-resuming\nreset magic.  Now that all the softreset workarounds are gone,\nscheduling probe is very simple - set probe_mask and request RESET.\nKill ata_ehi_schedule_probe() and open code it.  This also increases\nconsistency as ata_ehi_schedule_probe() couldn\u0027t cover individual\ndevice probings so they were open-coded even when the helper existed.\n\nWhile at it, define ATA_ALL_DEVICES as mask of all possible devices on\na link and always use it when requesting probe on link level for\nsimplicity and consistency.  Setting extra bits in the probe_mask\ndoesn\u0027t hurt anybody.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "672b2d65ba83a6f3f801fd3d58851aa9c0725a54",
      "tree": "ed3a2fe8013bf8322df637838deccf9f2bc9c92c",
      "parents": [
        "d692abd92f22a81b38d52c39601871003262841c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jan 24 00:05:14 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:16 2008 -0400"
      },
      "message": "libata: kill ATA_EHI_RESUME_LINK\n\nATA_EHI_RESUME_LINK has two functions - promote reset to hardreset if\nATA_LFLAG_HRST_TO_RESUME is set and preventing EH from shortcutting\nreset action when probing is requested.  The former is gone now and\nthe latter can easily be achieved by making EH to perform at least one\nreset if reset is requested, which also makes more sense than\ndepending on RESUME_LINK flag.\n\nAs ATA_EHI_RESUME_LINK was the only EHI reset modifier, this also\nkills reset modifier handling.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "cf48062658e7ab3bc55e10c65676c3c73c16f8bf",
      "tree": "9a50a016ceb6051d8a30a43ea39f2a4d3d25570e",
      "parents": [
        "4b119e21d0c66c22e8ca03df05d9de623d0eb50f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jan 24 00:05:14 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jgarzik@redhat.com",
        "time": "Thu Apr 17 15:44:15 2008 -0400"
      },
      "message": "libata: prefer hardreset\n\nWhen both soft and hard resets are available, libata preferred\nsoftreset till now.  The logic behind it was to be softer to devices;\nhowever, this doesn\u0027t really help much.  Rationales for the change:\n\n* BIOS may freeze lock certain things during boot and softreset can\u0027t\n  unlock those.  This by itself is okay but during operation PHY event\n  or other error conditions can trigger hardreset and the device may\n  end up with different configuration.\n\n  For example, after a hardreset, previously unlockable HPA can be\n  unlocked resulting in different device size and thus revalidation\n  failure.  Similar condition can occur during or after resume.\n\n* Certain ATAPI devices require hardreset to recover after certain\n  error conditions.  On PATA, this is done by issuing the DEVICE RESET\n  command.  On SATA, COMRESET has equivalent effect.  The problem is\n  that DEVICE RESET needs its own execution protocol.\n\n  For SFF controllers with bare TF access, it can be easily\n  implemented but more advanced controllers (e.g. ahci and sata_sil24)\n  require specialized implementations.  Simply using hardreset solves\n  the problem nicely.\n\n* COMRESET initialization sequence is the norm in SATA land and many\n  SATA devices don\u0027t work properly if only SRST is used.  For example,\n  some PMPs behave this way and libata works around by always issuing\n  hardreset if the host supports PMP.\n\n  Like the above example, libata has developed a number of mechanisms\n  aiming to promote softreset to hardreset if softreset is not going\n  to work.  This approach is time consuming and error prone.\n\n  Also, note that, dependingon how you read the specs, it could be\n  argued that PMP fan-out ports require COMRESET to start operation.\n  In fact, all the PMPs on the market except one don\u0027t work properly\n  if COMRESET is not issued to fan-out ports after PMP reset.\n\n* COMRESET is an integral part of SATA connection and any working\n  device should be able to handle COMRESET properly.  After all, it\u0027s\n  the way to signal hardreset during reboot.  This is the most used\n  and recommended (at least by the ahci spec) method of resetting\n  devices.\n\nSo, this patch makes libata prefer hardreset over softreset by making\nthe following changes.\n\n* Rename ATA_EH_RESET_MASK to ATA_EH_RESET and use it whereever\n  ATA_EH_{SOFT|HARD}RESET used to be used.  ATA_EH_{SOFT|HARD}RESET is\n  now only used to tell prereset whether soft or hard reset will be\n  issued.\n\n* Strip out now unneeded promote-to-hardreset logics from\n  ata_eh_reset(), ata_std_prereset(), sata_pmp_std_prereset() and\n  other places.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "3ec25ebd69dc120d0590e64caaf1477aa88c8a93",
      "tree": "e0ea13a1f1e1fb5b2fa158fdd2f5122d09ae1d7f",
      "parents": [
        "0f436eff54f90419ac1b8accfb3e6e17c4b49a4e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Mar 27 18:37:14 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Mar 29 12:21:31 2008 -0400"
      },
      "message": "libata: ATA_EHI_LPM should be ATA_EH_LPM\n\nEH actions are ATA_EH_* not ATA_EHI_*.  Rename ATA_EHI_LPM to\nATA_EH_LPM.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Kristen Carlson Accardi \u003ckristen.c.accardi@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "eec59f76e9010e22d5736cf1907af4a92067522e",
      "tree": "d7b4aeae7ee26618f33001c0bbb1a68f28bdc26f",
      "parents": [
        "7f5e4e8d94b6013f93716bc42a1296f95d1059dc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Mar 06 13:09:34 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Mar 10 20:50:34 2008 -0400"
      },
      "message": "libata: allow LLDs w/o any reset method\n\nSome old SFF controllers don\u0027t have any way to reset the channel.\nCurrently, this isn\u0027t supported and libata EH causes an oops.  Allow\nLLDs w/o any reset method and just assume ATA class in such cases.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "332673257056d8be8a69d759eda90a799af5472d",
      "tree": "b2ff47054b6424f70a6c10bcffd47f2bdd70e4c8",
      "parents": [
        "0fca0d6f2ce3336022a22bc7fc2e009e599e63a4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Feb 13 09:15:09 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Feb 20 12:12:28 2008 -0500"
      },
      "message": "libata: implement libata.force module parameter\n\nThis patch implements libata.force module parameter which can\nselectively override ATA port, link and device configurations\nincluding cable type, SATA PHY SPD limit, transfer mode and NCQ.\n\nFor example, you can say \"use 1.5Gbps for all fan-out ports attached\nto the second port but allow 3.0Gbps for the PMP device itself, oh,\nthe device attached to the third fan-out port chokes on NCQ and\nshouldn\u0027t go over UDMA4\" by the following.\n\n libata.force\u003d2:1.5g,2.15:3.0g,2.03:noncq,udma4\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "75f9cafc2d24a1cf44d7c3f3e5b4f7a393afcf71",
      "tree": "a98170f1fae07fbb169f21b5391cc2edadbb697d",
      "parents": [
        "b710a1f4b34438b624e9c6c2dc8bcf54b0b0ba27"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jan 03 01:21:14 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:17 2008 -0500"
      },
      "message": "libata: fix off-by-one in error categorization\n\nATA_ECAT_DUBIOUS_BASE was too high by one and thus all DUBIOUS error\ncategorizations were wrong.  This passed test because only ATA_BUS and\nUNK_DEV were used during testing and the ones after them - ATA_BUS and\nan overflowed entry - behaved similarly.\n\nThis patch fixes the problem by adding DUBIOUS_NONE category and use\nit as base.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "0dc36888d4422140f9eaf50f24953ec109f750a3",
      "tree": "80253b1831849e4063b73c31c15011c5e4c48404",
      "parents": [
        "537b53c1692960b8b3b0324e886fbe48cb9e5c00"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Dec 18 16:34:43 2007 -0500"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:14 2008 -0500"
      },
      "message": "libata: rename ATA_PROT_ATAPI_* to ATAPI_PROT_*\n\nATA_PROT_ATAPI_* are ugly and naming schemes between ATA_PROT_* and\nATA_PROT_ATAPI_* are inconsistent causing confusion.  Rename them to\nATAPI_PROT_* and make them consistent with ATA counterpart.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "e6a73ab1c8e814ac7b0d69f44fde63299b639489",
      "tree": "0011b853ac6c61446f81639485baefd565db29e6",
      "parents": [
        "ce54d1616302117fa98513ae916bb3333e1c02ea"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Dec 13 16:01:37 2007 -0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:13 2008 -0500"
      },
      "message": "drivers/ata/libata-eh.c: fix printk warning\n\ndrivers/ata/libata-eh.c: In function `ata_port_pbar_desc\u0027:\ndrivers/ata/libata-eh.c:215: warning: long long unsigned int format, long unsigned int arg (arg 4)\n\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "e39eec13ff8c58520d77b5f977b1e0fa067fbd2c",
      "tree": "ab5cf19a2145dc4c8a90168751525ab3b8b69a9a",
      "parents": [
        "76326ac1ac1f524014ef36986fed97796b28ec6b"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Dec 01 18:05:39 2007 -0500"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:11 2008 -0500"
      },
      "message": "[libata] Build fix WRT ata_is_xxx() new API introduction\n\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "76326ac1ac1f524014ef36986fed97796b28ec6b",
      "tree": "56c662db2f65303e256fedac9a26362b921d759c",
      "parents": [
        "00115e0f5bc3bfdf3f3855ad89c8895f10458f92"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Nov 27 19:28:59 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:11 2008 -0500"
      },
      "message": "libata: implement fast speed down for unverified data transfer mode\n\nIt\u0027s very likely that the configured data transfer mode is the wrong\none if device fails data transfers right after initial data transfer\nmode configuration (including NCQ on/off and xfermode).  libata EH\nneeds to speed down fast before upper layers give up on probing.\n\nThis patch implement fast speed down rules to handle such cases\nbetter.  Error occured while data transfer hasn\u0027t been verified\ntrigger fast back-to-back speed down actions until data transfer\nworks.\n\nThis change will make cable mis-detection and other initial\nconfiguration problems corrected before partition scanning code gives\nup.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "00115e0f5bc3bfdf3f3855ad89c8895f10458f92",
      "tree": "5f174c1d68e1ec0770fefdb40b813f321a838095",
      "parents": [
        "663f99b86ac7d4c0eed8c239638da0ea8849288b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Nov 27 19:28:58 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:11 2008 -0500"
      },
      "message": "libata: implement ATA_DFLAG_DUBIOUS_XFER\n\nATA_DFLAG_DUBIOUS_XFER is set whenever data transfer speed or method\nchanges and gets cleared when data transfer command succeeds in the\nnewly configured transfer mode.\n\nThis will be used to improve speed down logic.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003c\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "663f99b86ac7d4c0eed8c239638da0ea8849288b",
      "tree": "413952549c288d31f5dec168e3a83fa232457093",
      "parents": [
        "3884f7b0a8382b89d8ca5da23bd98e3e15fc805b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Nov 27 19:28:57 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:11 2008 -0500"
      },
      "message": "libata: adjust speed down rules\n\nSpeed down rules were too conservative.  Adjust them a bit.\n\n* More than 10 timeouts can\u0027t happen in 5 minutes as command timeout\n  is 30secs.  Lower the limit for rule #1 to 6.\n\n* 10 timeouts is too high for rule #3 too.  Lower it to 6.\n\n* SATAPI can benefit from falling back to PIO too.  Allow SATAPI\n  devices to fall back to PIO.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "3884f7b0a8382b89d8ca5da23bd98e3e15fc805b",
      "tree": "a62ec936db81b3018d072cb03a28dc1d4337dd4a",
      "parents": [
        "6f1d1e3a03fd04a9d9c82fd3cf414020097bb142"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Nov 27 19:28:56 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:10 2008 -0500"
      },
      "message": "libata: clean up EH speed down implementation\n\nClean up EH speed down implementation.\n\n* is_io boolean variable is replaced eflags.  is_io is ATA_EFLAG_IS_IO.\n\n* Error categories now have names.\n\n* Better comments.\n\n* Reorder 5min and 10min rules in ata_eh_speed_down_verdict()\n\n* Use local variable @link to cache @dev-\u003elink in ata_eh_speed_down()\n\nThese changes are to improve readability and ease further changes.\nThis patch doesn\u0027t introduce any behavior change.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "6f1d1e3a03fd04a9d9c82fd3cf414020097bb142",
      "tree": "ceb7917e7ca056c2884ef9dd2a239945ad45724c",
      "parents": [
        "02c05a27e884c9655dae5b1c8bc0cd89c060c43d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Nov 27 19:28:55 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:10 2008 -0500"
      },
      "message": "libata: move ata_set_mode() to libata-eh.c\n\nMove ata_set_mode() to libata-eh.c.  ata_set_mode() is surely an EH\naction and will be more tightly coupled with the rest of error\nhandling.  Move it to libata-eh.c.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "02c05a27e884c9655dae5b1c8bc0cd89c060c43d",
      "tree": "94fb174047e12e60706f3930e5af601b6544d76c",
      "parents": [
        "405e66b38797875e80669eaf72d313dbb76533c3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Nov 27 19:28:54 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:10 2008 -0500"
      },
      "message": "libata: factor out ata_eh_schedule_probe()\n\nFactor out ata_eh_schedule_probe() from ata_eh_handle_dev_fail() and\nata_eh_recover().  This is to improve maintainability and make future\nchanges easier.\n\nIn the previous revision, ata_dev_enabled() test was accidentally\ndropped while factoring out.  This problem was spotted by Bartlomiej.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "bd3adca52bc43b72c75db3e4c7809d47923b154c",
      "tree": "ec42456926e50a4b0adf916ac1c5f39f76e057f8",
      "parents": [
        "ae8d4ee7ff429136c8b482c3b38ed994c021d3fc"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Fri Nov 02 09:32:38 2007 +0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Jan 23 05:24:09 2008 -0500"
      },
      "message": "libata-acpi: add ACPI _PSx method\n\nACPI spec (ver 3.0a, p289) requires IDE power on/off executes ACPI _PSx\nmethods. As recently most PATA drivers use libata, this patch adds _PSx\nmethod support in libata. ACPI spec doesn\u0027t mention if SATA requires the\nsame _PSx method.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Len Brown \u003clen.brown@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "4ccd3329a2e51473a86547a55f9e5f98f8f65b33",
      "tree": "40ef0e858a162c29b8a56392365588333b6eeb1e",
      "parents": [
        "2695e36616c3ece5e8e30666868fc7c90dc3fc75"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Jan 08 20:26:12 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Jan 10 16:53:22 2008 -0500"
      },
      "message": "libata: don\u0027t normalize UNKNOWN to NONE after reset\n\nAfter non-classifying reset, ehc-\u003eclasses[] could contain\nATA_DEV_UNKNOWN which used to be normalized to ATA_DEV_NONE for\nconsistency.  However, this causes unfortunate side effect for drivers\nwhich have non-classifying hardresets (e.g. sata_nv) by making\nhardreset report ATA_DEV_NONE for non-classifying resets and thus\nmakes EH believe that the port is unoccupied and recovery can be\nskipped.  The end result is that after a device is swapped with\nanother one, the new device isn\u0027t attached after the old one is\ndetached.\n\nThis patch makes ata_eh_reset() not normalize UNKNOWN to NONE after\nnon-classifying resets.  This fixes the above problem.  As UNKNOWN and\nNONE are handled differently by only EH hotplug logic, this doesn\u0027t\ncause other behavior changes.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Robert Hancock \u003chancockr@shaw.ca\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "2695e36616c3ece5e8e30666868fc7c90dc3fc75",
      "tree": "5e37a45c7dbcf70f7947e10180f10515d716b49f",
      "parents": [
        "8048307dbc3cfc30690b131e786fb57157fbdb11"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Jan 10 13:41:23 2008 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Jan 10 16:53:16 2008 -0500"
      },
      "message": "libata-pmp: propagate timeout to host link\n\nTimeout on downstream command may indicate transmission problem on\nhost link.  Propagate timeouts to host link.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "f2dfc1a12bb1a029df62b018a8e1882e91041025",
      "tree": "6e1909e2c96440df7543f38a0a5b1410961a4b67",
      "parents": [
        "3264a8d8f95348e05cc6ac1ce747a8339ed7ab08"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Dec 12 12:12:46 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Dec 17 20:33:15 2007 -0500"
      },
      "message": "libata: update atapi_eh_request_sense() such that lbam/lbah contains buffer size\n\nWhile updating lbam/h for ATAPI commands, atapi_eh_request_sense() was\nleft out.  Update it.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "abb6a88974a8c92b049eddf37685899c4021cf0a",
      "tree": "2d7effa375b1494212a11019c9f21158459578be",
      "parents": [
        "1c20a493caa30c5d47a394f9dbd86e6282323db9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Nov 28 23:16:09 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Dec 01 17:35:58 2007 -0500"
      },
      "message": "libata: report protocol and full CDB on error\n\nProtocol and CDB allocation size field are important in determining\nwhat went wrong with ATAPI commands.  Report them on failure.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "21bef6dd2b419f28c8096a8e30ad86dcbff44c02",
      "tree": "704912dbb4c28fd1a49d9256193762c19255d7a4",
      "parents": [
        "de753e5e8678d9674de0a3bda9ead9e770fdbf53"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Thu Nov 15 10:35:45 2007 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Nov 19 12:28:09 2007 +0900"
      },
      "message": "libata: remove unused functions\n\nThis patch removes the following obsolete functions:\n- libata-core.c: __sata_phy_reset()\n- libata-core.c: sata_phy_reset()\n- libata-eh.c: ata_qc_timeout()\n- libata-eh.c: ata_eng_timeout()\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "dfcc173d71b029eb2b10cf99bb5b4e8749e09799",
      "tree": "f8b62dc076a082560ffcf94f6f330150766c7ee7",
      "parents": [
        "08cf69d005acda706bc014c61301993758ce9c5f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Oct 31 10:17:05 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Nov 03 08:47:26 2007 -0400"
      },
      "message": "libata: consider errors not associated with commands for speed down\n\nlibata EH used to ignore errors not associated with commands when\ndetermining whether speed down is necessary or not.  This leads to the\nfollowing problems.\n\n* Errors not associated with commands can occur indefinitely without\n  libata EH taking corrective actions.\n\n* Upstream link errors don\u0027t trigger speed down when PMP is attached\n  to it and commands issued to downstream device trigger errors on the\n  upstream link.\n\nThis patch makes ata_eh_link_autopsy() consider errors not associated\nwith command for speed down.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "08cf69d005acda706bc014c61301993758ce9c5f",
      "tree": "a7254a45b25ea52bc77a3340650a9b45386f1650",
      "parents": [
        "416dc9ed206bba09807300ee5f155a81cebbd4a1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Oct 31 10:17:04 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Nov 03 08:46:54 2007 -0400"
      },
      "message": "libata: more robust reset failure handling\n\nReset failure is a critical error.  It results in disabling the link\nrequiring user intervention to re-enable it.  Make reset failure\nhandling more robust such that libata EH doesn\u0027t give up too early.\n\n* Temporary glitches during hardreset may lead to classification\n  failure when there\u0027s no softreset available.  Retry instead of\n  giving up.\n\n* Initial softreset or follow up softreset may fail classification.\n  Move classification error handling block out of followup softreset\n  block such that both cases are handled and retry instead of giving\n  up.  Also, on the last try, give ATA class a blind shot.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "416dc9ed206bba09807300ee5f155a81cebbd4a1",
      "tree": "483a86db1dbcdb443962f9597531ea0541ef61e6",
      "parents": [
        "cd955463bb4e96cfec18a0e5b6887c6797fb821d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Oct 31 10:17:03 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Nov 03 08:46:54 2007 -0400"
      },
      "message": "libata: cosmetic clean up / reorganization of ata_eh_reset()\n\nClean up and reorganize ata_eh_reset() to ease further changes.\n\n* Cache ARRAY_SIZE(ata_eh_reset_timeouts) in @max_tries.\n* Cache link-\u003eflags in @lflags.\n* Move failure handling block to the end of the function and unnest\n  both success and failure handling blocks.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "cd955463bb4e96cfec18a0e5b6887c6797fb821d",
      "tree": "c55ee46b45751e4cf1f4fe6595784add305d91d5",
      "parents": [
        "f8d8e5799b75cf7ad530d2bf2a42229bf7360526"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Oct 31 10:17:02 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat Nov 03 08:46:54 2007 -0400"
      },
      "message": "libata: fix timing computation in ata_eh_reset()\n\nAs jiffies changes asynchronously, it needs to be cached if unchanging\ntimestamp is needed.  The code in ata_eh_reset() intended to do that\nwith @now but never actually did it.  Fix it.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "e027bd36c146582cef382364e5c826db93d4427b",
      "tree": "45f3d3db848a5bd44bcb2191db17cbfd30f4911a",
      "parents": [
        "f90f0828e57e97cb1ff19520d252882cfc6fb3c0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Fri Oct 26 16:19:26 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue Oct 30 09:59:43 2007 -0400"
      },
      "message": "libata: implement and use ATA_QCFLAG_QUIET\n\nImplement ATA_QCFLAG_QUIET which indicates that there\u0027s no need to\nreport if the command fails with AC_ERR_DEV and set it for passthrough\ncommands.\n\nCombined with previous changes, this now makes device errors for all\ndirect commands reported directly to the issuer without going through\nEH actions and reporting.\n\nNote that EH is still invoked after non-IO device errors to determine\nthe nature of the error and resume command execution (some controller\nrequires special care after error to continue).  It just performs\ndefault maintenance after error, examines what\u0027s going on, realizes\nthat it\u0027s none of its business and reports the command failure without\nlogging any error messages.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "f90f0828e57e97cb1ff19520d252882cfc6fb3c0",
      "tree": "14e67383982020fa1eba40af22d202e5ec04a77b",
      "parents": [
        "b666da35d900c26cbea1caa465649e2e0afa406c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Fri Oct 26 16:12:41 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue Oct 30 09:59:42 2007 -0400"
      },
      "message": "libata: stop being overjealous about non-IO commands\n\nlibata EH always revalidated device and retried failed command after\nerror except for ATAPI CCs.  This is unnecessary and hinders with\nusers issuing direct commands.  This patch makes the following\nchanges.\n\n* Make sata_sil24 not request ATA_EH_REVALIDATE on device errors.\n  sil24 is the only driver which does this.  All others let libata EH\n  core code decide.\n\n* Don\u0027t request revalidation after device error of non-IO command.\n  Revalidation doesn\u0027t really help anybody.  As ATA_EH_REVALIDATE\n  isn\u0027t set by default, there\u0027s no reason to clear it after sense data\n  is read.  Kill ATA_EH_REVALIDATE clearing code while at it.\n\n* Don\u0027t retry non-IO command after device error.  Device has rejected\n  the command.  There\u0027s no point in retrying.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "ca77329fb713b7fea6a307068e0dd0248e7aa640",
      "tree": "6a1b987f489d7c3f0bbe81647b4ee2b0216afe8a",
      "parents": [
        "ab6fc95f609b372a19e18ea689986846ab1ba29c"
      ],
      "author": {
        "name": "Kristen Carlson Accardi",
        "email": "kristen.c.accardi@intel.com",
        "time": "Thu Oct 25 00:58:59 2007 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Oct 29 11:00:35 2007 -0400"
      },
      "message": "[libata] Link power management infrastructure\n\nDevice Initiated Power Management, which is defined\nin SATA 2.5 can be enabled for disks which support it.\nThis patch enables DIPM when the user sets the link\npower management policy to \"min_power\".\n\nAdditionally, libata drivers can define a function\n(enable_pm) that will perform hardware specific actions to\nenable whatever power management policy the user set up\nfor Host Initiated Power management (HIPM).\nThis power management policy will be activated after all\ndisks have been enumerated and intialized.  Drivers should\nalso define disable_pm, which will turn off link power\nmanagement, but not change link power management policy.\n\nDocumentation/scsi/link_power_management_policy.txt has additional\ninformation.\n\nSigned-off-by:  Kristen Carlson Accardi \u003ckristen.c.accardi@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    },
    {
      "commit": "4fb4615bc9465e7098665fa9616b6ac1f495f895",
      "tree": "fdd760b7dd485cb21ca5f6547e3db2335589aed0",
      "parents": [
        "cdeab1140799f09c5f728a5ff85e0bdfa5679cd2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Oct 29 16:45:05 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Oct 29 06:21:33 2007 -0400"
      },
      "message": "libata: no need to speed down if already at PIO0\n\nAfter reset, transfer mode is always PIO0 regardless of\ndev-\u003exfer_mask.  Check dev-\u003epio_mode before trying to slow down after\nconfiguration failure.  This prevents bogus speed down before device\nis actually configured.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nAcked-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "cdeab1140799f09c5f728a5ff85e0bdfa5679cd2",
      "tree": "51e70854ce9a41e3d7e0363fe5748635671b6a6f",
      "parents": [
        "a9efacbad1a735ec410acb26c9de72be8efb33d5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Oct 29 16:41:09 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Oct 29 06:21:33 2007 -0400"
      },
      "message": "libata: relocate forcing PIO0 on reset\n\nForcing PIO0 on reset was done inside ata_bus_softreset(), which is a\nbit out of place as it should be applied to all resets - hard, soft\nand implementation which don\u0027t use ata_bus_softreset().  Relocate it\nsuch that...\n\n* For new EH, it\u0027s done in ata_eh_reset() before calling prereset.\n\n* For old EH, it\u0027s done before calling ap-\u003eops-\u003ephy_reset() in\n  ata_bus_probe().\n\nThis makes PIO0 forced after all resets.  Another difference is that\nreset itself is done after PIO0 is forced.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nAcked-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "054a5fbaceb2eb3a31ea843c1cf0b8e10b91478c",
      "tree": "cbf21985f3894b11fe00666cef8ac33bae4f007d",
      "parents": [
        "4dbfa39b6c95eb9d0aedb5bd00bb552b91c31e3d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Thu Oct 25 18:30:36 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Oct 29 06:15:25 2007 -0400"
      },
      "message": "libata: track SLEEP state and issue SRST to wake it up\n\nATA devices in SLEEP mode don\u0027t respond to any commands.  SRST is\nnecessary to wake it up.  Till now, when a command is issued to a\ndevice in SLEEP mode, the command times out, which makes EH reset the\ndevice and retry the command after that, causing a long delay.\n\nThis patch makes libata track SLEEP state and issue SRST automatically\nif a command is about to be issued to a device in SLEEP.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Bruce Allen \u003cballen@gravity.phys.uwm.edu\u003e\nCc: Andrew Paprocki \u003candrew@ishiboo.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "0e06d9ce7a49d2ef2858cf07b44a324fc3a4c192",
      "tree": "c5dba8cb1a58aa6f002f19bf56aca53db64320dc",
      "parents": [
        "741b776335c3e91b0b8bf765a97f9484a3cd5034"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed Oct 24 15:21:26 2007 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Oct 25 02:02:02 2007 -0400"
      },
      "message": "libata: cosmetic clean up in ata_eh_reset()\n\nLocal variable @action usage in ata_eh_reset() is a bit confusing.\nIt\u0027s used only to cache ehc-\u003ei.action to test reset masks after\nclearing it; however, due to the generic name \"action\", it\u0027s easy to\nmisinterpret the local variable as containing the selected reset\nmethod later.  Also, the reason for caching the original value is easy\nto miss.\n\nThis patch renames @action to @tmp_action and make it buffer newly\nselected value instead to improve readability.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "2dcb407e61458ded17503d6bd12b8c064965368b",
      "tree": "6044e032197b84f9943a385b0c9dbb6656c3f97f",
      "parents": [
        "01e7ae8c13bb06a2ce622ebace33bb7e28ef596c"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Fri Oct 19 06:42:56 2007 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue Oct 23 20:59:42 2007 -0400"
      },
      "message": "[libata] checkpatch-inspired cleanups\n\nTackle the relatively sane complaints of checkpatch --file.\n\nThe vast majority is indentation and whitespace changes, the rest are\n\n* #include fixes\n* printk KERN_xxx prefix addition\n* BSS/initializer cleanups\n\nSigned-off-by: Jeff Garzik \u003cjgarzik@redhat.com\u003e\n"
    }
  ],
  "next": "2855568b1ee4f58ef2c0a13ddfceb4b0b216b7ed"
}
