)]}'
{
  "log": [
    {
      "commit": "e08e045cdd38ddcef83bc1da997fec655746d2a2",
      "tree": "904006ee84b9e0e4486789f9bc132174fdca5af9",
      "parents": [
        "9e1eb5dd357d4ee2edb6575d4518da6b447d9cd2"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Jun 10 12:48:34 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Jun 10 12:54:14 2019 -0700"
      },
      "message": "adb: avoid freeing argv entries on Windows.\n\nWe assign string literals directly to argv[0], which leads to fun\nexplosions when we attempt to free  when the runtime can detect that\na bad free happened, which seems to happen reliably with lld.\n\nBug: http://b/110800681\nTest: `adb shell true` on windows\nChange-Id: Ica81e472c31686d80b58c41ff6d2b825baef06fb\n"
    },
    {
      "commit": "9e1eb5dd357d4ee2edb6575d4518da6b447d9cd2",
      "tree": "7183dcd6c68b3a685636a6fd9925c8d2be5e86fd",
      "parents": [
        "05ed1207662607872baf6426e39c74c80b172a3d",
        "1b11c232144db6c836ebc74ec2e7a9c6581dd818"
      ],
      "author": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Wed Jun 05 20:43:55 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 05 20:43:55 2019 +0000"
      },
      "message": "Merge \"adb: Allow `adb rescue getprop`.\""
    },
    {
      "commit": "1b11c232144db6c836ebc74ec2e7a9c6581dd818",
      "tree": "7de830cf71e3c184729bca28ce2b051cb04c6780",
      "parents": [
        "6f8d0f7b7cafa7b00a683e22e9b1a8c452aea47c"
      ],
      "author": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Tue Jun 04 14:37:06 2019 -0700"
      },
      "committer": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Tue Jun 04 14:59:58 2019 -0700"
      },
      "message": "adb: Allow `adb rescue getprop`.\n\nWhich will dump all the allowed properties, similar to `adb shell\ngetprop`.\n\nBug: 134027350\nTest: Run the command under rescue mode.\nChange-Id: Id668224098006d71ee192c8c2bea5d791d2423c1\n"
    },
    {
      "commit": "05ed1207662607872baf6426e39c74c80b172a3d",
      "tree": "d843a6ead0fc9c1fb5fac0b820e8192aed20b8f6",
      "parents": [
        "9d31d5f25c03e4923fdece9972b0184931956ba2",
        "5a395817c4fa6464892668aa5af70c8b4b597bb6"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jun 04 19:22:08 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 04 19:22:08 2019 +0000"
      },
      "message": "Merge changes I2d005e17,If2eec162,Icfd642e6\n\n* changes:\n  adb: daemon: Assign valid fd to usb_handle ep0 file descriptor\n  adbd: respond to device-to-host control transfers.\n  adbd: read, print, and ignore USB control transfers.\n"
    },
    {
      "commit": "9d31d5f25c03e4923fdece9972b0184931956ba2",
      "tree": "03d7eb852907eaa7ae87cd46ea3c2bc9ffd69782",
      "parents": [
        "43f584dab8d4755d2f5944af78a3f758ca2da0b1",
        "28f0235b01db038b5e816703f3fb30ed724f6989"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jun 04 19:22:00 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 04 19:22:00 2019 +0000"
      },
      "message": "Merge \"adbd: provide MS OS descriptors for WinUSB.\""
    },
    {
      "commit": "43f584dab8d4755d2f5944af78a3f758ca2da0b1",
      "tree": "8c5859e5c25ff705defc3f28cf140a80801f2e54",
      "parents": [
        "6f8d0f7b7cafa7b00a683e22e9b1a8c452aea47c",
        "ed2e87395294193e9fb07e6a4c17176ac111a397"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 03 22:49:48 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 03 22:49:48 2019 +0000"
      },
      "message": "Merge \"Allow adb to handle single paramter with install-multi-package flag\""
    },
    {
      "commit": "6f8d0f7b7cafa7b00a683e22e9b1a8c452aea47c",
      "tree": "9bc187df30ba97292970af50940bfff038aa2268",
      "parents": [
        "ed50d6295fe44faff0cfc68662583f888fb29629"
      ],
      "author": {
        "name": "chihhao.chen",
        "email": "chihhao.chen@mediatek.com",
        "time": "Mon May 20 16:55:55 2019 +0800"
      },
      "committer": {
        "name": "Hridya Valsaraju",
        "email": "hridya@google.com",
        "time": "Wed May 29 23:10:50 2019 +0000"
      },
      "message": "Fix non-aio USB read issue for fastbootd\n\nnon-aio USB read function was stuck in a loop waiting for more data\nbecause data length parameter is always set 64 for fastbootd commands.\nIt should be a normal case to get less data than expected\nsince lengths of these commands are usually less than 64.\nAdd logic to check this and one more parameter to distinguish\nfastbootd from general adbd case.\n\nBug: 133189029\nTest: try various fastbootd commands\nChange-Id: I6690324840d78f3f1e04235040301520329976db\nMerged-In: I6690324840d78f3f1e04235040301520329976db\n"
    },
    {
      "commit": "ed2e87395294193e9fb07e6a4c17176ac111a397",
      "tree": "fed48ae6ff0b8e4584c859debef19676f696c218",
      "parents": [
        "ed50d6295fe44faff0cfc68662583f888fb29629"
      ],
      "author": {
        "name": "Mohammad Samiul Islam",
        "email": "samiul@google.com",
        "time": "Wed May 29 15:00:00 2019 +0100"
      },
      "committer": {
        "name": "Mohammad Samiul Islam",
        "email": "samiul@google.com",
        "time": "Wed May 29 15:00:00 2019 +0100"
      },
      "message": "Allow adb to handle single paramter with install-multi-package flag\n\nBug: 130164367\nTest: $adb install-multi-package dummy.apk\n      It installs successfully.\n\nChange-Id: I5775813d10b7a8d865518ce5480a401e8f41e876\n"
    },
    {
      "commit": "5a395817c4fa6464892668aa5af70c8b4b597bb6",
      "tree": "a237834cc21c6ea05ad1c331abe6ac85fa7de785",
      "parents": [
        "f60bc8cfba0e4ed8b77d0c638baa2c579ab125f9"
      ],
      "author": {
        "name": "Hemant Kumar",
        "email": "hemantk@codeaurora.org",
        "time": "Tue May 21 17:55:04 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue May 28 17:53:24 2019 -0700"
      },
      "message": "adb: daemon: Assign valid fd to usb_handle ep0 file descriptor\n\nBug: http://b/129283234\nTest: treehugger\nChange-Id: I2d005e17ccb45af95351c074cc53f6cfc53b5fdd\n"
    },
    {
      "commit": "f60bc8cfba0e4ed8b77d0c638baa2c579ab125f9",
      "tree": "dabccbafb5cc5f310d376af22c651c6aa4dff37b",
      "parents": [
        "374a2669ccf5dc19f315ded420337b16f3f161ba"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue May 21 16:07:03 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue May 28 17:52:11 2019 -0700"
      },
      "message": "adbd: respond to device-to-host control transfers.\n\nFailing to write to the endpoint results in subsequent reads on ep0 to\nfail with EL2HLT, so do an empty write to fulfill the transfer.\n\nBug: http://b/131867920\nTest: manually tested with modified auto client\nChange-Id: If2eec162ca4b31a9974c7bd5802be51cee9e2708\nMerged-In: If2eec162ca4b31a9974c7bd5802be51cee9e2708\n(cherry-picked from internal commit 4dbf9f38682ffac7bbd3745afa9eb8cf46bd46d4)\n"
    },
    {
      "commit": "374a2669ccf5dc19f315ded420337b16f3f161ba",
      "tree": "2ff4650afaeca9d39ae65214c31e384c250b0a61",
      "parents": [
        "7f138b11c6e666e9254cf36e06466785dae46554"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 15 18:03:29 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue May 28 17:51:05 2019 -0700"
      },
      "message": "adbd: read, print, and ignore USB control transfers.\n\nIt seems like we\u0027re blowing up when receiving a control transfer that\u0027s\nintended for Android Auto, because we\u0027re not expecting to get the data\nfor the control transfer in a subsequent read.\n\nBug: http://b/131867920\nTest: none\nChange-Id: Icfd642e6dfc02d2ccbdd60c39f89e534298c944d\nMerged-In: Icfd642e6dfc02d2ccbdd60c39f89e534298c944d\n(cherry-picked from internal commit 7be217e5989fdd574bd40075a01a0b2b656c7dbd)\n"
    },
    {
      "commit": "28f0235b01db038b5e816703f3fb30ed724f6989",
      "tree": "8c9fbbf1a513e1907716d62e2a78aa6a19a80177",
      "parents": [
        "7f138b11c6e666e9254cf36e06466785dae46554"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri May 17 18:17:38 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 22 14:58:13 2019 -0700"
      },
      "message": "adbd: provide MS OS descriptors for WinUSB.\n\nAdd Microsoft OS Descriptors so that on Windows, we get automatically\nregistered with the WinUSB driver instead of requiring a different INF\nto be used with device with a different vendor ID.\n\nBug: http://b/68993980\nTest: manually changed the vendor ID on a blueline and connected it to a Windows VM\nChange-Id: Id78bae270df9805573a90a86019267b53a3c8252\n"
    },
    {
      "commit": "ed50d6295fe44faff0cfc68662583f888fb29629",
      "tree": "92600dc709fc805ca9bd1a0dc8cfde796a2bbd37",
      "parents": [
        "7f138b11c6e666e9254cf36e06466785dae46554",
        "9769fe6eb3b8c09c365301870e555e08c30d8727"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu May 16 06:36:11 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 16 06:36:11 2019 +0000"
      },
      "message": "Merge \"Initialize all fields of struct iocb.\""
    },
    {
      "commit": "9769fe6eb3b8c09c365301870e555e08c30d8727",
      "tree": "92600dc709fc805ca9bd1a0dc8cfde796a2bbd37",
      "parents": [
        "7f138b11c6e666e9254cf36e06466785dae46554"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed May 15 18:45:01 2019 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed May 15 18:46:18 2019 -0700"
      },
      "message": "Initialize all fields of struct iocb.\n\nKernel does not accept non-zero value of iocb-\u003eaio_reserved2.\n\nBug: 132803232\nTest: initialize malloc() memory to non-zero pattern and see what breaks\n\nChange-Id: I65a7e89e3a2c1ba79df1dc2d011d6c76c41afb81\n"
    },
    {
      "commit": "7f138b11c6e666e9254cf36e06466785dae46554",
      "tree": "778795fa8de94fc9ae160dfc8f81824d207e40c4",
      "parents": [
        "0eafbeb84b6d64c5e9135d70c3cf7797cc1e4ee4",
        "6d5600056a6d6be390758262686d1893418ba6ea"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon May 13 18:40:34 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 13 18:40:34 2019 +0000"
      },
      "message": "Merge \"adbd: don\u0027t abort on EOF on functionfs control fd.\""
    },
    {
      "commit": "0eafbeb84b6d64c5e9135d70c3cf7797cc1e4ee4",
      "tree": "7e2d00872ea243a66d1ae76b7c483b1be8679760",
      "parents": [
        "df5830ff753dc03cbf7d97796d7ccee18208a3be",
        "c745f60922f186a1144dc62a1daccaa7b50de265"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 10 22:00:23 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 10 22:00:23 2019 +0000"
      },
      "message": "Merge \"Clean up copy \u0026 paste from frameworks/base/cmds.\""
    },
    {
      "commit": "6d5600056a6d6be390758262686d1893418ba6ea",
      "tree": "82c4cf1b4ee78db174fd7eb06a93acd92a802455",
      "parents": [
        "527a1b3a82b4038bb86e9b43c00b76283e1350d2"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri May 10 11:37:34 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri May 10 11:37:34 2019 -0700"
      },
      "message": "adbd: don\u0027t abort on EOF on functionfs control fd.\n\nAlso, improve the logging in the cases where we do abort.\n\nBug: http://b/131867920\nTest: treehugger\nChange-Id: If8ec9f4614ce146e6dbd21cc77587ea81658199b\n"
    },
    {
      "commit": "df5830ff753dc03cbf7d97796d7ccee18208a3be",
      "tree": "1a6d4eee6fdc445f3dc51838f1c3a1f6c228a78c",
      "parents": [
        "003d6d0f3072322a5eceaeb99dc823b45d71f24b",
        "b6326c79e0b3e7fab629aa3d42d704a0a590c830"
      ],
      "author": {
        "name": "Al Sutton",
        "email": "alsutton@google.com",
        "time": "Fri May 10 08:40:50 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 10 08:40:50 2019 +0000"
      },
      "message": "Merge \"Add deprecation warning to adb backup/restore\""
    },
    {
      "commit": "c745f60922f186a1144dc62a1daccaa7b50de265",
      "tree": "bbe9672204fb11807f2bb46976cb6ee8912ecb63",
      "parents": [
        "527a1b3a82b4038bb86e9b43c00b76283e1350d2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 09 22:05:13 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 09 22:05:13 2019 -0700"
      },
      "message": "Clean up copy \u0026 paste from frameworks/base/cmds.\n\nTest: treehugger\nChange-Id: I337e6f7e48d4debfce010ad4b6f9fcb860c13fb7\n"
    },
    {
      "commit": "003d6d0f3072322a5eceaeb99dc823b45d71f24b",
      "tree": "03a70fb1baad62ed5a53016438a75d6c46ca4d63",
      "parents": [
        "3239824f514edc81e375146314b3614ba22579e0",
        "6bc205e661bc05d38f6e0dfa068e2526199d8309"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 10 01:34:56 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 10 01:34:56 2019 +0000"
      },
      "message": "Merge \"NFC: Fix potentially uninitialized \u0027port\u0027 variable.\""
    },
    {
      "commit": "3239824f514edc81e375146314b3614ba22579e0",
      "tree": "627a2f393951cc4f4b0b307c04e1d09b8eda942e",
      "parents": [
        "fbedc4584060c083f94cb9623e5fe81e6e35ece6",
        "90228a63bb6a59e8195165fbb7c332be27459696"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu May 09 23:09:38 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 09 23:09:38 2019 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Add a way to turn off unique_fd\u0027s operator int.\"\"\""
    },
    {
      "commit": "6bc205e661bc05d38f6e0dfa068e2526199d8309",
      "tree": "667b86ea69fb6c4440ab271145d1a713d82a3897",
      "parents": [
        "527a1b3a82b4038bb86e9b43c00b76283e1350d2"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Thu May 09 12:55:41 2019 -0700"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Thu May 09 12:55:41 2019 -0700"
      },
      "message": "NFC: Fix potentially uninitialized \u0027port\u0027 variable.\n\nBug: http://b/131390872\nTest: Builds with -Wconditional-uninitialized.\nChange-Id: Ie699ec39307fb3b66ade8248cdbe3d6de42533a7\n"
    },
    {
      "commit": "fbedc4584060c083f94cb9623e5fe81e6e35ece6",
      "tree": "ee3984a910a8aa362a24edc62732b0f9a1fe5693",
      "parents": [
        "527a1b3a82b4038bb86e9b43c00b76283e1350d2",
        "794085a97af8de06178929f131278b45553ffd18"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Thu May 09 09:27:06 2019 -0700"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Thu May 09 09:27:06 2019 -0700"
      },
      "message": "DO NOT MERGE - Merge Pie Bonito/Sargo into master.\n\nBug: 131756210\nChange-Id: Icec65ff6f3ddb05b10ae62d7588422c0f8950190\n"
    },
    {
      "commit": "b6326c79e0b3e7fab629aa3d42d704a0a590c830",
      "tree": "90a15af45572d938e68de05e38309ec41eec6f63",
      "parents": [
        "527a1b3a82b4038bb86e9b43c00b76283e1350d2"
      ],
      "author": {
        "name": "Al Sutton",
        "email": "alsutton@google.com",
        "time": "Thu May 09 16:14:05 2019 +0000"
      },
      "committer": {
        "name": "Al Sutton",
        "email": "alsutton@google.com",
        "time": "Thu May 09 16:14:05 2019 +0000"
      },
      "message": "Add deprecation warning to adb backup/restore\n\nTest: Manual execution and verification of the message\nFixes: 131891013\nChange-Id: Idc38fcdace2d79668a4daac0b99fb87d04fb4cb8\n"
    },
    {
      "commit": "90228a63bb6a59e8195165fbb7c332be27459696",
      "tree": "627a2f393951cc4f4b0b307c04e1d09b8eda942e",
      "parents": [
        "527a1b3a82b4038bb86e9b43c00b76283e1350d2"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 25 14:04:57 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon May 06 16:18:02 2019 -0700"
      },
      "message": "Revert \"Revert \"Add a way to turn off unique_fd\u0027s operator int.\"\"\n\nThe original commit broke aosp-master-with-phones, because of\nvendor libraries the depended on the int versions of libbase functions.\n\nThis patch reverts the revert, and also adds ABI-compatibility shims for\nthe replaced functions.\n\nThis reverts commit dfdf916d09f6583d3fd1db1e33c79ed60bff2480.\n\nBug: http://b/131312539\nTest: treehugger\nTest: forrest run of aosp-master-with-phones\nChange-Id: I75cc84ec8d963e20862f7662e8e2f409471f41cc\n"
    },
    {
      "commit": "794085a97af8de06178929f131278b45553ffd18",
      "tree": "ee3984a910a8aa362a24edc62732b0f9a1fe5693",
      "parents": [
        "9f5055ed9fc30afea87298cdfd8bfa7e328536db",
        "527a1b3a82b4038bb86e9b43c00b76283e1350d2"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon May 06 08:22:38 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon May 06 08:22:38 2019 -0700"
      },
      "message": "Merge \"adb: enable/disable verity expected overlayfs errors.\"\nam: 527a1b3a82\n\nChange-Id: If390a592e5d314b31173c5af2b1103ca4d80f1bc\n"
    },
    {
      "commit": "527a1b3a82b4038bb86e9b43c00b76283e1350d2",
      "tree": "ee3984a910a8aa362a24edc62732b0f9a1fe5693",
      "parents": [
        "e4867ef8648123189c814dcff4ffdeb5e85b97c0",
        "c356c5ba5360931dc8dc7d19e896336f52231ae2"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon May 06 14:36:51 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 06 14:36:51 2019 +0000"
      },
      "message": "Merge \"adb: enable/disable verity expected overlayfs errors.\""
    },
    {
      "commit": "9f5055ed9fc30afea87298cdfd8bfa7e328536db",
      "tree": "ee8128a7db4a7f9435a7ec8cdab0b3365c73b14c",
      "parents": [
        "40eaf4a6810fa963384c67dd9a336eeb26a669c7",
        "e4867ef8648123189c814dcff4ffdeb5e85b97c0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 03 17:44:00 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri May 03 17:44:00 2019 -0700"
      },
      "message": "Merge \"libbase: add ConsumePrefix/ConsumeSuffix.\"\nam: e4867ef864\n\nChange-Id: I7b6bf1110ba8ab6af131558135241ffb78669604\n"
    },
    {
      "commit": "e4867ef8648123189c814dcff4ffdeb5e85b97c0",
      "tree": "ee8128a7db4a7f9435a7ec8cdab0b3365c73b14c",
      "parents": [
        "efc139eb802a8d64c7c51d36b598bacee01932cc",
        "0d1e8fd532094ec45afcbc21ab24b052103585a3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat May 04 00:03:14 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat May 04 00:03:14 2019 +0000"
      },
      "message": "Merge \"libbase: add ConsumePrefix/ConsumeSuffix.\""
    },
    {
      "commit": "40eaf4a6810fa963384c67dd9a336eeb26a669c7",
      "tree": "7d67d28062d128c1bea752e3a2c45e445002977d",
      "parents": [
        "5c155c273cb2104e1f8595ce72e0fac48b6c3357",
        "efc139eb802a8d64c7c51d36b598bacee01932cc"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri May 03 16:40:15 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri May 03 16:40:15 2019 -0700"
      },
      "message": "Merge \"adbd: move posix_fadvise after open.\"\nam: efc139eb80\n\nChange-Id: Iaba484973996886381e11b99f40ed2128a036725\n"
    },
    {
      "commit": "efc139eb802a8d64c7c51d36b598bacee01932cc",
      "tree": "7d67d28062d128c1bea752e3a2c45e445002977d",
      "parents": [
        "b8d9838ec67b4e6738ac4e7aa730e2f0bf06b359",
        "fc39382b1bcb74ef09d7a28c59522c28875fba25"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 03 23:23:59 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 03 23:23:59 2019 +0000"
      },
      "message": "Merge \"adbd: move posix_fadvise after open.\""
    },
    {
      "commit": "c356c5ba5360931dc8dc7d19e896336f52231ae2",
      "tree": "a3363359dd214cffd41d57b26ff7564a912ba176",
      "parents": [
        "b8d9838ec67b4e6738ac4e7aa730e2f0bf06b359"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri May 03 14:41:34 2019 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri May 03 14:44:49 2019 -0700"
      },
      "message": "adb: enable/disable verity expected overlayfs errors.\n\nExpect EBUSY for overlayfs teardown, and ENOENT for setup.\n\nTest: adb-remount-test.sh\nBug: 131614849\nChange-Id: I0fb351d6d5fe758021c9e9043f57863c7a194c12\n"
    },
    {
      "commit": "0d1e8fd532094ec45afcbc21ab24b052103585a3",
      "tree": "5c61642b03c01f1f1bbee8186ce3d8e3f2a916b2",
      "parents": [
        "8829d15b1a91140a42af20e7e221895669e2cec2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 03 09:02:45 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 03 12:49:31 2019 -0700"
      },
      "message": "libbase: add ConsumePrefix/ConsumeSuffix.\n\nadb was already using ConsumePrefix, and now we have another would-be\nuser in cutils. (There appears to be one place in adb that should use\nConsumeSuffix, so I\u0027m assuming we\u0027ll want that sooner or later.)\n\nI\u0027ve kept these inline because adb and google3\u0027s versions both were, and\nI\u0027m easily led.\n\nTest: treehugger\nChange-Id: I29d99032f6f6ccbfaefece59725db8afb02a4c87\n"
    },
    {
      "commit": "5c155c273cb2104e1f8595ce72e0fac48b6c3357",
      "tree": "b2496751bd948251b2992d43d775907f9800ab3f",
      "parents": [
        "8ff69b71a681d6331e504026f60644f8ed053e1c",
        "b8d9838ec67b4e6738ac4e7aa730e2f0bf06b359"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu May 02 14:28:22 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 02 14:28:22 2019 -0700"
      },
      "message": "Merge \"adbd: avoid starting multiple worker threads.\"\nam: b8d9838ec6\n\nChange-Id: I156d55438484681782bef2490c637026b5ab47a9\n"
    },
    {
      "commit": "b8d9838ec67b4e6738ac4e7aa730e2f0bf06b359",
      "tree": "b2496751bd948251b2992d43d775907f9800ab3f",
      "parents": [
        "0aea356a2f9e8c067c7dcb52a42a6416bff8a8a3",
        "e21de7ebd582f4de729707c3d3495aacbdc7f4f7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 02 21:09:04 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 02 21:09:04 2019 +0000"
      },
      "message": "Merge \"adbd: avoid starting multiple worker threads.\""
    },
    {
      "commit": "8ff69b71a681d6331e504026f60644f8ed053e1c",
      "tree": "4043c9c45bf22bf0ed83ec4a9ef7cc2c93953514",
      "parents": [
        "d9314118df870bc2c86ea4502f7a967939ebebac",
        "0aea356a2f9e8c067c7dcb52a42a6416bff8a8a3"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu May 02 09:13:50 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 02 09:13:50 2019 -0700"
      },
      "message": "Merge \"adb: increase `adb [un]root` timeout.\"\nam: 0aea356a2f\n\nChange-Id: Ia10b398b1305bd6d9ae319cd8b929ee546284739\n"
    },
    {
      "commit": "0aea356a2f9e8c067c7dcb52a42a6416bff8a8a3",
      "tree": "4043c9c45bf22bf0ed83ec4a9ef7cc2c93953514",
      "parents": [
        "1b81d831e79a1cc2726fe8e75809a0fcb1e963f7",
        "4d74f2fbd9c014feb9ff0d3925d95652fb18ce83"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 02 15:53:20 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 02 15:53:20 2019 +0000"
      },
      "message": "Merge \"adb: increase `adb [un]root` timeout.\""
    },
    {
      "commit": "d9314118df870bc2c86ea4502f7a967939ebebac",
      "tree": "f43285310f5fac45f3221a464184eebea28cbc8e",
      "parents": [
        "28fc6d6e762b6e6de0dc51b222229ef85a3b7b56",
        "1b81d831e79a1cc2726fe8e75809a0fcb1e963f7"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 01 21:53:51 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 01 21:53:51 2019 -0700"
      },
      "message": "Merge \"adbd: compile a static version.\"\nam: 1b81d831e7\n\nChange-Id: I55e95c10ad1b8607206fe405af91af4522c0e57f\n"
    },
    {
      "commit": "1b81d831e79a1cc2726fe8e75809a0fcb1e963f7",
      "tree": "f43285310f5fac45f3221a464184eebea28cbc8e",
      "parents": [
        "45bfdd8d7257db2fc3b48f71e78f152e3b73e0ec",
        "5836b3a27a2ebef315a360f423dd03e7f2e81144"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 02 04:20:24 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 02 04:20:24 2019 +0000"
      },
      "message": "Merge \"adbd: compile a static version.\""
    },
    {
      "commit": "4d74f2fbd9c014feb9ff0d3925d95652fb18ce83",
      "tree": "1ec16a46fcf43c40c622122e08deff63804a337e",
      "parents": [
        "45bfdd8d7257db2fc3b48f71e78f152e3b73e0ec"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 01 18:51:46 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 01 18:53:43 2019 -0700"
      },
      "message": "adb: increase `adb [un]root` timeout.\n\n3 seconds isn\u0027t generous enough, because if we\u0027re rapidly restarting\n(e.g. `adb root; adb unroot`), init will wait 5 seconds to restart us.\n\nTest: `adb root \u0026\u0026 adb unroot`\nChange-Id: I353e8d1ee14f3b08416445ff627dea4a49afd9a4\n"
    },
    {
      "commit": "5836b3a27a2ebef315a360f423dd03e7f2e81144",
      "tree": "f43285310f5fac45f3221a464184eebea28cbc8e",
      "parents": [
        "45bfdd8d7257db2fc3b48f71e78f152e3b73e0ec"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 01 18:25:14 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 01 18:25:52 2019 -0700"
      },
      "message": "adbd: compile a static version.\n\nTest: mma\nChange-Id: I785de074f9b5cc63d1804420b734c4b07081a716\n"
    },
    {
      "commit": "e21de7ebd582f4de729707c3d3495aacbdc7f4f7",
      "tree": "236cf3a95d0c02e79ea8e975d4e284dbaa28d49e",
      "parents": [
        "45bfdd8d7257db2fc3b48f71e78f152e3b73e0ec"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 01 16:53:53 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 01 17:27:27 2019 -0700"
      },
      "message": "adbd: avoid starting multiple worker threads.\n\nA previous patch intended to make receiving multiple FUNCTIONFS_ENABLEs\nnon-fatal, but failed to do so because we would try to spawn another\nworker thread and hit a different assertion.\n\nBug: http://b/130638368\nTest: echo mem | adb shell \"su 0 sh -c \u0027cat \u003e /sys/power/state\u0027\"\nChange-Id: I53456112244d8b4f7d26df6ec6961389fca70498\n"
    },
    {
      "commit": "fc39382b1bcb74ef09d7a28c59522c28875fba25",
      "tree": "29a3ed467ed56f6d8c9284d1bc0396dbaddda0d3",
      "parents": [
        "45bfdd8d7257db2fc3b48f71e78f152e3b73e0ec"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 24 17:22:47 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 01 13:40:01 2019 -0700"
      },
      "message": "adbd: move posix_fadvise after open.\n\nTest: treehugger\nChange-Id: I531e452eda46d7df3106fd59192e9936e64876b1\n"
    },
    {
      "commit": "28fc6d6e762b6e6de0dc51b222229ef85a3b7b56",
      "tree": "c7557f64799c499721fd45f5ac676ce16b09a0d0",
      "parents": [
        "1ae621292b55a9bdba1baa2a5d72de0204e88c13",
        "45bfdd8d7257db2fc3b48f71e78f152e3b73e0ec"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 29 15:53:43 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 29 15:53:43 2019 -0700"
      },
      "message": "Merge \"adb: restore generation of public key in `adb keygen`.\"\nam: 45bfdd8d72\n\nChange-Id: Ifaa0d70091189374c2294d021ede28d8786b5710\n"
    },
    {
      "commit": "45bfdd8d7257db2fc3b48f71e78f152e3b73e0ec",
      "tree": "c7557f64799c499721fd45f5ac676ce16b09a0d0",
      "parents": [
        "8829d15b1a91140a42af20e7e221895669e2cec2",
        "972221b30cf00ff910c9d38b446bb91e8fccd21f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 29 22:31:17 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 29 22:31:17 2019 +0000"
      },
      "message": "Merge \"adb: restore generation of public key in `adb keygen`.\""
    },
    {
      "commit": "972221b30cf00ff910c9d38b446bb91e8fccd21f",
      "tree": "81c6390224a5d06c812dea3579201d5aeb792da4",
      "parents": [
        "dfbc1edce4778d5d90c7605c0d281248466e4b87"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 29 12:36:32 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 29 12:36:32 2019 -0700"
      },
      "message": "adb: restore generation of public key in `adb keygen`.\n\nWe don\u0027t need the public key to be generated at ~/.android/adbkey.pub,\nbut it\u0027s still useful to be able to generate the public key for use with\nADB_VENDOR_KEYS.\n\nBug: http://b/119634232\nTest: manual\nChange-Id: Iecd6ff1bba4af4ba142456034f3faf52bb9e017d\n"
    },
    {
      "commit": "1ae621292b55a9bdba1baa2a5d72de0204e88c13",
      "tree": "cb21015c39532a6e268ee5b03887169fa9d6b046",
      "parents": [
        "909ecaff11ee8e61d60bbfa26e0bbc866c4ee251",
        "8829d15b1a91140a42af20e7e221895669e2cec2"
      ],
      "author": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Mon Apr 29 11:00:14 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 29 11:00:14 2019 -0700"
      },
      "message": "Merge \"Support adb rescue wipe command\"\nam: 56311071fe\n\nChange-Id: I19eea45c09b8a5bc1064701af9b5f4d6bb8494a4\n"
    },
    {
      "commit": "8829d15b1a91140a42af20e7e221895669e2cec2",
      "tree": "cb21015c39532a6e268ee5b03887169fa9d6b046",
      "parents": [
        "dfbc1edce4778d5d90c7605c0d281248466e4b87"
      ],
      "author": {
        "name": "xunchang",
        "email": "xunchang@google.com",
        "time": "Mon Apr 22 23:14:28 2019 -0700"
      },
      "committer": {
        "name": "xunchang",
        "email": "xunchang@google.com",
        "time": "Fri Apr 26 10:37:13 2019 -0700"
      },
      "message": "Support adb rescue wipe command\n\nSupport `adb rescue wipe` command on the host side. This command runs\nunder the rescue mode and wipes data (and cache/metadata).\n\nBug: 131037235\nTest: run adb rescue wipe\n\nChange-Id: Ib3a3f2d564cc19d0446540d616cc21489ba558c2\n"
    },
    {
      "commit": "909ecaff11ee8e61d60bbfa26e0bbc866c4ee251",
      "tree": "d403d456de23a2f48928669584fe8d821bc9258b",
      "parents": [
        "fd1e339193d31fad3f27685be503c376463c8701",
        "dfbc1edce4778d5d90c7605c0d281248466e4b87"
      ],
      "author": {
        "name": "Ian Kasprzak",
        "email": "iankaz@google.com",
        "time": "Thu Apr 25 10:24:50 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 25 10:24:50 2019 -0700"
      },
      "message": "Merge \"Revert \"Add a way to turn off unique_fd\u0027s operator int.\"\"\nam: dfbc1edce4\n\nChange-Id: Icfde91e105016922777dc24e0676de9b88b42058\n"
    },
    {
      "commit": "dfbc1edce4778d5d90c7605c0d281248466e4b87",
      "tree": "d403d456de23a2f48928669584fe8d821bc9258b",
      "parents": [
        "ad86528f5e6c65dd8869ad7d3346613df2a989ed",
        "dfdf916d09f6583d3fd1db1e33c79ed60bff2480"
      ],
      "author": {
        "name": "Ian Kasprzak",
        "email": "iankaz@google.com",
        "time": "Thu Apr 25 17:16:55 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 25 17:16:55 2019 +0000"
      },
      "message": "Merge \"Revert \"Add a way to turn off unique_fd\u0027s operator int.\"\""
    },
    {
      "commit": "dfdf916d09f6583d3fd1db1e33c79ed60bff2480",
      "tree": "8e02ad6551dcc3593b5105963c1d1d5a72fceefc",
      "parents": [
        "6bc77009177ba2de4c25a2c8f17bee826c0540a3"
      ],
      "author": {
        "name": "Ian Kasprzak",
        "email": "iankaz@google.com",
        "time": "Thu Apr 25 15:59:28 2019 +0000"
      },
      "committer": {
        "name": "Ian Kasprzak",
        "email": "iankaz@google.com",
        "time": "Thu Apr 25 15:59:28 2019 +0000"
      },
      "message": "Revert \"Add a way to turn off unique_fd\u0027s operator int.\"\n\nThis reverts commit 6bc77009177ba2de4c25a2c8f17bee826c0540a3.\n\nReason for revert: b/131312539 - All aosp-master-with-phones phones failing boot / health check.\n\nChange-Id: Id4239f93484b7d6b8d9bcd355a59cbd40d9766e2\n"
    },
    {
      "commit": "fd1e339193d31fad3f27685be503c376463c8701",
      "tree": "11ec83a49ead3544a823f7bd32dc6f0cae1df36c",
      "parents": [
        "6f3a744cf9dcf7fc620de63c04e7a273bee7687c",
        "ad86528f5e6c65dd8869ad7d3346613df2a989ed"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 24 18:24:49 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Apr 24 18:24:49 2019 -0700"
      },
      "message": "Merge \"adbd: reduce queue depths.\"\nam: ad86528f5e\n\nChange-Id: Ib73e5111a82c42627df6a8645f58db8a7831bba6\n"
    },
    {
      "commit": "ad86528f5e6c65dd8869ad7d3346613df2a989ed",
      "tree": "11ec83a49ead3544a823f7bd32dc6f0cae1df36c",
      "parents": [
        "d337e1c65f8346ab4d4879d318d8c1c5760223b8",
        "baa7ce8f08477fa7e02080da7c51fbdc1c2f7a81"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 25 01:09:23 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 25 01:09:23 2019 +0000"
      },
      "message": "Merge \"adbd: reduce queue depths.\""
    },
    {
      "commit": "6f3a744cf9dcf7fc620de63c04e7a273bee7687c",
      "tree": "13df1c8a52362118590d10403698379bd58feb2f",
      "parents": [
        "acd95c45f559d3113a1379b027b7a2ede8c9215a",
        "d337e1c65f8346ab4d4879d318d8c1c5760223b8"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 24 16:04:06 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Apr 24 16:04:06 2019 -0700"
      },
      "message": "Merge \"Add a way to turn off unique_fd\u0027s operator int.\"\nam: d337e1c65f\n\nChange-Id: I8940d68e1a60ee800df6512da8c269edec7018fe\n"
    },
    {
      "commit": "acd95c45f559d3113a1379b027b7a2ede8c9215a",
      "tree": "c9ac68ea0de2953e50974ce0be8baeee67aebabe",
      "parents": [
        "46ef60e4dbecc5a2f62a5826608858c39c254469",
        "7af95de6a7fe79bbfa285203e4ec9ed68617a41c"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 24 16:00:10 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Apr 24 16:00:10 2019 -0700"
      },
      "message": "Merge \"adb: silence warning from libusb.\"\nam: 7af95de6a7\n\nChange-Id: Ib2e398b1c327bd0d6111ab9b686e826683f62833\n"
    },
    {
      "commit": "46ef60e4dbecc5a2f62a5826608858c39c254469",
      "tree": "19c8dbbcb87d94ceaaa8724f2ff470687dbb9288",
      "parents": [
        "d1e954e23534247f2402b781e23317ff60829fcb",
        "8780281715715f5e92f79914cd9faf5df3584df8"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 24 15:59:10 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Apr 24 15:59:10 2019 -0700"
      },
      "message": "Merge \"adb: fix double close in wait-for-*.\"\nam: 8780281715\n\nChange-Id: I78a3ec7ed8c7e438986515217d2e0b3613d89dce\n"
    },
    {
      "commit": "d337e1c65f8346ab4d4879d318d8c1c5760223b8",
      "tree": "13df1c8a52362118590d10403698379bd58feb2f",
      "parents": [
        "7af95de6a7fe79bbfa285203e4ec9ed68617a41c",
        "6bc77009177ba2de4c25a2c8f17bee826c0540a3"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 24 22:58:00 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 24 22:58:00 2019 +0000"
      },
      "message": "Merge \"Add a way to turn off unique_fd\u0027s operator int.\""
    },
    {
      "commit": "7af95de6a7fe79bbfa285203e4ec9ed68617a41c",
      "tree": "c9ac68ea0de2953e50974ce0be8baeee67aebabe",
      "parents": [
        "8780281715715f5e92f79914cd9faf5df3584df8",
        "c3b640328b7fff1db3ce474d5489b31e6e51cf1d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 24 22:46:28 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 24 22:46:28 2019 +0000"
      },
      "message": "Merge \"adb: silence warning from libusb.\""
    },
    {
      "commit": "8780281715715f5e92f79914cd9faf5df3584df8",
      "tree": "19c8dbbcb87d94ceaaa8724f2ff470687dbb9288",
      "parents": [
        "e23e6c7112eeca08805dd9dc3aed06c04dc225f1",
        "4c0c9c90e1ae4fb8ef7312833a825bc3c3bee62b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 24 22:38:31 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 24 22:38:31 2019 +0000"
      },
      "message": "Merge \"adb: fix double close in wait-for-*.\""
    },
    {
      "commit": "baa7ce8f08477fa7e02080da7c51fbdc1c2f7a81",
      "tree": "3382fd2afb75b911184a3aff1a4d308a9d4aec02",
      "parents": [
        "e23e6c7112eeca08805dd9dc3aed06c04dc225f1"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 24 14:28:25 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 24 15:05:21 2019 -0700"
      },
      "message": "adbd: reduce queue depths.\n\nEach operation we submit results in a contiguous allocation in the\nkernel which can trigger OOM-killing. Tune the queue depths to reduce\nthe chances of this happening, with a minimal impact on performance.\n\nBug: http://b/126582877\nTest: ./benchmark_device.py with blueline\nChange-Id: I4b0f83d54a9a9a69f0ab48322d78fb137c94dd35\n"
    },
    {
      "commit": "6bc77009177ba2de4c25a2c8f17bee826c0540a3",
      "tree": "97b63d6b7c86394ab0a1dc40eedca8f7ce305378",
      "parents": [
        "4c0c9c90e1ae4fb8ef7312833a825bc3c3bee62b"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 18 16:39:30 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 24 12:59:42 2019 -0700"
      },
      "message": "Add a way to turn off unique_fd\u0027s operator int.\n\nunique_fd\u0027s implicit conversion to int has led to tons of problems (see\nall of the overloads for close, fdopen, fdopendir, etc.). Add a switch\nthat can turn it off, and reduce the ridiculous amount of work to fix up\ncallers by introducing a borrowed_fd type that can be constructed from\neither int or unique_fd.\n\nTest: treehugger\nChange-Id: If77cf5cbcaddacdaec5919a15b3520fb68f51a62\n"
    },
    {
      "commit": "d1e954e23534247f2402b781e23317ff60829fcb",
      "tree": "e49e984a3fe56716c0d7e6d8c2ab0266851e59e6",
      "parents": [
        "bb77c8efbcd93bde94a27ff61d46a3f371617041",
        "e23e6c7112eeca08805dd9dc3aed06c04dc225f1"
      ],
      "author": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Mon Apr 22 15:24:29 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 22 15:24:29 2019 -0700"
      },
      "message": "Merge \"adb: Support rescue install and getprop.\"\nam: 6688eaf23f\n\nChange-Id: I4bacaca4f1ba9c40967e5d3b3317930a2a20d7b8\n"
    },
    {
      "commit": "e23e6c7112eeca08805dd9dc3aed06c04dc225f1",
      "tree": "e49e984a3fe56716c0d7e6d8c2ab0266851e59e6",
      "parents": [
        "248910604aa0bd3fd47b94833ccb9c44ba0b8453"
      ],
      "author": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Sun Apr 07 23:24:03 2019 -0700"
      },
      "committer": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Fri Apr 19 12:51:57 2019 -0700"
      },
      "message": "adb: Support rescue install and getprop.\n\nBug: 128415917\nTest: Enter rescue mode on taimen. Send the following commands:\n      `adb rescue getprop ro.build.fingerprint`\n      `adb rescue getprop ro.build.date.utc`\n      `adb rescue getprop ro.build.invalid`\n      `adb rescue install /path/to/package.zip`\nTest: Sideload on taimen w/ `adb sideload /path/to/package.zip`.\nChange-Id: Ia246b30314fbcd2bd4cc71a8085a280e33041967\n"
    },
    {
      "commit": "4c0c9c90e1ae4fb8ef7312833a825bc3c3bee62b",
      "tree": "8e02ad6551dcc3593b5105963c1d1d5a72fceefc",
      "parents": [
        "f868dac363535c7f1c49fac4beb1d1fe4c7a9b97"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 18 16:46:42 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 18 16:58:30 2019 -0700"
      },
      "message": "adb: fix double close in wait-for-*.\n\nunique_fd\u0027s implicit conversion to int allows the following code to\ncompile without error, leading to a double close:\n\n  std::function\u003cvoid(unique_fd)\u003e func \u003d [](int x) { close(x); };\n  func(unique_fd(42));\n\nTest: treehugger\nChange-Id: I948ecda3a12738b3af6444fe2902d2f7b80e1b4c\n"
    },
    {
      "commit": "bb77c8efbcd93bde94a27ff61d46a3f371617041",
      "tree": "7238b837f56e9526823d82520471bcd39e9d9d66",
      "parents": [
        "665749f8f585948142711ff7f1eb13c14e064be2",
        "248910604aa0bd3fd47b94833ccb9c44ba0b8453"
      ],
      "author": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Thu Apr 18 15:06:10 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 18 15:06:10 2019 -0700"
      },
      "message": "Merge \"adb: Recognize rescue mode.\"\nam: 248910604a\n\nChange-Id: I61bb53aa38bf966c946ded011c0ace94a1208977\n"
    },
    {
      "commit": "248910604aa0bd3fd47b94833ccb9c44ba0b8453",
      "tree": "7238b837f56e9526823d82520471bcd39e9d9d66",
      "parents": [
        "f868dac363535c7f1c49fac4beb1d1fe4c7a9b97",
        "9d6eca59402f9b25040e6ccd4f0d0e8420a399ba"
      ],
      "author": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Thu Apr 18 21:45:50 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 18 21:45:50 2019 +0000"
      },
      "message": "Merge \"adb: Recognize rescue mode.\""
    },
    {
      "commit": "c3b640328b7fff1db3ce474d5489b31e6e51cf1d",
      "tree": "b9ae1e4fb10d711a8b05ade0a36f6b26cbbbd7f4",
      "parents": [
        "beaa884078bcab7316678c3259303199b201addc"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 17 16:57:43 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 17 16:57:43 2019 -0700"
      },
      "message": "adb: silence warning from libusb.\n\nTest: mma\nChange-Id: I3f254f3432020937e0f22b04baf7df61336c500b\n"
    },
    {
      "commit": "665749f8f585948142711ff7f1eb13c14e064be2",
      "tree": "b83db57a6294f82bf8056eb51f34a342b843c220",
      "parents": [
        "956011fc63b64414fde13c78ffb6c88280525188",
        "f868dac363535c7f1c49fac4beb1d1fe4c7a9b97"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 17 15:14:29 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Apr 17 15:14:29 2019 -0700"
      },
      "message": "Merge \"adbd: reduce the USB buffer sizes to 16k.\"\nam: f05fbe6957\n\nChange-Id: I0a2c6293a9f0728aefa2633250a6df1c32f134bb\n"
    },
    {
      "commit": "9d6eca59402f9b25040e6ccd4f0d0e8420a399ba",
      "tree": "04c4d923f6226147ed76a39f269482557dfcfbbf",
      "parents": [
        "beaa884078bcab7316678c3259303199b201addc"
      ],
      "author": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Sun Apr 07 23:24:03 2019 -0700"
      },
      "committer": {
        "name": "Tao Bao",
        "email": "tbao@google.com",
        "time": "Wed Apr 17 13:47:02 2019 -0700"
      },
      "message": "adb: Recognize rescue mode.\n\nThis CL adds client support to recognize the rescue mode (which will be\nserved by recovery image). It also allows waiting for a device to enter\nrescue mode. The support for the actual rescue commands will be added in\nfollow-up CLs.\n\nBug: 128415917\nTest: `adb devices` recognizes devices under rescue mode.\nTest: `adb wait-for-rescue` waits for device to be in rescue mode.\nChange-Id: I367d7339fe68006aba09a1e3db6370d472296676\n"
    },
    {
      "commit": "f868dac363535c7f1c49fac4beb1d1fe4c7a9b97",
      "tree": "b83db57a6294f82bf8056eb51f34a342b843c220",
      "parents": [
        "beaa884078bcab7316678c3259303199b201addc"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Apr 16 11:20:04 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Apr 16 15:14:24 2019 -0700"
      },
      "message": "adbd: reduce the USB buffer sizes to 16k.\n\nSome USB controllers only support 16k writes, so drop down to that.\n\nBug: http://b/130622010\nTest: treehugger\nChange-Id: I836d5b2d0d6fcae05f290af11a6a19c6e8d7c1ba\n"
    },
    {
      "commit": "956011fc63b64414fde13c78ffb6c88280525188",
      "tree": "0d16a6f47606aedd7f403ae15473b6f0d00fce7c",
      "parents": [
        "387779b772bbf616c30a29f39f86f571a2065b07",
        "beaa884078bcab7316678c3259303199b201addc"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Tue Apr 09 11:40:00 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Apr 09 11:40:00 2019 -0700"
      },
      "message": "Merge \"Binding err to inout for raw protocol for in-process execute.\"\nam: 265af10e6e\n\nChange-Id: I63ba6f02382e98adcb7c1c33f32356a72cad7f75\n"
    },
    {
      "commit": "beaa884078bcab7316678c3259303199b201addc",
      "tree": "0d16a6f47606aedd7f403ae15473b6f0d00fce7c",
      "parents": [
        "4d3b4c41074fd73285f160a081f8d376fcb92091"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Fri Apr 05 20:52:32 2019 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Mon Apr 08 19:16:05 2019 -0700"
      },
      "message": "Binding err to inout for raw protocol for in-process execute.\n\nAs raw protocol does not allow for splitting err - it has to be redirected to inout.\nBefore this change it was not done for in-process and all err data was lost.\n\nBug: 130086616\nTest: manual + atest adbd_test\nChange-Id: I6cd11c940673d73e2993a6eb23c46d31bd8bf504\n"
    },
    {
      "commit": "387779b772bbf616c30a29f39f86f571a2065b07",
      "tree": "dbf8fdfd26989160b4479d3dcd44bf26061740aa",
      "parents": [
        "95347b46670707275fdcd4ce21c7a68f21d37f87",
        "4d3b4c41074fd73285f160a081f8d376fcb92091"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 04 14:17:05 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 04 14:17:05 2019 -0700"
      },
      "message": "Merge \"adb: defuse CHECK on IOVector::append of an empty block.\"\nam: 4d3b4c4107\n\nChange-Id: Ib540d05e1c51f93ca7c5ead4c2bbfa11047eec8f\n"
    },
    {
      "commit": "4d3b4c41074fd73285f160a081f8d376fcb92091",
      "tree": "dbf8fdfd26989160b4479d3dcd44bf26061740aa",
      "parents": [
        "bd3b16c603b6c758a928f57189f289982395a4f0",
        "15fa1334c557214058a49211f1feca8689e42677"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 04 21:02:02 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 04 21:02:02 2019 +0000"
      },
      "message": "Merge \"adb: defuse CHECK on IOVector::append of an empty block.\""
    },
    {
      "commit": "15fa1334c557214058a49211f1feca8689e42677",
      "tree": "c6ecd3bb01fe585c012b02638ad81d42e7f45b9c",
      "parents": [
        "e3fa0c82cdf20e81a8eb3fbbc2a8d303f5e31f5a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 03 12:56:22 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 03 12:56:22 2019 -0700"
      },
      "message": "adb: defuse CHECK on IOVector::append of an empty block.\n\nBug: http://b/129706741\nTest: treehugger\nChange-Id: I35a35d20d179a155adb4fe83078739fcaf517136\n"
    },
    {
      "commit": "95347b46670707275fdcd4ce21c7a68f21d37f87",
      "tree": "f47bc0d7cb7c3b3a20ecbd754af4054f07d4febe",
      "parents": [
        "393c30f10df206f61574a568fcf314014e2584d7",
        "bd3b16c603b6c758a928f57189f289982395a4f0"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Apr 02 20:46:32 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Apr 02 20:46:32 2019 -0700"
      },
      "message": "Merge \"adb: fix mac build breakage.\"\nam: bd3b16c603\n\nChange-Id: I0a38a2bde7fc80d193e3e92e74264d2160f84084\n"
    },
    {
      "commit": "bd3b16c603b6c758a928f57189f289982395a4f0",
      "tree": "f47bc0d7cb7c3b3a20ecbd754af4054f07d4febe",
      "parents": [
        "e3fa0c82cdf20e81a8eb3fbbc2a8d303f5e31f5a",
        "5967891809b1ed031e8cae93b71dfd4e91206fc9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 03 03:14:28 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 03 03:14:28 2019 +0000"
      },
      "message": "Merge \"adb: fix mac build breakage.\""
    },
    {
      "commit": "5967891809b1ed031e8cae93b71dfd4e91206fc9",
      "tree": "a73dce9c7415750c3dd30ee9d6540b753a0e819e",
      "parents": [
        "a1e76205eb874cf03cdf5a3331d85c71cc67b7fe"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Apr 02 16:31:09 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Apr 02 16:31:32 2019 -0700"
      },
      "message": "adb: fix mac build breakage.\n\nBug: http://b/129786641\nTest: none\nChange-Id: Ibe051a0db2f912d1f7e55369e25a5bd38bf86fd5\n"
    },
    {
      "commit": "393c30f10df206f61574a568fcf314014e2584d7",
      "tree": "28544629d2b87c8e81e6aa861c99a2ed5df12741",
      "parents": [
        "9905400f6ae7a9b6252c241f45d7399abe8a9a69",
        "e3fa0c82cdf20e81a8eb3fbbc2a8d303f5e31f5a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Apr 02 14:41:26 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Apr 02 14:41:26 2019 -0700"
      },
      "message": "Merge \"adbd: demote CHECKs to warning logs.\"\nam: 16f4a033c3\n\nChange-Id: I15d430f0296231c56bd8e2a9826e2ede962145c6\n"
    },
    {
      "commit": "e3fa0c82cdf20e81a8eb3fbbc2a8d303f5e31f5a",
      "tree": "28544629d2b87c8e81e6aa861c99a2ed5df12741",
      "parents": [
        "a1e76205eb874cf03cdf5a3331d85c71cc67b7fe"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 28 11:05:53 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Apr 02 10:56:07 2019 -0700"
      },
      "message": "adbd: demote CHECKs to warning logs.\n\nIt seems like we don\u0027t actually always get these events in order, so\ndemote them to a log and restart the connection instead of aborting.\n\nBug: http://b/129464137\nTest: mma\nChange-Id: I7dffbf62f9dea665cf9f9f9e1bd18d444b6905ec\n"
    },
    {
      "commit": "9905400f6ae7a9b6252c241f45d7399abe8a9a69",
      "tree": "fac956a0db0cb7c542202c48cd2e9e7016eab2fa",
      "parents": [
        "0f0e6c88aafb70828dcedd3c24bf54f1f29851ce",
        "a1e76205eb874cf03cdf5a3331d85c71cc67b7fe"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 01 15:12:04 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 01 15:12:04 2019 -0700"
      },
      "message": "Merge \"adb: make `adb reconnect` perform a USB reset.\"\nam: a1e76205eb\n\nChange-Id: Ic952e10f80684614a0f9da795c730bb52be5a259\n"
    },
    {
      "commit": "a1e76205eb874cf03cdf5a3331d85c71cc67b7fe",
      "tree": "fac956a0db0cb7c542202c48cd2e9e7016eab2fa",
      "parents": [
        "dcf3688a9d5ad8eabb01f222b1be16d99a22bb61",
        "3a2172b79bd9d07f3314e3d392ec4701116620cb"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 01 21:42:57 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 01 21:42:57 2019 +0000"
      },
      "message": "Merge \"adb: make `adb reconnect` perform a USB reset.\""
    },
    {
      "commit": "3a2172b79bd9d07f3314e3d392ec4701116620cb",
      "tree": "a8b0ebda996189f7cdec5a5b3a9256c248165cbc",
      "parents": [
        "dcaede059f840a53c660f360cedc481f5fba1a52"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 28 15:47:44 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 28 15:47:44 2019 -0700"
      },
      "message": "adb: make `adb reconnect` perform a USB reset.\n\nBug: http://b/128941083\nTest: manual\nChange-Id: Iaf46d2c46cc82b590768004486d119244591c8e2\n"
    },
    {
      "commit": "0f0e6c88aafb70828dcedd3c24bf54f1f29851ce",
      "tree": "5dc05523846b5e7ef6ce791dca93764e78401723",
      "parents": [
        "56fb5bb7dc9520010e92d31965aadb0b4a77e797",
        "dcf3688a9d5ad8eabb01f222b1be16d99a22bb61"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 28 13:37:41 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Mar 28 13:37:41 2019 -0700"
      },
      "message": "Merge \"adbd: wait for FUNCTIONFS_BIND for up to a second, then retry.\"\nam: bfcb981b32\n\nChange-Id: I159c162a34246eca5196d5b41b7d7c46aa71c1ef\n"
    },
    {
      "commit": "dcf3688a9d5ad8eabb01f222b1be16d99a22bb61",
      "tree": "5dc05523846b5e7ef6ce791dca93764e78401723",
      "parents": [
        "dcaede059f840a53c660f360cedc481f5fba1a52"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Mar 26 18:47:45 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 27 18:04:45 2019 +0000"
      },
      "message": "adbd: wait for FUNCTIONFS_BIND for up to a second, then retry.\n\nOccasionally, after we open the functionfs endpoint and write our\ndescriptors to it, we end up in a state where we never receive any\nevents from ep0, presumably due to a race against some other part of\nthe system, since adding sleeps reduces the likelihood. Add an\n(arbitrarily chosen) timeout for the initial FUNCTIONFS_BIND we read,\nand retry on failure.\n\nBug: http://b/128679787\nTest: unplug and replug a blueline 14,000 times with a usb switch board\nChange-Id: I4b3d5d552179ee7f3fefcc15f9575f793926f784\n"
    },
    {
      "commit": "56fb5bb7dc9520010e92d31965aadb0b4a77e797",
      "tree": "5ba64361f3b376733b7c7cf32f60c14f077b742b",
      "parents": [
        "e082e14a8fac4e0eff3240346c18f857731b4649",
        "dcaede059f840a53c660f360cedc481f5fba1a52"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Tue Mar 26 17:43:57 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Mar 26 17:43:57 2019 -0700"
      },
      "message": "Merge changes Ia84ed9ec,I1c0fde72\nam: dcaede059f\n\nChange-Id: I47635c21b9ab08a4463f43af7d02c333c42d0f14\n"
    },
    {
      "commit": "e082e14a8fac4e0eff3240346c18f857731b4649",
      "tree": "946ccea25d2df3dfc39ac8c63a40c3d364c1583d",
      "parents": [
        "63f2483b1bf91b7e46a0c74e4de59d19f7759f3c",
        "961496cc29775c7403482d4b1808bcc27e046f2d"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Mar 26 17:40:05 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Mar 26 17:40:05 2019 -0700"
      },
      "message": "Merge changes I80af5f4b,I2fd0034e\nam: 2decb2fc3a\n\nChange-Id: I192bf6f4f5798f7c84c2d91517e3800dc428c0a5\n"
    },
    {
      "commit": "dcaede059f840a53c660f360cedc481f5fba1a52",
      "tree": "5ba64361f3b376733b7c7cf32f60c14f077b742b",
      "parents": [
        "961496cc29775c7403482d4b1808bcc27e046f2d",
        "e2f32340d2d852c7d43a2ef07c74faac0d0f7ee5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 27 00:33:05 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 27 00:33:05 2019 +0000"
      },
      "message": "Merge changes Ia84ed9ec,I1c0fde72\n\n* changes:\n  fastboot: Avoid extra std::string copies\n  adb: Avoid extra std::string copies\n"
    },
    {
      "commit": "961496cc29775c7403482d4b1808bcc27e046f2d",
      "tree": "946ccea25d2df3dfc39ac8c63a40c3d364c1583d",
      "parents": [
        "cc14d39c2c953816880663941e83760d3f3317b8"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Mar 26 13:21:42 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Mar 26 13:38:41 2019 -0700"
      },
      "message": "adbd: listen to all functionfs events.\n\nMonitor for FUNCTIONFS_UNBIND as well, so that in the case where we get\nFUNCTIONFS_BIND, FUNCTIONFS_UNBIND, FUNCTIONFS_BIND, we don\u0027t trigger an\nassertion failure from seeing two FUNCTIONFS_BINDs.\n\nBug: http://b/129134256\nTest: manual\nChange-Id: I80af5f4b833513e932262638b9f8d76bbcb35504\n"
    },
    {
      "commit": "cc14d39c2c953816880663941e83760d3f3317b8",
      "tree": "03c008ffd7089c830a5a60a606e88717ee6ba9c0",
      "parents": [
        "c7a409036e606a1d0cace8b066ef9a87e61c5b48"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Mar 26 13:06:38 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Mar 26 13:06:38 2019 -0700"
      },
      "message": "adbd: increment writes_submitted_ before submitting writes.\n\nIf we fail to submit writes for some reason (e.g. the USB cable was\nunplugged), another thread that\u0027s waiting on the write mutex can enter\nSubmitWrites and attempt to resubmit the writes that we already failed\nto submit, leading to a failed assertion of !IoBlock::pending.\n\nIncrement writes_submitted_ before actually calling io_submit, so we\nskip over these writes and fall through to exit.\n\nBug: http://b/129134256\nTest: manually unplugged a blueline\nChange-Id: I2fd0034e45db22c8f637c81039ce686b7aa6a03b\n"
    },
    {
      "commit": "e2f32340d2d852c7d43a2ef07c74faac0d0f7ee5",
      "tree": "ccd9752029e49e7ae441264e3f9f4e63c0331ba6",
      "parents": [
        "c7a409036e606a1d0cace8b066ef9a87e61c5b48"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Tue Mar 26 11:58:53 2019 -0700"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Tue Mar 26 12:00:19 2019 -0700"
      },
      "message": "adb: Avoid extra std::string copies\n\nWhen a function argument takes a std::string, it\u0027s inefficient to\npass std::string::c_str(), since that creates an additional copy.\nSo we change these calling sites.\n\nTest: TreeHugger\nChange-Id: I1c0fde7275eb3ebd3baf05ec62581b0243655608\n"
    },
    {
      "commit": "63f2483b1bf91b7e46a0c74e4de59d19f7759f3c",
      "tree": "827367615ba62e5c24b1361c80d606b6535b66d9",
      "parents": [
        "31246c54713541464fcf992614595736f9ad477f",
        "c7a409036e606a1d0cace8b066ef9a87e61c5b48"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Mar 19 12:51:09 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Mar 19 12:51:09 2019 -0700"
      },
      "message": "Merge \"adbd: support ro.adb.nonblocking_ffs.\"\nam: c7a409036e\n\nChange-Id: Ib8bd70545cbb5acbf4ed9d1f3272b9e0fa8a421b\n"
    },
    {
      "commit": "c7a409036e606a1d0cace8b066ef9a87e61c5b48",
      "tree": "827367615ba62e5c24b1361c80d606b6535b66d9",
      "parents": [
        "dfb8d7e2e6a691b74ac5ec0a8df4dd2d0d9169b8",
        "99920cb302f1d0f9a81fb226567547955e68c7f1"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Mar 19 19:44:00 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 19 19:44:00 2019 +0000"
      },
      "message": "Merge \"adbd: support ro.adb.nonblocking_ffs.\""
    },
    {
      "commit": "31246c54713541464fcf992614595736f9ad477f",
      "tree": "1fade83deb48c594988affd2f09fe97daeefa63d",
      "parents": [
        "1427dab9bc7fe30fdeefd5e55ac7f465eced902e",
        "dfb8d7e2e6a691b74ac5ec0a8df4dd2d0d9169b8"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Mar 18 20:20:43 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Mar 18 20:20:43 2019 -0700"
      },
      "message": "Merge \"adb: fix uninitialized variable.\"\nam: dfb8d7e2e6\n\nChange-Id: I87e9844a42d9a9e120a5f4e60149eb5ec3efbcdf\n"
    },
    {
      "commit": "dfb8d7e2e6a691b74ac5ec0a8df4dd2d0d9169b8",
      "tree": "1fade83deb48c594988affd2f09fe97daeefa63d",
      "parents": [
        "acbe1e225d136a675e698ab5f6cf1e4d971a1588",
        "9f6084652db58e41673b7c6567258794e0f9cb63"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 19 03:14:17 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 19 03:14:17 2019 +0000"
      },
      "message": "Merge \"adb: fix uninitialized variable.\""
    },
    {
      "commit": "99920cb302f1d0f9a81fb226567547955e68c7f1",
      "tree": "1fa9088c643727b9aafc3505cafa068bbc16d619",
      "parents": [
        "9e97113beb7cc5c8edef725b8a8301854be5f453"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Mar 18 16:33:18 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Mar 18 17:59:24 2019 -0700"
      },
      "message": "adbd: support ro.adb.nonblocking_ffs.\n\nAllow disabling ro.adb.nonblocking_ffs via an ro system property, which\ngets overridden by the currently supported persist.adb.nonblocking_ffs.\n\nBug: http://b/128679787\nTest: mma\nChange-Id: I28891d2da129e9654bf63ab8a4c330c4d2f5b336\n"
    },
    {
      "commit": "9f6084652db58e41673b7c6567258794e0f9cb63",
      "tree": "aebdb5ad2c278ee5772de0d7ac2f09cccbd06470",
      "parents": [
        "9e97113beb7cc5c8edef725b8a8301854be5f453"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Mar 18 14:11:28 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Mar 18 17:12:19 2019 -0700"
      },
      "message": "adb: fix uninitialized variable.\n\nPreviously, we were initializing IoBlock::pending when submitting a read,\nbut leaving it uninitialized when doing a write, which would sometimes\nresult in an assertion firing when we received a previously allocated\nblock of memory that happened to have a nonzero value in pending.\n\nTest: treehugger\nChange-Id: I434c65f554ceed313fea9cfcc98788908f3ca8bc\n"
    },
    {
      "commit": "1427dab9bc7fe30fdeefd5e55ac7f465eced902e",
      "tree": "af6b005b9dec8c8946496dcea5c4599196b96483",
      "parents": [
        "65893f1f04e23bba87a1e950f82c911cdafda520",
        "acbe1e225d136a675e698ab5f6cf1e4d971a1588"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon Mar 18 14:01:02 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Mar 18 14:01:02 2019 -0700"
      },
      "message": "Merge \"adb: Fix return value in error case\"\nam: 2925a580e9\n\nChange-Id: I6fa794d11212e77650f6ffcfd7ee2e80092a9e0a\n"
    },
    {
      "commit": "acbe1e225d136a675e698ab5f6cf1e4d971a1588",
      "tree": "af6b005b9dec8c8946496dcea5c4599196b96483",
      "parents": [
        "d2fbd5cd896ffaf7b6778e4f6f700ee504bf90f4"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon Mar 18 07:00:00 2019 -0700"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon Mar 18 07:00:00 2019 -0700"
      },
      "message": "adb: Fix return value in error case\n\nWhen we introduced __adb_check_server_version() as a function\nreturning a \u0027bool\u0027, we missed missed converting once instance\nof \"return -1;\" to \"return false;\".  Thus, we\u0027re returning \u0027true\u0027\nin this case as our non-zero value gets implicitly converted to\n\u0027true\u0027.\n\nWe fix this case as well with this CL.\n\nTest: TreeHugger\nChange-Id: I90b01567d927f36d2d963561b676b3bfabfcee49\n"
    },
    {
      "commit": "65893f1f04e23bba87a1e950f82c911cdafda520",
      "tree": "02d140257288711675303a1d746449448040f06f",
      "parents": [
        "de7d2aa5bd4a52406909d90a221b199503b2383d",
        "d2fbd5cd896ffaf7b6778e4f6f700ee504bf90f4"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Mar 15 21:14:34 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Mar 15 21:14:34 2019 -0700"
      },
      "message": "Merge \"adb: avoid sign extension of shell return code.\"\nam: b5ac15a936\n\nChange-Id: Ib4018e339435eb8a4c79070c1096f076996d0386\n"
    }
  ],
  "next": "de7d2aa5bd4a52406909d90a221b199503b2383d"
}
