)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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"
    }
  ]
}
