)]}'
{
  "log": [
    {
      "commit": "c9589bb0c2f6197c98edd2a47fcd4e8e85cc397b",
      "tree": "995380adda5da11b26257a5f10163e6ad6d9a765",
      "parents": [
        "07def20c4082b831ce5678959ef6a034674b808d",
        "aef8eb866df8b6b681422801fb2b44ba29953370"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue May 16 01:48:18 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 16 01:48:18 2017 +0000"
      },
      "message": "Merge \"Fix file transfer corner cases.\" into oc-dev am: 922669e81c\nam: aef8eb866d\n\nChange-Id: I5a838ba9fdbc481674eb4c6638d1221a7027f205\n"
    },
    {
      "commit": "aef8eb866df8b6b681422801fb2b44ba29953370",
      "tree": "c54293216cbbea020dc8f4132276727a47c6a8dc",
      "parents": [
        "86a0b96ddca0a657eeb1ba95ded957ba79c07c23",
        "922669e81c23ea3a400879dd7cb5f222b5e48e67"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue May 16 00:19:58 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 16 00:19:58 2017 +0000"
      },
      "message": "Merge \"Fix file transfer corner cases.\" into oc-dev\nam: 922669e81c\n\nChange-Id: Idf99f296e03b2e35b6140d5650147a7dcb3cbc8f\n"
    },
    {
      "commit": "5410756e75fb7567540f13d3813f42f4ac3838a0",
      "tree": "9c43426b3e7ec072dff9a54b795757566f389673",
      "parents": [
        "77994d70fe8d4805126361bbd0afbcac1cd1d2f0"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon May 15 11:54:19 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon May 15 13:21:46 2017 -0700"
      },
      "message": "Fix file transfer corner cases.\n\nFix zero packet read/write in corner cases\nwith initial read/writes. This affects transfers\nof 16372 bytes to the device and transfers of\n1012 bytes (or packet size - 12) from the device.\n\nTest: Transfer various length files\nBug: 37175601\nChange-Id: Ic1281e8757d1a33d78c66d2c57319b5ee38d6a46\n"
    },
    {
      "commit": "971ceda091cc5e282b21bbfe61572d3bd55ab40f",
      "tree": "fce5be366e6daa7d831bb33a8891f9bea32caeb3",
      "parents": [
        "d8e8d3f4a3240e47d4a0211634c55abdd55700de",
        "33435d749d68e0990793c15ab2fe30a352e8d3d8"
      ],
      "author": {
        "name": "Tomasz Wasilczyk",
        "email": "twasilczyk@google.com",
        "time": "Fri May 05 23:18:21 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri May 05 23:18:21 2017 +0000"
      },
      "message": "Merge \"Convert libmtp to soong.\" am: 3f877d4945 am: 1cd753b1af\nam: 33435d749d\n\nChange-Id: Ia31b32d5ec0f6f2eef51b979aae750090834ca32\n"
    },
    {
      "commit": "e997c143b86082d1426f8d3d755b7aeaaa7c3dc3",
      "tree": "05d208c9f1cccadbba54491eee4da0de5bc33787",
      "parents": [
        "a33999bab96f0ee1f44816cb3b5c1312bc2a4f91"
      ],
      "author": {
        "name": "Tomasz Wasilczyk",
        "email": "twasilczyk@google.com",
        "time": "Fri May 05 09:51:37 2017 -0700"
      },
      "committer": {
        "name": "Tomasz Wasilczyk",
        "email": "twasilczyk@google.com",
        "time": "Fri May 05 09:51:37 2017 -0700"
      },
      "message": "Convert libmtp to soong.\n\nBug: 37512442\nTest: native test\nChange-Id: Idf0e96a206faadc5a3179f0df564ab1d4daacda2\n"
    },
    {
      "commit": "777449ca7d0a4c8ca97da6097198e868a93b50cc",
      "tree": "6f3d5da570234851c040671ef873ba3c7a8fa564",
      "parents": [
        "3243d43c0596c18845781607bae6ef8995ea624d"
      ],
      "author": {
        "name": "Tomasz Wasilczyk",
        "email": "twasilczyk@google.com",
        "time": "Wed May 03 14:58:13 2017 -0700"
      },
      "committer": {
        "name": "Tomasz Wasilczyk",
        "email": "twasilczyk@google.com",
        "time": "Thu May 04 08:31:09 2017 -0700"
      },
      "message": "Convert libmtp to soong.\n\nBug: 37512442\nTest: native test\nChange-Id: Idf0e96a206faadc5a3179f0df564ab1d4daacda2\n"
    },
    {
      "commit": "96e42ccc01c6d6209fc3d9c5ff9f58ea9fc156f7",
      "tree": "de081d6014b44dd9a3a62d61004195ec235707ee",
      "parents": [
        "88858c73749a6582bd9a1cda4fc0ca57ee7da34c",
        "3d28aa79b2d96c81009ac32bc0bbe8ffe407c8cb"
      ],
      "author": {
        "name": "caozhiyuan",
        "email": "cao.zhiyuan@zte.com.cn",
        "time": "Thu Apr 27 23:37:48 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 27 23:37:48 2017 +0000"
      },
      "message": "Merge \"mtp: Preserve last modified time of files.\" am: c11caab96f am: 607c4c0f5e am: 8e2e605ebf\nam: 3d28aa79b2\n\nChange-Id: Iece12aea37654a3b1ac7c14ca62526cb05ad7610\n"
    },
    {
      "commit": "3d28aa79b2d96c81009ac32bc0bbe8ffe407c8cb",
      "tree": "79a447a020f44d5043b7c93fe676bd30baa56699",
      "parents": [
        "f417a01ad53982f5fa0b3b0d4f7e78d6b19d11f9",
        "8e2e605ebfef81b734e589c26c4cfd8abe009096"
      ],
      "author": {
        "name": "caozhiyuan",
        "email": "cao.zhiyuan@zte.com.cn",
        "time": "Thu Apr 27 23:10:46 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 27 23:10:46 2017 +0000"
      },
      "message": "Merge \"mtp: Preserve last modified time of files.\" am: c11caab96f am: 607c4c0f5e\nam: 8e2e605ebf\n\nChange-Id: I939de1c7a71b23b49319668a803381c88ae6729e\n"
    },
    {
      "commit": "854cb1745dd4abd06e6e8e6eef99f44faa54a219",
      "tree": "f73f7217c3556de262f0f7645b2275265320a4fb",
      "parents": [
        "94d15f9c0c7dc8a916ebfcf0f208adcc427df7f6"
      ],
      "author": {
        "name": "caozhiyuan",
        "email": "cao.zhiyuan@zte.com.cn",
        "time": "Wed Apr 26 16:52:30 2017 +0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Apr 27 11:35:32 2017 -0700"
      },
      "message": "mtp: Preserve last modified time of files.\n\nBug: 6325175\nTest: Transfer files\nChange-Id: I54af3205575f2bb83c732bb70907f60e0b785e91\nSigned-off-by: caozhiyuan \u003ccao.zhiyuan@zte.com.cn\u003e\n"
    },
    {
      "commit": "2c6162a2b7488001e0ce470d06654e9480c83e17",
      "tree": "49f606674e83880bcc298cc10ac30eea6f2bcdd0",
      "parents": [
        "f226672fc6bce11c684c77ef06492cee95bcab97",
        "f43c5e853dfa90c4416b32806e16606ff5d6525a"
      ],
      "author": {
        "name": "Manoj Gupta",
        "email": "manojgupta@google.com",
        "time": "Wed Apr 19 02:01:59 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Apr 19 02:01:59 2017 +0000"
      },
      "message": "Merge \"Fix clang static analyzer warnings.\" am: 9696b02782 am: 9f6dcf33da am: bf78bff35f\nam: f43c5e853d\n\nChange-Id: I3c3880dc13346d42dcacd92f0645450ff0ca0cc8\n"
    },
    {
      "commit": "f43c5e853dfa90c4416b32806e16606ff5d6525a",
      "tree": "498c83a842b5ca9933e2d1cec4f692fb3273b92b",
      "parents": [
        "6f5adfc7fd79d33aba68dec83f1416da7d18351d",
        "bf78bff35f69597710f4398651cc3c0b364cd52d"
      ],
      "author": {
        "name": "Manoj Gupta",
        "email": "manojgupta@google.com",
        "time": "Wed Apr 19 02:00:33 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Apr 19 02:00:33 2017 +0000"
      },
      "message": "Merge \"Fix clang static analyzer warnings.\" am: 9696b02782 am: 9f6dcf33da\nam: bf78bff35f\n\nChange-Id: I426c9830fd19be6b65d8da8a5ba9289735566680\n"
    },
    {
      "commit": "33587d19286015e7cef72273e473e7657e4656d8",
      "tree": "957cebf19d2ba5dcc3729064e3219d7183495379",
      "parents": [
        "6f2e6b252464097cff52f4a8f77cbad1001bfa3a"
      ],
      "author": {
        "name": "Manoj Gupta",
        "email": "manojgupta@google.com",
        "time": "Tue Apr 18 16:41:09 2017 -0700"
      },
      "committer": {
        "name": "Manoj Gupta",
        "email": "manojgupta@google.com",
        "time": "Tue Apr 18 16:41:09 2017 -0700"
      },
      "message": "Fix clang static analyzer warnings.\n\nFix the following warning:\nframeworks/av/media/mtp/MtpServer.cpp:1098:5: warning: Assigned value is\ngarbage or undefined [clang-analyzer-core.uninitialized.Assign]\n\nBUG:None\nTEST:Warnings fixed.\nChange-Id: If4e54ebd9b865e2e6cdc7666da0c9987a918df7c\n"
    },
    {
      "commit": "b78d29291f6fe3164197513f53e830005ac07080",
      "tree": "f3f22a2a4f24921b1a16e4085d0c7093174af127",
      "parents": [
        "c4e0ee148e15ae35c440189500775cfed800ff57",
        "d93543b5c831d61069d77f516a04eac499ed0cce"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Sat Apr 15 22:30:09 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Apr 15 22:30:09 2017 +0000"
      },
      "message": "Merge \"Fix zero length packet handling\" into oc-dev am: b5e067007d\nam: d93543b5c8\n\nChange-Id: I53c651782c50610cbf86d518ab96f070e4768a75\n"
    },
    {
      "commit": "c9cbf9870c28d5c65e7363db5291a4b89e1a8e8d",
      "tree": "89d86db72449d891e77cd0a334fb4b8686b86f8f",
      "parents": [
        "f4b7240b9d7095545d1ee1a772edacdeec1f6610"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Fri Apr 14 15:26:53 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Fri Apr 14 17:44:49 2017 -0700"
      },
      "message": "Fix zero length packet handling\n\nEnsure that a zero length packet is properly sent\n/ received when handling data that is a multiple of the\nendpoint size.\n\nThis fixes an issue where files whose size is a multiple\nof the endpoint size would hang during transfer.\n\nBug: 37175601\nTest: check successful file transfer.\nChange-Id: Iaf3cea18422234d65b59f5961ef9fb3f3ee2049a\n"
    },
    {
      "commit": "c089021a2047ce243cdcc143f7c863937e2d0b13",
      "tree": "22efe48b33762dadf1f9fe43dfaed8eee27aba43",
      "parents": [
        "e61d039902da4c7ea0efffa620ddd35097566a25",
        "a4fc619868a679c4c081bcb445b5a79c891b80be"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Apr 06 21:34:53 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 06 21:34:53 2017 +0000"
      },
      "message": "Merge \"Wait for threads to finish before returning.\" into oc-dev am: aedcedfa85\nam: a4fc619868\n\nChange-Id: I71b758a55e6a81f606f2e1e33a3ae6c161851344\n"
    },
    {
      "commit": "7063c936e50326883e672837036381f77080c2f3",
      "tree": "2c64eedc087ee2bdd5de64368bb73ed87c040a7b",
      "parents": [
        "97e6e199f9470cea3d686e0ed1033b171747356a"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Apr 04 15:06:10 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Apr 06 12:05:40 2017 -0700"
      },
      "message": "Wait for threads to finish before returning.\n\nPrevents the thread struct from being deallocated\nbefore the thread has finished.\n\nBug: 35152606\nTest: Transfer files in both directions, verify behavior when\ninterrupted\n\nChange-Id: Ic247072234977709711366636e6a39031fbc125a\n"
    },
    {
      "commit": "45b20b8de58c33a8af55bc93fb41e9ae0c5485ef",
      "tree": "a5ff770134b02103665b5e144896ffaa9b81752f",
      "parents": [
        "19b93ac3719c1f51636ed5dbffbb3b5036a2cf55",
        "e88401953eee20160ef8076bc034a6510096062d"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Apr 04 19:46:16 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Apr 04 19:46:16 2017 +0000"
      },
      "message": "Merge \"Add timeout to lock in MtpServer configure\" into oc-dev am: f97ade3242\nam: e88401953e\n\nChange-Id: I2ffa24b3b06bfbe58ac42d10f51dc4ead6743c42\n"
    },
    {
      "commit": "0475d911fcc1e6e1b4f49626f59a0a07038590fa",
      "tree": "9c4f71008370a17223a80dfd9a0966fcbfdaafaf",
      "parents": [
        "58a220fe06957cf7f0325cc9509947f1602e2986"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Apr 03 11:24:48 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Apr 03 14:22:34 2017 -0700"
      },
      "message": "Add timeout to lock in MtpServer configure\n\nIn situations where MtpServer is in a bad state, this will prevent\nthe configure call from blocking indefinitely, which will prevent\na few visible problems and allow the state to recover on the next\nconfig change.\n\nBug: 34873000\nTest: Connect to AA test sled\nChange-Id: I5daf9cfcec69c967bde6bf3f6fd90e1c434e18bb\n"
    },
    {
      "commit": "53f2ecaa60aea710d803ee94bbf398c50892c1a1",
      "tree": "ea8db11ae098b0e876414f01bddc41a7af3e9402",
      "parents": [
        "5f8beee0ea76ffe5cc40a517e8db43dbd64fbeff"
      ],
      "author": {
        "name": "Dan Shi",
        "email": "dshi@google.com",
        "time": "Tue Mar 28 16:13:37 2017 -0700"
      },
      "committer": {
        "name": "Dan Shi",
        "email": "dshi@google.com",
        "time": "Tue Mar 28 16:13:37 2017 -0700"
      },
      "message": "Add test config to mtp_ffs_handle_test\n\nDesign doc:\nGeneralized Suites \u0026 the Unification of APCT \u0026 CTS Workflows Design/Roadmap\nhttps://docs.google.com/document/d/1eabK3srlBLouMiBMrNP3xJPiRRdcoCquNxC8gBWPvx8/edit#heading\u003dh.78vup5eivwzo\n\nDetails about test configs changes are tracked in doc\nhttps://docs.google.com/document/d/1EWUjJ7fjy8ge_Nk0YQbFdRp8DSHo3z6GU0R8jLgrAcw/edit#\n\nBug: 35882476\nTest: local test\nChange-Id: I740caff88234fb986ca03553ab28c519cfe6aa18\n"
    },
    {
      "commit": "cde65569ec8bd25a2dd3efd32d35fa0341f2d80a",
      "tree": "6a03a0e2d0cd36c8ecade9063178eb429907c81f",
      "parents": [
        "4e83083be466482a8deacbc66924ca5bc1586957",
        "6bf6de375299db41d5510dca3321ebe42ceeb007"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Wed Mar 08 00:28:00 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Mar 08 00:28:00 2017 +0000"
      },
      "message": "Merge \"Add support for MTP_RESET_DEVICE operation.\" am: 52afe9d2cf am: bf7c90ad04\nam: 6bf6de3752\n\nChange-Id: I0f643f12c720ef2c31848fe01704afcd094d7f46\n"
    },
    {
      "commit": "bf7c90ad0445740c77b2ee380f382d937bdd67a8",
      "tree": "44c89119c73afe78c7a0c8737718b86cf2c6bdb3",
      "parents": [
        "0942860c57f13254fd1799bea45e06ea532b9ed3",
        "52afe9d2cf7bf85eace3f928716030f39a5c6e21"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Wed Mar 08 00:22:29 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Mar 08 00:22:29 2017 +0000"
      },
      "message": "Merge \"Add support for MTP_RESET_DEVICE operation.\"\nam: 52afe9d2cf\n\nChange-Id: I36c8e325e2b2dde85cb2a3546508c95e5da77e57\n"
    },
    {
      "commit": "6dafeccb9c82e2b1328f36fbce1b26e7799b1100",
      "tree": "4d1fb7bf5b1aa258297bcd925e938d4268e96e64",
      "parents": [
        "1df67b1b3a1a06d4a74a091345bd74045fe5bb82"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Feb 23 16:39:30 2017 -0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Wed Mar 08 00:18:25 2017 +0000"
      },
      "message": "Add support for MTP_RESET_DEVICE operation.\n\nSince we only support one open session, this\ncommand is the same as CLOSE_SESSION.\n\nTest: mtp-reset\nChange-Id: I2e95687a685af239c92473feb7c98419fcd55a1e\n"
    },
    {
      "commit": "9a161f06819e8bc5627a3e4384bf4774e3e4a1e1",
      "tree": "2116718d39ffbe6e301de61385e650e18d579e8e",
      "parents": [
        "c9dce5e883e34d14d954bb71d57b7257fe878416",
        "daaea6d2f1957dfea0501b6518f8deead7af4a7a"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Wed Mar 01 01:21:50 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Mar 01 01:21:50 2017 +0000"
      },
      "message": "Merge \"fix warning: dereference of a null pointer\" am: 9a6b9ed394 am: 90b59dbb0d\nam: daaea6d2f1\n\nChange-Id: If2eb8cba1df0760fb2c01e65e28d9b3f8ec4912c\n"
    },
    {
      "commit": "90b59dbb0d5e42e85f93e284f2ac47d4e6f7540b",
      "tree": "1e359b46e1f8449645a31354bacc234bf8319a85",
      "parents": [
        "840e2dcbae8d17bb6f092df32cb12324e18090b9",
        "9a6b9ed394c3ece622029ce5c169f19fd55de5b3"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Wed Mar 01 01:16:45 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Mar 01 01:16:45 2017 +0000"
      },
      "message": "Merge \"fix warning: dereference of a null pointer\"\nam: 9a6b9ed394\n\nChange-Id: I8f944dd30a2663262baa00a08c1e4204a29242eb\n"
    },
    {
      "commit": "9a6b9ed394c3ece622029ce5c169f19fd55de5b3",
      "tree": "1fd20bf47821c4349f68c27ca0a9c56b09fbbe9e",
      "parents": [
        "b95db7560eef62369312ecf82e2a90fb9d610d92",
        "0269068cb60dd68addfa5699664f04b376a82472"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 01 01:10:01 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 01 01:10:02 2017 +0000"
      },
      "message": "Merge \"fix warning: dereference of a null pointer\""
    },
    {
      "commit": "99c915d334e3810784474900297ee13d7523e61c",
      "tree": "3d77d5424af6003189c32f51a35888fe4741c46b",
      "parents": [
        "a42728489d3fbcd1d199099f33567119d05a7d2a",
        "01520fce8799d8ba067a796b68abe5e83c0b1336"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Feb 23 18:49:11 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 23 18:49:11 2017 +0000"
      },
      "message": "Merge \"Raise MTP max burst values.\" am: b95db7560e am: 840e2dcbae\nam: 01520fce87\n\nChange-Id: Ie378fdc9908d4f6830e3bfedc3884bfbb5a322b4\n"
    },
    {
      "commit": "840e2dcbae8d17bb6f092df32cb12324e18090b9",
      "tree": "4238833e44846fcfea0ca1a314003567c9dccd46",
      "parents": [
        "7ac1f99edbb6857d5ce07fd08784cd4db077207e",
        "b95db7560eef62369312ecf82e2a90fb9d610d92"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Feb 23 18:44:42 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 23 18:44:42 2017 +0000"
      },
      "message": "Merge \"Raise MTP max burst values.\"\nam: b95db7560e\n\nChange-Id: I56563e74a34598d6e4415f0c2054932f88cd8bd2\n"
    },
    {
      "commit": "2a14168f59bf5ad6e0cddb28c23f3e7fef75ac89",
      "tree": "2f65a14ddb4dd865bb8a59f99fbadd361b2eb48a",
      "parents": [
        "a2e67eb95e8dafeffb75c4e65f2648dedaa50a7d"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Feb 13 14:24:13 2017 -0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Feb 23 18:40:50 2017 +0000"
      },
      "message": "Raise MTP max burst values.\n\nSlightly increases transfer speeds on USB 3.0 connections.\n\nTest: Transfer files\nChange-Id: I25fb0a37fa92063356c4a2a0e0ba7f011b6b0527\n"
    },
    {
      "commit": "79a9526b3314fd133355ce7ba68e8465c98137c7",
      "tree": "8bc042cafdde8caf221974017d47112559399116",
      "parents": [
        "9f84bbbce06b8aa6f59d760d85897c0d0c4d101e",
        "1affa6440d6d8c6ce3ab33acd38f675fe783c7a9"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Wed Feb 22 02:16:54 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 22 02:16:54 2017 +0000"
      },
      "message": "Merge \"fix  warning: struct argument contains uninitialized data\" am: 4ad8990c14 am: fa4baa3422\nam: 1affa6440d\n\nChange-Id: Iaa8594d8fdce768104e77d2df8aa5a0728bb767a\n"
    },
    {
      "commit": "fa4baa3422c095e7c640c5725b5f6bba8b467cca",
      "tree": "1fb2d4d8f5c018ae57ce1339bae7db0931645c51",
      "parents": [
        "ad17ddb376a88792635bb7155a735c56060870f3",
        "4ad8990c1466fe3a43c9726e96416032be28c709"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Wed Feb 22 02:12:54 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 22 02:12:54 2017 +0000"
      },
      "message": "Merge \"fix  warning: struct argument contains uninitialized data\"\nam: 4ad8990c14\n\nChange-Id: If332f7d2f5be4180f4cf32f92ae86d62711f3b9b\n"
    },
    {
      "commit": "4ad8990c1466fe3a43c9726e96416032be28c709",
      "tree": "2c8d2b229a4b1cf59b5843ddfd5ea347936c75fa",
      "parents": [
        "2008d8857c4954cdf4dff80006102041556fd883",
        "8ddc352c3159afeb498b741138115e040d596e1d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 22 02:07:35 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 22 02:07:35 2017 +0000"
      },
      "message": "Merge \"fix  warning: struct argument contains uninitialized data\""
    },
    {
      "commit": "9f84bbbce06b8aa6f59d760d85897c0d0c4d101e",
      "tree": "09fed0f455006366970096816d01514b3a8f1b79",
      "parents": [
        "673774d14c3d7e9964f94e1c0aabfce5cf72acc8",
        "bae27c1095eb5e3503c9bdc7e2c6d5b8ab98dba2"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Wed Feb 22 01:55:53 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 22 01:55:53 2017 +0000"
      },
      "message": "Merge \"fix uninitialized warning.\" am: 2008d8857c am: ad17ddb376\nam: bae27c1095\n\nChange-Id: Ie8814a45544bbe9248d6116336547eb67b675583\n"
    },
    {
      "commit": "ad17ddb376a88792635bb7155a735c56060870f3",
      "tree": "027e74eb9f8c6e3c026a2bb552f277e6ce5c6756",
      "parents": [
        "bed2c85b57d58a2cbfdd8725fffbe31fefe2d476",
        "2008d8857c4954cdf4dff80006102041556fd883"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Wed Feb 22 01:52:22 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Feb 22 01:52:22 2017 +0000"
      },
      "message": "Merge \"fix uninitialized warning.\"\nam: 2008d8857c\n\nChange-Id: I867d7b49f827b4817186b0d13a17de62bc143e7c\n"
    },
    {
      "commit": "746f8acd98c474be1c8b32df570667fda219bb10",
      "tree": "e8cbb2c4fff3699ed5050521fc4b285982146722",
      "parents": [
        "c21b625d06c5bee968ec6eb871320a5f0488de39"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Tue Feb 21 16:10:45 2017 -0800"
      },
      "committer": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Tue Feb 21 16:10:45 2017 -0800"
      },
      "message": "fix uninitialized warning.\n\nThis fixes warning: The left operand of \u0027%\u0027 is a garbage value.\n\nBug: None.\nTest: The warning is gone.\nChange-Id: I191e5bfd9d5f5136afcc2b5d8277c44b7d223998\n"
    },
    {
      "commit": "8ddc352c3159afeb498b741138115e040d596e1d",
      "tree": "d58cc481c9984967f0d04236fc23e40d70ebfbf3",
      "parents": [
        "c21b625d06c5bee968ec6eb871320a5f0488de39"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Tue Feb 21 15:58:09 2017 -0800"
      },
      "committer": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Tue Feb 21 16:04:54 2017 -0800"
      },
      "message": "fix  warning: struct argument contains uninitialized data\n\nThis fixes the warning warning: Passed-by-value struct argument contains\nuninitialized data (e.g., field: \u0027command\u0027) [clang-analyzer-core.CallAndMessage]\n\nBug: None\nTest: The warning is gone.\nChange-Id: I3e06ff484bdec995c5125433acb5c3f14dc29dd9\n"
    },
    {
      "commit": "6bd0c13eaa13b089bbe414a05b0ed834c825d587",
      "tree": "4daa9290eae7d403cec28270bc109822a593a1a8",
      "parents": [
        "d1adbd51e6450a8ee1770921e3b99e91ecc1be4f",
        "7a296e912198e54ea8867b450b9cbdced5b8f7d9"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Fri Feb 10 18:43:00 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Feb 10 18:43:00 2017 +0000"
      },
      "message": "Merge \"Increase EP_ALLOC ioctl number.\" am: c21b625d06 am: eb93f3b468 am: 95af699869\nam: 7a296e9121\n\nChange-Id: Iea5ddcc194449c5e634189a6f88a32f44a81c0b2\n"
    },
    {
      "commit": "7a296e912198e54ea8867b450b9cbdced5b8f7d9",
      "tree": "d12250e35a7033ec897769f0baf946f383b0dbf5",
      "parents": [
        "79902b1700b0a924eb7069f59798a76158cb784f",
        "95af699869da6b8a568844a2cbb724fbca62bceb"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Fri Feb 10 18:40:00 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Feb 10 18:40:00 2017 +0000"
      },
      "message": "Merge \"Increase EP_ALLOC ioctl number.\" am: c21b625d06 am: eb93f3b468\nam: 95af699869\n\nChange-Id: Ib62d37947f025920819ae80c9be505aebf6e31d7\n"
    },
    {
      "commit": "52a93bbb3b57d1a730aedaee0b9ec22e4c71551d",
      "tree": "0de4fa94509e2519688fd6835cf5368ce6a81929",
      "parents": [
        "3775c69f1c851b20779a6018854ce7ab422c1a51",
        "79902b1700b0a924eb7069f59798a76158cb784f"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Fri Feb 10 00:58:04 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Feb 10 00:58:04 2017 +0000"
      },
      "message": "Merge \"Update MtpFfsHandle tests, add new tests for small and partial files\" am: ddc029afc7 am: 47c772f677 am: 61c034aa35\nam: 79902b1700\n\nChange-Id: I38f9c56c6a0a5b79c38b6ce6ace14ca60bb94237\n"
    },
    {
      "commit": "79902b1700b0a924eb7069f59798a76158cb784f",
      "tree": "19720ddff0a4f1ae2d7d3a6952a1636b1b7f9081",
      "parents": [
        "4b0f2f51509154f1180dab192bff23ce4bf725c7",
        "61c034aa35f346d8754b0ea676903db049f18146"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Fri Feb 10 00:01:00 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Feb 10 00:01:00 2017 +0000"
      },
      "message": "Merge \"Update MtpFfsHandle tests, add new tests for small and partial files\" am: ddc029afc7 am: 47c772f677\nam: 61c034aa35\n\nChange-Id: I4069f3cbc89e3fefdbcec1ae06f83980dadb3d85\n"
    },
    {
      "commit": "94b13227f4c77bb303d7d004d889f6bf6a65f64c",
      "tree": "05dd04eebcc8fc8ce6e2355907a596ce97dd3522",
      "parents": [
        "8542feecf7842746d3a5e3cb113ac7269f7a296f"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Feb 09 11:02:49 2017 -0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Feb 09 11:02:49 2017 -0800"
      },
      "message": "Increase EP_ALLOC ioctl number.\n\nThis prevents conflict with future upstream ioctls.\n\nTest: Perform a file transfer.\nChange-Id: If7313a048f528dfa57ef2fe52932ed664ad6f234\n"
    },
    {
      "commit": "8542feecf7842746d3a5e3cb113ac7269f7a296f",
      "tree": "d71eee5e0cb7c04baf10321dbde941e12d2afcf4",
      "parents": [
        "9064b2d12a572cb53469883a595eed6360b49cd8"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Feb 06 15:12:17 2017 -0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Feb 09 11:02:06 2017 -0800"
      },
      "message": "Update MtpFfsHandle tests, add new tests for small and partial files\n\nTest: Build and run 32 and 64 bit tests\nBug: 34822471\nChange-Id: I812e4f27464e385c219c42bf7a76fa702f295f41\n"
    },
    {
      "commit": "dc6ca2d6909f7e567856ca896dd08d994264758a",
      "tree": "366cd4a8403a2d70e097fa9c7e178241e06a052f",
      "parents": [
        "4d2c28c4cff297ad0432cae36601649c43a2462d",
        "8e3503051a59bda7323ed16779fac603fb93ff28"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Feb 06 22:44:46 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Feb 06 22:44:46 2017 +0000"
      },
      "message": "Retry allocations in case of ENODEV am: b4f5426604 am: 75bb252863 am: 5d5a91c008\nam: 8e3503051a\n\nChange-Id: Iccb1df80bee19bf032858285f10f6ea5468ddf38\n"
    },
    {
      "commit": "4d2c28c4cff297ad0432cae36601649c43a2462d",
      "tree": "8d5766f7a97b0102a7ecea0aa6495d17a713a699",
      "parents": [
        "3241dddc347a3a268d67a25ce9a82d6f76941248",
        "f373f0fa4799140ab412bd5f68ecaa36c52c948a"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Feb 06 22:44:40 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Feb 06 22:44:40 2017 +0000"
      },
      "message": "Fix GetPartialObject on FFS am: 4418030f45 am: 8eff270486 am: e209fd29f7\nam: f373f0fa47\n\nChange-Id: Idf4aa73819dff14dbd0c2caf5edc473662faad5b\n"
    },
    {
      "commit": "8e3503051a59bda7323ed16779fac603fb93ff28",
      "tree": "a40853b0c74fadeb7e67be80892972d8dd900641",
      "parents": [
        "f373f0fa4799140ab412bd5f68ecaa36c52c948a",
        "5d5a91c008e9c29d8fa365b92dc0e1fc08ef9c74"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Feb 06 22:41:59 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Feb 06 22:41:59 2017 +0000"
      },
      "message": "Retry allocations in case of ENODEV am: b4f5426604 am: 75bb252863\nam: 5d5a91c008\n\nChange-Id: I822915dd40e9c999a3412ee74e5272ff04e0c7d4\n"
    },
    {
      "commit": "f373f0fa4799140ab412bd5f68ecaa36c52c948a",
      "tree": "36922a69ffc0a4b2902739ae7a4d8eb448015bd8",
      "parents": [
        "a0d2eb6a71980f448576c42ce62a2e741b0ebd5c",
        "e209fd29f7e62aa45d6820178ea410f12c680ea7"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Feb 06 22:41:52 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Feb 06 22:41:52 2017 +0000"
      },
      "message": "Fix GetPartialObject on FFS am: 4418030f45 am: 8eff270486\nam: e209fd29f7\n\nChange-Id: Iceb76f12ca62c5c800c7f9b9df65fa60c308463a\n"
    },
    {
      "commit": "0269068cb60dd68addfa5699664f04b376a82472",
      "tree": "e85f22cb8b89789409db57ae5e7fd07ca471a35e",
      "parents": [
        "f41c781cf4500cb0a8aae017f0c802c7b6f52f05"
      ],
      "author": {
        "name": "Yunlian Jiang",
        "email": "yunlian@google.com",
        "time": "Tue Jan 31 17:11:19 2017 -0800"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Feb 06 21:31:27 2017 +0000"
      },
      "message": "fix warning: dereference of a null pointer\n\nThis fixes a warning: Access to field \u0027mPlaybackFormats\u0027 results\nin a dereference of a null pointer (loaded from field \u0027mDeviceInfo\u0027)\n[clang-analyzer-core.NullDereference]\n\nBug: None\nTest: Static analyzer no longer complains, bullhead still boots with no\napparent issues.\nChange-Id: I71ce486c667441d9b90ef63c2df8d23d70254639\n"
    },
    {
      "commit": "b4f54266042f0553b41409a3d1f0542b684c2129",
      "tree": "cf18305909249f4ff86438b8bc3f32791c0fa8ae",
      "parents": [
        "4418030f45cca8cad25051f49b142988fb635037"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Feb 02 18:14:33 2017 -0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Feb 06 12:01:56 2017 -0800"
      },
      "message": "Retry allocations in case of ENODEV\n\nUnlike the read() and write() calls, the ioctl() call\ndoes not wait for endpoints to be enabled, which is\nproblematic if ioctls() are the first calls on the\nusb connection, since they may be called before the\nendpoints are set up. We\u0027ll have to retry if this\ncauses them to fail.\n\nBug: 34822471\nTest: Change configs to mtp and ptp\nChange-Id: I89610b9614c33f0b22535cc68cd0c9b502cb55c9\n"
    },
    {
      "commit": "4418030f45cca8cad25051f49b142988fb635037",
      "tree": "910b0cf950d6ab42f1974245b01e7ac8d51d77ce",
      "parents": [
        "3f6419d0e55913ad439c03b9ff640d413f46b72c"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Fri Feb 03 16:31:31 2017 -0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Feb 06 11:12:52 2017 -0800"
      },
      "message": "Fix GetPartialObject on FFS\n\nLinux apps use GetPartialObject to access\nMTP files directly. Fix file offset handling\nas well as lengths shorter than packet size.\n\nBug: 34822471\nTest: Attach photos in Gmail, open directly from device\nChange-Id: I9986cd8c70ed261f07e8f96a72e53b87341dd93f\n"
    },
    {
      "commit": "c5505da9783d88521eb6b7d6ce5f5b908efdd8df",
      "tree": "e382765631e43d7e064a92f75c5593f879121493",
      "parents": [
        "24c4f0f3e9846ce17cc2cbb6c2400698b445b8f8",
        "29e24f225679737229364799e09b5cc19c816f3e"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Feb 02 23:41:02 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 02 23:41:02 2017 +0000"
      },
      "message": "Merge \"Make Mtp FFS allocations per session rather than per file\" am: 3f6419d0e5 am: 57b71e605e am: 8a91cf1510\nam: 29e24f2256\n\nChange-Id: Ia166c9d64c3692530fd37d38605d9bd83094fc5d\n"
    },
    {
      "commit": "29e24f225679737229364799e09b5cc19c816f3e",
      "tree": "527122090cf6d17013f29bef2317b922a6ff03a2",
      "parents": [
        "5fd1ace43b63327842a5856ed49e0f55b3dc56c8",
        "8a91cf1510c006b0d734b14d1a241ed77cf39ec7"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Feb 02 23:16:10 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Feb 02 23:16:10 2017 +0000"
      },
      "message": "Merge \"Make Mtp FFS allocations per session rather than per file\" am: 3f6419d0e5 am: 57b71e605e\nam: 8a91cf1510\n\nChange-Id: I6ea428e9002851843d2b6f86450a0f378f1e92ac\n"
    },
    {
      "commit": "cc9d0fdd302cf997607055e0a8b5559509cba766",
      "tree": "9dd0c4129717288a07246f23c6492fcb5a6daad1",
      "parents": [
        "f41c781cf4500cb0a8aae017f0c802c7b6f52f05"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Fri Jan 27 10:29:59 2017 -0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Feb 02 12:38:00 2017 -0800"
      },
      "message": "Make Mtp FFS allocations per session rather than per file\n\nWorkloads that send a large number of small files could\nrepeatedly allocate and free the buffer, causing fragmentation\nand eventually running out of allocable memory. Instead\nhave the allocation be once per MTP session, and retry\nwith smaller buffers if it fails initially.\n\nBug: 34741015\nBug: 34822471\nTest: Transfer files via MTP\nChange-Id: I775376076d3a0c26765b211100830ea0c08450ef\n"
    },
    {
      "commit": "9e26267afc9bd9b80c44b50b4a40c050f79d15cd",
      "tree": "30b3ab32584fe87b5b48f64b90c2e9405811e402",
      "parents": [
        "e482d3a819edb60038ba5c4ca7f33935b27dd35f",
        "d2fab7e46357c99991f08c9d0dbc05f5bbb3f6aa"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Jan 19 19:36:10 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jan 19 19:36:10 2017 +0000"
      },
      "message": "Merge \"Keep ScopedEndpointBufferAlloc in variables\" am: 1fba0b75b8 am: 5ffdae08b5 am: 15222d6ddc\nam: d2fab7e463\n\nChange-Id: I9218cc1bcd25bd00975413e1c2b6bd75ce49eb36\n"
    },
    {
      "commit": "d2fab7e46357c99991f08c9d0dbc05f5bbb3f6aa",
      "tree": "5c0e40b4c1d2f37ed0d95012c763c9f6f0703c22",
      "parents": [
        "be9322a021c8510a48ca3564e69e124b8cdf480f",
        "15222d6ddcd7b15721933a97e79fdd8642af63b8"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Jan 19 19:34:09 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jan 19 19:34:09 2017 +0000"
      },
      "message": "Merge \"Keep ScopedEndpointBufferAlloc in variables\" am: 1fba0b75b8 am: 5ffdae08b5\nam: 15222d6ddc\n\nChange-Id: Ib59b24a9958762fee246955c6eb7a0345e574978\n"
    },
    {
      "commit": "e9d94421825dd90f0036d0dbde59b1f00f85f23b",
      "tree": "7672335f3cb55403089d5bf5f6f42338d4909cde",
      "parents": [
        "58cdf4a1ac89e1e7498a2e7302f8b90e34fe45d2"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Wed Jan 18 12:03:56 2017 -0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Wed Jan 18 17:33:07 2017 -0800"
      },
      "message": "Keep ScopedEndpointBufferAlloc in variables\n\nThis way they don\u0027t immediately destruct. Also\nup the logging for an allocation failure and use\nposix_madvise to possibly improve memory performance.\n\nTest: Transfer files and verify that allocs are scoped properly\nBug: 30976142\nChange-Id: If8d2c03cefcc98a83bbb57618c35337529437f73\n"
    },
    {
      "commit": "9b52063b9a6cd9921382235149629fd20f828f4e",
      "tree": "a870239d6eb47190fed8ab2058fb3f501817843e",
      "parents": [
        "8e7be6ff3b9aef6d6d15bc6964ff75d690ba685a",
        "d95d34d49d36a2f27212485c79cde769af3873e9"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed Jan 18 23:08:22 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 18 23:08:22 2017 +0000"
      },
      "message": "Don\u0027t send short URB packet when sending MtpDataPacket.\nam: d95d34d49d\n\nChange-Id: Iafc27d47bfd1fe9bd17f6dbf0920572eb66944e9\n"
    },
    {
      "commit": "b03b527afdd20b351b57b71ab2fbff5284435d81",
      "tree": "e533fa52decbde07c0dd54e2fc02fada3d908d99",
      "parents": [
        "9b1e2217e291cfd981378bc6273c705bb371b35c",
        "5c66471ad288640a89188f765fef5b41b4d3daf5"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed Jan 18 22:51:52 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 18 22:51:52 2017 +0000"
      },
      "message": "Stop sending object handle with sendObject request.\nam: 5c66471ad2\n\nChange-Id: I1581a4d9683fffe53549ab9b368a4bbf1ae60d40\n"
    },
    {
      "commit": "3670ef95286d8eb028d30a95448b8f93f8f74007",
      "tree": "e6ce17ba50ce8748eccd7313e88882f708063590",
      "parents": [
        "e396e1cfaf67244b3b256e81ca452217bd3662ca",
        "ff9f01d3ba1af4b353bfd418690716b332d01287"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Jan 17 22:45:10 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jan 17 22:45:10 2017 +0000"
      },
      "message": "Merge \"Re-add MTP interface string\" am: 58cdf4a1ac am: b804854648 am: 7e8b1663fc\nam: ff9f01d3ba\n\nChange-Id: Ic2ac2f8e176d21e1e70f880af20958550a1c6008\n"
    },
    {
      "commit": "6a7905217bc840eae38125bb9ebced994b21442b",
      "tree": "651bd69ff551e9d36fe7922931080eb11b8e6a0a",
      "parents": [
        "59cfe7de39c8f1d2dee6eb6f171934598ba2da78"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Wed Jan 11 15:17:53 2017 -0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Jan 17 14:31:30 2017 -0800"
      },
      "message": "Re-add MTP interface string\n\nThe string is used in some hosts like Mac to\ncheck for MTP devices.\n\nTest: Connect device\nBug: 30976142\nChange-Id: Iac616997dc8afd0bdf03de0d13dee7baa6483904\n"
    },
    {
      "commit": "d95d34d49d36a2f27212485c79cde769af3873e9",
      "tree": "3d310e75606a554926ef0444d96d03f50944095b",
      "parents": [
        "5c66471ad288640a89188f765fef5b41b4d3daf5"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Oct 04 17:34:43 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed Jan 11 14:02:27 2017 +0900"
      },
      "message": "Don\u0027t send short URB packet when sending MtpDataPacket.\n\nWhen sending a MtpDataPacket to a MTP device, the kernel driver splits\nit into multiple URB packets so that the URB packet size does not exceed\nthe buffer size at the MTP device.\n\nPreviously MtpDataPacket sends its header first, then sends the\npayload. It means the first URB packet only contains the header of\nMtpDataPacket and the URB packet size is smaller than the maximum URB\npacket size (short packet). Some MTP devices regard the short packet as\nthe end of the sequencail URB packets, thus the devices do not accept\nthe following URB packets that contain the payload.\n\nThe MTP spec says if the responder (MTP device) sends the data in a way\nwhere the first pacekt contains only the header, the initiator (MTP\nhost) must send data in the same way. Otherwise the initiator must not\nsend a short packet in the sequencial URB packets.\n\nThe CL fixes the MTP host implementation so that it remembers how the\nMTP device sends data, and uses the same way when sending data\nfrom the host.\n\nBug: 31165557\nTest: Manually invokes MtpDevice#sendObject\nChange-Id: Ic76eb4241ed74957414aef2990be08cd77a9f5a9\n(cherry picked from commit d4b4296b401162a7a42f757c96e3652b82255b13)\n"
    },
    {
      "commit": "5c66471ad288640a89188f765fef5b41b4d3daf5",
      "tree": "16dffa5cea0670d5038bd96408f422473ca0ff21",
      "parents": [
        "cb85a295a44eb5e3f639e2a29499b51ebf2cd012"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Oct 04 17:45:31 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed Jan 11 01:37:52 2017 +0000"
      },
      "message": "Stop sending object handle with sendObject request.\n\nAccording to the MTP spec, the sendObject request must follow\nsendObjectInfo request and we could not send an object handle with\nsendObject request. The CL stops sending object handle with a sendObject\nrequest. Instead it checks if the given object handle equals to the\nobject handle returned by the previous sendObjectInfo request.\n\nBug: 31918048\nTest: manually invoked sendObjectInfo and sendObject.\nChange-Id: I0a80bdf67bf2913522821ac705f3dc548d3edead\n(cherry picked from commit 8d20945c08dfdd85c252c8ba92d197bf1bd2b208)\n"
    },
    {
      "commit": "c989e07ef09f173cfa4ba61c7bf9d4837bb8d763",
      "tree": "fc3afc4578c20249d349abf049046ddfbe417947",
      "parents": [
        "4c7e187c322e5062130c9b91fe34f8ed20f7f615",
        "aff7bd0ca1f1e6f860e056792938985e571fc75d"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Wed Jan 11 01:10:50 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 11 01:10:50 2017 +0000"
      },
      "message": "Merge \"Use FUNCTIONFS_ENDPOINT_ALLOC_BUFFER ioctl to improve performance.\" am: 20adbc0003 am: ba6324e7fe am: 7ceeb44566\nam: aff7bd0ca1\n\nChange-Id: I2e8bd53c70f7767c9a9958f10c35e85b58ffa469\n"
    },
    {
      "commit": "5a804b923e2faa4bf9f02b238b94abceb3b6d0fa",
      "tree": "860efeba67f9dd4ca3da994776cadf2e2e667648",
      "parents": [
        "0da9804f128e1ab1ae21f9840ba7096ecce746ea"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Dec 15 17:07:38 2016 -0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Jan 10 16:49:31 2017 -0800"
      },
      "message": "Use FUNCTIONFS_ENDPOINT_ALLOC_BUFFER ioctl to improve performance.\n\nThe ioctl preallocates kernel buffers for the read/write syscalls,\nreducing memory fragmentation and allowing for larger buffers,\nas well as removing the kmalloc overhead.\n\nTest: Manual\nChange-Id: I9f5fef1b1625c1a2cda374541d8042f7e0ba78f5\n"
    },
    {
      "commit": "2b934d36939c571a47cc972670176bc0356c54be",
      "tree": "2e73c55885322bfa6c2120a6a708ed2271ae68bd",
      "parents": [
        "3cc1da3dc8f367d8a29251088945d67fede8bfb8",
        "8706043acc858d6191169912e40c7b7df7209c24"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Jan 05 00:20:41 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jan 05 00:20:41 2017 +0000"
      },
      "message": "Merge \"Fix issue with 32 bit versions of asyncio\" am: 71be3d9a6f am: 0500ce7ed2 am: 2347a1f847\nam: 8706043acc\n\nChange-Id: I779cf3078e76ee7e4245d41fe935309958829205\n"
    },
    {
      "commit": "8e889ef487c1adb3a5a02ff41712fbca44fd449f",
      "tree": "d3d3c87b0a17acff0fa45f68bc24676eb2ae54f5",
      "parents": [
        "549e43194717a88bb987f006ba3330c3803325e5"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Jan 03 14:41:56 2017 -0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Wed Jan 04 16:08:28 2017 -0800"
      },
      "message": "Fix issue with 32 bit versions of asyncio\n\nAssuming 64 bit long offsets caused 32 bit tests\nto fail\n\nTest: verified async_io_test passes on 32 and 64 bit\nBug: 33846003\nChange-Id: I2db126068037f674beeacd5bc30364010c858350\n"
    },
    {
      "commit": "105928c9d30ed4c697cc4cdd9e68d8d47a695133",
      "tree": "a508499a19cbd8bff4b04ddcac4c5bbe7b287e78",
      "parents": [
        "704f71980464987a352a16ac95ffe1f9e24aa10b",
        "6bc76c8868b49d9f58cc49e1be3d99ae3217870d"
      ],
      "author": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Thu Dec 22 20:58:29 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 22 20:58:29 2016 +0000"
      },
      "message": "Merge \"Make users of MtpServer provide DeviceInfo fields\" am: b5ee680912 am: e6e72a4c40 am: d76a98d5f4\nam: 6bc76c8868\n\nChange-Id: Ie812247f6ea929d36c46c4e7ba979881b9fd1eb7\n"
    },
    {
      "commit": "792298f63b1433ddd54ef7ab6283a5aeb3386e16",
      "tree": "f6c3e03aff99740c4cef1e63db92b56734978799",
      "parents": [
        "36a75eeb15e58726e8cbbfe9687975740133a11b"
      ],
      "author": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Wed Dec 21 11:20:22 2016 -0800"
      },
      "committer": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Wed Dec 21 14:12:21 2016 -0800"
      },
      "message": "Make users of MtpServer provide DeviceInfo fields\n\nThis is part of weaning apps off accessing system identifiers via\nsystem properties API. Apps should use android.os.Build API instead.\n\nBug: 33700679\nTest: Enable MTP mode then check that mtp-detect output same as before this commit\nChange-Id: Ic21da7b8e976aaa1abc606a3cb4a1f2bd8698408\n"
    },
    {
      "commit": "dee8e1e48982a48b31c2db73a4e6630d70e2bfac",
      "tree": "cab56f72c9f980bdf8f49f3a8b407a64be7bc043",
      "parents": [
        "4278ba02628d915b52d59dcf5477880cf99f39cd",
        "28569ba92e5b635e4288d271f33539bd85a380c9"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Dec 13 01:01:21 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Dec 13 01:01:21 2016 +0000"
      },
      "message": "Refactored Mtp driver interface into multiple classes. am: 487be61fb0 am: c17a76108b am: 1475041870\nam: 28569ba92e\n\nChange-Id: I18b7674cd0c2e05534849c52f78cbcb0e4ad9144\n"
    },
    {
      "commit": "487be61fb0a38873aec1d12da92437fba5e728f2",
      "tree": "29bfa5273c091b25b31ac5353580f67229a8b07c",
      "parents": [
        "b985e3c6bab78c60ef53164f157dd5bccf3045f9"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Oct 24 12:10:41 2016 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Dec 12 14:36:06 2016 -0800"
      },
      "message": "Refactored Mtp driver interface into multiple classes.\n\nAdded new interface for FunctionFS. This allows most of\nthe driver code to exist in userspace. The driver will\nautomatically use FunctionFS if it is enabled for that\ndevice, otherwise it will default to the kernel driver.\n\nThe intention is to eventually deprecate the kernel driver.\n\nBug: 30976142\nChange-Id: I36b8d16ca254fddd995b3ea1bd3d37b0ff4a28f7\nTest: New automated tests for MtpFfsHandle, AsyncIO.\nManual testing on each device.\n"
    },
    {
      "commit": "d7f5b6de42553ec22314dd341f019fb8ebe76bc1",
      "tree": "8dcb85d2a0254805d5ddb57845b502b079aa2ad3",
      "parents": [
        "306162c7bf122ea915d4c3e39044478cd9944258",
        "cb8d8af1ad71ca7b800d298376dec7e6b1c1c766"
      ],
      "author": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Thu Oct 27 16:15:11 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 27 16:15:12 2016 +0000"
      },
      "message": "Merge \"Signature of usb_request_wait changed\""
    },
    {
      "commit": "cb8d8af1ad71ca7b800d298376dec7e6b1c1c766",
      "tree": "857ae36748c7160ca3539ee40dec03ba50ff7ada",
      "parents": [
        "bf2e61f54c7dcc37c97b4908c9ed6871cf3d2b49"
      ],
      "author": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Wed Oct 19 10:11:22 2016 -0700"
      },
      "committer": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Wed Oct 26 09:46:25 2016 -0700"
      },
      "message": "Signature of usb_request_wait changed\n\nTest: Compiled\nChange-Id: Ib32507811d21205d44be5b4c44a862ae100aba43\n"
    },
    {
      "commit": "6e08d93aa2194b084b90cd4fdd04148180deed77",
      "tree": "a696844147bc9a27f9333f0a110e92abef2fe33c",
      "parents": [
        "fa92ed0391a722a401b6f050d941032764a8639d"
      ],
      "author": {
        "name": "Vitalii Tomkiv",
        "email": "vitalit@google.com",
        "time": "Fri Oct 21 14:04:15 2016 -0700"
      },
      "committer": {
        "name": "Vitalii Tomkiv",
        "email": "vitalit@google.com",
        "time": "Tue Oct 25 15:55:29 2016 -0700"
      },
      "message": "Add timeout to usb_device_get_string to prevent usb stuck state for bad\nbehaving devices.\n\nBug: 31923641\nTest: manual run and test with bad devices.\nChange-Id: I50e65733fff19f16c7d16bfd805ae930f30171b3\n"
    },
    {
      "commit": "d4b4296b401162a7a42f757c96e3652b82255b13",
      "tree": "0c9433e61873d31b683753906c5ed4b0f21a81b2",
      "parents": [
        "d45003594f2ae928869f14579095687c4f090d06"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Oct 04 17:34:43 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Oct 07 10:04:30 2016 +0900"
      },
      "message": "Don\u0027t send short URB packet when sending MtpDataPacket.\n\nWhen sending a MtpDataPacket to a MTP device, the kernel driver splits\nit into multiple URB packets so that the URB packet size does not exceed\nthe buffer size at the MTP device.\n\nPreviously MtpDataPacket sends its header first, then sends the\npayload. It means the first URB packet only contains the header of\nMtpDataPacket and the URB packet size is smaller than the maximum URB\npacket size (short packet). Some MTP devices regard the short packet as\nthe end of the sequencail URB packets, thus the devices do not accept\nthe following URB packets that contain the payload.\n\nThe MTP spec says if the responder (MTP device) sends the data in a way\nwhere the first pacekt contains only the header, the initiator (MTP\nhost) must send data in the same way. Otherwise the initiator must not\nsend a short packet in the sequencial URB packets.\n\nThe CL fixes the MTP host implementation so that it remembers how the\nMTP device sends data, and uses the same way when sending data\nfrom the host.\n\nBug: 31165557\nTest: Manually invokes MtpDevice#sendObject\nChange-Id: Ic76eb4241ed74957414aef2990be08cd77a9f5a9\n"
    },
    {
      "commit": "14dcfa14ae599e31ffd44b823f8eebd0b951beb7",
      "tree": "bd60af8262c63cbe773265920cea2ca0f4008033",
      "parents": [
        "9b9fbcae39e0a7bc4f5491c262c60b4c4e843d39",
        "8d20945c08dfdd85c252c8ba92d197bf1bd2b208"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 05 03:51:37 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 05 03:51:38 2016 +0000"
      },
      "message": "Merge \"Stop sending object handle with sendObject request.\""
    },
    {
      "commit": "8d20945c08dfdd85c252c8ba92d197bf1bd2b208",
      "tree": "c590e169fc722f641ba277d9d05917385e2d2e57",
      "parents": [
        "ecb008139a952a7e5d812e7eb0f5af0f9466d25d"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Oct 04 17:45:31 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Oct 04 17:45:31 2016 +0900"
      },
      "message": "Stop sending object handle with sendObject request.\n\nAccording to the MTP spec, the sendObject request must follow\nsendObjectInfo request and we could not send an object handle with\nsendObject request. The CL stops sending object handle with a sendObject\nrequest. Instead it checks if the given object handle equals to the\nobject handle returned by the previous sendObjectInfo request.\n\nBug: 31918048\nTest: manually invoked sendObjectInfo and sendObject.\nChange-Id: I0a80bdf67bf2913522821ac705f3dc548d3edead\n"
    },
    {
      "commit": "5b26fdfdcb4462cb17909c12577da2439d4a9849",
      "tree": "f443a0aab14a5798d653d9f059574587e2be4c31",
      "parents": [
        "87c2e38c64810eb501dd92ad5fa8e5d81f6d3117",
        "ddb2a28a0b8ab4482395e003ee5eaf630eaa6066"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Sep 28 23:50:43 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Sep 28 23:50:43 2016 +0000"
      },
      "message": "Don\u0027t process objects with empty name am: 7ea72dcdeb am: 0e0ca2a45f\nam: ddb2a28a0b\n\nChange-Id: I902fda725304d8dbf9f97f81d1554198d21452c1\n"
    },
    {
      "commit": "ddb2a28a0b8ab4482395e003ee5eaf630eaa6066",
      "tree": "e450f9fac9b322dddfefb56d67e7ba16e5b0b0dd",
      "parents": [
        "a578c4f37861fd26ff6a8b4836c1e7acbad60c75",
        "0e0ca2a45fa34fbd4ee9445a9dc0ad9e410b47c8"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Sep 28 23:35:15 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Sep 28 23:35:15 2016 +0000"
      },
      "message": "Don\u0027t process objects with empty name am: 7ea72dcdeb\nam: 0e0ca2a45f\n\nChange-Id: I2240fc25b0234fde68a9599e317e3cc5c1fe63f2\n"
    },
    {
      "commit": "7ea72dcdeb8efc90701bfcc1f439e591e8938d4c",
      "tree": "c9065f6ad92dc3fb5bdcde1fafcd12221b92ea1f",
      "parents": [
        "7b973eb89ea7088fe82f457cd10013bbe739bba4"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Sep 19 14:08:16 2016 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Sep 19 14:08:16 2016 -0700"
      },
      "message": "Don\u0027t process objects with empty name\n\nas this will result in a bad database entry.\n\nBug: 31526567\nChange-Id: I2e2a88ca98b189300fa2885b082746252f920bb4\n"
    },
    {
      "commit": "d7e0b3bb26b37abae67544d98281e1196b2c386e",
      "tree": "b1b0a4923b71443a2cb77a20c953f66c0ce84a93",
      "parents": [
        "670a89336b7626ad04871873f496329ded084974",
        "8579011e2a7ad103363554b32d84534025b2bdc1"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Aug 15 21:42:31 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 15 21:42:31 2016 +0000"
      },
      "message": "Merge \"Fix google-explict-constructor warnings in mtp.\" am: b480ab9365 am: c3fd10acaa am: de1567cc34\nam: 8579011e2a\n\nChange-Id: I1559fc6a005c79408a09600e6d34be5725c4e41f\n"
    },
    {
      "commit": "c3fd10acaa47bc973e31f71f1925b8a2797b731a",
      "tree": "ebb70f895e39977d051703bfcab0ebc57647a079",
      "parents": [
        "efc2112df26c8d0c74136ed8807529d1f4141a56",
        "b480ab936556056851ea5cecaed1528b6b035884"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Aug 15 21:26:27 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 15 21:26:27 2016 +0000"
      },
      "message": "Merge \"Fix google-explict-constructor warnings in mtp.\"\nam: b480ab9365\n\nChange-Id: I7285319a159b5d1d42145e6eb9f51849c53df9d3\n"
    },
    {
      "commit": "a039c883c593b2ebbca6d32282cbd855b5bec19f",
      "tree": "c356a154ef7881e88ab228f9239110414537c405",
      "parents": [
        "67fbddfdc2cafd63c83d3bb55a2451d4c26f546d"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Aug 09 14:16:10 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Aug 09 14:16:10 2016 -0700"
      },
      "message": "Fix google-explict-constructor warnings in mtp.\n\n* Add explicit keyword to conversion constructors.\nBug: 28341362\nTest: build with WITH_TIDY\u003d1\n\nChange-Id: I3a84ae7ffa03b2e23562edef95ef6abefe0ff456\n"
    },
    {
      "commit": "96a84081d31a1a854f2026fcf507e60c15022db6",
      "tree": "e91257bb4a145fd029cfb5e87ad4dfda425b3fb2",
      "parents": [
        "e086bdba217bc013b7a1b5ebe181ccd5fc08ce29"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Jul 07 17:50:23 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Jul 07 17:51:19 2016 +0900"
      },
      "message": "Handle NULL result of strdup.\n\nThe check is needed to satisfy @NonNull annotation in Java API.\n\nBUG\u003d26758882\n\nChange-Id: Ie2a45a05593f2a48e23f3ca90302b78ca78a980e\n"
    },
    {
      "commit": "7fee6ca025bf4dcac5d658e8dcd8b6cb46b4ddc3",
      "tree": "12427e80139e0f6877479842a60acc47694fefc3",
      "parents": [
        "7cf6b434a082a4cefe4796c9b9d9914bc23881f3",
        "fdb1d0793cd65fd760dfa197728f7971ee13b760"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Mar 25 13:04:01 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Mar 25 13:04:01 2016 +0000"
      },
      "message": "Merge \"Add getObjectPropValue function to MtpDevice.\" into nyc-dev am: 15ac558\nam: fdb1d07\n\n* commit \u0027fdb1d0793cd65fd760dfa197728f7971ee13b760\u0027:\n  Add getObjectPropValue function to MtpDevice.\n"
    },
    {
      "commit": "66a9abef47f7c8bd438bb1897617ebad3858c736",
      "tree": "ced5812a016c2917eb874575cef1c906b0810ba7",
      "parents": [
        "6fbc20c958c0c770261ca4d32a3748ea4ecd64d9"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Mar 24 20:56:13 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Mar 25 19:49:05 2016 +0900"
      },
      "message": "Add getObjectPropValue function to MtpDevice.\n\nIn the MTP spec, the object size is stored in MtpObjectInfo as unsigned\n32-bit integer and fetched by the getObjectInfo operation. For the\nobjects that are more than 4GB, the object size is provided as one of\nextra properties, which are fetched by different operation.\n\nThe CL adds to getObjectPropValue method to MtpDevice class so that\nclient code can obtain 4GB+ object size from object property.\n\nBUG\u003d27805369\n\nChange-Id: I0b91facd07cdc19866cb29f7df08bb1698bcf60b\n"
    },
    {
      "commit": "bc2f77ba75162e86a79bf6ea9e1a3997887cb3ff",
      "tree": "0b80d3af93b8ffc88f429fddb2671225a6cbc65b",
      "parents": [
        "71e64f2c7451953df54fc9f76ebda3b977e67800",
        "a33067c5dceb424fa71fdc4ee72702988101fe16"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Mar 24 02:59:46 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Mar 24 02:59:46 2016 +0000"
      },
      "message": "Merge \"Remove redundant code to check container type.\" into nyc-dev am: 29f3b2e\nam: a33067c\n\n* commit \u0027a33067c5dceb424fa71fdc4ee72702988101fe16\u0027:\n  Remove redundant code to check container type.\n"
    },
    {
      "commit": "95faffd31926e2e0b83923c181629d1cea29e88f",
      "tree": "ba83f0563d729a7569b6a5f3cfb91a9f2d1fcc24",
      "parents": [
        "bf57c8adde015a2e46f012e865bdb9082eca1eaa"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed Mar 23 20:13:24 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed Mar 23 20:15:52 2016 +0900"
      },
      "message": "Remove redundant code to check container type.\n\nThe CL removes redundant check for containter type.  We have the same\ncheck just after the removed check, but the removed check returns\nopposite value for boolean result of the function.\n\nBUG\u003d27805514\n\nChange-Id: Ia8e32c0c38553a9a0ec4d9d726b8cde6281d34e1\n"
    },
    {
      "commit": "2c9cb62d0160fc4353d89fd9d648725794e7995e",
      "tree": "878ce3c89496086115698f7fda491cbd5c32594d",
      "parents": [
        "88b79848634d3cf379e87e5565f8fb4331875b53"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Feb 29 13:39:17 2016 -0800"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Mar 02 15:30:00 2016 -0800"
      },
      "message": "Cleanup uses of sprintf so we can deprecate it.\n\nAlso removes a seemingly useless branch.\n\nChange-Id: Icd61d4facd64985f4c73e9876569e1ae1a74ee83\n"
    },
    {
      "commit": "25c61139b4c120ec606d7c6daf42cea4c2806cb4",
      "tree": "82ac17d0f64c6326fc84291f7314ad01e078aa62",
      "parents": [
        "95f09c4212be2193296631fce5d08cd5440e0fb1",
        "bb58e5e9dd837a60e344b75d3337d66fd176cb39"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Feb 26 05:07:06 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Feb 26 05:07:06 2016 +0000"
      },
      "message": "Fix compiler warning in media/mtp. am: b3be006498\nam: bb58e5e9dd\n\n* commit \u0027bb58e5e9dd837a60e344b75d3337d66fd176cb39\u0027:\n  Fix compiler warning in media/mtp.\n"
    },
    {
      "commit": "b3be006498f28f2630264135e88d266b540bcec3",
      "tree": "cf0e73cf3765cf3df953d22eae325747c412d7d3",
      "parents": [
        "78229d88678932244f7cbb6e52ad43c0d986a780"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Feb 25 12:42:58 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Feb 26 12:56:57 2016 +0900"
      },
      "message": "Fix compiler warning in media/mtp.\n\nBUG\u003d27152673\n\nChange-Id: I0a5a7f2005bd76acf4d09353305b66af3fd29e4b\n"
    },
    {
      "commit": "6197c9bff627557000cd03ece93c14a12d5c5c8d",
      "tree": "673da8119245d0ee82391a0e7f604d4d7cb69094",
      "parents": [
        "ffe934a845444999aa60139c2c80a5fc83514a65",
        "d7221079292b17a81ec003adef06d58019d9236d"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Feb 18 01:44:40 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 18 01:44:40 2016 +0000"
      },
      "message": "Merge \"Fix the return type of MtpDevice#getStorageID().\""
    },
    {
      "commit": "251322bc8ac7ff7690bf706206c8ef251ca059f2",
      "tree": "c9b6a8ea3c6f7288d0b861162672473285cc6647",
      "parents": [
        "2e5408ac3e51cb459160b9cd392f1809b0758316",
        "33d58162896868f387416289c8b33266be0a3360"
      ],
      "author": {
        "name": "Jaesung Chung",
        "email": "jaesung@google.com",
        "time": "Tue Feb 02 01:09:06 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 02 01:09:06 2016 +0000"
      },
      "message": "Merge \"Retry usb_device_claim_interface when it\u0027s connected to the kernel driver\""
    },
    {
      "commit": "33d58162896868f387416289c8b33266be0a3360",
      "tree": "8e97cbe27b504348b1acb61894bfefbf1d32a905",
      "parents": [
        "bbe98f009fc2c3181a8d4ab71b3e145f76c01755"
      ],
      "author": {
        "name": "Jaesung Chung",
        "email": "jaesung@google.com",
        "time": "Mon Feb 01 16:41:51 2016 +0900"
      },
      "committer": {
        "name": "Jaesung Chung",
        "email": "jaesung@google.com",
        "time": "Mon Feb 01 23:58:22 2016 +0900"
      },
      "message": "Retry usb_device_claim_interface when it\u0027s connected to the kernel driver\n\nusb_device_claim_interface is called solely for marking that a program\nor a driver uses it and it does not trigger any signals over the bus.\n\nusb_device_claim_interface has a possibility to be failed if the kernel\ndriver already connected to a usb device. When it happens, the function\ncall returns an error and errno is set to EBUSY. For that case, it is\nnecessary to disconnect to the kernel driver and retry to claim the\ninterface again.\n\nBug: 26845384\nChange-Id: I4fae0e66ca1132f8cc16937cc6fb837ec4d5659f\n"
    },
    {
      "commit": "610d4a125f0144ec4915e5cef9f53e431cb117af",
      "tree": "ba5a91d474433a3599750bf5d2dfdf4a360c6c92",
      "parents": [
        "326edd98bbc52d41de6e0943ca8a343228ed87a5"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Jan 28 14:26:36 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Jan 28 14:26:36 2016 +0900"
      },
      "message": "Add comment for readPartialObject\u0027s NULL expected length.\n\nBUG\u003d26703522\n\nChange-Id: I584c13e5e5d3f396aa2dfbd351c1c36f7bc0870d\n"
    },
    {
      "commit": "326edd98bbc52d41de6e0943ca8a343228ed87a5",
      "tree": "4d457072ec3cae45b3ac0f609fd1b2290cae5073",
      "parents": [
        "a03910b23a31058eea178e8d3f5e84fcf852d5c2"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Jan 22 15:34:46 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Jan 28 10:52:54 2016 +0900"
      },
      "message": "Add MtpDevice#getPartialObject64 method.\n\nThis is the method similar to getPartialObject but takes uint64_t as\noffset.\n\nBUG\u003d26703522\n\nChange-Id: I9b8b5f77225b744b527c4a78fe628e88ae89209f\n"
    },
    {
      "commit": "d7221079292b17a81ec003adef06d58019d9236d",
      "tree": "a9659e9d6667d340a16f50575e82314a3e85f169",
      "parents": [
        "f839b54888968d8344c477bf2d7b5a874fa3d371"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Jan 22 14:22:28 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Jan 22 14:56:40 2016 +0900"
      },
      "message": "Fix the return type of MtpDevice#getStorageID().\n\nBoth MtpObjectHandle and MtpStorageID are typedef of uint32_t, but\nMtpStorageID is more appropriate semantically.\n\nBUG\u003dNone\n\nChange-Id: Ibf5bb2105c54f7b73df559132d8737c272a1cefa\n"
    },
    {
      "commit": "e92e6fbf424655fe8b6a15bce68646fcf6b00baa",
      "tree": "abe042bc190c7400abab93b3038859cf044623a8",
      "parents": [
        "5f6e6e301662e0bf4750021346d557be78df3059",
        "fd86bc29d0bd59620e3c115e3b7426a163016a89"
      ],
      "author": {
        "name": "Jaesung Chung",
        "email": "jaesung@google.com",
        "time": "Tue Jan 12 09:09:59 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 12 09:09:59 2016 +0000"
      },
      "message": "Merge \"Add DNG format in MTP\""
    },
    {
      "commit": "fd86bc29d0bd59620e3c115e3b7426a163016a89",
      "tree": "a21628c32862cd1050fc69e9e3162d3791f8196f",
      "parents": [
        "df9e6aaf716279baf0e27b99acf10005924245ed"
      ],
      "author": {
        "name": "Jaesung Chung",
        "email": "jaesung@google.com",
        "time": "Wed Dec 23 16:16:43 2015 +0100"
      },
      "committer": {
        "name": "Jaesung Chung",
        "email": "jaesung@google.com",
        "time": "Tue Jan 12 15:48:09 2016 +0900"
      },
      "message": "Add DNG format in MTP\n\nBug: 25871812\nChange-Id: I141d97cb8866edcaa7cab7fe04721e4386832d2b\n"
    },
    {
      "commit": "59a90609cc340d2933c119aa47045a5c95530b48",
      "tree": "901a72751f1ec72bf3f9b56dc9f26e34fffbe3e6",
      "parents": [
        "4a9fc960b75e0718193d0df91936b6c6bd4195ae"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Mon Jan 11 13:36:57 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Jan 12 12:06:46 2016 +0900"
      },
      "message": "Reland \"Return parameters of event as well as event code.\"\n\nThe CL was previously reviewed at ag/842911.\n\n\u003e The CL makes MtpDevice#reapEvent return event parameters as well as\n\u003e event code.\n\u003e\n\u003e BUG\u003d26480986\n\nChange-Id: Ie750a58248068cd0e804f20b57e7e86eef19d315\n"
    },
    {
      "commit": "2ce504f922bfc43e02b96b63cf5474845b53bdb6",
      "tree": "4ca4c7912d8fb4f7e5d5d2dae57b396d9ee3c2b5",
      "parents": [
        "56c95c9bee23aec674348e06c4385e63ac6123bc",
        "4a7cea889d81bbf8f555df006fe384a405b3ba53"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Jan 07 03:49:03 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 07 03:49:03 2016 +0000"
      },
      "message": "Merge \"Add getPartialObject method to MtpDevice.\""
    },
    {
      "commit": "536651e693f74fa60e3173531c153d0576b94d20",
      "tree": "8fa9d88f8d11a4e4f3ffbf6124b022cac65fdc13",
      "parents": [
        "3f1e585a7a77f076dc525557cb39a5aa8fcc364a",
        "7834290bec3146dc1f7a9493ebb28eb76eb08f7f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 06 17:18:44 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 06 17:18:44 2016 +0000"
      },
      "message": "Merge \"Clean up time zone handling in MtpUtils::parseDateTime.\" am: c64c91e4bb\nam: 7834290bec\n\n* commit \u00277834290bec3146dc1f7a9493ebb28eb76eb08f7f\u0027:\n  Clean up time zone handling in MtpUtils::parseDateTime.\n"
    },
    {
      "commit": "d4b473884617987e02155cd1aae9e573e2f79a58",
      "tree": "c084454a0dc822b7ac2d4146da03671183815442",
      "parents": [
        "4472c761cce96465df078f7f8ab9e25b8e6c3a60"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 05 17:05:47 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 06 08:49:26 2016 -0800"
      },
      "message": "Clean up time zone handling in MtpUtils::parseDateTime.\n\nThe intent here is supposed to be to use local time (which mktime(3) does)\nunless the string ends \u0027Z\u0027 in which case we\u0027re supposed to use UTC. The UTC\nequivalent of mktime(3) is timegm(3).\n\nThis code has come to my attention in two ways. Externally it was pointed\nout that the localtime_r(3) was accessing uninitialized memory leading to\nunpredicatable results. Internally, this is the only caller of the\nnon-standard mktime_tz --- ironically using it in a way that -- apart from\nthe flakiness caused by the uninitialized variable -- would make it behave\nlike the standard mktime(3).\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d185159\nBug: http://b/15765976\nChange-Id: I5f015727c4c08a139ef478fafba5811a9758d5df\n"
    }
  ],
  "next": "4a7cea889d81bbf8f555df006fe384a405b3ba53"
}
