)]}'
{
  "log": [
    {
      "commit": "582fca7dd5fcd96b7064f8bb977974b573168762",
      "tree": "c4705309df0256bb423c7d148ddeff3f6b733196",
      "parents": [
        "bdf2b653542cabea06b164013a73958303ec26bf"
      ],
      "author": {
        "name": "Weston Carvalho",
        "email": "westoncarvalho@google.com",
        "time": "Thu Mar 06 13:24:03 2025 -0600"
      },
      "committer": {
        "name": "Weston Carvalho",
        "email": "westoncarvalho@google.com",
        "time": "Thu Mar 06 13:24:03 2025 -0600"
      },
      "message": "checkpoint: Fix metadata file contents bug\n\nIn aosp/787759, Checkpoint changed the way kMetadataCPFile stored the\nretry count, but didn\u0027t account for \"-1\" as a special case. As a result,\nCheckpoint no longer reported `needsRollback` to be true when\n`startCheckpoint(-1)` was called.\n\nBug: none\nTest: presubmits (lmk if there\u0027s something better)\nChange-Id: I4acb929eb3471409b986f74493993a9f1d84e4a5\n"
    },
    {
      "commit": "a2db7fe33bbdc805cdc7763da3f30881ec32e95d",
      "tree": "9980cabc7ddbf8029b2fb3ef3b84e3ed0071c607",
      "parents": [
        "a1106e398956875d59dea59cb4c6a9eeaf0bf723"
      ],
      "author": {
        "name": "Weston Carvalho",
        "email": "westoncarvalho@google.com",
        "time": "Tue Feb 11 14:26:13 2025 -0600"
      },
      "committer": {
        "name": "Weston Carvalho",
        "email": "westoncarvalho@google.com",
        "time": "Tue Feb 11 14:52:55 2025 -0600"
      },
      "message": "Make sure checkpoint listeners are always notified\n\nThe `IVoldCheckpointListener`s should be notified when checkpointing\ncompletes and when vold becomes aware that no checkpoint will be\nrequired. We were previously not notifying in the case where reading\nkMetadataCPFile returned `false` (error while reading) which tells vold\nthere isn\u0027t a checkpoint. Refactored `cp_needsCheckpoint` to make sure\nthis case isn\u0027t missed.\n\nBug: 362567323\nTest: m \u0026\u0026 ./vendor/google/tools/flashall \u0026\u0026 adb wait-for-device \u0026\u0026 adb reboot \u0026\u0026 adb wait-for-device \u0026\u0026 adb logcat -s storageproxyd:v vold:V Checkpoint:V\nChange-Id: I55a4b908655446517b961bb1affdae694b76a70d\n"
    },
    {
      "commit": "6ab2065e05627a25cd731a05d2e05f7c56ab6750",
      "tree": "f41f044be42f93923bf02ce61ca207ee97affc3f",
      "parents": [
        "505580b45502b94595f5d4ba2054d4ff5a74605c"
      ],
      "author": {
        "name": "Weston Carvalho",
        "email": "westoncarvalho@google.com",
        "time": "Tue Dec 03 15:21:45 2024 -0600"
      },
      "committer": {
        "name": "Weston Carvalho",
        "email": "westoncarvalho@google.com",
        "time": "Thu Dec 19 15:56:19 2024 -0600"
      },
      "message": "Implement vendor-available vold interface\n\nBug: 362567323\nTest: mmm system/vold\nChange-Id: I967faeb221741cbd8d6c13b25cd57c37fbb6e839\n"
    },
    {
      "commit": "fd5eb260c4871f67d73d6d1aa591d9e4ddf00c6c",
      "tree": "5b99a152b7c1993664cb09148431ddf5a851cb0e",
      "parents": [
        "7c7fb49a3c9ca5de01a651ad6f929389c2162a11"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Wed Apr 24 14:15:06 2024 -0700"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Wed Apr 24 14:15:06 2024 -0700"
      },
      "message": "Get the correct fstab entry if there are more than one\n\nvold currently uses the first fstab entry for moun point /data .\nHowever, if there are multiple fstab entries for /data and the\nfirst one isn\u0027t the entry actually being used, checkpoint may fail.\n\nTest: boot a device with ext4 entry placed after f2fs\nBug: 293313353\nChange-Id: Id374c622c53fd61047d62743555234d36bd038ec\n"
    },
    {
      "commit": "a3594a6030580e195946e064c7c6711b7b8b4dc0",
      "tree": "8a9a009456aacd942b85250d58f657ca15da6e64",
      "parents": [
        "125dce22c7188a5f547b8030d42f1b9a9c760b57"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Tue Jan 31 13:42:09 2023 -0800"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Mon Feb 06 09:40:51 2023 -0800"
      },
      "message": "Check bounds on dm-bow checkpoint restore\n\nPerform bounds checks on the dm-bow restore log sectors\n\nBug: 204449591\nTest: atest vts_kernel_checkpoint_test passes\nIgnore-AOSP-First: Security fix\nChange-Id: Ie4776581ce1aff5a1a6beb9140dc6a38a9c8dfdb\n"
    },
    {
      "commit": "45edcc7db47cb1cdc13f6fdf33b9ad82c7769609",
      "tree": "0da59be4cdf9dd68710f46cc003d27fcbc7437b6",
      "parents": [
        "cb8e5ec242530405d3e3d2e5771dcf69baa322d6",
        "02eaf2e26c2806d813a925db1b3771ff659317d7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sun Jan 08 22:52:57 2023 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Sun Jan 08 22:52:57 2023 +0000"
      },
      "message": "Merge \"Do not reboot with commit failure when ext4 userdata is wiped\" am: 45a3d47fd5 am: 843bda7ff7 am: 02eaf2e26c\n\nOriginal change: https://android-review.googlesource.com/c/platform/system/vold/+/1770908\n\nChange-Id: Ic756852537a6204533ddcb5618bdc3879822d8a5\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "dd20dc3128b3c719b96a297865e986991352c67b",
      "tree": "192b8810653e960f775521fe2f28ab4c02a148c5",
      "parents": [
        "0777c5d6048eb2f36a4cd80a1dd4240ff71fae17"
      ],
      "author": {
        "name": "faqiang.zhu",
        "email": "faqiang.zhu@nxp.com",
        "time": "Mon Jul 19 12:27:37 2021 +0800"
      },
      "committer": {
        "name": "Keith Mok",
        "email": "keithmok@google.com",
        "time": "Wed Jan 04 21:06:00 2023 +0000"
      },
      "message": "Do not reboot with commit failure when ext4 userdata is wiped\n\nWhen userdata partition is the type of ext4, checkpoint and metadata\nencryption are enabled, boot up the images, if the slot currently\nin use is not marked as \"successful\" and userdata is wiped, a reboot\nwill be triggered because of \"Checkpoint commit failed\"\n\nIn this patch, do not create checkpoint when the preceding condition\noccurs, otherwise \"dm-default-key\" sits below \"dm-bow\".\n\nBecause cp_needsCheckpoint(), cp_prepareCheckpoint() and cp_commitChanges()\nare always executed when the system boots up, and now there is a condition\nthat BOW device is not created while the slot in use is not marked as\n\"successful\", set \"isBow\" to be \"false\" if BOW state fails to be set to\n1, if \"isBow\" is false, then there is no need to commit the checkpoint,\nand the system won\u0027t automatically reboot.\n\nBug: 193457319\nTest: i.MX 8M Plus EVK, images flashed to board, misc and userdata\n      partitions are wiped, checkpoint and metadata encryption are\n      enabled for ext4 userdata partition.\nSigned-off-by: faqiang.zhu \u003cfaqiang.zhu@nxp.com\u003e\nChange-Id: I4ad47a9504f1be0407f0fd196001a0e96919be33\n"
    },
    {
      "commit": "b615f3beac9681f074f56234142931c66b6e8fbb",
      "tree": "f2693e6b758a4dc127d61eef5a5832e1bb79d790",
      "parents": [
        "f13b5d9aa2ab42363c41ff64f90a11249851f761"
      ],
      "author": {
        "name": "Eric Biggers",
        "email": "ebiggers@google.com",
        "time": "Wed Nov 09 05:48:45 2022 +0000"
      },
      "committer": {
        "name": "Eric Biggers",
        "email": "ebiggers@google.com",
        "time": "Mon Nov 14 17:45:32 2022 +0000"
      },
      "message": "Defer CE key fixations to checkpoint commit\n\nOn the first boot after an upgrade, ensure that any Keystore key\ndeletions triggered by fscrypt_set_user_key_protection() are deferred\nuntil the userdata filesystem checkpoint is committed, so that the\nsystem doesn\u0027t end up in a bad state if the checkpoint is rolled back.\n\nTest: see I77d30f9be57de7b7c4818680732331549ecb73c8\nBug: 232452368\nIgnore-AOSP-First: depends on other changes in internal master\nChange-Id: I59b758bc13b7a2ae270f1a6c409affe2eb61119c\n"
    },
    {
      "commit": "dec03ab3809dd116a554d07decf973bb0088316d",
      "tree": "053851b7a2001f5feef29d55a71852444debd466",
      "parents": [
        "d99898496f4652a1d6a3dc3761b85016fda3bfff"
      ],
      "author": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Tue Jun 21 14:31:01 2022 -0700"
      },
      "committer": {
        "name": "Kelvin Zhang",
        "email": "zhangkelvin@google.com",
        "time": "Wed Jun 22 15:14:55 2022 -0700"
      },
      "message": "Convert vold to new BootControl client\n\nTest: th\nBug: 227536004\nChange-Id: Ia2f8b51d6d3175999b2434454f0ee4e14bde934e\n"
    },
    {
      "commit": "019d5163cc5de0070db177e7fbd8f303abec6179",
      "tree": "2991f1771c321186572b8213f0869c25c660b956",
      "parents": [
        "e9023dc7bb621e4edd5b02cdf58f98579ebcd8f7"
      ],
      "author": {
        "name": "Eric Biggers",
        "email": "ebiggers@google.com",
        "time": "Thu Oct 15 16:54:38 2020 -0700"
      },
      "committer": {
        "name": "Eric Biggers",
        "email": "ebiggers@google.com",
        "time": "Thu Oct 15 16:54:38 2020 -0700"
      },
      "message": "IdleMaint: use fstab_default from VoldUtil\n\nvold already reads the default fstab into memory when starting up, and\nthe default fstab isn\u0027t allowed to change later.  So in IdleMaint.cpp,\njust use \u0027fstab_default\u0027 instead of reading it again.\n\nThis also has the advantage that fstab entries for \"logical partitions\"\nnow get a properly updated blk_device, which is needed in order to start\nusing blk_device to exclude virtual filesystems in addFromFstab().\n\nChange-Id: Id6457a2b7972d01dde4bca0c5f2da86374d930af\n"
    },
    {
      "commit": "23850d30f60aa8deb1aa43f03eda277a92739570",
      "tree": "766bf7a535e07a424cfeb04d520980f0657d1ae8",
      "parents": [
        "d49f8c9eb7e71cfeca5d5b85016ea8113f376148"
      ],
      "author": {
        "name": "David Anderson",
        "email": "dvander@google.com",
        "time": "Wed Jun 10 23:51:17 2020 -0700"
      },
      "committer": {
        "name": "David Anderson",
        "email": "dvander@google.com",
        "time": "Wed Jun 10 23:52:25 2020 -0700"
      },
      "message": "Add an isCheckpointing() binder call for adb remount.\n\nThis is needed so \"adb remount\" can avoid writing to /data during a\ncheckpoint.\n\nBug: 157540389\nTest: manual test\nChange-Id: I33a691da3b99343acfc1e8ddf68a14504c3bfbe1\n"
    },
    {
      "commit": "5d0aaaf8e0b111e751bc5de8b70f0996927ddcac",
      "tree": "69cb65be1fe2dd458dfaa1100c42fc67d43e1772",
      "parents": [
        "f9510e32625ba37d7a7590e20232154f689a621a"
      ],
      "author": {
        "name": "Qilin Tan",
        "email": "qilin.tan@mediatek.com",
        "time": "Thu Jan 02 19:07:47 2020 +0800"
      },
      "committer": {
        "name": "Denis Hsu",
        "email": "denis.hsu@mediatek.com",
        "time": "Fri Jan 03 08:12:03 2020 +0000"
      },
      "message": "Fix the overflow issue in Checkpoint\n\nWhen the partition is f2fs and the OS is 32bit, the data.f_bavail and\ndata.f_frsize are 32 bits in size. The product of them is also 32 bits\nin size. If the available size of storage is greater than 4G, the\nproduct may be greater than the unsigned long max value. If the product\nis overflow and less than 100M. The UDC feature will be disabled.\n\nThere is also an overflow for std::strtoul when the variable content\nis a very big number(more the unsigned long max value).\n\nTo avoid the overflow:\n1. convert the variable data.f_bavvail to uint64_t and then compute the\nmultiplication.\n2. use std::strtoull replace to std::strtoul.\n\nBug: 147118861\nChange-Id: I60172ae4cb7c997e2ad4a36583be74736c25e565\n"
    },
    {
      "commit": "09de0ff8d6205afbe4b3430531a535641c5d05d2",
      "tree": "7aad82a09d93b597af00db86c37f620fecc7b601",
      "parents": [
        "7e249ebdae36ec773111c15e9980af23bd56292c"
      ],
      "author": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Fri Nov 15 14:05:29 2019 -0800"
      },
      "committer": {
        "name": "Tianjie Xu",
        "email": "xunchang@google.com",
        "time": "Fri Nov 15 14:06:02 2019 -0800"
      },
      "message": "Clear the warm_reset flag after boot is successful\n\nThe property is set to inform kernel to do a warm_reset on the next\nreboot. This is useful to persist the logs to debug device boot\nfailures. After the slot has been marked as boot successful, we can drop\nthe warm_reset flag to avoid the performance overhead on the next\nreboot.\n\nBug: 143489994\nTest: check the property is set to 0 by vold\nChange-Id: If7c922f40bcf9a6f7894af0a334ab23d88d40d17\n"
    },
    {
      "commit": "4c757fb6cc9db29de205c2ad225ce4563f918d2d",
      "tree": "83463717b30cc3ca71273c21e748d87755ba5506",
      "parents": [
        "4eeebff8d50ed1f3b1db8ea67fbfba1c219a71f1"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Wed Oct 23 09:36:18 2019 -0700"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Wed Oct 23 09:40:45 2019 -0700"
      },
      "message": "Make sure CtsCheckpointTestCases passes\n\nBug: 141639903\nBug: 141499347\nTest: Cts test CtsCheckpointTestCases passes\nChange-Id: Id5e9c0df969340e0b8f08436daa027614c45b380\n"
    },
    {
      "commit": "a5798fc1155c0af55048f83959c5f892ec2ccfa8",
      "tree": "be3d5abc3e418db20f4588679359e640d9ec253e",
      "parents": [
        "22d50012b0c8b39f02e3a4ce834cbbfde63e15d8"
      ],
      "author": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Fri Oct 11 16:38:21 2019 +0100"
      },
      "committer": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Sat Oct 12 00:43:04 2019 +0100"
      },
      "message": "vold: implement resetCheckpoint\n\nIt will be used by userspace reboot to reset checkpoint state, to make\nsure that when /data is remounted, it will be remounted in checkpointing\nif a checkpoint was requested beforee userspace reboot.\n\nTest: /system/bin/vdc startCheckpoint 1\n      /system/bin/vdc needsCheckpoint (returns 0)\n      /system/bin/vdc resetCheckpoint\n      /system/bin/vdc needsCheckpoint (returns 1)\n\nBug: 135984674\nChange-Id: Ia29238686289b4eed93e2fb936a8b3d894b94dc9\n"
    },
    {
      "commit": "9a6d1f73e5db980b29f8b90940669f6a1ba8a352",
      "tree": "fab23d36e839eb63a8f4c3a5a6d78a74e5807ea6",
      "parents": [
        "10598107597c619f7bc06bf1f79dea541fce341b"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Mon Aug 26 15:09:41 2019 -0700"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Mon Aug 26 15:23:14 2019 -0700"
      },
      "message": "Fix crash in mainline\n\nCurrent behavior:\n\nAssume not checkpointing\ncp_startCheckpoint creates the file in metadata\ncp_needsCheckpoint will now set isCheckpointing to true\ncp_commitCheckpoint will now think there is a checkpoint, and try to\ncommit it. This will fail on ext4 and it will return false, leading to\nbad things.\n\ncp_startCheckpoint is called when staging an apex module for update.\nAfter this point, several things could go wrong:\n\nIf a keystore key is deleted, it calls cp_needsCheckpoint to see if the\ndelete should be deferred until cp_commitCheckpoint. The delete will now\nbe deferred, meaning that this key will never be deleted, using up the\nkey sots in trustzone\n\nIf a trim is scheduled through idle maintenance, this also calls\ncp_needsCheckpoint, so the trims will not occur.\n\nIf either of these happens before a system crash, the device will not\nrecover since the system calls commitCheckpoint which will now crash.\n\nWhen the system then goes on to reboot, the checkpoint will not be\ntriggered, since the commitCheckpoint call will have deleted the\ncheckpoint flag file before crashing.\n\nBug: 138952436\nTest: vdc checkpoint startCheckpoint 5\n      vdc checkpoint needsCheckpoint\n      vdc checkpoint commitChanges\n      stop;start\n\n      commitChanges fails, then device loops\n\n      After applying this test, commitChanges succeeds and device does\n      not loop\n\nChange-Id: I135099625f77344d1f8d2e8688735871c44ef2f5\n"
    },
    {
      "commit": "1d57f686a359d9a334ad856512049e55728ec57c",
      "tree": "949c2d5fedcf9d313b1127cc005dbed5f5bf23c5",
      "parents": [
        "5bcfb5bf45c570e6c956bf9243fa38efae5c538f"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Thu Aug 22 09:51:18 2019 -0700"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Thu Aug 22 09:55:32 2019 -0700"
      },
      "message": "Fix race condition is commitCheckpoint\n\nIf cp_commitCheckpoint is called twice at the same time, the second call\nto setBowState will fail.\n\nAdd lock to remove possibility, and protect all uses of isCheckpointing\n\nBug: 138952436\nTest: Boots after flashing in checkpoint mode\nChange-Id: I131298adc506c3c176774d15e642b13d5f991087\n"
    },
    {
      "commit": "5bcfb5bf45c570e6c956bf9243fa38efae5c538f",
      "tree": "fbb1011ecc2a361cda5cb27845520f50ec9b7427",
      "parents": [
        "2c792e072049783b49e5112120f3694ab80c4f0c",
        "a7972dc73262ea57f2e6634324d28fb1711a7771"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 27 22:39:57 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 27 22:39:57 2019 +0000"
      },
      "message": "Merge \"Add property to prevent commit for Vts test\""
    },
    {
      "commit": "236e5e800e18a0c1720ec1044a74c2700107c60c",
      "tree": "311f14a8aed9ca5ab9be6351875f895ada2c122f",
      "parents": [
        "2ebb5c5b9679a8ce96927aac55d621884834d173"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Tue Jun 25 14:44:33 2019 -0700"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Wed Jun 26 15:19:24 2019 -0700"
      },
      "message": "Make ext4 userdata checkpoints work with metadata encryption\n\nWhen both ext4 user data checkpoints and metadata encryption are\nenabled, we are creating two stacked dm devices. This had not been\nproperly thought through or debugged.\n\nTest: Enable metadata encryption on taimen (add\nkeydirectory\u003d/metadata/vold/metadata_encryption to flags for userdata in\nfstab.hardware)\n    Unfortunately metadata is not wiped by fastboot -w, so it is\n    necessary to rm metadata/vold -rf whenever you wipe data.\n    fastboot flashall -w works\n    fastboot reboot -w works\n    A normal boot works\n    Disable checkpoint commits with\n    setprop persist.vold.dont_commit_checkpoint 1\n    vdc checkpoint startCheckpoint 10\n    adb reboot\n    wait for device to fully boot then\n    adb reboot\n    Wait for device to fully boot then\n    adb logcat -d | grep Checkpoint shows the rollback in the logs\n\n    This tests encryption on top of checkpoints with commit, encryption\n    without checkpoints, and rollback, which seems to be the key cases.\n\nBug: 135905679\nChange-Id: I8365a40298b752af4bb10d00d9ff58ce04beab1f\n"
    },
    {
      "commit": "a7972dc73262ea57f2e6634324d28fb1711a7771",
      "tree": "8da156faeb560446b6612b502a7f1b16e345e015",
      "parents": [
        "170b45c75f27aca1be28a89a694a35f5db5c11a7"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Wed Jun 12 12:03:01 2019 -0700"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Thu Jun 13 16:07:11 2019 -0700"
      },
      "message": "Add property to prevent commit for Vts test\n\nOld approach (do not start class main) does not work because when\ntestings userdebug GSI on user system, adb does not start until the\nframework starts.\n\nBug: 134126407\nTest: Test passes with userdebug GSI on user Taimen\nMerged-in: I20441964dbc7b6ad5b445fa17a1374c1282bbbd8\nChange-Id: I20441964dbc7b6ad5b445fa17a1374c1282bbbd8\n"
    },
    {
      "commit": "c2a145ff33017a14e46f32720dd3435d95283ef7",
      "tree": "39e258a9f6d3f6f60668563374f1a7a07bceeff1",
      "parents": [
        "19e74b3d1fb033a4dda3e55e04239c6feb10863e"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Wed May 15 09:42:04 2019 -0700"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Wed May 15 10:16:15 2019 -0700"
      },
      "message": "Fail startCheckpoint if checkpoints not supported\n\nBug: 131815738\nTest: vdc checkpoint startCheckpoint 2 succeeds on blueline\n      It fails with a modified fstab with no checkpoint\u003dfs flag\n\nChange-Id: I6d55810a1f711a670f18fbd10d8779c15f4e3cba\n"
    },
    {
      "commit": "82b3505e2e91293141a1b02969640abcc13edfbb",
      "tree": "17f2fa24a3593a9842edd52252d67fd2d7201d83",
      "parents": [
        "c222ad20eefe2b8332d921d77f3b5c61715ee9dd"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Fri Apr 19 14:26:39 2019 -0700"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Fri Apr 19 14:50:59 2019 -0700"
      },
      "message": "Use correct Statuses from Checkpoint code\n\nBug: 130190815\nTest: Added fake error to code and checked correct error was caught\nChange-Id: If9ab9357f0f961607e15a4ba18d9d85bc9923019\n"
    },
    {
      "commit": "f8da61f26ae2bf80dd90ddd9a8f859ba7a05e251",
      "tree": "56cb0980bb0f7e60c21be35f5203fc6679935632",
      "parents": [
        "a057b27f2a3ea2e22b9d2517796adabd947192b0"
      ],
      "author": {
        "name": "Sandeep Patil",
        "email": "sspatil@google.com",
        "time": "Mon Apr 15 08:45:27 2019 -0700"
      },
      "committer": {
        "name": "Sandeep Patil",
        "email": "sspatil@google.com",
        "time": "Wed Apr 17 12:55:58 2019 -0700"
      },
      "message": "Add visible logs about fstrim run for block based checkpoints\n\nBug: 120095226\nTest: Tested by forcing /data/system/last-fstrim last modified time back\n      2 years \u0026 manually trigger checkpoint using \u0027vdc checkpoint startCheckpoint 1\u0027\n\nChange-Id: I0cb8b6a85ae787e1ba2cdd7998a46942ca69760f\nMerged-In: I0cb8b6a85ae787e1ba2cdd7998a46942ca69760f\nSigned-off-by: Sandeep Patil \u003csspatil@google.com\u003e\n"
    },
    {
      "commit": "a59868d6de213fb949a7bf701b99eb91e6d95a9f",
      "tree": "7632128c05ade6efe3b92612351930e62c64d0af",
      "parents": [
        "3889f17ad1d6d8ec591f93fca2f8a455768c5239",
        "e7e89acbc8a7312950ee00f0da4497261fe8264f"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Sat Mar 30 01:27:38 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Mar 30 01:27:38 2019 +0000"
      },
      "message": "Merge \"vold: cleanups for O_CLOEXEC tidy checks.\""
    },
    {
      "commit": "e7e89acbc8a7312950ee00f0da4497261fe8264f",
      "tree": "01015667b34e1e609a05b8cc0fa0d9db7711cd58",
      "parents": [
        "95587b085e5605bec6cebf7758d05731b384dbd3"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 29 16:03:51 2019 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Mar 29 16:04:47 2019 -0700"
      },
      "message": "vold: cleanups for O_CLOEXEC tidy checks.\n\nBug: 129350825\nTest: compiles and boots\nChange-Id: I83a484ca15df1b757b670008f15af5504bc94df1\n"
    },
    {
      "commit": "e81f4c1945db31ae16784ccb6b2c3f7d192f5113",
      "tree": "2249b283092512424f6b90cfc3f506faa2ec9085",
      "parents": [
        "95587b085e5605bec6cebf7758d05731b384dbd3"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Fri Mar 29 13:06:34 2019 -0700"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Fri Mar 29 13:22:19 2019 -0700"
      },
      "message": "Fix checkpoint on Taimen\n\nBug: 129494872\nTest: VtsKernelCheckpointTest runs and passes\nChange-Id: Ib2de866db7c847d569789d1aa6cdbad7c3ee7ff4\n"
    },
    {
      "commit": "ebe293ab54472f5adf6189edbaa1e73939320b66",
      "tree": "25ba5d14f9743f84d09b2d35b7b6dc26ef8f1586",
      "parents": [
        "32a8a47b070047fd0970db2b3f4cf6b87fdf8565"
      ],
      "author": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Thu Mar 28 15:24:30 2019 +0900"
      },
      "committer": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Thu Mar 28 15:54:52 2019 +0900"
      },
      "message": "Fix bogus error checking on unique_fd\n\nThe expression \"!fd\" calls the implicit conversion to int, but comparing\nthe raw fd against 0 does not work, since open() and other POSIX calls\nreturning a file descriptor use -1 to signal an error.\n\nTest: m vold\nChange-Id: I0847c276f39cb9dd09c7ffb96951276113418fc8\n"
    },
    {
      "commit": "b7dddd0a7e0c47c9b9892c33703856f96e608969",
      "tree": "8347e7e1d4cc8ba9c818323450e42335c629b6e3",
      "parents": [
        "18d10d4c15baed1e5f6dd17743589f0928c5048b"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Tue Mar 26 14:42:14 2019 -0700"
      },
      "committer": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Wed Mar 27 00:22:34 2019 +0000"
      },
      "message": "Switch Checkpoint health sleep time to ms.\n\nThis changes the property from microsecond to milliseconds, as we don\u0027t\nneed that sort of precision here. Also switches from using ulseep, which\nhas been removed from POSIX, to nanosleep.\n\nTest: Builds, Boots, Times\nChange-Id: Iefbaf8489ba05d8d688542fd7d4305efb980e701\n"
    },
    {
      "commit": "18d10d4c15baed1e5f6dd17743589f0928c5048b",
      "tree": "c53b6855150582bc00a77bd20909d5fefc5ab1b6",
      "parents": [
        "b640f4e337531b79b9dc0df1b5a3357ae0b868f9"
      ],
      "author": {
        "name": "Satoshi Futenma",
        "email": "Satoshi.Futenma@sony.com",
        "time": "Mon Mar 25 23:13:36 2019 +0900"
      },
      "committer": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Wed Mar 27 00:12:39 2019 +0000"
      },
      "message": "Fixed min_free_bytes prop name and usleep time default\n\nTest: check build\n\nBug: 129299864\nChange-Id: Iab6a01d15185dd19604cd8d3d7ea4efc2b020e34\n"
    },
    {
      "commit": "8daeec05e8681e8bcc9dcd20997633d7d470039d",
      "tree": "e8523527ed53d963209abe352eddbe5583986c64",
      "parents": [
        "a59e4396a4993b9669c43848c3cc64e87c419f97"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Tue Nov 20 19:03:11 2018 -0800"
      },
      "committer": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Thu Mar 21 13:33:49 2019 -0700"
      },
      "message": "Add health check to checkpointing\n\nTake action if we are running out of checkpoint space.\nConfigurable via ro.sys properties.\nro.sys.cp_usleeptime \u003d Time to sleep between checks\nro.sys.cp_min_free_bytes \u003d Min free space to act on\nro.sys.cp_commit_on_full \u003d action to take. Either commits or reboots to\n                           continue attempt without checkpoint, or retry\n\t\t\t   and eventually abort OTA\n\nTest: Trigger a checkpoint and fill the disk.\nBug: 119769392\nChange-Id: I977cc03b7aef9320d661c8a0d716f8a1ef0be347\n"
    },
    {
      "commit": "a59e4396a4993b9669c43848c3cc64e87c419f97",
      "tree": "d24de10a52ce58d0c039bb1a9a948c1faa53625e",
      "parents": [
        "84203c1e245b471950b8bd7c6f4e9a9bb3059dba"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Wed Mar 20 17:02:47 2019 -0700"
      },
      "committer": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Thu Mar 21 13:33:49 2019 -0700"
      },
      "message": "Change abortChanges to take a message and bool\n\nabortChanges will attempt to pass a reboot message, and will only reboot\nif the device is currently checkpointing. Additionally, it can opt to\nattempt to prevent future attempts. This only works for non-bootloader\ncontrolled updates. Failures are ignored, as it will always reboot the\ndevice. In the unlikely event of such a failure, the device will\ncontinue to retry as though you did not ask to prevent future attempts.\n\nTest: vdc checkpoint abortChanges abort_retry_test 1\n      vdc checkpoint abortChanges abort_noretry_test 0\n\nChange-Id: I7b6214765a1faaf4fd193c73331696b53ae572d2\n"
    },
    {
      "commit": "84203c1e245b471950b8bd7c6f4e9a9bb3059dba",
      "tree": "2aa76a24104fd59dc7b8f3c1c1c3fdfaf41fee94",
      "parents": [
        "a41b7849d0f01b0ce8ca9d5bdef909c6d43071b4"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Tue Mar 19 14:02:59 2019 -0700"
      },
      "committer": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Thu Mar 21 13:33:49 2019 -0700"
      },
      "message": "Make needsCheckpoint cover whole session\n\nThis makes needCheckpoint return true when the device will or is using\ncheckpointing.\n\nTest: vdc checkpoint startCheckpoint 1\n      reboot\n      vdc checkpoint needsCheckpoint\n      should return 1 before and after data mounts, and 0 once the\n      checkpoint has been committed\n\nChange-Id: Ib57f4461d837f41a8110ed318168165a684d913a\n"
    },
    {
      "commit": "c5c79c56797db4f5b10a3aee78d2c030aa308fc5",
      "tree": "2453d2fbb0d7f548111b2d076858f143d27c707c",
      "parents": [
        "7573874d3fb9ec9d4aaeb013447ee51c23c9b7da"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Mon Mar 18 13:36:40 2019 -0700"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Mon Mar 18 13:40:00 2019 -0700"
      },
      "message": "Add vdc checkpoint supportsBlockCheckpoint\n\nAlso add vdc checkpoint supportsFileCheckpoint\nThis is to allow tests to be specific to supported checkpoint mode.\n\nTest: Built on Taimen and Crosshatch, made sure both new functions work\nas expected\n\nChange-Id: I0eab7453b13c0a2e31840ef9ad24a692cec55b00\n"
    },
    {
      "commit": "5298593b1baa45e496ce4b419782fb9c1d5baed7",
      "tree": "186172c764329f19a36652e8f937ea825cb04466",
      "parents": [
        "dda598103d84276d14aa73951857aa5c43185e3e"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Fri Mar 01 22:01:22 2019 -0800"
      },
      "committer": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Thu Mar 07 13:58:49 2019 -0800"
      },
      "message": "Make Checkpoint restore resume safe\n\nThis allows us to resume rolling back in the event of an unexpected\nshutdown during the restore process. We save  progress after we process\neach log sector, and whenever restarting the current log sector would\nresult in invalid data.\n\nTest: Run restore, interrupt it, and attempt to resume\nChange-Id: I91cf0defb0d22fc5afdb9debc2963c956e9e171c\n"
    },
    {
      "commit": "dda598103d84276d14aa73951857aa5c43185e3e",
      "tree": "8c877c722b3855d6d7dc75ec013645904baccfdf",
      "parents": [
        "bc1901f8af4ab492d3d34ebdd95be854c0f9b09b"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Wed Mar 06 17:45:17 2019 -0800"
      },
      "committer": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Thu Mar 07 13:58:49 2019 -0800"
      },
      "message": "Add vdc checkpoint restoreCheckpointPart\n\nRestores the first n entries of a checkpoint. Allows automated testing\nof interrupted restores.\n\nTest: vdc checkpoint restoreCheckpoint [device] [n]\nChange-Id: I47570e8eba0bc3c6549a04a33600df05d393990b\n"
    },
    {
      "commit": "8271ae986edacd6ed5cab1e23766734c4d615a80",
      "tree": "e249ffbc796df7f2a2681fdc2fbff149a3b565ff",
      "parents": [
        "decda14f024576acba0035cce76f8da3d660d275"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Mon Mar 04 21:46:31 2019 -0800"
      },
      "committer": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Wed Mar 06 22:05:09 2019 -0800"
      },
      "message": "Switch Checkpoint Restore code to c style File ops\n\nIn preparation for restore code, we need to guarantee fsync happens.\nSwitch over to fd based operations to prepare for that.\n\nTest: Successfully restores device over reboots\nChange-Id: Ic9901779e8a4258bf8090d6a62fa9829e343fd39\n"
    },
    {
      "commit": "d41a939d51a2467860d7f3f66c0d6e3e7a9e4b49",
      "tree": "85fe5162bbc4bdf5737bacf277037a98ff77455b",
      "parents": [
        "2268c285a522b91bf84697baf4e4b81c743ec33a"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Tue Jan 22 14:31:43 2019 -0800"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Thu Feb 28 09:49:54 2019 -0800"
      },
      "message": "Make restore validation fast by using a map\n\nTest: Successfully restores device over reboots\nChange-Id: I4f1c5bbe6c07697a925a1a4efb92aefd15b61332\n"
    },
    {
      "commit": "2268c285a522b91bf84697baf4e4b81c743ec33a",
      "tree": "ead88aa569a02bf386e8456a219940903e826327",
      "parents": [
        "99046b75c42effdd6f2d8c2dda85e301a3c5615c",
        "db08694bb1d881f36b6c05fbaa81595ebf4b3921"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 20 12:09:31 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 20 12:09:31 2019 +0000"
      },
      "message": "Merge \"Do not trim unless we are actually checkpointing\""
    },
    {
      "commit": "db08694bb1d881f36b6c05fbaa81595ebf4b3921",
      "tree": "7cfa7609a36c121f5576077aab9317c745106fc0",
      "parents": [
        "d6bbe746d712331a8edd9fa3470f54c52a5daaf6"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Tue Feb 19 14:18:54 2019 -0800"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Tue Feb 19 14:41:53 2019 -0800"
      },
      "message": "Do not trim unless we are actually checkpointing\n\nI\u0027m not convinced this explains the full regression, but it\u0027s a\nworthwhile fix anyway.\n\nBug: 124774357\nTest: Booted in checkpoint mode and non checkpoint mode\n\nChange-Id: I6e0e1e59e27bd127feac218fff7d88bb3570b530\n"
    },
    {
      "commit": "f507768981f8602ab0edf441de5389eb3aedf48d",
      "tree": "67515f7e97cb07ff84ef487861f6f060dc687ba3",
      "parents": [
        "4f13a90a58a8022d743aba602a28dad705181070"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Fri Jan 18 10:28:34 2019 -0800"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Fri Feb 08 08:43:40 2019 -0800"
      },
      "message": "Support header versioning in dm-bow\n\nTest: Make sure still boots, restores\nChange-Id: I903f58cb22472dbbbbb4c27ed1d88ed1f7c7dc5d\n"
    },
    {
      "commit": "4f13a90a58a8022d743aba602a28dad705181070",
      "tree": "3235b73d41bcb575b1877b3a1881ace8526865ee",
      "parents": [
        "d6bbe746d712331a8edd9fa3470f54c52a5daaf6"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Thu Jan 10 13:06:07 2019 -0800"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Fri Feb 08 08:43:40 2019 -0800"
      },
      "message": "Suport variable blocksizes in dm-bow restore\n\nTest: Test that restore still works\nChange-Id: I7259e3efd1cd0ee13c74336a7e53158b6bceed57\n"
    },
    {
      "commit": "886915bb6f55fe386f02f39905634c5a520c158c",
      "tree": "3ad33b201e8eb11ab06c649bf0e7e88880526f07",
      "parents": [
        "253b44ea6d0c0b4a955552fc6d28196bd82256e9"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Wed Jan 23 15:16:04 2019 -0800"
      },
      "committer": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Tue Feb 05 16:56:55 2019 -0800"
      },
      "message": "Mark A/B Boot success before committing checkpoint\n\nThis marks the slot as successful within commitChanges, increasing the\navailable roll back window significantly.\n\nTest: When taking an update on a checkpoint enabled device, it\n      marks the slot as successful just before committing the\n      checkpoint. Visible in logs as call to vdc commitChanges,\n      followed by \"Marked slot as booted succesfully.\"\nBug: 123260515\nChange-Id: If71fcde57b3bdee2cfaabb590f123a2d00da3228\n"
    },
    {
      "commit": "253b44ea6d0c0b4a955552fc6d28196bd82256e9",
      "tree": "3ad836113489263fbbc68f8c264fec6ce998111a",
      "parents": [
        "b6d5cd20d7911be03b2d86f47c0579e20f2d9dec"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Fri Feb 01 19:25:47 2019 -0800"
      },
      "committer": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Fri Feb 01 19:41:46 2019 -0800"
      },
      "message": "Use global default_fstab instead of re-reading\n\nVoldUtils already has a pre-parsed fstab. Use it instead.\n\nTest: Checkpoint functions continue to work\nChange-Id: I96cbab467a7b809c92c4f6cdf7a06abca8c5aa5e\n"
    },
    {
      "commit": "4c5bde2b9258ccd8a023acfaf47d66758d88f828",
      "tree": "95ecfd4a22ebdc45993b7632175a4ddfc3ce82ac",
      "parents": [
        "eb00112e09551e1957e9e119c58005992dee720b"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Jan 29 14:34:01 2019 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Jan 31 12:34:39 2019 -0800"
      },
      "message": "Move over to the C++ Fstab class\n\nTest: build and boot\nChange-Id: Id3850c9c133f6644073a2439368501253a2a94a9\n"
    },
    {
      "commit": "aaac873faf91fd540133e6fe8a041784b4ae16d1",
      "tree": "210fd38159ee6e45ba42c5da1a42f795ef05ea09",
      "parents": [
        "9b2b8fd4595e5c360faaf8eaa645aaad5529e839",
        "14ca4acd860a0c55289d69cfa1ca04fa9aa4b306"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 25 04:26:17 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 25 04:26:17 2019 +0000"
      },
      "message": "Merge \"Preserve options on remount in commitChanges\""
    },
    {
      "commit": "14ca4acd860a0c55289d69cfa1ca04fa9aa4b306",
      "tree": "eee47c3e892d5028830beffbe12d96f1a858db60",
      "parents": [
        "f156c40404b64d49716777c937572044bb2ac26f"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Thu Jan 24 18:23:18 2019 -0800"
      },
      "committer": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Thu Jan 24 18:26:53 2019 -0800"
      },
      "message": "Preserve options on remount in commitChanges\n\nCopy the existing mount options when remounting f2fs for checkpointing\nmode.\n\nBug: 123376509\nTest: Boot with checkpointing, and ensure entries match fstab\nChange-Id: If022d9872a44657b550ab892259230805716dc77\n"
    },
    {
      "commit": "9b667fbe416363ff0cb7aeb58e67c9da5ad61a37",
      "tree": "3450e317bfff82aede583c604f0565d43e482c7d",
      "parents": [
        "f156c40404b64d49716777c937572044bb2ac26f"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Tue Jan 22 17:27:25 2019 -0800"
      },
      "committer": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Tue Jan 22 17:58:03 2019 -0800"
      },
      "message": "Add supportsCheckpoint\n\nThis returns true if any entries in the fstab have checkpoint\u003d\nset.\n\nTest: Call vdc checkpoint supportsCheckpoint. Should return 1\n      iff an fstab entry has checkpoint\u003dfs or checkpoint\u003dblock set\nBug: 111020314\n\nChange-Id: Ic79bc96ded4da6605f73992dcff542e7cb50d705\n"
    },
    {
      "commit": "27691c28838a3a5b005b22608e2455feb99585ee",
      "tree": "b04bf87b47bf8689d29121963b2f751136341d80",
      "parents": [
        "a892eb154e0b578571674eea5f69fa4fbf7c89da"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Tue Nov 20 14:07:59 2018 -0800"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Wed Jan 16 14:14:48 2019 -0800"
      },
      "message": "Checkpoints: Support validation and roll forward on fail\n\nTest: Rolls backward, and if you hexedit a BOW page, rolls forward\nChange-Id: If99a6c3a3bc3f615bd1445f5af14ea490a58e053\n"
    },
    {
      "commit": "8859c9c9e71a4b81aaa29a26c419a63da536d11c",
      "tree": "cea8889130615af7efb6fb3599136a6a55e1a5f3",
      "parents": [
        "8ae16db72a259c604eded3532b37f629724a13a9"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Tue Dec 18 12:22:29 2018 -0800"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Thu Dec 20 10:38:31 2018 -0800"
      },
      "message": "Checkpoint: Assure proper buffer alignment\n\nWe have a char buffer on the stack, which we then cast to a\nstruct, and then proceed to access elements in the struct.\nThis is not safe across all platforms, as some platforms\nmay require a certain alignment for members of the struct.\nWe fix this by assuring an appropriate alignment for our\nchar buffer.\n\nWe also use C++ casting, and rename our buffer to differenciate\nit from the other \u0027buffer\u0027 variable in this function.\n\nTest: TreeHugger\nChange-Id: I8254cb6b8124e394bd805afd1ccca0faedb27ffa\n"
    },
    {
      "commit": "ffa1bb03707cb03a07ebba4970c1d8a5a70e9542",
      "tree": "8c45dc26002df67eed4c12462ccdce08af4a8c8a",
      "parents": [
        "7adca74263e89d770e88cbc02b988beb99f2466b"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Fri Dec 14 00:20:03 2018 -0800"
      },
      "committer": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Fri Dec 14 14:55:16 2018 -0800"
      },
      "message": "Add property for checkpointing\n\nWe set a property when we commit a chackpoint to signal\nto anyone who wants to do post commit cleanup.\n\nTest: Boot to homescreen and check getprop for vold.checkpoint_committed\nBug: 111020314\nChange-Id: Idf35e3abf9d24eb40c6926a30a8403064c05e10a\n"
    },
    {
      "commit": "4b86df14265521ff737589d91375670e85d74b4a",
      "tree": "a9f306209f01e630f9c36d82b452284da6b8cd8e",
      "parents": [
        "622585b11b33e0bb1eb6f412aebcd44f619d11ac"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Thu Nov 08 22:18:37 2018 -0800"
      },
      "committer": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Mon Nov 19 23:47:03 2018 +0000"
      },
      "message": "Fix error reporting in cp_commitChanges\n\nOnly trys to commit if necessary, and reports errors\nif commiting fails. RemoveFileIfExists returns true on\nsuccess.\n\nTest: vdc checkpoint startCheckpoint, reboot, and then\n      vdc checkpoint commitChanges\nBug: 111020314\n\nChange-Id: Ie1b3e49beb3ca04f2881fcc595882c607368b477\n"
    },
    {
      "commit": "73680ec382f77e9d6bd7b4f5302a6ef864814c02",
      "tree": "28dd9da21ee6c6e2091f3cb884d292f8e5c61c63",
      "parents": [
        "80d1ca5600807b5b9add6dee052719d52ca8c0df"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Wed Oct 10 18:52:04 2018 -0700"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Tue Oct 16 20:06:47 2018 +0000"
      },
      "message": "Switch to exceptions for most cp calls\n\nThis switches the checkpoint calls that don\u0027t need to return a value\nto return 0 on success, and an error on failure. This will be transalted\nto exceptions for java binder users. needsCheckpoint and needsRollback\nstill return a boolean value.\n\nTest: vdc setCheckpoint 2 then reboot 3 times checking state\nBug: 112901762\nChange-Id: Idd3b5e6036631562a86d5123f533b86cf3bd6032\nMerged-In: Idd3b5e6036631562a86d5123f533b86cf3bd6032\n"
    },
    {
      "commit": "80d1ca5600807b5b9add6dee052719d52ca8c0df",
      "tree": "2dbe844a960eca1568de942a06cc5b2016a8558a",
      "parents": [
        "ba1752008dd3f5f83e6b79c3bf9a6df325fd807c"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Tue Oct 09 19:26:57 2018 -0700"
      },
      "committer": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Mon Oct 15 22:13:41 2018 +0000"
      },
      "message": "Handle retry count\n\nTest: vdc setCheckpoint 2 then reboot 3 times checking state\nBug: 112901762\nChange-Id: I85a71d059bca27b76175b9bd8465cc453f0ddb8d\n"
    },
    {
      "commit": "ba1752008dd3f5f83e6b79c3bf9a6df325fd807c",
      "tree": "4fbd0a40ae232e92076fc8df4025b57180a0ab1a",
      "parents": [
        "1e1893812ccc6a5b2f5e73cbd91e76c054c358cf",
        "d3992498556fb1dce783d9d5e59f38cad492a6c3"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Fri Oct 05 01:31:18 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 05 01:31:18 2018 +0000"
      },
      "message": "Merge \"Add checkpointing support for A/B updates\""
    },
    {
      "commit": "d3992498556fb1dce783d9d5e59f38cad492a6c3",
      "tree": "2c8cbf4f2a7e839e80af0dc3808c8813b3701284",
      "parents": [
        "ac244261c8abaaaab5cd24506dc464fb6d762043"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Tue Oct 02 17:40:44 2018 -0700"
      },
      "committer": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Wed Oct 03 15:39:25 2018 -0700"
      },
      "message": "Add checkpointing support for A/B updates\n\nThis adds implicit rollback support during A/B style updates.\nIf you explicitly start a checkpoint with -1, needsRollback will\ntrigger if the update fails, and should be used if any additional\ncleanup is needed that is not covered by A/B itself.\n\nTest: All Checkpoint tests pass\nBug: 111020314\nChange-Id: I88b4a1098c6bac4dc1438a54c8a8f59577a6c17b\n"
    },
    {
      "commit": "2040089ab0006f28c5855505cf64cefeae2755ef",
      "tree": "684f7ca057446ff625b5cdf654f1321a58dd8515",
      "parents": [
        "ac244261c8abaaaab5cd24506dc464fb6d762043"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Wed Oct 03 14:14:52 2018 -0700"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Wed Oct 03 14:19:31 2018 -0700"
      },
      "message": "Use unique points for fstab\n\nTest: Checkpoint test script runs and passes\nChange-Id: I13005da22aef5fda3d1e0941949db02ff0ff0870\n"
    },
    {
      "commit": "1abb2fe2787637192fd07fa0481633fa02ea03c4",
      "tree": "6788d010a10da83732050f4f0ba2fb467a8446c0",
      "parents": [
        "9931db7e59624271953ad0a08bdfc24d3125bb16"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Fri Sep 21 10:49:57 2018 -0700"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Wed Oct 03 09:15:27 2018 -0700"
      },
      "message": "Make checkpointing work on ext4\n\nTest: All tests pass\nChange-Id: I2a6cdf1edfe752f4633e1931e75d18659653938c\n"
    },
    {
      "commit": "65f99c9e8bd3a546a5dd2f3f4bad1585afbf0dc8",
      "tree": "d2cc8c8f1e1e4e3bbbbd8667c16f4aafee347fcb",
      "parents": [
        "15b9656ae9acfbed4af62b8cecba30c35cd514a8"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Tue Aug 28 01:58:49 2018 -0700"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Fri Sep 21 21:54:11 2018 +0000"
      },
      "message": "Add support for checkpointing\n\nCheckpointing uses a combination of files on the meta partition\nand the checkpoint\u003d fs_mgr flag. Checkpointed partitions will\nrevert to their starting state on reboot unless checkpoint commit\nis called.\n\nTest: Run vdc commands, check file on metadata\nMerged-In: Icba16578608a6cbf922472e9d4ae5b8cf5f016c6\nChange-Id: Icba16578608a6cbf922472e9d4ae5b8cf5f016c6\n"
    }
  ]
}
