)]}'
{
  "log": [
    {
      "commit": "d69ad69a938a27021adfcc2435dc1fd2ad0c8e1a",
      "tree": "184b620c9b0cddc4b15efa718ddc3961d2ce3d64",
      "parents": [
        "d57652f15b078d06d9258094f8a951374a677f2c"
      ],
      "author": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Tue Feb 16 19:02:14 2021 -0800"
      },
      "committer": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Fri Feb 19 12:59:05 2021 -0800"
      },
      "message": "[LSC] Add LOCAL_LICENSE_KINDS to system/core\n\nAdded SPDX-license-identifier-Apache-2.0 to:\n  bootstat/Android.bp\n  cli-test/Android.bp\n  code_coverage/Android.bp\n  cpio/Android.bp\n  debuggerd/crasher/Android.bp\n  debuggerd/proto/Android.bp\n  diagnose_usb/Android.bp\n  fs_mgr/libdm/Android.bp\n  fs_mgr/libfiemap/Android.bp\n  fs_mgr/liblp/Android.bp\n  fs_mgr/libsnapshot/Android.bp\n  fs_mgr/libstorage_literals/Android.bp\n  fs_mgr/libvbmeta/Android.bp\n  fs_mgr/tests/Android.bp\n  fs_mgr/tools/Android.bp\n  gatekeeperd/Android.bp\n  healthd/Android.bp\n  healthd/testdata/Android.bp\n  init/Android.bp\n  init/Android.mk\n  init/sysprop/Android.bp\n  init/test_kill_services/Android.bp\n  init/test_service/Android.bp\n  libappfuse/Android.bp\n  libasyncio/Android.bp\n  libbinderwrapper/Android.bp\n  libcrypto_utils/Android.bp\n  libcrypto_utils/tests/Android.bp\n  libdiskconfig/Android.bp\n  libgrallocusage/Android.bp\n  libkeyutils/mini_keyctl/Android.bp\n  libmodprobe/Android.bp\n  libnetutils/Android.bp\n  libpackagelistparser/Android.bp\n  libprocessgroup/Android.bp\n  libprocessgroup/cgrouprc/Android.bp\n  libprocessgroup/cgrouprc_format/Android.bp\n  libprocessgroup/profiles/Android.bp\n  libprocessgroup/setup/Android.bp\n  libqtaguid/Android.bp\n  libsparse/Android.bp\n  libstats/push_compat/Android.bp\n  libsuspend/Android.bp\n  libsync/Android.bp\n  libsystem/Android.bp\n  libsysutils/Android.bp\n  libusbhost/Android.bp\n  libutils/Android.bp\n  libvndksupport/Android.bp\n  libvndksupport/tests/Android.bp\n  llkd/Android.bp\n  llkd/tests/Android.bp\n  property_service/libpropertyinfoparser/Android.bp\n  property_service/libpropertyinfoserializer/Android.bp\n  property_service/property_info_checker/Android.bp\n  qemu_pipe/Android.bp\n  reboot/Android.bp\n  rootdir/Android.bp\n  rootdir/Android.mk\n  rootdir/avb/Android.bp\n  rootdir/avb/Android.mk\n  run-as/Android.bp\n  sdcard/Android.bp\n  set-verity-state/Android.bp\n  shell_and_utilities/Android.bp\n  storaged/Android.bp\n  toolbox/Android.bp\n  trusty/apploader/Android.bp\n  trusty/confirmationui/Android.bp\n  trusty/confirmationui/fuzz/Android.bp\n  trusty/coverage/Android.bp\n  trusty/fuzz/Android.bp\n  trusty/fuzz/test/Android.bp\n  trusty/gatekeeper/Android.bp\n  trusty/gatekeeper/fuzz/Android.bp\n  trusty/keymaster/Android.bp\n  trusty/keymaster/fuzz/Android.bp\n  trusty/libtrusty/Android.bp\n  trusty/libtrusty/tipc-test/Android.bp\n  trusty/secure_dpu/Android.bp\n  trusty/storage/interface/Android.bp\n  trusty/storage/lib/Android.bp\n  trusty/storage/proxy/Android.bp\n  trusty/storage/tests/Android.bp\n  trusty/utils/spiproxyd/Android.bp\n  trusty/utils/trusty-ut-ctrl/Android.bp\n  usbd/Android.bp\n  watchdogd/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD to:\n  debuggerd/Android.bp\n  fastboot/Android.bp\n  libkeyutils/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD\n    SPDX-license-identifier-MIT\nto:\n  libcutils/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-MIT\nto:\n  fs_mgr/Android.bp\n  fs_mgr/libfs_avb/Android.bp\n  trusty/Android.bp\n  trusty/utils/rpmb_dev/Android.bp\n\nAdded SPDX-license-identifier-BSD\nto:\n  fastboot/fuzzy_fastboot/Android.bp\n\nBug: 68860345\nBug: 151177513\nBug: 151953481\n\nTest: m all\n\nExempt-From-Owner-Approval: janitorial work\nChange-Id: Id740a7d2884556081fdb68876584b25eb95e1bef\n"
    },
    {
      "commit": "c3a206ccda9a78dd45d06b7d68dbe83e1fba779e",
      "tree": "cd137e76557bf1aadffe3cb43e02ab642bc81c71",
      "parents": [
        "187b7d19504ca8bdcbc6217c06a117017b4c6287"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 16 20:01:20 2021 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 16 20:01:20 2021 +0000"
      },
      "message": "Revert \"[LSC] Add LOCAL_LICENSE_KINDS to system/core\"\n\nThis reverts commit 187b7d19504ca8bdcbc6217c06a117017b4c6287.\n\nReason for revert: system/core is multiple projects, not one.\n\nChange-Id: I790ea41741f8cd9b8b6db2f59a49e71fb0958fd6\n"
    },
    {
      "commit": "187b7d19504ca8bdcbc6217c06a117017b4c6287",
      "tree": "0656ad03ff6e56b17ab0d4a8677955cab2c16cba",
      "parents": [
        "83eae36647eef27b75b128c5bce4732229d2ca0d"
      ],
      "author": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Fri Feb 12 17:48:16 2021 -0800"
      },
      "committer": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Tue Feb 16 04:10:03 2021 -0800"
      },
      "message": "[LSC] Add LOCAL_LICENSE_KINDS to system/core\n\nAdded SPDX-license-identifier-Apache-2.0 to:\n  bootstat/Android.bp\n  cli-test/Android.bp\n  code_coverage/Android.bp\n  cpio/Android.bp\n  debuggerd/crasher/Android.bp\n  debuggerd/proto/Android.bp\n  diagnose_usb/Android.bp\n  fs_mgr/libdm/Android.bp\n  fs_mgr/libfiemap/Android.bp\n  fs_mgr/liblp/Android.bp\n  fs_mgr/libsnapshot/Android.bp\n  fs_mgr/libstorage_literals/Android.bp\n  fs_mgr/libvbmeta/Android.bp\n  fs_mgr/tests/Android.bp\n  fs_mgr/tools/Android.bp\n  gatekeeperd/Android.bp\n  healthd/Android.bp\n  healthd/testdata/Android.bp\n  init/Android.bp\n  init/Android.mk\n  init/sysprop/Android.bp\n  init/test_kill_services/Android.bp\n  init/test_service/Android.bp\n  libappfuse/Android.bp\n  libasyncio/Android.bp\n  libbinderwrapper/Android.bp\n  libcrypto_utils/Android.bp\n  libcrypto_utils/tests/Android.bp\n  libdiskconfig/Android.bp\n  libgrallocusage/Android.bp\n  libkeyutils/mini_keyctl/Android.bp\n  libmodprobe/Android.bp\n  libnetutils/Android.bp\n  libpackagelistparser/Android.bp\n  libprocessgroup/Android.bp\n  libprocessgroup/cgrouprc/Android.bp\n  libprocessgroup/cgrouprc_format/Android.bp\n  libprocessgroup/profiles/Android.bp\n  libprocessgroup/setup/Android.bp\n  libqtaguid/Android.bp\n  libsparse/Android.bp\n  libstats/push_compat/Android.bp\n  libsuspend/Android.bp\n  libsync/Android.bp\n  libsystem/Android.bp\n  libsysutils/Android.bp\n  libusbhost/Android.bp\n  libutils/Android.bp\n  libvndksupport/Android.bp\n  libvndksupport/tests/Android.bp\n  llkd/Android.bp\n  llkd/tests/Android.bp\n  property_service/libpropertyinfoparser/Android.bp\n  property_service/libpropertyinfoserializer/Android.bp\n  property_service/property_info_checker/Android.bp\n  qemu_pipe/Android.bp\n  reboot/Android.bp\n  rootdir/Android.bp\n  rootdir/Android.mk\n  rootdir/avb/Android.bp\n  rootdir/avb/Android.mk\n  run-as/Android.bp\n  sdcard/Android.bp\n  set-verity-state/Android.bp\n  shell_and_utilities/Android.bp\n  storaged/Android.bp\n  toolbox/Android.bp\n  trusty/apploader/Android.bp\n  trusty/confirmationui/Android.bp\n  trusty/confirmationui/fuzz/Android.bp\n  trusty/coverage/Android.bp\n  trusty/fuzz/Android.bp\n  trusty/fuzz/test/Android.bp\n  trusty/gatekeeper/Android.bp\n  trusty/gatekeeper/fuzz/Android.bp\n  trusty/keymaster/Android.bp\n  trusty/keymaster/fuzz/Android.bp\n  trusty/libtrusty/Android.bp\n  trusty/libtrusty/tipc-test/Android.bp\n  trusty/secure_dpu/Android.bp\n  trusty/storage/interface/Android.bp\n  trusty/storage/lib/Android.bp\n  trusty/storage/proxy/Android.bp\n  trusty/storage/tests/Android.bp\n  trusty/utils/spiproxyd/Android.bp\n  trusty/utils/trusty-ut-ctrl/Android.bp\n  usbd/Android.bp\n  watchdogd/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD to:\n  debuggerd/Android.bp\n  fastboot/Android.bp\n  libkeyutils/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD\n    SPDX-license-identifier-MIT\nto:\n  Android.bp\n  libcutils/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-MIT\nto:\n  fs_mgr/Android.bp\n  fs_mgr/libfs_avb/Android.bp\n  trusty/utils/rpmb_dev/Android.bp\n\nAdded SPDX-license-identifier-BSD\nto:\n  fastboot/fuzzy_fastboot/Android.bp\n\nBug: 68860345\nBug: 151177513\nBug: 151953481\n\nTest: m all\n\nExempt-From-Owner-Approval: janitorial work\nChange-Id: I5bd81adb5cdcf2b4dd4141b204eb430ff526af8f\n"
    },
    {
      "commit": "6ddc2c56c9dd29115263db2fc0f79282036e0b09",
      "tree": "4ce3fb91bccc95bd157dd4ca85d046b65a46d5fb",
      "parents": [
        "5a611cb8346877493929582855d8bcbbfd8f3dbf"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Dec 14 20:53:52 2020 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Dec 14 22:36:37 2020 -0800"
      },
      "message": "Update for v5.10 kernel headers.\n\nTest: Builds.\nChange-Id: I6c4b04751df026ef7cbb91627174188c5e6d137c\n"
    },
    {
      "commit": "49545ab897f0acc57b58da129280bee92139e752",
      "tree": "ce8fc05564519ec1c0ad95fcc348d4151ddf79b4",
      "parents": [
        "e87527faa319398832092697aad2a1428fbf0f49"
      ],
      "author": {
        "name": "hyeeun.jun@samsung.com",
        "email": "hyeeun.jun@samsung.com",
        "time": "Wed Jan 29 17:10:17 2020 +0900"
      },
      "committer": {
        "name": "Hyeeun Jun",
        "email": "hyeeun.jun@samsung.com",
        "time": "Tue Feb 18 04:33:06 2020 +0000"
      },
      "message": "Fix Deadlock Issue On AppFuseBridge\n\nThere are two locks used by AppFuseBridge.\nFirst is it\u0027s object lock, and the second is a mutex lock in app fuse library.\nThere are two oppsite routines to get those locks.\n\n  (Thread A) Got Java lock -\u003e Try to get Native lock\n  (Thread B)        Got Native lock -\u003e Try to get Java lock\n\nBug : https://issuetracker.google.com/issues/145707568\nSigned-off-by: hyeeun.jun@samsung.com \u003chyeeun.jun@samsung.com\u003e\n\nThe order must be followed to obtain two locks.\nIf not, the dead lock will be caused.\nTherefore we change the routine to get the mutex lock first, and the object lock later.\n"
    },
    {
      "commit": "b6d9fbddc6d77f57c8630ec372bdb9890679b7be",
      "tree": "c30638fab0617ac752ce9ed94f5efdc5a7e1de3e",
      "parents": [
        "4d63d1b7bba07ea2120f9402c3ba7a1f0cc2b3bd",
        "c9e873f2747108cc6f010791c86569367d0bef44"
      ],
      "author": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Fri May 31 15:59:39 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 31 15:59:39 2019 +0000"
      },
      "message": "Merge \"Close /dev/fuse FD before calling onClosed\" into qt-dev"
    },
    {
      "commit": "c9e873f2747108cc6f010791c86569367d0bef44",
      "tree": "e11ead722f4dcf19d82d745d7603de669a448b4b",
      "parents": [
        "cc18faf4d67c4f24474fcd621a083e31d8509a13"
      ],
      "author": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Fri May 31 13:22:34 2019 +0100"
      },
      "committer": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Fri May 31 15:58:45 2019 +0000"
      },
      "message": "Close /dev/fuse FD before calling onClosed\n\nThis works around a deadlock when a bridge that is about to be closed\nis reused for a new call to openFile. The call to open() ends up holding\nthe vold lock, waiting for appfuse to respond. The appfuse event loop\ncalls onClosed(), which ends up calling vold.unmountAppFuse(), which\ncannot get the lock.\n\nClosing this file descriptor causes any current calls to open() on its\nmount path to fail with either ECONNABORTED or ENOTCONN, allowing the\nevent loop to make progress, call onClosed() and unmount the path.\n\nNote that the failed call to open() will result in a retry, which\nwill create a new appfuse bridge. This is not ideal but not a new\nproblem -- the common case here is that that each call to\nopenProxyFileDescriptor creates a new bridge. This should ideally\nbe improved.\n\nBug: 132344997\nTest: flick through info of photos with location info attached\nExempt-From-Owner-Approval: verbal approval of approach\nChange-Id: I878e5cf86f18c5233f8505f52eb9db076bd72d01\n"
    },
    {
      "commit": "ca0d4ffbe38a1997d8b1555210a184a5e0d112f4",
      "tree": "a93cce816d72ec97df379bb9aa3b4c001dad235e",
      "parents": [
        "cc18faf4d67c4f24474fcd621a083e31d8509a13"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri May 31 12:51:05 2019 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri May 31 12:51:05 2019 +0900"
      },
      "message": "Fix BridgeEpollController to handles EAGAIN correctly\n\nWhen reading/writing proxy FD, if it returns EAGAIN,\nBridgeEpollController updates epoll entries to observe specific FD\nevents. Before updating epoll entries, BridgeEpollController checks if\nit really needs to update by comparing |state_| and |last_state_|.\n|last_state_| has not been updated correctly so it resulted in wrong\nepoll settings and keeps blocking the event loop.\n\nBug: 134104939\nTest: atest libappfuse_test\nChange-Id: I1c4a0164c1c016baf24ecfd523476ced981d3b28\n"
    },
    {
      "commit": "f47c91053ffb0c4477a6dc7271dae0b20b6223c3",
      "tree": "d7ed67c141d97abed134334e07fb2cc48bbb9830",
      "parents": [
        "8fe0eb46c0b98d26ad816c9d1f27dbe1e5c1d9f3"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Dec 17 09:32:23 2018 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Dec 17 09:32:23 2018 -0800"
      },
      "message": "use epoll_create1(EPOLL_CLOEXEC)\n\nepoll_create(0) leaks file descriptors. Use epoll_create1(EPOLL_CLOEXEC)\ninstead.\n\nBug: 120983106\nTest: compiles and boots\nChange-Id: I2a733d4482d6a74ceb3254e501cdb5f6de0cd5dc\n"
    },
    {
      "commit": "3d95d88b14ce1272202a866296258dcd3a1a85ce",
      "tree": "c0614317be1afd2858b6982d41cce807f8b42d16",
      "parents": [
        "84379567d3c7d9df0d05b9f02093b1548563450a"
      ],
      "author": {
        "name": "Ryo Hashimoto",
        "email": "hashimoto@google.com",
        "time": "Wed Mar 14 19:24:47 2018 +0900"
      },
      "committer": {
        "name": "Ryo Hashimoto",
        "email": "hashimoto@google.com",
        "time": "Thu Mar 15 14:22:27 2018 +0900"
      },
      "message": "Stop using SO_SNDBUFFORCE\n\nUse SO_SNDBUF which doesn\u0027t require CAP_NET_ADMIN instead.\nChange the value of kFuseMaxWrite to 128KB.\n\nIn the kernel code, there is a constant FUSE_MAX_PAGES_PER_REQ which\nlimits the size of requests to 128KB.\n\nBug: 74725300\nTest: atest android.os.storage.cts.StorageManagerTest\n\nChange-Id: Ic3a8f1a7378d027a6c0ee054cedc2c9f4b7509ad\n"
    },
    {
      "commit": "dc699a269f6a22af6cbba0f6e1359fde103dc4d3",
      "tree": "db8830dc9e776480c4bc2170d276582d57a9a83a",
      "parents": [
        "8c0c1ba98939a201f758fc3952ab59c7429132c2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 16 17:58:14 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 16 17:58:14 2018 -0800"
      },
      "message": "bpfmt.\n\nBug: N/A\nTest: builds\nChange-Id: I89ad00e1c4c7e0767bc80a7ac7935a4d55e090ac\n"
    },
    {
      "commit": "3289b9c9282dec777363256e27fcc23cd97001c1",
      "tree": "e592f69aba1eceaf88b8ddb643935a5e77b13e3c",
      "parents": [
        "255c43cd050f5202e96483430684c19b7ce916ff",
        "693d63f9cfc21e3334c6f8f228d73c4fb60ced8b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 07 23:21:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 07 23:21:26 2017 +0000"
      },
      "message": "Merge \"Add OWNERS.\""
    },
    {
      "commit": "693d63f9cfc21e3334c6f8f228d73c4fb60ced8b",
      "tree": "f0cc35536aff301e680302b8f3654517b8863acc",
      "parents": [
        "aaa0bbce8eadf1a428493f3524066a74447eded4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 07 11:31:02 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 07 13:30:03 2017 -0800"
      },
      "message": "Add OWNERS.\n\nBug: N/A\nTest: N/A\nChange-Id: Ie785058c0f5eb9b4086c98ccba6e63e3ed411b65\n"
    },
    {
      "commit": "6da3de27be0a477a40104f6eaadcf6707c55fd56",
      "tree": "f1bd4716edd48b24fb00a7e283fa0e2e6b064597",
      "parents": [
        "d374e3bad0dcdf31009e3c61fb7cee8d3f517393",
        "e1332dd01b48bb4996e2f28f41c349d11280afba"
      ],
      "author": {
        "name": "Lennart Wieboldt",
        "email": "lennart.1997@gmx.de",
        "time": "Tue Jul 25 22:39:58 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 25 22:39:58 2017 +0000"
      },
      "message": "Merge \"Remove LOCAL_CLANG and clang: true\" am: 80ec81cf4b am: f7b315c985 am: 8a8b97b271\nam: e1332dd01b\n\nChange-Id: I193d86abf96e64b29efc7266f4fa3a26b5d2b3af\n"
    },
    {
      "commit": "e1332dd01b48bb4996e2f28f41c349d11280afba",
      "tree": "6ed55ad043431d4dcfbd551b5509bd0b580a61ae",
      "parents": [
        "097965e76e79e882bb59820fb0684e46a505c5dd",
        "8a8b97b271cc1f730e2bee8a88854db37973148c"
      ],
      "author": {
        "name": "Lennart Wieboldt",
        "email": "lennart.1997@gmx.de",
        "time": "Tue Jul 25 22:35:56 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 25 22:35:56 2017 +0000"
      },
      "message": "Merge \"Remove LOCAL_CLANG and clang: true\" am: 80ec81cf4b am: f7b315c985\nam: 8a8b97b271\n\nChange-Id: I7e691abe2e2ccec5d9477c528d603c081c0a5661\n"
    },
    {
      "commit": "f7b315c985a9822ea279f65262fe03e2dabefb14",
      "tree": "9080b714ce6903ca167e4c1eee8d5dd834f9e64a",
      "parents": [
        "f23f21a2311e1c254456607de0d83ae1153ba4c8",
        "80ec81cf4b9f4e9a529df618ea38a3f995a2f249"
      ],
      "author": {
        "name": "Lennart Wieboldt",
        "email": "lennart.1997@gmx.de",
        "time": "Tue Jul 25 22:28:56 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 25 22:28:56 2017 +0000"
      },
      "message": "Merge \"Remove LOCAL_CLANG and clang: true\"\nam: 80ec81cf4b\n\nChange-Id: Ia7f79d8e25ee9870fe44d198568d0e5dabdff811\n"
    },
    {
      "commit": "cd15fc7ba80b31539e85792ec35d7ebe0c8ff764",
      "tree": "b834af3b7e5dbb8562b06face0bd2bbaecf0e10a",
      "parents": [
        "603cae8b4812c21b92f559d190c7d21534dbeef7"
      ],
      "author": {
        "name": "Lennart Wieboldt",
        "email": "lennart.1997@gmx.de",
        "time": "Mon Jul 24 19:32:07 2017 +0200"
      },
      "committer": {
        "name": "Lennart Wieboldt",
        "email": "lennart.1997@gmx.de",
        "time": "Tue Jul 25 14:29:50 2017 +0200"
      },
      "message": "Remove LOCAL_CLANG and clang: true\n\nclang is the default compiler since Android nougat\n\nTest: mma \u0026 verified it´s still build with clang\nChange-Id: I34adaeef2f6558a09f26027271222bad94780507\nSigned-off-by: Lennart Wieboldt \u003clennart.1997@gmx.de\u003e\n"
    },
    {
      "commit": "926acb637fe8dccbff33e9d2063e039e62a3ba3a",
      "tree": "e3e9dc518977162e86cc63a98bf2ebc3f705c7d5",
      "parents": [
        "d7ca9138926f5f409cfe6ae98d2e343a4bcd0063"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Jul 14 16:41:45 2017 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Jul 14 16:44:16 2017 +0900"
      },
      "message": "Remove ScopedLogSeverity for debugging\n\nThe ScopedLogSeverity was added to observe APCT failures, which turned\nout to be a compiler optimization error.\n\nBug: 62429763\nTest: None\nChange-Id: Ibb45d018d8eaf4b29cb417da80ae5f0b000dda8e\n"
    },
    {
      "commit": "d9cda90ad456ce4cc2f954a4228d85799c3fc7d2",
      "tree": "1a6002cd83726d597f5c146bf62797f4ff612bae",
      "parents": [
        "1d873b35126ee5026a2429cfc8e02fe8e42e09bc"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Jun 20 16:18:32 2017 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Jun 23 07:15:27 2017 +0000"
      },
      "message": "Add volatile to temporary variable.\n\nFuseBuffer::HandleNotImpl save the value of |request.header.unique| to the\ntemporary variable, clear the buffer which is a union of |request| and\n|response|, then write back the unique value to response.header.unique.\n\nBefore the CL, the temporary variable was wrongly removed by the compiler\noptimization, and response.header.unique was always 0. The CL adds\nvolatile modifier as workaround to prevent the compiler optimization\nfrom removing the temporary value.\n\nBug: 62429763\nTest: libappfuse_tests\nChange-Id: Ia853f805633f646f316f585a35c7b018000b6eb3\n(cherry picked from commit a6dee5e279de56751238f750d12f8a6237992043)\n"
    },
    {
      "commit": "a6dee5e279de56751238f750d12f8a6237992043",
      "tree": "7408416a81a391cf55d78b9836e358d9a7047bc3",
      "parents": [
        "e37c3df0e8cfff6ef5819053317ff1df2de5e370"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Jun 20 16:18:32 2017 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Jun 23 11:23:12 2017 +0900"
      },
      "message": "Add volatile to temporary variable.\n\nFuseBuffer::HandleNotImpl save the value of |request.header.unique| to the\ntemporary variable, clear the buffer which is a union of |request| and\n|response|, then write back the unique value to response.header.unique.\n\nBefore the CL, the temporary variable was wrongly removed by the compiler\noptimization, and response.header.unique was always 0. The CL adds\nvolatile modifier as workaround to prevent the compiler optimization\nfrom removing the temporary value.\n\nBug: 62429763\nTest: libappfuse_tests\nChange-Id: Ia853f805633f646f316f585a35c7b018000b6eb3\n"
    },
    {
      "commit": "afa345325647e66dc7add78f7100dc81bd066dbb",
      "tree": "0ce95a8d9d3a94cf48b2ff1d231fd76b01a5bc93",
      "parents": [
        "7b1d736dac3eb1b3b75cfd1904a29cc9ec09c75d"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Jun 15 15:48:07 2017 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Jun 20 00:25:28 2017 +0000"
      },
      "message": "Skip FUSE request from /dev/fuse if unique\u003d0\n\nAPCT log shows that we got FUSE request unique\u003d0 and replying to such\nrequest causes a EINVAL.\n\nThe possible reasons of getting unique\u003d0 here are:\n\n * /dev/fuse actually submits such requests. In this case, not replying\n   to such request probabbly safe as the kernel cannot wait corresponding\n   response without a unique number. We can observing the kernel code to\n   find out what unique\u003d0 actually means.\n * Memory corruption happens and unique number are cleared with zero.\n   In this case, if we skip unique\u003d0 request, libappfuse does not reply\n   to the kernel request and APCT result will become timeout .\n\nTo see which case happens, the CL ScopedLogSeverity to output\nverbose logs and lets FuseBridgeLoop skip a request from /dev/fuse if unique\u003d0.\n\nBug: 62429763\nTest: libappfuse_tests\nChange-Id: I8c4d532564b690d55573b92260170b0cd68150ab\n"
    },
    {
      "commit": "e5a1556d402789dc02aa041c8d04d0b23a0ce68e",
      "tree": "aaee25a43666860c95eba19a4442516f9b682002",
      "parents": [
        "435baf5d00162b6f14ada5f243ae49c62714d03f"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Jun 09 13:12:21 2017 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Mon Jun 12 10:37:08 2017 +0900"
      },
      "message": "Add more logs for writing failures.\n\nBug: 62429763\nTest: libappfuse_test\nChange-Id: Ie0eabd09ae9ad3f8ba8c4f38f871dad16b5c58ff\n"
    },
    {
      "commit": "4847c7f708bdcba64244c2063b6f999fe44f0964",
      "tree": "702b14dc7e5aef999f8442c4e3c6129b87cdac28",
      "parents": [
        "d6b71b91530f9b865eaf0f602f94f6f034a4d31c",
        "bf6e949727d6d86a3e8e3fa5c5f641872134d2a1"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed May 17 10:39:16 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 17 10:39:16 2017 +0000"
      },
      "message": "Merge \"Change the CHECK failure into function failure.\" into oc-dev\nam: bf6e949727\n\nChange-Id: Ic374fc076cc9584c375618a57371669c23aff539\n"
    },
    {
      "commit": "d6b71b91530f9b865eaf0f602f94f6f034a4d31c",
      "tree": "8808225cee5e4fa1159bb79d6820c638e13ef7ac",
      "parents": [
        "c9c527f81f9e5cad429bdc74103c918aaf9c2a1b",
        "165dad791d05975d6c13155246e256a379181dcf"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed May 17 10:38:32 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 17 10:38:32 2017 +0000"
      },
      "message": "Merge \"Use SO_SNDBUFFORCE instead of SO_SNDBUF\" into oc-dev\nam: 165dad791d\n\nChange-Id: I2da13af0ff1e4a50259847fd57695c3d616e59cc\n"
    },
    {
      "commit": "bf6e949727d6d86a3e8e3fa5c5f641872134d2a1",
      "tree": "7dd688b5acc3df94fb062ee8a422d99861cfa3b8",
      "parents": [
        "165dad791d05975d6c13155246e256a379181dcf",
        "3df060d6d0e953bacee8e7899d18b404b5a7262f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 17 03:22:26 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 17 03:22:27 2017 +0000"
      },
      "message": "Merge \"Change the CHECK failure into function failure.\" into oc-dev"
    },
    {
      "commit": "3df060d6d0e953bacee8e7899d18b404b5a7262f",
      "tree": "ea2ae330037fadb0abe7b79953490ceab3ed96db",
      "parents": [
        "a0aaf24d628eaf5675ba505afa021f475deac22c"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri May 12 16:24:48 2017 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed May 17 10:30:02 2017 +0900"
      },
      "message": "Change the CHECK failure into function failure.\n\nPreviously we have CHECK in WriteInternal function to observe short\nwriting. However it turns out short write can happen according to the\nbug report.\n\nTo prevent app from crashing due to CHECK failure, the CL removes the\nCHECK and let WriteInternal return a failure value.\n\nBug: 37561460\nTest: libappfuse_tests, manually re-wrote the return value of write()\n      and checked logcat.\nChange-Id: I6a1e233c3ddb8eb68f59e7c606ad0459b5ca2c6e\n"
    },
    {
      "commit": "287776ddf47ec931880863a64e8d5094cb2b2dfa",
      "tree": "dab4c519fb7a1cb22fe8a0559ff90c4fab7cb45d",
      "parents": [
        "df54d0efc3a5c2920278246960ff695f9e15b93e"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Apr 28 16:55:29 2017 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Apr 28 17:03:06 2017 +0900"
      },
      "message": "Use SO_SNDBUFFORCE instead of SO_SNDBUF\n\nWhen /proc/sys/net/core/wmem_max is smaller than kMaxMessageSize, we\nneed to override the limitation.\n\nBug: 37561460\nTest: libappfuse_tests\n\nChange-Id: Ibaac8db61290d661459fdc46f0ae8416f7db1d9e\n"
    },
    {
      "commit": "8a514bc30bbd3629fa78f098f9285801dc63865a",
      "tree": "3f61a5ef6698b9967e98f69307cccdc1195c90cc",
      "parents": [
        "baef8fd8e0612a709dd30ad1a4166f05c2f98658",
        "b44505e9567821c4511143cb4fa98173d5f98c63"
      ],
      "author": {
        "name": "Dan Shi",
        "email": "dshi@google.com",
        "time": "Wed Apr 05 00:19:53 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Apr 05 00:19:53 2017 +0000"
      },
      "message": "Merge \"Add test config to libappfuse_test\" am: dccf5a1dc8 am: 31d4b50cc4\nam: b44505e956\n\nChange-Id: Iefe160951c3f638faee7e8e1f1ff63ed9133325c\n"
    },
    {
      "commit": "688b6e5e6ef92eda4822b51a4fbc96697503d858",
      "tree": "e893fe47d77683e1330ca870fce43d03dee68d85",
      "parents": [
        "bc9cb3885b7cbb515698f62ec9162102ebc58157"
      ],
      "author": {
        "name": "Dan Shi",
        "email": "dshi@google.com",
        "time": "Fri Mar 31 17:11:50 2017 -0700"
      },
      "committer": {
        "name": "Dan Shi",
        "email": "dshi@google.com",
        "time": "Fri Mar 31 17:11:50 2017 -0700"
      },
      "message": "Add test config to libappfuse_test\n\nThis change allows TradeFederation to run the test directly.\nRefer to b/35882476 for design and discussion of this change.\n\nBug: 35882476\nTest: local test\ntradefed.sh run template/local --template:map test\u003dlibappfuse_test\n\nChange-Id: Ic3a23d9d609036658fd37fc72571e2fc7db0e88d\n"
    },
    {
      "commit": "6f6210dd5c0aae99d67fd945e270a0948e6c4f42",
      "tree": "936618a2efc279f7fc2244ca847cba08ddd65798",
      "parents": [
        "281531bdcbfc99128d54fc5220488a5a6612079b"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed Mar 29 13:02:30 2017 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Fri Mar 31 01:50:50 2017 +0000"
      },
      "message": "Retry write operation when getting ENOBUFS.\n\nPreviously libappfuse set SO_SNDBUF to the maximum message size. However\nit does not prevent ENOBUF and it made AppFusePerfTest#testReadWriteFile\nflaky.\n\nThe CL let FuseBuffer retry write operation when getting ENOBUFS.\n\nBug: 34903085\nTest: libappfuse\nChange-Id: I1602474d852e1599f6e69103bcf6f18277a5644b\n"
    },
    {
      "commit": "8e16ceecb770df194ed7fb6ba70c01505a52a609",
      "tree": "32fac895d893e97e279fbf6998604904fd31df31",
      "parents": [
        "df937b8255d86d97c97fd8d9ca7ea5352e2d8975"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Mon Mar 06 15:23:16 2017 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed Mar 29 00:13:58 2017 +0000"
      },
      "message": "Change FuseAppLoop so that it can process messages asynchronously.\n\nPreviously FuseAppLoopCallback needs to return values in a synchrnous\nmanner. The CL changes it to asynchronous mannger so that apps can\nprocess FUSE message asynchrnously.\n\nBug: 35229514\nTest: FuseAppLoopTest\nChange-Id: I8edcfdb003a25cfd5e9c490ec871140220b21e35\n(cherry picked from commit f5d15f9fc4b8bd7a866660fe208bf857dea839ba)\n"
    },
    {
      "commit": "96c6aa4f20717535921a927401cbfa16b56c193b",
      "tree": "14d7d213b10f16d2feac08238d112ee9a5c5f5f2",
      "parents": [
        "2b9a3391d0928f49d264d920e6ba0288e2e83e44"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Mon Mar 06 15:37:20 2017 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Mar 23 16:22:03 2017 +0900"
      },
      "message": "Enable FuseBridgeLoop to accept new mount point after starting\n\nThe CL turns StartFuseBridgeLoop function into FuseBridgeLoop class, and\nadds a method adding new appfuse mount to the loop.\n\nAfter doing this, one FuseBridgeLoop can process FUSE commands from\nmultiple AppFuse mounts.\n\nBug: 34903085\nTest: libappfuse_test\nChange-Id: I54f11f54bc26c551281b9c32e9bb91f8f043774c\n"
    },
    {
      "commit": "0bb22bd50ea7264684fa8c35b34fcc380e9d2cdc",
      "tree": "dc8ee89f3beba20ceda8e075554427c8709b3f37",
      "parents": [
        "ce009490fbf3fffc7aa2d1cd91b1485d6e98eaf8"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed Mar 22 16:41:46 2017 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Mar 23 01:04:15 2017 +0000"
      },
      "message": "Add FuseMessage::WriteWithBody function\n\nThe funciton is going to be used to write FUSE header with external\nbody.\n\nBug: 35229514\nTest: libappfuse_tests\nChange-Id: I303022b555deca960b8e08f26140a5ef10133efe\n"
    },
    {
      "commit": "2a14b71f141fcb7924693cab41d62a8c1bb0f324",
      "tree": "09972c9f7572d5392fa719f23bf66537f846d731",
      "parents": [
        "e9af468cde8936ee4640092e0027ab76cecfda0a"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Mon Mar 06 15:21:00 2017 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed Mar 15 15:58:06 2017 +0900"
      },
      "message": "Add new EpollController class.\n\nThe class is a thin wrapper for C epoll functions.\n\nBug: 34903085\nTest: Build EpollController.cc and libappfuse_test after applying\n      future changes locally.\n\nChange-Id: Iedce7f35e4397f80cde1054d53261ad94f9e58a8\n"
    },
    {
      "commit": "57b780fbc3e2c2442c2f58dcb83818e786246b35",
      "tree": "cf2426a800b3566d8f65b884831bf75e42cd47e1",
      "parents": [
        "cc9d94ce04dbb63a745001323213bb667ea2e00f"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Mon Mar 06 14:02:42 2017 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Mar 14 09:09:29 2017 +0900"
      },
      "message": "Add ReadOrAgain and WriteOrAgain methods to FuseMessage.\n\nThese methods return kAgain if operation cannot be done without blocking\nthe current thread.\n\nThe CL also introduecs new helper function SetupMessageSockets so that\nFuseMessages are always transfered via sockets that save message\nboundaries.\n\nBug: 34903085\nTest: libappfuse_test\nChange-Id: I34544372cc1b0c7bc9622e581ae16c018a123fa9\n"
    },
    {
      "commit": "d6f2e696245993da4211f8a67e8c2463fd6c7a78",
      "tree": "3523bf352342b81d793e62d61f18bccd0554a9ce",
      "parents": [
        "23f4e6b0a5ce3eee548a4cd9e857f522ddaf492b"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Feb 08 23:40:34 2017 -0800"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Feb 08 23:44:29 2017 -0800"
      },
      "message": "Add permission bits to open() with O_CREAT.\n\nIt\u0027s an error to pass open O_CREAT without giving it mode bits:\nhttps://linux.die.net/man/3/open\n\nBug: 32073964\nTest: Compiles with clang FORTIFY.\nChange-Id: I6b2a3694f85565afdeb782585c6af36e8c4d1557\n"
    },
    {
      "commit": "cb9153bf4324d72c6f1b34a8a1c2f8b9954697d2",
      "tree": "ac21b82aed499cc9accb363a8767495bb3962e85",
      "parents": [
        "a6373ec1d47c0b370c87b3915feeba8f2b4523f7"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Dec 08 14:22:13 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Mon Dec 12 14:53:03 2016 +0900"
      },
      "message": "Support SOCK_STREAM for bridge between system and app\n\nPreviously AppFuse use SOCK_SEQPACKET for sockets communicating system\nand app. However SOCK_SEQPACKET requires the buffer of message size in\nthe kernel and sometimes failed to write with ENOBUF.\n\nThe CL updates libappfuse so that it can use SOCK_STREAM instead of\nSOCK_SEQPACKET.\n\nBug: 33279206\nTest: libappfuse_test\nChange-Id: I622ada9ac1d71d0c57b6cfff0904c7829cea7995\n"
    },
    {
      "commit": "a6373ec1d47c0b370c87b3915feeba8f2b4523f7",
      "tree": "d8e532d25edd551db366b825e96f22a69faf8b48",
      "parents": [
        "4b4475308598659137657261218fc5a3207ec79c"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Mon Dec 05 16:50:44 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Mon Dec 12 14:34:29 2016 +0900"
      },
      "message": "Fix checks for reading and writing FuseMessage.\n\nPreviously FuseMessage were checking result of read/write operation\nafter checking header.len value is valid. This was wrong because\nheader.len does not contain correct value when read function does not\nread any bytes and returns zero.\n\nBug: 33278098\nTest: libappfuse_test\nChange-Id: Icf998ca6c3eeee20cbc4aa2f65195a87e59ffc27\n"
    },
    {
      "commit": "691739b334f3efab38f82f2922ee4039462fec25",
      "tree": "7aaa276c9bbe559aa28f4aebcf311b6105f3ddf0",
      "parents": [
        "30e68088951f17ad54c1d15576835ff4eb622c4c"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Nov 15 15:42:05 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Nov 17 09:49:51 2016 +0900"
      },
      "message": "Remove FuseBridgeLoop class.\n\nBug: 32779923\nTest: libappfuse_test\nChange-Id: I29a76701d141ae061ec1fe32993d27460a0c694a\n"
    },
    {
      "commit": "30e68088951f17ad54c1d15576835ff4eb622c4c",
      "tree": "2798f1f86672712a3e16d35ca3e3bbf0c3046d09",
      "parents": [
        "335502453d9b37c9c853dd3ac904d945b04e01ee"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Nov 15 09:31:21 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Nov 17 09:10:53 2016 +0900"
      },
      "message": "Stops the loop when all files are closed.\n\nThe CL changes FuseBridgeLoop so that it exits when all files opened on\nthe AppFuse mount point are closed. Note that the client code will\nunmount the FUSE mount point after the loop exits.\n\nBug: 32260320\nTest: libappfuse_test\nChange-Id: I4965fbb48de8a280c6306e70757a07376b1956a7\n"
    },
    {
      "commit": "c884f80755f8ecaed92a783f2a13038ab06ae691",
      "tree": "1254698431bfb95d1fcfba4af54d9b5940c8b184",
      "parents": [
        "a73ba879b1bac25ce0b93cbeb895b05c796fc9ec",
        "471ad6a59d4ab765a5e93d5dd557057e88858974"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 16 03:57:46 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 16 03:57:46 2016 +0000"
      },
      "message": "Merge \"Use FUSE_COMPAT_22_INIT_OUT_SIZE always if available.\""
    },
    {
      "commit": "471ad6a59d4ab765a5e93d5dd557057e88858974",
      "tree": "2cba6ec0c0772b8ebb049df9e2383cc55f90d5cc",
      "parents": [
        "b5ce6f02dd11b42c03884dd9531c6c8a80bcecda"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Nov 10 09:41:54 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Wed Nov 16 01:56:00 2016 +0000"
      },
      "message": "Use FUSE_COMPAT_22_INIT_OUT_SIZE always if available.\n\nWe return the minor version number 15 to FUSE_INIT since we don\u0027t handle\nBATCH_FORGET. Thus the kernel does not accept the latest size of\nfuse_init_out. Instead we need to use FUSE_COMPAT_22_INIT_OUT_SIZE.\n\nBug: 32779923\nTest: libappfuse_test\n\nChange-Id: I5c979d0e45344ca8adfe3ad3f4a9561442abcb3a\n"
    },
    {
      "commit": "0d97be4d7db1baa831d0432229dec08c87193919",
      "tree": "7f0bd712b7e52ed12b56c89fb4e743073003d05c",
      "parents": [
        "a0aecda12b9a76aa15a8c5175e15538574a05af7"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Nov 10 09:17:17 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Nov 15 10:18:37 2016 +0900"
      },
      "message": "Add static assert to check if FuseBuffer is standard layout union.\n\nBug: 32260320\nTest: libappfuse_test\nChange-Id: I6430c11fdeb2405996410c97044b4260c25209b8\n"
    },
    {
      "commit": "a0aecda12b9a76aa15a8c5175e15538574a05af7",
      "tree": "ac1e8eda1f03a8922445ae13d6d7a4173158c4ec",
      "parents": [
        "b5ce6f02dd11b42c03884dd9531c6c8a80bcecda"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Nov 08 10:17:51 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Tue Nov 15 09:47:31 2016 +0900"
      },
      "message": "Add FuseAppLoop to libappfuse.\n\nThe class is used at the app side (StorageManager) to parse FUSE\ncommands.\n\nBug: 32260320\nTest: libappfuse_test\nChange-Id: I1ae2904d3290a041f1efbf8fc10ba032eda5449c\n"
    },
    {
      "commit": "c6134762975204ceebcf7949e364484833714345",
      "tree": "ed01ec85a5175e2985e5e62986500da138d09d1d",
      "parents": [
        "7f8e819ded361e963df7aa648ca2c6d49c7b46b6"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Oct 27 14:57:55 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Oct 27 15:04:15 2016 +0900"
      },
      "message": "Add FuseBridgeLoop to libappfuse.\n\nThe CL adds FuseBridgeLoop class to libappfuse, which is used in the\nsystem service to proxy fuse commands to applications.\n\nBug: 29970149\nTest: libappfuse_test\nChange-Id: I0708f608b3868721ab16ba4028fd2c17a6735af7\n"
    },
    {
      "commit": "7f8e819ded361e963df7aa648ca2c6d49c7b46b6",
      "tree": "33e131ab74de2a90c895c66066d561fc923fae84",
      "parents": [
        "459ec807a7c2da0e45cd30e43fa5bf12e5f017dd"
      ],
      "author": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Oct 27 10:37:05 2016 +0900"
      },
      "committer": {
        "name": "Daichi Hirono",
        "email": "hirono@google.com",
        "time": "Thu Oct 27 12:40:24 2016 +0900"
      },
      "message": "Add utility functions for FUSE.\n\nThe CL adds utility functions to framework to parse FUSE messages\nfrom the kernel. The library will be used from framework JNI and service\nJNI.\n\nBug: 32260320\nTest: libappfuse_test\nChange-Id: Ib89b26d34789e6c26a3288beceb3ea145c1ae780\n"
    }
  ]
}
