)]}'
{
  "log": [
    {
      "commit": "b6409546dc9a3ba3119c030ce0c94e3f46cd6b04",
      "tree": "f4185ae9d5b9a3c22b3384dd61733bb9e1ab069d",
      "parents": [
        "10685e6236d33b3ae006eacf36fee2ea2f1a84e2"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Apr 21 11:41:49 2020 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Apr 21 11:41:49 2020 -0700"
      },
      "message": "Fix bugprone-posix-return warnings\n\nTest: WITH_TIDY\u003d1 make\nBug: 154629561\nChange-Id: I27b3ffc430400b4f133890748a2124afdabb7814\n"
    },
    {
      "commit": "f2388b3c23754f33f9bba1f73c0b2ca57f00e546",
      "tree": "4596638c804d1873d945bce1b552171747a7d6cf",
      "parents": [
        "fa66483acb53c575fc476f04bebf0d0463752297"
      ],
      "author": {
        "name": "James Wei",
        "email": "jameswei@google.com",
        "time": "Tue Dec 18 17:39:58 2018 +0800"
      },
      "committer": {
        "name": "James Wei",
        "email": "jameswei@google.com",
        "time": "Tue Feb 26 20:29:30 2019 +0800"
      },
      "message": "MTP: CPU usage high while under MTP mode.\n\npoll timeout not setting well in MTP ffs handler.\nThis will cause MTP ffs handler not going into sleep mode.\n\nBug: 121171744\nTest: MTP 500 Mbyte file copy throughput from / to Host (no drop)\nChange-Id: I9b8a7257670b8e536bf2ea81118d297211254984\n"
    },
    {
      "commit": "d97d79c2a82b3e90de10b913f49ce9f416c95e4b",
      "tree": "334a9ba2c7c788befbac36a9c93fe3e23fbdf4a0",
      "parents": [
        "6976bebc9da7de3f77438dd314a05eb2f9a04aa8"
      ],
      "author": {
        "name": "James Wei",
        "email": "jameswei@google.com",
        "time": "Tue Sep 25 23:24:27 2018 +0800"
      },
      "committer": {
        "name": "James Wei",
        "email": "jameswei@google.com",
        "time": "Wed Sep 26 06:27:44 2018 +0000"
      },
      "message": "MTP: handle cancel event while copying file\n\nWhile received canceling event, error code is set but not\nreturned with correct state\n\nBug: 65644242\nTest: manually copy file with / without cancel under Win10\nTest: atest MtpFfsHandleTest\nChange-Id: I601599c77bdd7c8615ed63970c8b22b8c5fcc315\n"
    },
    {
      "commit": "297912b6c9046ac3a00acc2dfd9389c6feb557ad",
      "tree": "94386f5070738c78c84f2ec54f970f8cbd6eea73",
      "parents": [
        "6b98328f14468a56d8534f7fa4a790d575fc5c95"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Fri May 11 11:29:54 2018 -0700"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue May 15 21:43:45 2018 +0000"
      },
      "message": "Remove limitation on read/write size\n\nPreviously ios called through read write\nwere limited to 16kb because read packets\nare very small. However, write packets can\nbe greater than that amount in cases where\na folder contains over 4k items. Thus,\nremove the limitation.\n\nAdd corresponding ReadLarge and WriteLarge\ntests as well.\n\nBug: 79214960\nTest: mtp_ffs_handle_test passes, Mtp works\nwith large folders\n\nChange-Id: I8a980612c3eb941552ff4dd11ac631d1dc5d3347\n"
    },
    {
      "commit": "63dac45aa868b9048c028967e9865c90a9ba544d",
      "tree": "b21d37631cde212935b35cb8109ee333b69d97c6",
      "parents": [
        "b95a5989190a427a7ea092dc18741af524009bdb"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Wed Dec 06 15:19:36 2017 -0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Mon Mar 05 13:44:25 2018 -0800"
      },
      "message": "Remove configure() from Mtp\n\nInstead of configuring the server each\ntime the connection happens, UsbService\nwill now pass in the control fd with the\ndescriptors already written. Also, PTP\nendpoints have been moved to their own\ndirectory at /dev/usb-ffs/ptp rather than\nusing the same ones as mtp.\n\nBug: 72877174\nTest: Verify PTP and MTP config changes work\nChange-Id: I9a0336afd610aa397c9947568c308afb89b27c08\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": "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": "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": "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": "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"
    }
  ]
}
