)]}'
{
  "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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a67b8e7c712dce78b371a5b5d0d1b39c33cb9e47",
      "old_mode": 33188,
      "old_path": "drivers/ata/ahci.c",
      "new_id": "656448c7fef9df9965091d0d41c75d5db5778086",
      "new_mode": 33188,
      "new_path": "drivers/ata/ahci.c"
    },
    {
      "type": "modify",
      "old_id": "5c33767e66de8e25493fe37343c5fe433c2971b7",
      "old_mode": 33188,
      "old_path": "drivers/ata/ata_generic.c",
      "new_id": "dc48a6398abe145432939e742718852fb7b24adb",
      "new_mode": 33188,
      "new_path": "drivers/ata/ata_generic.c"
    },
    {
      "type": "modify",
      "old_id": "c012307d0ba6a726f7a0c9b30eac55f698da5b0b",
      "old_mode": 33188,
      "old_path": "drivers/ata/libata-acpi.c",
      "new_id": "ef02e488d468880a6af3dc624fbf854685dc730e",
      "new_mode": 33188,
      "new_path": "drivers/ata/libata-acpi.c"
    },
    {
      "type": "modify",
      "old_id": "bc6695e3c8482927e5b6de7ae4017c9884bea4a8",
      "old_mode": 33188,
      "old_path": "drivers/ata/libata-core.c",
      "new_id": "ffd98e4e65b45a05f95797439949d505a33af660",
      "new_mode": 33188,
      "new_path": "drivers/ata/libata-core.c"
    },
    {
      "type": "modify",
      "old_id": "32da9a93ce44ae221caa63b753c225c81b257f5d",
      "old_mode": 33188,
      "old_path": "drivers/ata/libata-eh.c",
      "new_id": "d673f3712bdc27f609faf793bc60ea63fb679c76",
      "new_mode": 33188,
      "new_path": "drivers/ata/libata-eh.c"
    },
    {
      "type": "modify",
      "old_id": "b65db309c181f02f76431a4d7b3e24d5e63b3388",
      "old_mode": 33188,
      "old_path": "drivers/ata/libata-pmp.c",
      "new_id": "98ca07a2db87e22a49895e8d1bfd48c332875f49",
      "new_mode": 33188,
      "new_path": "drivers/ata/libata-pmp.c"
    },
    {
      "type": "modify",
      "old_id": "47c7afcb36f2537d0a6b70b9eea4faf5bfee3f27",
      "old_mode": 33188,
      "old_path": "drivers/ata/libata-scsi.c",
      "new_id": "0b2e14f67655510b68bdf772d8294b946f8c6782",
      "new_mode": 33188,
      "new_path": "drivers/ata/libata-scsi.c"
    },
    {
      "type": "modify",
      "old_id": "860ede526282d5dc1939c132f0cb44429345443d",
      "old_mode": 33188,
      "old_path": "drivers/ata/pata_it821x.c",
      "new_id": "f828a29d77567e27ff539845e3e51745344007dd",
      "new_mode": 33188,
      "new_path": "drivers/ata/pata_it821x.c"
    },
    {
      "type": "modify",
      "old_id": "2014253f6c8842981b6d6b2f34ca8a52144ccbe4",
      "old_mode": 33188,
      "old_path": "drivers/ata/pata_ixp4xx_cf.c",
      "new_id": "b173c157ab007ac7dc5070f13e4d9d96ed8ade4c",
      "new_mode": 33188,
      "new_path": "drivers/ata/pata_ixp4xx_cf.c"
    },
    {
      "type": "modify",
      "old_id": "930c2208640b950740f53f89cbd25799eebda645",
      "old_mode": 33188,
      "old_path": "drivers/ata/pata_legacy.c",
      "new_id": "cbd98c16eea4dd5982afd6425009bd1777f4f8d7",
      "new_mode": 33188,
      "new_path": "drivers/ata/pata_legacy.c"
    },
    {
      "type": "modify",
      "old_id": "0e1c2c1134d34b10dfc50d85d27c3136c948245a",
      "old_mode": 33188,
      "old_path": "drivers/ata/pata_pdc2027x.c",
      "new_id": "d43e8be96b884409ac29c855290de1907eac6fc8",
      "new_mode": 33188,
      "new_path": "drivers/ata/pata_pdc2027x.c"
    },
    {
      "type": "modify",
      "old_id": "77e4e3b17f5479b7ee4a2306513f4e8aa5d3a18f",
      "old_mode": 33188,
      "old_path": "drivers/ata/pata_platform.c",
      "new_id": "6afa07a37648ef7aac343f1d7bdb7e5d5de57161",
      "new_mode": 33188,
      "new_path": "drivers/ata/pata_platform.c"
    },
    {
      "type": "modify",
      "old_id": "7dfd1f3f6f3a21b31e738c4254a2aa5413890610",
      "old_mode": 33188,
      "old_path": "drivers/ata/pata_rz1000.c",
      "new_id": "46d6bc1bf1e92afc990479c37525f4e91f197904",
      "new_mode": 33188,
      "new_path": "drivers/ata/pata_rz1000.c"
    },
    {
      "type": "modify",
      "old_id": "031d7b7dee34bc09998c9d9cfa4d65891d47aa86",
      "old_mode": 33188,
      "old_path": "drivers/ata/sata_sil.c",
      "new_id": "177370921774c82ac1a294fbe3742356efe638d8",
      "new_mode": 33188,
      "new_path": "drivers/ata/sata_sil.c"
    },
    {
      "type": "modify",
      "old_id": "ed3f26eb5df1421287ea41d17feed10be87cafeb",
      "old_mode": 33188,
      "old_path": "include/linux/libata.h",
      "new_id": "3b2a0c6444ee41a3f93055a4669b5509667b2bc9",
      "new_mode": 33188,
      "new_path": "include/linux/libata.h"
    }
  ]
}
