)]}'
{
  "log": [
    {
      "commit": "6c11077d90682f3a36ba8c622d2aad1a36bc7e6f",
      "tree": "00650204f72220f87ba612e5f9b3224dc47bdda6",
      "parents": [
        "15b0a63b2754388468e9ed5aef2b42bd151102eb",
        "6313143933d8c3e3e3edd67a4be07379f27ca467"
      ],
      "author": {
        "name": "kyle_tso",
        "email": "kyle_tso@htc.com",
        "time": "Wed Dec 06 03:09:33 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Dec 06 03:09:33 2017 +0000"
      },
      "message": "Merge \"Add support of directory copy\"\nam: 6313143933\n\nChange-Id: I1cd990c87f0de15e642713602183e14e672b7ff9\n"
    },
    {
      "commit": "6de16604f3fbf8d955caacc722b71b8d210d7a7a",
      "tree": "f362768f16b044259ce5074acb80baca50c0c81f",
      "parents": [
        "289cce603494363f9d0f6d42b16289b632205f77"
      ],
      "author": {
        "name": "kyle_tso",
        "email": "kyle_tso@htc.com",
        "time": "Wed Nov 22 18:14:51 2017 +0800"
      },
      "committer": {
        "name": "kyle_tso",
        "email": "kyle_tso@htc.com",
        "time": "Wed Nov 22 20:51:50 2017 +0800"
      },
      "message": "Add support of directory copy\n\nWhen copying directories, files and sub-directories should be\nrecursively copied. And we have to update the database by scanning\nthe entire directory.\n\nTest: Copy directories with sub-directories and files inside to\nanother location. All directories and files are successfully\ncopied.\n\nChange-Id: Iea9603b51bd0a944c87dedd962804d18d11984c4\nSigned-off-by: kyle_tso \u003ckyle_tso@htc.com\u003e\n"
    },
    {
      "commit": "4593b04bdad2ae66b22c5d3fb78276b523b7e942",
      "tree": "d855fc3d7505c608fc720474d2af565feb131738",
      "parents": [
        "ea8dd2c787f88e7289ffb8f226237587f95d8a93",
        "79edadcea74151b573d5b973d5a421baee693ec1"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Nov 10 15:29:40 2017 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Nov 10 15:33:45 2017 -0800"
      },
      "message": "Merge commit \u002779edadcea74151b573d5b973d5a421baee693ec1\u0027 from\noc-mr1-dev-plus-aosp into stage-aosp-master\n\nChange-Id: I04234f284e3117e8343e7c888646400c81f5a131\nMerged-In: Icf228c701afe37dd3c7f00ea9e6fb740b0d450f1\n"
    },
    {
      "commit": "fbc8b0683630a0f14dda04f71da7df9a5f13821f",
      "tree": "6fc30b433297fc31a863d01508ff03f1d80953ef",
      "parents": [
        "8aa2c307cba938b20129d52dab5da5c568dd1219"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Oct 23 12:03:40 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Fri Nov 10 10:59:41 2017 -0800"
      },
      "message": "Always set sys.usb.ffs.mtp.ready during configure\n\nSometimes, due to a race, the configure\nwill fail even though descriptors are actually\nwritten because MtpServer did not die properly.\nMtpServer lifetime is fixed properly in master\nwith multiplexed io, but to work around the\nissue here, we set the property at all times.\n\nAlso reduce the timeout to leave room for\nUsbDeviceManager.\n\nBug: 67844294\nTest: Plug/replug device on sled with usb debugging off x50\nTest: Verify that the race is hit, but projection still starts\nTest: Verify that all other usb configurations still work\nChange-Id: I39dd4d3db95e087f065d58ba80ca980559920c99\n"
    },
    {
      "commit": "8aa2c307cba938b20129d52dab5da5c568dd1219",
      "tree": "ed590aa8d539166570394b9856489011c1d80f10",
      "parents": [
        "bd20c630f0b77c9c2189b37da6862b658048b851",
        "ee8946f48e7ea5c28a811263ecc8da79e65a61ac"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 01 21:15:39 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 01 21:15:39 2017 +0000"
      },
      "message": "Merge \"Perform database moveObject after actual move.\""
    },
    {
      "commit": "ee8946f48e7ea5c28a811263ecc8da79e65a61ac",
      "tree": "53975cfc4414f4cac019509aedaaf8705f8f3db2",
      "parents": [
        "7377ddd0f1ff9692df64e1549e16b7f21b498681"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Oct 31 12:26:07 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Oct 31 12:27:55 2017 -0700"
      },
      "message": "Perform database moveObject after actual move.\n\nFor folders to recursively update their paths,\nMediaProvider expects the folder to already exist\nwhen database moveObject is called.\n\nBug: 66925416\nTest: Move a folder containing files and use content query --uri content://media/external/file to verify paths are correct.\nChange-Id: I45668159d2d3f99db088d8d4dcd065a79b732c44\n"
    },
    {
      "commit": "38cefbe16a44aacb365af0aa3a5e2e9820ca1575",
      "tree": "0110a14146f9856d777f68408b537857f2f758dd",
      "parents": [
        "c98c6fa1949166ddb370c8a9ccd2d072e8ad0e6d",
        "87ecf3ae39362f1ca3f9432034b7c04e088d92d7"
      ],
      "author": {
        "name": "Bill Yi",
        "email": "byi@google.com",
        "time": "Tue Oct 24 11:31:46 2017 -0700"
      },
      "committer": {
        "name": "Bill Yi",
        "email": "byi@google.com",
        "time": "Tue Oct 24 11:31:46 2017 -0700"
      },
      "message": "Merge remote-tracking branch \u0027goog/stage-aosp-master\u0027 into HEAD\n"
    },
    {
      "commit": "87ecf3ae39362f1ca3f9432034b7c04e088d92d7",
      "tree": "76fab23b1f3ac93b81260eb0870c2f5828078041",
      "parents": [
        "1e216bc835a9e8d0336272ecdb5a398718a8f1db",
        "729f6f601822ae012e8cbbe813c3aa97060b1a8a"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Oct 24 01:30:47 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 24 01:30:47 2017 +0000"
      },
      "message": "Merge \"Move mtp descriptors into separate source, add tests\"\nam: 729f6f6018\n\nChange-Id: I61ee4b4da3bc4b971f5786fb84794b94fae5421d\n"
    },
    {
      "commit": "7377ddd0f1ff9692df64e1549e16b7f21b498681",
      "tree": "a4e536dab10ab8e394177ac20fddc23ed02a3277",
      "parents": [
        "729f6f601822ae012e8cbbe813c3aa97060b1a8a"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Oct 23 18:25:45 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Oct 23 18:26:57 2017 -0700"
      },
      "message": "Add OWNERS file for frameworks/av/media/mtp\n\nTest: None\nChange-Id: I96f55feaf24bb1efa88bce613adc6ca29daba569\n"
    },
    {
      "commit": "69b74506f9d658fd9ed18676eb75b86fdb7d7d73",
      "tree": "0d33726bbdb700379bd4016e4b0579b0447af820",
      "parents": [
        "5617fb288bc3f8335273f526a5ca7c18d67076cf"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Oct 02 16:26:37 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Oct 23 15:21:11 2017 -0700"
      },
      "message": "Move mtp descriptors into separate source, add tests\n\nFunctionfs descriptors are moved into MtpDescriptors.cpp.\nAdded assertions and tests to ensure that descriptors aren\u0027t\nunintentionally changed, and bug numbers in comments for\nfuture context.\n\nTest: updated MtpFfsHandle_test passes\nBug: 67367056\nChange-Id: I90eb5e48a687f366b8919621718e976e83b5b064\n"
    },
    {
      "commit": "bae12e14dc94ff031612b1266f68657719bd54c5",
      "tree": "4a6984d4625f9105d0f5f80d9c7b7d80fc0045d3",
      "parents": [
        "d79a8385468a9db2ca3971a193f501b6df741636",
        "fa7b99dd9c86c397971d21b70b0b9a13df141fa0"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Oct 19 18:08:46 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 19 18:08:46 2017 +0000"
      },
      "message": "Merge \"Account for folders in copy and move.\"\nam: fa7b99dd9c\n\nChange-Id: I55f333c2237e97ea0ca38d296d6285d09d673197\n"
    },
    {
      "commit": "e242f12c0f33518e0760fabfdad8cb93a1c8a2fb",
      "tree": "c12c22ff3550202df1af4a0816f6ee3c489f3938",
      "parents": [
        "49d0502f1a227a510df65ec74f14eef91185dc6a"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Oct 16 14:54:08 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Oct 19 17:55:26 2017 +0000"
      },
      "message": "Account for folders in copy and move.\n\nCopy and move will use mkdir() if target\nis a folder, and copyFile() if target is a file.\n\nMove will recursively copy contents if moving\nbetween different storages. Move will also\nchange the storageId.\n\nBug: 67028892\nTest: Copy and move folders on win 10\nChange-Id: If114ef74b9d8668cf66d45953d9ea8b17bc11ae8\n"
    },
    {
      "commit": "788a634f3f085ef6a85717c0f5733996bbb24387",
      "tree": "a691124e7d30fcc64165caa46a82aa382003139a",
      "parents": [
        "df3be9cc7981ce0623686013d529aac18b6d9e7c",
        "fcd0cd6ed2edbf57a44eff9467e4f0b79e58a3e2"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Oct 17 20:24:11 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 17 20:24:11 2017 +0000"
      },
      "message": "Merge \"Add MTP and PTP OS descriptors.\" am: 159158c3cd am: 735d9100a1\nam: fcd0cd6ed2\n\nChange-Id: I68e30dd27043e3e4d2e73e40c3571819ca8cd58d\n"
    },
    {
      "commit": "735d9100a10148a6965794c4759d2f9b53386dfe",
      "tree": "972678478fd949bb26aed4290d839adc3560e1f2",
      "parents": [
        "1bf4543ffb8e081d5d3b1d8dbfcb98d5129c2887",
        "159158c3cd9f39089c1d60650776b1d9d2180d9e"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Oct 17 01:57:02 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 17 01:57:02 2017 +0000"
      },
      "message": "Merge \"Add MTP and PTP OS descriptors.\"\nam: 159158c3cd\n\nChange-Id: Ib487d3521c4aab29ad2d188ee568b42b07f76325\n"
    },
    {
      "commit": "7501480fcfd20035735e9f00b92975c19fa8de28",
      "tree": "e6642a06bc3481f3e819b3f8021caae99188243b",
      "parents": [
        "29880190f622974c5515fd7be1aebfa5e4aee674",
        "6e401fdf3350c9c7879c12e7fc1e52ab9a863c45"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Oct 03 00:31:02 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 03 00:31:02 2017 +0000"
      },
      "message": "Merge \"Add implementations for move and copy operations.\" am: 24287d0bd5 am: 848fa50927\nam: 6e401fdf33\n\nChange-Id: I787850832e701a25022ba496315f68325442e627\n"
    },
    {
      "commit": "848fa50927b712748103ca9cc8c45bc39139ae8b",
      "tree": "9b8b9cefd5b2042e48e13c1df7e18cbf19287693",
      "parents": [
        "dad308b4f3deb589094b93eedda26fb07078d44f",
        "24287d0bd55ccb779ca800647f39f266c584e3f6"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Oct 03 00:00:57 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 03 00:00:57 2017 +0000"
      },
      "message": "Merge \"Add implementations for move and copy operations.\"\nam: 24287d0bd5\n\nChange-Id: I9a63975ec6f1dd0df0e93255e8a8be4ec1db170a\n"
    },
    {
      "commit": "51bf9853c28e6d193e6521a698866d675d854431",
      "tree": "9b39fee360bb417941376f38f3080c9c00b9b738",
      "parents": [
        "708b3e0b72189d2d2e932459bd0391f98c9ff9a2"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Aug 31 11:57:45 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Oct 02 16:31:23 2017 -0700"
      },
      "message": "Add MTP and PTP OS descriptors.\n\nThis adds OS descriptor functionality for\ndevices that don\u0027t use configfs for OS descriptors.\n\nTest: usb sniffer, verify descriptors sent\nBug: 64790536\nChange-Id: Iec417606f86fe4d7492273d09d685ab2ec3d03c8\n(cherry picked from commit 95ea161b05040412d95b5add98dc882e3be4075c)\n"
    },
    {
      "commit": "708b3e0b72189d2d2e932459bd0391f98c9ff9a2",
      "tree": "fc7856849cca6731143755c464df310e817d78f7",
      "parents": [
        "0d51135defebfe9bf0d790216ee4668c96041224"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Sep 26 17:53:39 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Oct 02 11:56:25 2017 -0700"
      },
      "message": "Add implementations for move and copy operations.\n\nPreviously, we didn\u0027t have these implemented so the\nhost OS would emulate them by pulling the object\nand pushing it to a new location. This can result\nin data being lost and it is slow.\n\nWith the operations implemented, moving objects\non the same storage is instantaneous since the data\ndoesn\u0027t need to move. Moving objects between storages\nand copying objects are both much faster since no\ndata has to be moved through USB.\n\nBug: 66679910\nTest: Move and copy objects, verify they are correct\nChange-Id: I38c69eee41d883af46fa2f1b9e091193b2847e8c\n"
    },
    {
      "commit": "8ec71590ccfa122a4e9908cf3ebe6bd33482d0dd",
      "tree": "7a681c8d980935800b76f4bb2983272fd57d018b",
      "parents": [
        "c7f474434f3d50fea49dade42ded59fa87dee62d",
        "347894fe7518f9400f7542e1204d5d9bb8292c11"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Aug 29 03:48:14 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 29 03:48:14 2017 +0000"
      },
      "message": "Merge \"Switch MtpFfsHandle to aio, add control functions.\" am: 82651d413e am: 68ce743ef9\nam: 347894fe75\n\nChange-Id: I8b9700a6eafe3f959cf00c48aa12f6ea11bd5fe7\n"
    },
    {
      "commit": "68ce743ef9ad6b1f37bfdf55eb67d836696bd422",
      "tree": "0d9a5921801fcc73535dfbf0f6409d87b5059262",
      "parents": [
        "64dd76afd8027ec7edcf9bb7a40afd024cfc10f6",
        "82651d413eb66978f2020058235811c0f5bb2094"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Aug 29 03:38:18 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 29 03:38:18 2017 +0000"
      },
      "message": "Merge \"Switch MtpFfsHandle to aio, add control functions.\"\nam: 82651d413e\n\nChange-Id: I622346740d9310c9c9569ed5feb463f51cab6b5e\n"
    },
    {
      "commit": "64dd76afd8027ec7edcf9bb7a40afd024cfc10f6",
      "tree": "edc09e87635805ae0582918ed8a071b49f731755",
      "parents": [
        "c18df3b337ab15b938683ff561854896679ca0f2",
        "af41c2cedeff1ea399173c78c7fbb66860806d5b"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Aug 22 21:03:27 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 22 21:03:27 2017 +0000"
      },
      "message": "Merge \"Stop capturing mtp_event by reference in lambda\" am: 0fdeb09e89 am: 1532a1d523\nam: af41c2cede\n\nChange-Id: I8a3b33687fca6d095ac6cf0f48dd18a1c036a8a9\n"
    },
    {
      "commit": "c18df3b337ab15b938683ff561854896679ca0f2",
      "tree": "b382f9d0fcd4bc935153abf98f4ea8749d0f6eb2",
      "parents": [
        "1fb7851c8cb45d4f8f4c99b2997f34eb06f383d0",
        "6faa468bcd0e451cb748fef03b1f4d3492406c0c"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Aug 22 21:02:50 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 22 21:02:50 2017 +0000"
      },
      "message": "Merge \"mtp: Send events async.\" am: a009b07a0d am: 847b97afef\nam: 6faa468bcd\n\nChange-Id: I50268decf270896cac18d47b7ec388f34c54daad\n"
    },
    {
      "commit": "df69dd33b4d8a2f9926b5eaccbf53ee7f67475c2",
      "tree": "15e227b89c1c6a9877b7e37269cdb63b1ffaac90",
      "parents": [
        "0fdeb09e898c39d9e353311577b72f1a53bc11f3"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Wed May 03 17:17:49 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Aug 22 20:47:04 2017 +0000"
      },
      "message": "Switch MtpFfsHandle to aio, add control functions.\n\nMtpFfsHandle now uses kaio to handle usb data.\nThis achieves better performance without using\nthe endpoint alloc ioctl.\n\nThis also allows ep0 events to be handled without\nrace conditions. Events will also include control\nrequests, which will allow both host and device\ninitiated cancellation.\n\nBug: 37916658\nBug: 36802721\nTest: Transfer various size files, run MtpFfsHandleTest\nTest: Cancel transfer on Windows\nTest: Allow device to cancel transfer on Windows\nChange-Id: Ib3ce996f00782ce7f68f29b2510dbc17f09fdf14\n"
    },
    {
      "commit": "008f4df3ca1bdb0e0df80fff68467a95ddbc6c40",
      "tree": "0626aa4ddfd8ef52fe7ad71a6538050458494c13",
      "parents": [
        "a009b07a0d116c6181a8af71d55bd2d17e8f48d1"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Wed Aug 09 17:53:50 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Aug 22 20:45:51 2017 +0000"
      },
      "message": "Stop capturing mtp_event by reference in lambda\n\nThis takes a reference to the event,\nwhich then can become invalid. Instead\npass by copy like normal.\n\nBug: 64529223\nTest: No crash\nChange-Id: I2ac7bd0002e6d0ce1c547c24334dfd2926ed7090\n(cherry picked from commit 7360303d3e93cd6a5fd8c5c4340a335416bd0f28)\n"
    },
    {
      "commit": "94ef0eaba32244d8732394291873f2abd4c63da3",
      "tree": "89fc952700a3a4211e87e76a22c4fce1b2ff2c56",
      "parents": [
        "b5c1bcb963dc638d4f67b6b016509c174363f48e"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Wed Jul 26 11:37:23 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Aug 22 20:45:27 2017 +0000"
      },
      "message": "mtp: Send events async.\n\nAFT will not read the events endpoint at all\ncausing every sendEvent() to block. Since\nevent ordering doesn\u0027t really matter, send\nevents in their own detached thread instead.\n\nBug: 36802721\nTest: Connect AFT, create a folder from device, check not frozen\nChange-Id: I4b8aee93c19fa9c73e6b2f34d9794a491b2433e1\n(cherry picked from commit d80492b819b3934475596ec4afda979bad3bd126)\n"
    },
    {
      "commit": "e67106418d7025ba28b90d8d32ceb2674ad043f1",
      "tree": "4d6ee7d347843b6c55b21c536b0941f784b2d0bc",
      "parents": [
        "2c8c51d4aeffc4d561a67b06d20fff67d9a5a5aa"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Aug 14 19:33:15 2017 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Aug 14 19:34:11 2017 -0700"
      },
      "message": "heif: add new format type\n\nbug: 64077740\nChange-Id: I3329b911fde9fecd1c0f91a931d7883685e74c13\n"
    },
    {
      "commit": "7360303d3e93cd6a5fd8c5c4340a335416bd0f28",
      "tree": "55d99900aa9f5b63159e93742014771709d8152b",
      "parents": [
        "ad708fb449369c567e1bf3a7e1f2a5e56b72762f"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Wed Aug 09 17:53:50 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Thu Aug 10 11:04:32 2017 -0700"
      },
      "message": "Stop capturing mtp_event by reference in lambda\n\nThis takes a reference to the event,\nwhich then can become invalid. Instead\npass by copy like normal.\n\nBug: 64529223\nTest: No crash\nChange-Id: I2ac7bd0002e6d0ce1c547c24334dfd2926ed7090\n"
    },
    {
      "commit": "d80492b819b3934475596ec4afda979bad3bd126",
      "tree": "161c8d73186a32e2ade72a22e26cf4a4c29840ef",
      "parents": [
        "5b2a1573873782ace86914720fd7e46f677e71cc"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Wed Jul 26 11:37:23 2017 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Aug 07 19:47:53 2017 +0000"
      },
      "message": "mtp: Send events async.\n\nAFT will not read the events endpoint at all\ncausing every sendEvent() to block. Since\nevent ordering doesn\u0027t really matter, send\nevents in their own detached thread instead.\n\nBug: 36802721\nTest: Connect AFT, create a folder from device, check not frozen\nChange-Id: I4b8aee93c19fa9c73e6b2f34d9794a491b2433e1\n"
    },
    {
      "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"
    }
  ],
  "next": "14dcfa14ae599e31ffd44b823f8eebd0b951beb7"
}
