)]}'
{
  "log": [
    {
      "commit": "ba6a13083c1b720a47c05bee7bedbb6ef06c4611",
      "tree": "26f9d8d37145fac426744f96ecf006ec0a481e31",
      "parents": [
        "47005f255ed126a4b48a1a2f63164fb1d83bcb0a"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Jun 22 23:46:10 2006 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Jun 22 23:46:10 2006 -0400"
      },
      "message": "[libata] Add host lock to struct ata_port\n\nPrepare for changes required to support SATA devices\nattached to SAS HBAs. For these devices we don\u0027t want to\nuse host_set at all, since libata will not be the owner\nof struct scsi_host.\n\nSigned-off-by: Brian King \u003cbrking@us.ibm.com\u003e\n\n(with slight merge modifications made by...)\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "47005f255ed126a4b48a1a2f63164fb1d83bcb0a",
      "tree": "bac4a73716af3d9cdb201f1bd83d65952fa2c988",
      "parents": [
        "3a778275626c0eb97674e92875efeba01189ce0e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jun 19 18:27:23 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Thu Jun 22 23:36:58 2006 -0400"
      },
      "message": "[PATCH] libata: implement per-dev EH action mask eh_info-\u003edev_action[]\n\nCurrently, the only per-dev EH action is REVALIDATE.  EH used to\nexploit ehi-\u003edev to do selective revalidation on a ATA bus.  However,\nthis is a bit hacky and makes it impossible to request selective\nrevalidation from outside of EH or add another per-dev EH action.\n\nThis patch adds per-dev EH action mask eh_info-\u003edev_action[] and\nupdate EH to use this field for REVALIDATE.  Note that per-dev actions\ncan still be specified at port-level and it has the same effect of\nspecifying the action for all devices on the port.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "aeb2ecd6096182cc080d37679080c0f088dcd4a4",
      "tree": "8e103a541f59c8a31656666352a4d5ea10c00088",
      "parents": [
        "f9be7113b56eb5d013a611d9c65e8d1d2d3f7c94"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jun 12 14:11:43 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Jun 12 02:10:26 2006 -0400"
      },
      "message": "[PATCH] libata: fast exit from EH while unloading\n\nMake EH exit fast if the port is being unloaded.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "f9be7113b56eb5d013a611d9c65e8d1d2d3f7c94",
      "tree": "e500b57b88989563a4b073f34a1ce8a9a1f48353",
      "parents": [
        "551e8889509c30cda31e464e5cbe7572c4e1febd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon Jun 12 14:11:01 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Jun 12 02:10:26 2006 -0400"
      },
      "message": "[PATCH] libata: fix ATA_EH_REVALIDATE clearing\n\nATA_EH_REVALIDATE should be cleared after all devices on the target\nport have been revalidated.  Fix ata_eh_revalidate_and_attach()\naccordingly.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "3057ac3c1a992ee135cbb7b7d1a12e58d81f0739",
      "tree": "38d83a88ee949b9db8f6655f90f98d88f8a5f2fd",
      "parents": [
        "39b07ce6d9f7cd4da8567baed844801e0aaa7b1a"
      ],
      "author": {
        "name": "zhao, forrest",
        "email": "forrest.zhao@intel.com",
        "time": "Mon Jun 12 12:01:34 2006 +0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Mon Jun 12 00:18:35 2006 -0400"
      },
      "message": "[PATCH] Snoop SET FEATURES - WRITE CACHE ENABLE/DISABLE command(v5)\n\nThis patch makes libata snoop \u0027SET FEATURES - WRITE CACHE\nENABLE/DISABLE\u0027 command, executing requisite revalidation processes\nto update cached data.\n\nSigned-off-by: Forrest Zhao \u003cforrest.zhao@intel.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "0a1b622ef495d8ebba9ad8982414c6661c16b604",
      "tree": "f5aeae33e8e0347635a9e309c46f90387156c42a",
      "parents": [
        "d87fa38e70853a9607dc34a02d15cf5f149f49f2"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Jun 11 11:01:38 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Jun 11 11:01:38 2006 +0900"
      },
      "message": "[PATCH] libata: add missing finish_wait() call in ata_port_wait_eh()\n\nAdd missing finish_wait() call after wait loop in ata_port_wait_eh().\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "d87fa38e70853a9607dc34a02d15cf5f149f49f2",
      "tree": "6afc6f8b9ff9c2c441efd61829d5d6fa6eb5698d",
      "parents": [
        "52783c5dcc8d317bc8c3e2692d366e8a305abada"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:24 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:24 2006 +0900"
      },
      "message": "[PATCH] libata-hp: move ata_do_reset() to libata-eh.c\n\nWith ops-\u003eprobe_init() gone, no user is left in libata-core.c.  Move\nata_do_reset() to libata-eh.c and make it static.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "720ba12620ee09dce269adf4ad50958adac7bb54",
      "tree": "f31a8b3da52195610bd244baf42a5fe2e26b0a36",
      "parents": [
        "3e706399b03bd237d087d731d4b1b029e546b33d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:13 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:13 2006 +0900"
      },
      "message": "[PATCH] libata-hp: update unload-unplug\n\nUpdate unload unplug - driver unloading / PCI removal.  This is done\nby ata_port_detach() which short-circuits EH, disables all devices and\nfreezes the port.  With this patch, EH and unloading/unplugging are\nproperly synchronized.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "3e706399b03bd237d087d731d4b1b029e546b33d",
      "tree": "51a5de83f8493d1b78cc16b0fa0abcac2b37cebc",
      "parents": [
        "ccf68c3405fca11386004674377d951b9b18e756"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:11 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:11 2006 +0900"
      },
      "message": "[PATCH] libata-hp: implement bootplug\n\nImplement bootplug - boot probing via hotplug path.  While loading,\nata_host_add() simply schedules probing and invokes EH.  After EH\ncompletes, ata_host_add() scans and assicates them with SCSI devices.\nEH path is slightly modified to handle this (e.g. no autopsy during\nbootplug).  The SCSI part is left in ata_host_add() because it\u0027s\nshared with legacy path and to keep probing order as before (ATA scan\nall ports in host_set then attach all).\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "580b2102327ab8444af5bde4e70b50d268a1d558",
      "tree": "01389e898e09dbaddb06405b182116b9be0e6d59",
      "parents": [
        "084fe639b81c4d418a2cf714acb0475e3713cb73"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:05 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:05 2006 +0900"
      },
      "message": "[PATCH] libata-hp: implement SCSI part of hotplug\n\nImplement SCSI part of hotplug.\n\nThis must be done in a separate context as SCSI makes use of EH during\nprobing.  SCSI scan fails silently if EH is in progress.  In such\ncases, libata pauses briefly and retries until every device is\nattached.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "084fe639b81c4d418a2cf714acb0475e3713cb73",
      "tree": "55afc26dbb866488b69e49b1742863d1293f6612",
      "parents": [
        "0ea035a3d1ad948096e205f08f350c03d5cea453"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:03 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:03 2006 +0900"
      },
      "message": "[PATCH] libata-hp: implement hotplug\n\nImplement ATA part of hotplug.  To avoid probing broken devices over\nand over again, disabled devices are not automatically detached.  They\nare detached only if probing is requested for the device or the\nassociated port is offline.  Also, to avoid infinite probing loop,\nEach device is probed only once per EH run.\n\nAs SATA PHY status is fragile, devices are detached only after it has\nused up its recovery chances unless explicitly requested by LLDD or\nuser (LLDD may request direct detach if, for example, it supports cold\npresence detection).\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "0ea035a3d1ad948096e205f08f350c03d5cea453",
      "tree": "fd003f929ab079f0852e3709436ca30a18265a39",
      "parents": [
        "e8e008e7b5ed8c65675cc9b3e778b8bb909f65ab"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:01 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:28:01 2006 +0900"
      },
      "message": "[PATCH] libata-hp: implement ata_eh_detach_dev()\n\nImplement ata_eh_detach_dev().  This function is responsible for\ndetaching an ATA device and offlining the associated SCSI device\natomically so that the detached device is not accessed after ATA\ndetach is complete.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "664faf09a05d74085c0b31e2c621d7647322325b",
      "tree": "6506775bb94e7e99f1730f4fd50eb2f3f7359620",
      "parents": [
        "f5914a461eb9703773226a0813f6ffcae10c0861"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:27:50 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:27:50 2006 +0900"
      },
      "message": "[PATCH] libata-hp-prep: implement followup softreset handling\n\nIn some cases, hardreset must be followed by SRST.\n\n* some controllers can\u0027t classify with hardreset\n* some controllers can\u0027t wait for !BSY after hardreset (LLDD should\n  explicitly request followup softreset by returning -EAGAIN)\n* (later) PM needs SRST w/ PMP\u003d\u003d15 to operate after hardreset\n\nTo handle above cases, this patch implements follow-up softreset.\nAfter a hardreset, ata_eh_reset() checks whether any of above\nconditions are met and do a follow-up softreset if necessary.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "f5914a461eb9703773226a0813f6ffcae10c0861",
      "tree": "3441af53250530c3135a8fa55f06dd7bc62da037",
      "parents": [
        "d7bb4cc7575929a60b0a718daa1bce87bea9a9cc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:27:48 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:27:48 2006 +0900"
      },
      "message": "[PATCH] libata-hp-prep: add prereset() method and implement ata_std_prereset()\n\nWith hotplug, every reset might be a probing reset and thus something\nsimilar to probe_init() is needed.  prereset() method is called before\na series of resets to a port and is the counterpart of postreset().\nprereset() can tell EH to use different type of reset or skip reset by\nmodifying ehc-\u003ei.action.\n\nThis patch also implements ata_std_prereset().  Most controllers\nshould be able to use this function directly or with some wrapping.\nAfter hotplug, different controllers need different actions to resume\nthe PHY and detect the newly attached device.  Controllers can be\ncategorized as follows.\n\n* Controllers which can wait for the first D2H FIS after hotplug.\n  Note that if the waiting is implemented by polling TF status, there\n  needs to be a way to set BSY on PHY status change.  It can be\n  implemented by hardware or with the help of the driver.\n\n* Controllers which can wait for the first D2H FIS after sending\n  COMRESET.  These controllers need to issue COMRESET to wait for the\n  first FIS.  Note that the received D2H FIS could be the first D2H\n  FIS after POR (power-on-reset) or D2H FIS in response to the\n  COMRESET.  Some controllers use COMRESET as TF status\n  synchronization point and clear TF automatically (sata_sil).\n\n* Controllers which cannot wait for the first D2H FIS reliably.\n  Blindly issuing SRST to spinning-up device often results in command\n  issue failure or timeout, causing extended delay.  For these\n  controllers, ata_std_prereset() explicitly waits ATA_SPINUP_WAIT\n  (currently 8s) to give newly attached device time to spin up, then\n  issues reset.  Note that failing to getting ready in ATA_SPINUP_WAIT\n  is not critical.  libata will retry.  So, the timeout needs to be\n  long enough to spin up most devices.\n\nLLDDs can tell ata_std_prereset() which of above action is needed with\nATA_FLAG_HRST_TO_RESUME and ATA_FLAG_SKIP_D2H_BSY flags.  These flags\nare PHY-specific property and will be moved to ata_link later.\n\nWhile at it, this patch unifies function typedef\u0027s such that they all\nhave named arguments.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "c6cf9e99d1de5ca6a08fb639bb73031ffe50d802",
      "tree": "555a47d45b5b80ef14ff53ccb4c6d1439460e251",
      "parents": [
        "7395acb2c840fd4d0cacc91d6fb71440057141ab"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:27:27 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:27:27 2006 +0900"
      },
      "message": "[PATCH] libata: implement ata_eh_wait()\n\nImplement ata_eh_wait().  On return from this function, it\u0027s\nguaranteed that the EH which was pending or in progress when the\nfunction was called is complete - including the tailing part of SCSI\nEH.  This will be used by hotplug and others to synchronize with EH.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "20952b699035448d2277c64efc5910a31be66ed1",
      "tree": "a2fab9d516ce200ebc8cf72cda214ec447e0d5d9",
      "parents": [
        "ef2824073fba9def3cf122e89cc485f66dd71f70"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:27:23 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Wed May 31 18:27:23 2006 +0900"
      },
      "message": "[PATCH] libata: set PIO-0 after successful EH reset\n\nSet ata_device-\u003epio_mode to XFER_PIO_0 after a successful reset.  This\nis to keep EH resets consistent with probe resets as updated by the\ncommit b6079ca409bf88c248992e96510dd6f610f7ed89.  Note that, with\nsoon-to-follow hotplug update, EH resets will include probe resets.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "f8bbfc247efb0e5fa69094614380768ce79afe17",
      "tree": "726b8eb9d41b5f7036c987b80282b90440a295ed",
      "parents": [
        "a20f33ffde8ba5fb27666aa1e228a45b7e3b8dcb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Fri May 19 21:07:05 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat May 20 00:39:08 2006 -0400"
      },
      "message": "[PATCH] SCSI: make scsi_implement_eh() generic API for SCSI transports\n\nlibata implemented a feature to schedule EH without an associated EH\nby manipulating shost-\u003ehost_eh_scheduled in ata_scsi_schedule_eh()\ndirectly.  Move this function to scsi_error.c and rename it to\nscsi_schedule_eh().  It is now an exported API for SCSI transports and\nexported via new header file drivers/scsi/scsi_transport_api.h\n\nThis patch also de-export scsi_eh_wakeup() which was exported\nspecifically for ata_scsi_schedule_eh().\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "a20f33ffde8ba5fb27666aa1e228a45b7e3b8dcb",
      "tree": "850a2717f3861470a0020272f98416e17d36e5bf",
      "parents": [
        "eec4c3f317991dc85c786ffccd9c1a8620c41b18"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue May 16 12:58:24 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sat May 20 00:39:08 2006 -0400"
      },
      "message": "[PATCH] libata: enforce default EH actions\n\nLLDDs rely on libata that certain EH actions are automatically taken\non some errors.  If the port is frozen or one or more qc\u0027s have failed\nwith HSM violation or timeout, softreset is enforced (LLDD can ask for\nstoronger EH action at will).  If any other error condition exists,\nlibata EH always revalidates.\n\nThis behavior existed in earlier revisions of new EH but lost during\ndevelopment process.  This patch restores it.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "e8ee84518c159a663c07bf691ace187527380f61",
      "tree": "ffd6d89b4e38ff2a70463125a3022771f69b2286",
      "parents": [
        "3dc1d88193b9c65b01b64fb2dc730e486306649f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 21:03:46 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 21:03:46 2006 +0900"
      },
      "message": "[PATCH] libata-ncq: update EH to handle NCQ\n\nUpdate EH to handle NCQ.  ata_eh_autopsy() is updated to call\nata_eh_analyze_ncq_error() which reads log page 10h on NCQ device\nerror and updates eh_context accordingly.  ata_eh_report() is updated\nto report SActive.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "12436c30f4808e00fa008c6787c609bc6ae216ba",
      "tree": "22ddaad8def4f4a77637a3da62a8d8f422a95c29",
      "parents": [
        "88ce7550c38f46c8697f53727a571bf838bee398",
        "7894eaf291238a62a565e9e9777483beeb00eeae"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 20:59:15 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 20:59:15 2006 +0900"
      },
      "message": "Merge branch \u0027irq-pio\u0027\n\nConflicts:\n\n\tdrivers/scsi/libata-core.c\n\tinclude/linux/libata.h\n"
    },
    {
      "commit": "022bdb075b9e1f224088a0b268de56268d7bc5b6",
      "tree": "05878e28202f0a86bdcc32ae5d995db9f15042da",
      "parents": [
        "f3e81b19aac23c0e8c55d5961324ef7de44c23bb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 20:58:22 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 20:58:22 2006 +0900"
      },
      "message": "[PATCH] libata-eh: implement new EH\n\nImplement new EH.  The exported interface is ata_do_eh() which is to\nbe called from -\u003eerror_handler and performs the following steps to\nrecover the failed port.\n\nata_eh_autopsy() : analyze SError/TF, determine the cause of failure\n\t\t   and required recovery actions and record it in\n\t\t   ap-\u003eeh_context\nata_eh_report()\t : report the failure to user\nata_eh_recover() : perform recovery actions described in ap-\u003eeh_context\nata_eh_finish()\t : finish failed qcs\n\nLLDDs can customize error handling by modifying eh_context before\ncalling ata_do_eh() or, if necessary, doing so inbetween each major\nsteps by calling each step explicitly.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "f3e81b19aac23c0e8c55d5961324ef7de44c23bb",
      "tree": "9ea0bf3c5ecabb855a78623236d07e7bc2976ca3",
      "parents": [
        "0c247c559cd70f85ba9f0764ce13ae00e20fcad8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 20:58:21 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 20:58:21 2006 +0900"
      },
      "message": "[PATCH] libata-eh: implement ata_eh_info and ata_eh_context\n\nstruct ata_eh_info serves as the communication channel between\nexecution path and EH.  Execution path describes detected error\ncondition in ap-\u003eeh_info and EH recovers the port using it.  To avoid\nmissing error conditions detected during EH, EH makes its own copy of\neh_info and clears it on entry allowing error info to accumulate\nduring EH.\n\nMost EH states including EH\u0027s copy of eh_info are stored in\nap-\u003eeh_context (struct ata_eh_context) which is owned by EH and thus\ndoesn\u0027t require any synchronization to access and alter.  This\nstandardized context makes it easy to integrate various parts of EH\nand extend EH to handle multiple links (for PM).\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "0c247c559cd70f85ba9f0764ce13ae00e20fcad8",
      "tree": "9b0d00b300ad9178438b9c7feba95ed62f540c1a",
      "parents": [
        "9be1e979f2e1e57a091a658fa88dac266f9fd6fe"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 20:58:19 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 20:58:19 2006 +0900"
      },
      "message": "[PATCH] libata-eh: implement dev-\u003eering\n\nThis patch implements ata_ering and uses it to define dev-\u003eering.\n\nata_ering is a ring buffer which records libata errors - whether a\ncommand was for normar IO request, err_mask and timestamp.  Errors are\nrecorded per-device in dev-\u003eering.  This will be used by EH to\ndetermine recovery actions.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "ad9e27624479bd167dd7eac0cea4bb3ad13bc926",
      "tree": "47b863c91509a29c9b0f760faa52d60a95272ba6",
      "parents": [
        "dafadcde8d4dc5ea8c742faa7ff4403336b542b8"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 20:58:12 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 20:58:12 2006 +0900"
      },
      "message": "[PATCH] libata-eh-fw: update ata_scsi_error() for new EH\n\nUpdate ata_scsi_error() for new EH.  ata_scsi_error() is responsible\nfor claiming timed out qcs and invoking -\u003eerror_handler in safe and\nsynchronized manner.  As the state of the controller is unknown if a\nqc has timed out, the port is frozen in such cases.\n\nNote that ata_scsi_timed_out() isn\u0027t used for new EH.  This is because\na timed out qc cannot be claimed by EH without freezing the port and\nfreezing the port in ata_scsi_timed_out() results in unnecessary\nabortion of other active qcs.  ata_scsi_timed_out() can be removed\nonce all drivers are converted to new EH.\n\nWhile at it, add \u0027TODO: kill\u0027 comments to old EH functions.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "e318049949b07152d851dbfebbd93e560af45ebe",
      "tree": "cbc322c94717c9ac5d7e2c48a9f690a2e0145b81",
      "parents": [
        "7b70fc039824bc7303e4007a5f758f832de56611"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 20:58:09 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 20:58:09 2006 +0900"
      },
      "message": "[PATCH] libata-eh-fw: implement freeze/thaw\n\nFreezing is performed atomic w.r.t. host_set-\u003elock and once frozen\nLLDD is not allowed to access the port or any qc on it.  Also, libata\nmakes sure that no new qc gets issued to a frozen port.\n\nA frozen port is thawed after a reset operation completes\nsuccessfully, so reset methods must do its job while the port is\nfrozen.  During initialization all ports get frozen before requesting\nIRQ, so reset methods are always invoked on a frozen port.\n\nOptional -\u003efreeze and -\u003ethaw operations notify LLDD that the port is\nbeing frozen and thawed, respectively.  LLDD can disable/enable\nhardware interrupt in these callbacks if the controller\u0027s IRQ mask can\nbe changed dynamically.  If the controller doesn\u0027t allow such\noperation, LLDD can check for frozen state in the interrupt handler\nand ack/clear interrupts unconditionally while frozen.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "7b70fc039824bc7303e4007a5f758f832de56611",
      "tree": "d973a40055dec97fedc5ae87852667ed2d30ea71",
      "parents": [
        "f686bcb8078ac7505ec88818886c2c72639f4fc5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 20:58:07 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 20:58:07 2006 +0900"
      },
      "message": "[PATCH] libata-eh-fw: implement ata_port_schedule_eh() and ata_port_abort()\n\nata_port_schedule_eh() directly schedules EH for @ap without\nassociated qc.  Once EH scheduled, no further qc is allowed and EH\nkicks in as soon as all currently active qc\u0027s are drained.\n\nata_port_abort() schedules all currently active commands for EH by\nqc_completing them with ATA_QCFLAG_FAILED set.  If ata_port_abort()\ndoesn\u0027t find any qc to abort, it directly schedule EH using\nata_port_schedule_eh().\n\nThese two functions provide ways to invoke EH for conditions which\naren\u0027t directly related to any specfic qc.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "f686bcb8078ac7505ec88818886c2c72639f4fc5",
      "tree": "7c563e0032b2d85b631b617b8bb2a7a648607468",
      "parents": [
        "f69499f42caf74194df678c9c293f2ee0fe90bc3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 20:58:05 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 20:58:05 2006 +0900"
      },
      "message": "[PATCH] libata-eh-fw: implement new EH scheduling via error completion\n\nThere are several ways a qc can get schedule for EH in new EH.  This\npatch implements one of them - completing a qc with ATA_QCFLAG_FAILED\nset or with non-zero qc-\u003eerr_mask.  ALL such qc\u0027s are examined by EH.\n\nNew EH schedules a qc for EH from completion iff -\u003eerror_handler is\nimplemented, qc is marked as failed or qc-\u003eerr_mask is non-zero and\nthe command is not an internal command (internal cmd is handled via\n-\u003epost_internal_cmd).  The EH scheduling itself is performed by asking\nSCSI midlayer to schedule EH for the specified scmd.\n\nFor drivers implementing old-EH, nothing changes.  As this change\nmakes ata_qc_complete() rather large, it\u0027s not inlined anymore and\n__ata_qc_complete() is exported to other parts of libata for later\nuse.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "f15a1dafed22d5037e0feea7528e1eeb28a1a7a3",
      "tree": "5bf5c98332036d62bd4cca3a104844faa318c712",
      "parents": [
        "61440db61fe4945ad9f7b32b4d6a22b17174aa1f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 20:57:56 2006 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Mon May 15 20:57:56 2006 +0900"
      },
      "message": "[PATCH] libata: use ATA printk helpers\n\nUse ATA printk helpers.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\n"
    },
    {
      "commit": "a890b15c0990cc8d686edcc85f5fccde71ad5ce9",
      "tree": "73162355b58283a2531f13fbbf663809f95c1483",
      "parents": [
        "79fa1b677be3a985cc66b9218a4dd09818f1051b",
        "26ec634c31a11a003040e10b4d650495158632fd"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Apr 12 16:54:43 2006 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Wed Apr 12 16:54:43 2006 -0400"
      },
      "message": "Merge branch \u0027upstream\u0027\n"
    },
    {
      "commit": "35bb94b116e1fd4959ef0d3187458b5820eac8c4",
      "tree": "48a05166c489838d04429279a2886ac6a32b20c9",
      "parents": [
        "381544bba3ae6f2f1004b267da34f840b469033c"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue Apr 11 13:12:34 2006 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue Apr 11 13:12:34 2006 -0400"
      },
      "message": "libata: Add helper ata_shost_to_port()\n"
    },
    {
      "commit": "381544bba3ae6f2f1004b267da34f840b469033c",
      "tree": "e748d5da19d3fa79bee2ad5b40b44722cdf64184",
      "parents": [
        "10a5fd5e6b7e2d464c9f95f67cade4ddbd63f4e1"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue Apr 11 13:04:39 2006 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue Apr 11 13:04:39 2006 -0400"
      },
      "message": "libata: Fix EH merge difference between this branch and upstream.\n"
    },
    {
      "commit": "4332a771f4d2f23a6d3beff3dd5405e79775a211",
      "tree": "4d4dbcb97e1ff0ac89d49ab36ed6c248e348c4ce",
      "parents": [
        "862cff63781e3a9de85d8947c82d55f4cc95572b"
      ],
      "author": {
        "name": "Albert Lee",
        "email": "albertcc@tw.ibm.com",
        "time": "Mon Apr 03 17:43:24 2006 +0800"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Tue Apr 04 08:42:25 2006 -0400"
      },
      "message": "[PATCH] libata-dev: irq-pio minor fix\n\nirq-pio minor fix:\n- remove the redundant hsm_task_state \u003d HSM_ST_IDLE\n- add devno to printk() as done in upstream\n\nSigned-off-by: Albert Lee \u003calbertcc@tw.ibm.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    },
    {
      "commit": "c13b56a1130bbfacfb588de100e5a248383805a6",
      "tree": "7f10fbcb822fe50225a3ae6f4644775b72c6290c",
      "parents": [
        "029f5468b5b5f93a09bf90326fdcb9124079658d"
      ],
      "author": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sun Apr 02 10:34:24 2006 -0400"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sun Apr 02 10:34:24 2006 -0400"
      },
      "message": "[libata] irq-pio: Fix merge mistake\n"
    },
    {
      "commit": "ece1d63619df010b8c4f08e43755e2a03f3b6eed",
      "tree": "c6474fe7541d479bf19c36c79700dfa9f6093a8d",
      "parents": [
        "35e86b53b1a38e78ff0d70dae4aeb25f4572e433"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Apr 02 18:51:53 2006 +0900"
      },
      "committer": {
        "name": "Jeff Garzik",
        "email": "jeff@garzik.org",
        "time": "Sun Apr 02 10:09:21 2006 -0400"
      },
      "message": "[PATCH] libata: separate out libata-eh.c\n\nA lot of EH codes are about to be added to libata.  Separate out\nlibata-eh.c.  ata_scsi_timed_out(), ata_scsi_error(),\nata_qc_timeout(), ata_eng_timeout(), ata_eh_qc_complete() and\nata_eh_qc_retry() are moved.  No code is changed by this patch.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n"
    }
  ]
}
