)]}'
{
  "log": [
    {
      "commit": "ce6a913aeac7db94a41362c63bab74092767bb3e",
      "tree": "43d1bd0f9c02fa38370c84ce57573062f15e0671",
      "parents": [
        "389672737673f9c695ac70464a0f8656908d20fd"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Apr 08 21:07:21 2015 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sat Apr 11 08:48:13 2015 -0700"
      },
      "message": "Exclusive exec() path, format after partition.\n\nSadly setexeccon() is process global, so we need to carefully ensure\nthat all exec() are mutually exclusive to avoid transitioning into\nunwanted domains.  Also, because we have several threads floating\naround, we need to guard all our FDs with O_CLOEXEC.\n\nFormat all newly created volumes immediately after partitioning,\nbut silence all events emitted from those volumes to prevent the\nframework from getting all excited.  Unify all notify events under a\nsingle codepath to make them easy to silence.\n\nSent SIGINT before escalating to SIGTERM when unmounting.\n\nBug: 19993667\nChange-Id: Idc6c806afc7919a004a93e2240b42884f6b52d6b\n"
    },
    {
      "commit": "9f18fe7807a4e4089778243dbbd08d154ec15540",
      "tree": "fb3c625c47ddd0d7f6d2ba555f73c1c2b52f547e",
      "parents": [
        "f7e86ead9f0217283e547a6fa8e6b3405e91af1d"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Apr 01 23:32:18 2015 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Apr 01 23:33:26 2015 -0700"
      },
      "message": "Remove unused code.\n\nBug: 19993667\nChange-Id: I1f6519655c5a366eca25e2329e1bf95d81b3bf8c\n"
    },
    {
      "commit": "9c48498f4529f623650c56d03e63324c8d813032",
      "tree": "24c7b2caf17e7c1d18ff6f31410ad85a4ee94245",
      "parents": [
        "38cfc028607a6756ac7d37200182724f033375d8"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Mar 31 10:35:33 2015 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Apr 01 10:45:05 2015 -0700"
      },
      "message": "Support for private (adopted) volumes.\n\nThis adds support for private volumes which is just a filesystem\nwrapped in a dm-crypt layer.  For now we\u0027re using the exact same\nconfiguration as internal encryption (aes-cbc-essiv:sha256), but we\ndon\u0027t store any key material on the removable media.  Instead, we\nstore the key on internal storage, and use the GPT partition GUID\nto identify which key should be used.\n\nThis means that private external storage is effectively as secure as\nthe internal storage of the device.  That is, if the internal storage\nis encrypted, then our external storage key is also encrypted.\n\nWhen partitioning disks, we now support a \"private\" mode which has\na PrivateVolume partition, and a currently unused 16MB metadata\npartition reserved for future use.  It also supports a \"mixed\" mode\nwhich creates both a PublicVolume and PrivateVolume on the same\ndisk.  Mixed mode is currently experimental.\n\nFor now, just add ext4 support to PrivateVolume; we\u0027ll look at f2fs\nin a future change.  Add VolumeBase lifecycle for setting up crypto\nmappings, and extract blkid logic into shared method.  Sprinkle some\nmore \"static\" around the cryptfs code to improve invariants.\n\nBug: 19993667\nChange-Id: Ibd1df6250735b706959a1eb9d9f7219ea85912a0\n"
    },
    {
      "commit": "36801cccf27152c9eca5aab6ba3527221525110f",
      "tree": "3020e87ca409ad34255d77cc0b6403b9bc5a0b80",
      "parents": [
        "2a8c10965a8a9e17fb290ac5acba2daf936ff1bb"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Mar 13 16:09:20 2015 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Mar 30 19:46:31 2015 -0700"
      },
      "message": "Progress towards dynamic storage support.\n\nWire up new Disk and VolumeBase objects and events to start replacing\nolder DirectVolume code.  Use filesystem UUID as visible PublicVolume\nname to be more deterministic.\n\nWhen starting, create DiskSource instances based on fstab, and watch\nfor kernel devices to appear.  Turn matching devices into Disk\nobjects, scan for partitions, and create any relevant VolumeBase\nobjects.  Broadcast all of these events towards userspace so the\nframework can decide what to mount.\n\nKeep track of the primary VolumeBase, and update the new per-user\n/storage/self/primary symlink for all started users.\n\nProvide a reset command that framework uses to start from a known\nstate when runtime is restarted.  When vold is unexpectedly killed,\ntry recovering by unmounting everything under /mnt and /storage\nbefore moving forward.\n\nRemove UMS sharing support for now, since no current devices support\nit; MTP is the recommended solution going forward because it offers\nbetter multi-user support.\n\nSwitch killProcessesWithOpenFiles() to directly take signal.  Fix\none SOCK_CLOEXEC bug, but SELinux says there are more lurking.\n\nBug: 19993667\nChange-Id: I2dad1303aa4667ec14c52f774e2a28b3c1c1ff6d\n"
    },
    {
      "commit": "14eab550e8a4f28889cc9ffbb92ddff8f18c4f03",
      "tree": "3e5150c3d7c8a3a3ed63740a8c565ec3aab55b88",
      "parents": [
        "8120c3d1b2a8b4c6570c36bcdaf7c55392f5fa45"
      ],
      "author": {
        "name": "Hiroaki Miyazawa",
        "email": "hiroaki.miyazawa@sonymobile.com",
        "time": "Wed Feb 04 13:29:15 2015 +0900"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 30 11:28:11 2015 -0700"
      },
      "message": "Fixed type mismatch for ioctl(BLKGETSIZE)\n\nioctl(BLKGETSIZE) expects unsigned long\n(8 bytes on 64 bit environment).\n\nThis is fixing fails in android.os.storage.StorageManagerIntegrationTest\n(in FrameworkCoreTests).\n\nTo verify, install FrameworksCoreTests.apk and do:\n\nadb shell am instrument -r -w -e class android.os.storage.\\\nStorageManagerIntegrationTest#testMountSingleEncryptedObb \\\ncom.android.frameworks.coretests/android.test.InstrumentationTestRunner\n\nChange-Id: Ib6d5c7490c02521c93f107c35ad0aac49f6a3f1a\n"
    },
    {
      "commit": "25e581a11c2752a9fe857c4859469f367d53f35e",
      "tree": "22d9c8a6fd90f78dd6f120324085e22ef0969d60",
      "parents": [
        "f805a8b3a917b163c789f1ad4b272560f98eb6f1"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Feb 06 08:55:08 2015 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Feb 06 08:55:08 2015 -0800"
      },
      "message": "VolumeManager: don\u0027t use faccessat(AT_SYMLINK_NOFOLLOW)\n\nDon\u0027t use faccessat(AT_SYMLINK_NOFOLLOW). In Android, AT_SYMLINK_NOFOLLOW\nis ignored. In glibc, it returns counter intuitive results when a\nsymbolic link is encountered, returning true all the time even though\nan open(O_NOFOLLOW) will eventually fail.\n\nInstead, stat the file and check to see if it\u0027s a regular file,\nnot a directory or symlink or some other weirdness.\n\nIn addition, fix a bug where isAsecInDirectory would return\ntrue (\"-1\") if the asec directory didn\u0027t exist. It should return\nfalse.\n\nBug: 18867827\nChange-Id: I33d90e9095fad36ce0f83fde105b70f72e4eaef4\n"
    },
    {
      "commit": "d1104f75a736210a95ba890473d78e8dfc8b8915",
      "tree": "401e8dbd768050c65889e511be8f06391035dd09",
      "parents": [
        "ac2bbd08c61e7412912613605d3e561eb22c41c1"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Jan 02 13:28:28 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jan 06 09:53:12 2015 -0800"
      },
      "message": "Use getmntent when accessing /proc/mounts.\n\nBug: 18887435\nChange-Id: Ibcb446fac954d9c42ebdfc4b684e6f3503337ab4\n"
    },
    {
      "commit": "8439dc9fd569794b1a31f67cf43d9212de33eecc",
      "tree": "e76ac976d7ffef325c2a5f91e8fdc379a028e3b8",
      "parents": [
        "a20bb17e4c6095a77425418d7eb0c1ceb50d05f7"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Mon Dec 15 11:56:11 2014 -0800"
      },
      "committer": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Thu Dec 18 00:21:21 2014 +0000"
      },
      "message": "Make vold compile with -Werror -Wall.\n\n-Wno-missing-field-initializers is used as well, but that is an\noverzealous warning from initializing structs with {0} and not a\nreal warning.\n\nbug 18736778 and 16868177\n\nChange-Id: Iffde89cd7200d9a11193e1614f1819f9fcace30a"
    },
    {
      "commit": "60dec16c5026d29a52791ad790860d247f47f8f2",
      "tree": "ea0cae52b99eefcdd5a97d5df838a72f22a227e0",
      "parents": [
        "74f29f1df7d12c0cc06e9d6685adf15e757d8eda"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Tue Sep 02 10:52:15 2014 -0700"
      },
      "committer": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Tue Sep 02 18:25:26 2014 +0000"
      },
      "message": "Correctly remove asecs for full disk encryption\n\nPreviously this would fail if the framework wasn\u0027t stopped. The failure\nwould then stop full disk encryption. The fact that the unmount worked,\nhowever, would then stop the second attempt from achieving anything.\n\nFix in line with current retry philosophy\n\nWe still need to figure out why Devmapper::destroy() fails at first.\n\nBug: 17301843\nChange-Id: I405a36c832ccdebf2d904bef77f15eea174a6bfb"
    },
    {
      "commit": "43ed123d3fc1a3edf3660cd0e2528e971abc399e",
      "tree": "43206673662ffd45662fcf4ae13d5e0e4d8bdf22",
      "parents": [
        "e82df164e8128ec9df0072c4a4f3d92e79a0f5f4"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Aug 22 12:29:05 2014 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Aug 22 15:39:41 2014 -0700"
      },
      "message": "ASEC resize tweaking, allow read-write mounting.\n\nResize is no-op when sector count is unchanged; the caller can\u0027t\nanticipate how vold does its sector calculations.\n\nAfter resizing, we need to mount the container read-write, so allow\nthe caller to request \"ro\" or \"rw\" mode.\n\nHandle ENOTSUP when trying to fallocate() on some filesystems\n\nBug: 16514385\nChange-Id: I0d3a378280d4c36d14f8108ff428102283d583fa\n"
    },
    {
      "commit": "40b64a684124809132e04e3c499aa1e101fe808f",
      "tree": "43ad9ef4f7ba12ba1956629a5f13bc5cd1dde46d",
      "parents": [
        "e068a491c2413aeaf4ffde562dc88dbc32db6067"
      ],
      "author": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Thu Jul 24 18:02:16 2014 -0700"
      },
      "committer": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Fri Jul 25 01:46:26 2014 +0000"
      },
      "message": "vold: support \"volume list [broadcast]\" command\n\nSometimes when an sdcard is already mounted,\nsome info like uuid and label are not re-broadcast to new listeners.\nThe extra argument to list allows late listeners to catch up by asking\nvolume list to broadcast that info again.\n\nBug: 16253597\nBug: 16306775\nChange-Id: Ie7d0c1132c22d307a5b2a0e50075a3716138d00b\nSigned-off-by: Benson Huang \u003cbenson.huang@mediatek.com\u003e\n(cherry picked from commit 85f4700f44170b772697e627b3075dcb9137e1b7)\n"
    },
    {
      "commit": "e9196fecbb08ead0b5dcdf1b38b81a0419c24bf4",
      "tree": "5928eeb99594bcdc8a22a5e0d87c8653f9f5e507",
      "parents": [
        "fcd34a0ddd45db83b7bc71ff47cba9b789089fdd"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Tue Jun 10 17:16:03 2014 -0700"
      },
      "committer": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Wed Jun 11 00:50:53 2014 +0000"
      },
      "message": "Increase asec image size for reflecting ext4 reserved clusters\n\nFrom Shawn Heo\u0027s patch:\n\nExt4 introduced reserved clusters to prevent costly zeroout, or\nunexpected ENOSPC. The size is 2% or 4096 clusters, whichever\nis smaller (http://lwn.net/Articles/546473/).\n\nSo, we need to allocate additionally this amount of free space\nto asecs when vold create asec images. This is required when\nAndroid runs on Linux kernel 3.10 or later.\n\nsee: https://android-review.git.corp.google.com/#/c/96160\n\nChange-Id: Iacff16b8cf0314493c355fa741bcfa519f744d6c\nSigned-off-by: Daniel Rosenberg \u003cdrosen@google.com\u003e\n"
    },
    {
      "commit": "fcd34a0ddd45db83b7bc71ff47cba9b789089fdd",
      "tree": "ce4cdd3cb92093f88d2ffec6e3dcc7c06f28bc43",
      "parents": [
        "73d7a02dc6e18b4c0a6f29e8f89b432c1b6cc808"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Thu May 22 11:23:56 2014 -0700"
      },
      "committer": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Tue Jun 10 22:15:33 2014 +0000"
      },
      "message": "Added support for ext4 ASEC resizing.\n\nASECs formatted as ext4 can now be resized using vdc asec resize.\nRefactored some common code.\nRequires resize2fs.\n\nChange-Id: Ie78bb6015114a7bc4af42b16d1f299322ffc1e2a\nSigned-off-by: Daniel Rosenberg \u003cdrosen@google.com\u003e\n"
    },
    {
      "commit": "6a74dcaa6e646fea8e00b7c04332fc60fe7e017c",
      "tree": "0edaa03570cab9d3fdc7c35e4658b25bc3349bef",
      "parents": [
        "12e36398b5ec3596b2a310fe594981a86a56c818"
      ],
      "author": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Fri May 23 13:47:00 2014 -0700"
      },
      "committer": {
        "name": "Daniel Rosenberg",
        "email": "drosen@google.com",
        "time": "Wed May 28 23:23:47 2014 +0000"
      },
      "message": "Fixed bugs with ASEC filesystem.\n\nChanged ext4 to be 4kb aligned, and fat to be 32kb aligned.\nFixed issue that could potentially cause unencrypted ext4\nASECS to overwrite the ASEC super block when filled.\n\nChange-Id: I890426c82ac9cbc65add85a8e3f5063504193c31\nSigned-off-by: Daniel Rosenberg \u003cdrosen@google.com\u003e\n"
    },
    {
      "commit": "27cfee3fa4e44d3a542312938df12cadfad3425e",
      "tree": "77460df468273419556c412b8c2e28cc78c17ce3",
      "parents": [
        "8c008397141bf9a7d619eb2c53452bf3e397da39"
      ],
      "author": {
        "name": "Cylen Yao",
        "email": "cylen.yao@mediatek.com",
        "time": "Fri May 02 19:23:42 2014 +0800"
      },
      "committer": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Wed May 14 20:42:13 2014 -0700"
      },
      "message": "avoid fs_mkdirs when SD card removed\n\nMust limit vold calls to fs_mkdirs() only when the volume is mounted.\nIf NOT, it will trigger selinux warning as follows.\naudit(1398835637.785:8): avc:  denied  { write } for  pid\u003d137 comm\u003d\"vold\" name\u003d\"sdcard0\" dev\u003d\"rootfs\" ino\u003d3191 scontext\u003du:r:vold:s0 tcontext\u003du:object_r:rootfs:s0 tclass\u003ddir\n\nChange-Id: I1113fc961cbdd8bbd2fcbf740c2f504628c8399d\nSigned-off-by: Cylen Yao \u003ccylen.yao@mediatek.com\u003e\n"
    },
    {
      "commit": "3214d1f5a4dbece12e00f1c122e4c2e291715706",
      "tree": "33ea3bcdeab263b4e707d20c983173760d5159cd",
      "parents": [
        "49dd24c238e86c57e97f919af7fbf8ee3d79b737",
        "3c0d02aa03118713e6e770b54d1c530ff866f156"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Feb 12 23:19:02 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Feb 12 23:19:02 2014 +0000"
      },
      "message": "am 3c0d02aa: Merge \"Convert all selinux_android_restorecon and _setfilecon calls to new API.\"\n\n* commit \u00273c0d02aa03118713e6e770b54d1c530ff866f156\u0027:\n  Convert all selinux_android_restorecon and _setfilecon calls to new API.\n"
    },
    {
      "commit": "5093e6187da9c237c88383540f544c8dbaf37754",
      "tree": "417f330c31d8666a935e06f0c508285552fbce67",
      "parents": [
        "311edc8cb2dd5c86bad49f9696333874b400f9c4"
      ],
      "author": {
        "name": "Stephen Smalley",
        "email": "sds@tycho.nsa.gov",
        "time": "Wed Feb 12 09:43:08 2014 -0500"
      },
      "committer": {
        "name": "Stephen Smalley",
        "email": "sds@tycho.nsa.gov",
        "time": "Wed Feb 12 09:43:08 2014 -0500"
      },
      "message": "Convert all selinux_android_restorecon and _setfilecon calls to new API.\n\nlibselinux selinux_android_restorecon API is changing to the more\ngeneral interface with flags and dropping the older variants.\n\nAlso get rid of the old, no longer used selinux_android_setfilecon API\nand rename selinux_android_setfilecon2 to it as it is the only API in use.\n\nChange-Id: I1e71ec398ccdc24cac4ec76f1b858d0f680f4925\nSigned-off-by: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\n"
    },
    {
      "commit": "ca3593df3d48cb4b51acf89e6df4872b922fd51d",
      "tree": "291e409a67c60f8ca4eed3c4b930279d46fb445c",
      "parents": [
        "e985c9ab10fed452b97138170b4d69288d076b06",
        "311edc8cb2dd5c86bad49f9696333874b400f9c4"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Feb 11 17:20:39 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Feb 11 17:20:39 2014 +0000"
      },
      "message": "am 311edc8c: Merge \"Add SELinux restorecon calls on ASEC containers.\"\n\n* commit \u0027311edc8cb2dd5c86bad49f9696333874b400f9c4\u0027:\n  Add SELinux restorecon calls on ASEC containers.\n"
    },
    {
      "commit": "311edc8cb2dd5c86bad49f9696333874b400f9c4",
      "tree": "c236db10247375777c326f531052e4689cc07266",
      "parents": [
        "1d8e3ce8da962e5ff98d36e75f6b02873fdddb70",
        "b9e3ba56cb4075f894a73b02ee70571456494ac1"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Feb 11 17:13:46 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 11 17:13:46 2014 +0000"
      },
      "message": "Merge \"Add SELinux restorecon calls on ASEC containers.\""
    },
    {
      "commit": "e985c9ab10fed452b97138170b4d69288d076b06",
      "tree": "4aa1732d9fcb8ac175b8bb8a1bdc163f4e4c7d59",
      "parents": [
        "e8e1d80c64db85526a003e88c3dba36ff33dac74",
        "1d8e3ce8da962e5ff98d36e75f6b02873fdddb70"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Feb 07 21:31:53 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 07 21:31:53 2014 +0000"
      },
      "message": "am 1d8e3ce8: Merge \"vold: fix errors inside ALOGV\"\n\n* commit \u00271d8e3ce8da962e5ff98d36e75f6b02873fdddb70\u0027:\n  vold: fix errors inside ALOGV\n"
    },
    {
      "commit": "59846b654e8b4a22a1be11cd21d6c5b81375abd2",
      "tree": "26d5b1f514f8dd0ede70265cbbf2d85300386ee7",
      "parents": [
        "353b45f84fa0bde76c91d338f843ff27c6f646ad"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 06 20:34:29 2014 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 06 20:34:29 2014 -0800"
      },
      "message": "vold: fix errors inside ALOGV\n\nFix errors exposed by adding compile-time checking to disabled ALOGVs.\n\nChange-Id: I29bd6e9a7648ccca02e0e9a96b79ee0ea7b5cfc6\n"
    },
    {
      "commit": "b9e3ba56cb4075f894a73b02ee70571456494ac1",
      "tree": "fb17215150bdf77bba0553b2fe88dfc9898d922b",
      "parents": [
        "353b45f84fa0bde76c91d338f843ff27c6f646ad"
      ],
      "author": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Tue Feb 04 10:53:00 2014 -0500"
      },
      "committer": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Thu Feb 06 07:10:43 2014 -0500"
      },
      "message": "Add SELinux restorecon calls on ASEC containers.\n\nThis will allow fine-grained labeling of the\ncontents of ASEC containers. Some of the contents\nneed to be world readable and thus should be\ndistinguishable in policy.\n\nChange-Id: Iefee74214d664acd262edecbb4f981d633ff96ce\nSigned-off-by: rpcraig \u003crpcraig@tycho.ncsc.mil\u003e\n"
    },
    {
      "commit": "e8e1d80c64db85526a003e88c3dba36ff33dac74",
      "tree": "8f180c32b48f92c939737247e35d577e4e7902da",
      "parents": [
        "353b45f84fa0bde76c91d338f843ff27c6f646ad",
        "4d5d99ce39b5edd0b78c47a93563aed6b3d56356"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jan 28 14:11:06 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 28 14:11:06 2014 +0000"
      },
      "message": "am 4d5d99ce: am 7cf05b15: am 2f0a1d66: am 7f6932df: am 35ab6119: am 3e03bf8a: am fd2dcf90: am f4770dcf: am 0de7c611: Validate asec names.\n\n* commit \u00274d5d99ce39b5edd0b78c47a93563aed6b3d56356\u0027:\n  Validate asec names.\n"
    },
    {
      "commit": "4d5d99ce39b5edd0b78c47a93563aed6b3d56356",
      "tree": "410668855addac1bc22af3a4ea01ac2db20209ac",
      "parents": [
        "7bdfa52d934465e2182e2f1c200c4d8581ad5da6",
        "7cf05b15b76b91aa07182e86a730d7552b23130c"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jan 28 14:06:00 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 28 14:06:00 2014 +0000"
      },
      "message": "am 7cf05b15: am 2f0a1d66: am 7f6932df: am 35ab6119: am 3e03bf8a: am fd2dcf90: am f4770dcf: am 0de7c611: Validate asec names.\n\n* commit \u00277cf05b15b76b91aa07182e86a730d7552b23130c\u0027:\n  Validate asec names.\n"
    },
    {
      "commit": "7f6932df89756f796c3a1f04f748db39a0564561",
      "tree": "9224576834b3c9740052732371bb7e5d359bbe86",
      "parents": [
        "c004cfd80c5b54c971b8854fa1d10ee23be1c868",
        "35ab611925aea29fc4088b5c3de7c8c77d956b8b"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jan 27 19:25:27 2014 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 27 19:25:27 2014 -0800"
      },
      "message": "am 35ab6119: am 3e03bf8a: am fd2dcf90: am f4770dcf: am 0de7c611: Validate asec names.\n\n* commit \u002735ab611925aea29fc4088b5c3de7c8c77d956b8b\u0027:\n  Validate asec names.\n"
    },
    {
      "commit": "fd2dcf905abd3dc76738fd864e3979bd6e5ce183",
      "tree": "034cf54129f5916fc42a771d14934987bc9dbb21",
      "parents": [
        "3c73fdaad106c2bd5e9d9349aae13f07ec40a547",
        "f4770dcf6ffe2baba16cbb290aba16f735c51962"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jan 27 19:17:13 2014 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 27 19:17:13 2014 -0800"
      },
      "message": "am f4770dcf: am 0de7c611: Validate asec names.\n\n* commit \u0027f4770dcf6ffe2baba16cbb290aba16f735c51962\u0027:\n  Validate asec names.\n"
    },
    {
      "commit": "0de7c61102611ccd5df1ca48cb733bf037512c6b",
      "tree": "d6b62aff7b3a21d6de7eda7fb245d856b073af85",
      "parents": [
        "eacf7e03d60a2b33ac6cdaa0e01bd6a6fdd9455a"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jan 27 14:58:06 2014 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jan 27 15:21:17 2014 -0800"
      },
      "message": "Validate asec names.\n\nMake sure asec names only contain alphanumeric, underscores,\ndots, or dashes. Don\u0027t allow double dots.\n\nBug: 12504045\n\n(cherry picked from commit 669626096513cf741646cf18a9e8ba246d359596)\n\nChange-Id: Ia9d04f373aa95878b2e81584c4167dc2d4aa0c78\n"
    },
    {
      "commit": "346c5b20cbbced7edacf240015c4a89e5b2ca44f",
      "tree": "a23ebe0cf909eda18a210b4c3ceed186564c0a8a",
      "parents": [
        "8328e8150f4e7b785785754f2d44794e7bab3577"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jan 22 23:59:41 2014 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jan 24 10:42:27 2014 -0800"
      },
      "message": "vold: fix warnings for 64-bit\n\nReplace MINOR(dev_t) and MAJOR(dev_t) with minor and major,\nwhich cast to int.\nCast int to uintptr_t before casting to pointer\n\nChange-Id: I59375518f15d27f400fcd4f8a8dfe5ebdd8350e6\n"
    },
    {
      "commit": "8c2c15b1c611708c85b3f1ba86b6db79c5c004d5",
      "tree": "e154243f38a5a86c9d49d55189540c2ea1f62369",
      "parents": [
        "0de365fc0af30ae48c2037e1057f2a813029a618"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Oct 17 15:17:19 2013 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Oct 17 15:30:30 2013 -0700"
      },
      "message": "Clean up ASEC unmounting on physical storage.\n\nWhen physical devices are unsafely removed, unmountAllAsecsInDir()\nfails to find any ASECs, and leaves them all mounted, preventing the\nrest of volume from going down.\n\nNow we examine all ASEC containers, and remove when on external\nstorage, or when the storage media is no longer found.\n\nBug: 11175082\nChange-Id: Iffa38ea43f7e5ad78b598374ebeb60a8727d99fd\n"
    },
    {
      "commit": "5ab02e787a05eda1d3382654d5496d6c763c2474",
      "tree": "db2149bde46520d37ff45ef0ad522528742ddb1a",
      "parents": [
        "3a941d6812ccf52fd4fe1c1891041c14f25d0b91"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Oct 15 15:22:28 2013 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Wed Oct 16 10:52:29 2013 -0700"
      },
      "message": "DO NOT MERGE. Fix crash in vold\n\nb/11239345\n\nChange-Id: I46a8d6b38e3c093e20e1e5c4f01efc13d1960ad4\n"
    },
    {
      "commit": "ba6ae8db137d012c9b8e11f9f8321c7771698e92",
      "tree": "2d91cf3c7794604232778e474c55d9c1f67d3d91",
      "parents": [
        "71ebe154a5fbbb4b394a439ff0b6b9c84fbd04f5"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Jul 15 18:14:25 2013 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Oct 08 10:13:04 2013 -0700"
      },
      "message": "Add support for more expressive SD card permissions\n\nWe now run an sdcard fuse daemon on top of a physical SD card.\nAdd support for that.\n\nBug: 10330128\n\nChange-Id: I6a291f861ccb0f2911c07cc8f659e2cec4e6d76c\n"
    },
    {
      "commit": "71ebe154a5fbbb4b394a439ff0b6b9c84fbd04f5",
      "tree": "7da0d30b76de8c2e51d7de647e108a218a7e1fc1",
      "parents": [
        "e550f78a3ff5985ba21cac263629c957500ef4e4"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Sep 17 17:24:38 2013 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Fri Sep 20 14:29:59 2013 -0700"
      },
      "message": "Add mkdirs() command.\n\nApps without sdcard_r or sdcard_rw need to have someone create\npackage-specific directories on their behalf.  If apps have trouble\ncreating on their own, they now delegate through system to have\nvold create the paths.\n\nRequires that the requested path is actually managed by vold.\n\nBug: 10577808\nChange-Id: I6835fc8f52240f9de07f89742a426a153e3ca32a\n"
    },
    {
      "commit": "9caab76c6b5aefdeeb1715a3695491ca793b8c18",
      "tree": "9f67b8c31f302a4e8dabb05956b0cabc991f566e",
      "parents": [
        "dfbf110dfaad69b22036afc069f944f066f91b93"
      ],
      "author": {
        "name": "Ken Sumrall",
        "email": "ksumrall@android.com",
        "time": "Tue Jun 11 19:10:20 2013 -0700"
      },
      "committer": {
        "name": "Ken Sumrall",
        "email": "ksumrall@android.com",
        "time": "Wed Jun 12 18:42:02 2013 -0700"
      },
      "message": "vold: Add an optional wipe paramter to the volume format command\n\nThe new wipe option to the vold format command will invoke BLKDISCARD\non the partition before invoking newfs_msdos.  This will be used whenever\na full wipe of the device is wanted, as this is more secure than just\ndoing newfs_msdos.\n\nBug: 9392982\nChange-Id: Ie106f1b9cc70abc61206006d1821641c27c7ccae\n"
    },
    {
      "commit": "29e55ef83def8eaf6aa01201c6344a8037b2f780",
      "tree": "0ffa5ba512ec22b2af06a69524d0bf089b3074ae",
      "parents": [
        "2e0d70f98d10089f0cc3b88848d203cb4694fb98",
        "edf4e17940c6d3887e9009b23ffca5be8116fbe9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 29 17:15:00 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 29 17:15:00 2012 -0700"
      },
      "message": "am edf4e179: Merge \"Fix vold\\\u0027s use of readdir_r(3).\"\n\n* commit \u0027edf4e17940c6d3887e9009b23ffca5be8116fbe9\u0027:\n  Fix vold\u0027s use of readdir_r(3).\n"
    },
    {
      "commit": "8c480f73eed963eeca9b7df3e4c4543c6e43b0d7",
      "tree": "f577ec0e9955e3ea5bfc3baadbcc99ee0a9079b7",
      "parents": [
        "678d556f439cae504c343c15d77e9ec020a9385c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 26 16:57:19 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 26 16:57:19 2012 -0700"
      },
      "message": "Fix vold\u0027s use of readdir_r(3).\n\nChange-Id: I805a1799755429dd1f6f3bdc2e6a02f483587b35\n"
    },
    {
      "commit": "2e0d70f98d10089f0cc3b88848d203cb4694fb98",
      "tree": "96802a279dd6570edbb90055e4b966cda5a2b215",
      "parents": [
        "05753f5380e4bc678ae9bf11b8b6adb6c56f33bf",
        "678d556f439cae504c343c15d77e9ec020a9385c"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Oct 19 11:09:59 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 19 11:09:59 2012 -0700"
      },
      "message": "am 678d556f: Merge \"Add snprintf truncation and output error checks.\"\n\n* commit \u0027678d556f439cae504c343c15d77e9ec020a9385c\u0027:\n  Add snprintf truncation and output error checks.\n"
    },
    {
      "commit": "d1c226fce359e6de2b7334bf202c8f97af9fb9e0",
      "tree": "997ba7925e8ead95a134c51ab6ec55e5da13db05",
      "parents": [
        "fd5b29be8c572058ed9ab0198f5603e96c585d3c"
      ],
      "author": {
        "name": "rpcraig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Tue Oct 09 06:58:16 2012 -0400"
      },
      "committer": {
        "name": "rpcraig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Fri Oct 19 05:56:00 2012 -0400"
      },
      "message": "Add snprintf truncation and output error checks.\n\nChange-Id: If7fc9bba4b6cd4b01d2c19e967105ffc57169e97\nSigned-off-by: rpcraig \u003crpcraig@tycho.ncsc.mil\u003e\n"
    },
    {
      "commit": "bb67b67cc760e4eab8a144d1ce1df9ad2dcdc8c2",
      "tree": "e71699cc38129a0041fd9ef30a4bb5a4c065e65d",
      "parents": [
        "4fdf09c3103074770675b40c9fb5e47c04617c61",
        "fd5b29be8c572058ed9ab0198f5603e96c585d3c"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@android.com",
        "time": "Wed Oct 17 12:58:57 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 17 12:58:57 2012 -0700"
      },
      "message": "am fd5b29be: Merge \"Extend vold support for creating ext4 images.\"\n\n* commit \u0027fd5b29be8c572058ed9ab0198f5603e96c585d3c\u0027:\n  Extend vold support for creating ext4 images.\n"
    },
    {
      "commit": "fd5b29be8c572058ed9ab0198f5603e96c585d3c",
      "tree": "d1b3ad3fec62d318f63cfa1952ea1ab5dfbba78a",
      "parents": [
        "f7e7ee969d9f286315ff153cb979e29e08cee9f4",
        "a54e13a3dca8ad15141a9f1084b6e121caeddce5"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@android.com",
        "time": "Wed Oct 17 11:53:40 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 17 11:53:41 2012 -0700"
      },
      "message": "Merge \"Extend vold support for creating ext4 images.\""
    },
    {
      "commit": "6947904a76b69a1db20a3ddd30c0bcd281922fde",
      "tree": "c7fa8184fdf8b5fb6e9619101ad51f773cbeeefb",
      "parents": [
        "7382f81fba895f1ac970ac2fad875f35836b8082"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Sep 25 16:14:57 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Sep 25 16:14:57 2012 -0700"
      },
      "message": "Handle multi-user mountObb() requests.\n\nMount OBB containers using shared app GID, so that an app can read\nthe mount point across users.\n\nBug: 7212801\nChange-Id: Ia1be52df9854c259b20728111f3a2c9facf4beaa\n"
    },
    {
      "commit": "a54e13a3dca8ad15141a9f1084b6e121caeddce5",
      "tree": "51a7d525783a09a28224ed4b72ec7fe70720a98b",
      "parents": [
        "9ee8a315eefde7e6ad1bc07bc9d50528f548e8e8"
      ],
      "author": {
        "name": "rpcraig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Fri Sep 21 14:17:08 2012 -0400"
      },
      "committer": {
        "name": "rpcraig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Fri Sep 21 15:44:55 2012 -0400"
      },
      "message": "Extend vold support for creating ext4 images.\n\nAugment the Ext4::format function to take\na mountpoint parameter. This will then\nbe passed to make_ext4fs through the\n-a option to allow proper security labeling.\n\nChange-Id: Ic26703406a2c463c12e32c8103a0c75c727b7d29\n"
    },
    {
      "commit": "eacf7e03d60a2b33ac6cdaa0e01bd6a6fdd9455a",
      "tree": "b28e5d13146360d1133c8ab566ef093c1fccd295",
      "parents": [
        "425524dba1552ab3d2ad39e205e65d0a2af997f2"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Aug 09 11:28:37 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Aug 13 09:49:55 2012 -0700"
      },
      "message": "Only cleanup ASECs in external storage DO NOT MERGE\n\nAny ASEC or OBB files were unmounted when USB storage was set to UMS\nmode. This changes it so only ASEC files on external storage and OBB\nfiles mounted from external storage are unmounted.\n\n(Cherry-pick of 93ecb38daded7583a4a61f4f22519bb7a8a8c154)\n\nBug: 6948035\nChange-Id: Ib60727bd360caa32173797ff5b4e1e21fcf20054\n"
    },
    {
      "commit": "93ecb38daded7583a4a61f4f22519bb7a8a8c154",
      "tree": "b7764606ec9511b54a1adba75c491a92f31f24b0",
      "parents": [
        "912d0b07555eb691f0320530c4e0f6ab85521e95"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Aug 09 11:28:37 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Aug 09 15:50:58 2012 -0700"
      },
      "message": "Only cleanup ASECs in external storage\n\nAny ASEC or OBB files were unmounted when USB storage was set to UMS\nmode. This changes it so only ASEC files on external storage and OBB\nfiles mounted from external storage are unmounted.\n\nBug: 6948035\nChange-Id: I91bc09ee5b792970b0eef895f6886f3ffad00e8f\n"
    },
    {
      "commit": "425524dba1552ab3d2ad39e205e65d0a2af997f2",
      "tree": "5fae3becff69d1c5d1cdd64d3ec3f0c14affe1c5",
      "parents": [
        "418367112c96f6ce45aa142d613a575046b7f65f"
      ],
      "author": {
        "name": "Ken Sumrall",
        "email": "ksumrall@android.com",
        "time": "Thu Jun 14 20:55:28 2012 -0700"
      },
      "committer": {
        "name": "Ken Sumrall",
        "email": "ksumrall@android.com",
        "time": "Fri Jun 15 14:46:53 2012 -0700"
      },
      "message": "Unmount all asec apps before encrypting\n\nNow that forward locked apps are stored on /data as asec image files\nthat are mounted, they need to be unmounted before /data can be unmounted\nso it can be encrypted.\n\nChange-Id: I7c87deb52aaed21c8ad8ce8aceb7c15c2338620a\n"
    },
    {
      "commit": "418367112c96f6ce45aa142d613a575046b7f65f",
      "tree": "1e47ea0b779595ee0cdfa9f75cfae1351b6ac5dc",
      "parents": [
        "1a673c868c2d2d81fcaeab34b4a7c75d4a978584",
        "cdc2a1c83575a349ee44035de8c3b38b8b401003"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 10 23:30:35 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 10 23:30:35 2012 -0700"
      },
      "message": "Merge \"Sleep to wait for dm to create node\" into jb-dev"
    },
    {
      "commit": "cdc2a1c83575a349ee44035de8c3b38b8b401003",
      "tree": "4503e6abcff137b04eba75958d1ac6ea5a21cb73",
      "parents": [
        "e5032c42da3c33a854df0a24a7968b4ab54190b9"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 03 13:49:46 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 10 17:27:30 2012 -0700"
      },
      "message": "Sleep to wait for dm to create node\n\nThere appears to be a race condition from when the device mapper is\nasked to create a device and when it actually appears. When we moved\nASECs to use Ext4, mount started winning the race more often.\n\nJust insert a sleep-retry loop here to counter-act this race. We should\nideally look at the uevent replies, but it takes a bit more effort to\nseparate them out.\n\nChange-Id: Ie8a5b36b1c9a26f2320a178d37312059d03a1281\n"
    },
    {
      "commit": "1a673c868c2d2d81fcaeab34b4a7c75d4a978584",
      "tree": "61d8f485b1cfa2186df82989f77e5b73700a802b",
      "parents": [
        "348c8aba0d2df2996e0fe57900ef518c6aeb4b29"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 10 16:45:29 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 10 16:47:24 2012 -0700"
      },
      "message": "Native library loading needs to read directory\n\nWhen calling System.loadLibrary(), it needs to be able to read the\ndirectory to load the file. We could probably fix that, but changing\npermissions here is faster.\n\nBug: 6478606\nChange-Id: I296b0805839da5a19950157f9a16755a4d258ca8\n"
    },
    {
      "commit": "348c8aba0d2df2996e0fe57900ef518c6aeb4b29",
      "tree": "b134ff8e6bddf13a2d52e692d1429d7df395c32a",
      "parents": [
        "e5032c42da3c33a854df0a24a7968b4ab54190b9"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 10 15:39:53 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 10 15:41:16 2012 -0700"
      },
      "message": "Only set permissions on dirs or files\n\nTraversal would mark directories with the correct permissions, but\nthey\u0027re visited again in post-order which is a different fts_info flag.\nThen it would set that to regular file permissions.\n\nExplicitly check to make sure we\u0027re looking at a file instead.\n\nBug: 6478606\nChange-Id: I13cab3e69f451da6a994fa974d575ef366f82025\n"
    },
    {
      "commit": "344ca10856f3d3087a3288ce8f91ad83665d93fb",
      "tree": "d1ec4676e989c5dde66eb001a0197caa0a6886da",
      "parents": [
        "8cd47b4c3bd811d1f94fd262db6031d4469ee121"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 03 17:23:01 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Apr 25 14:15:15 2012 -0700"
      },
      "message": "Add in ext4 support for ASEC containers\n\nNow forward locked applications will be in ASEC containers both internal\nto the system and externally.\n\nThis change adds support for putting applications in ext4-based ASECs.\n\nChange-Id: I8d6765b72dd2606e429c067b47a2dbcaa8bef37d\n"
    },
    {
      "commit": "0b8b59719357fb80c330442787f7d5b1e332263b",
      "tree": "4d8b42125be6c78ed47f96bb2a35535649a02d0c",
      "parents": [
        "e14fcf99b59954f3b2eb07a3724c078b80d58ffd"
      ],
      "author": {
        "name": "Ken Sumrall",
        "email": "ksumrall@android.com",
        "time": "Wed Aug 31 16:14:23 2011 -0700"
      },
      "committer": {
        "name": "Ken Sumrall",
        "email": "ksumrall@android.com",
        "time": "Wed Aug 31 18:09:35 2011 -0700"
      },
      "message": "Add the ability to revert a crypto mapping when unmounting a volume\n\nAdd the force_and_revert option to the unmount command which will force\nthe unmount, and revert a crypto mapping.  This is used during factory\nreset so that when the internal sdcard volume is formatted, it formats\nthe raw device, not the encrypted mapping.\n\nChange-Id: I36b6ff9bb54863b121de635472a303bf4a2334a9\n"
    },
    {
      "commit": "3b17005083be230509480ea65ae67c237142fada",
      "tree": "5a8671022393aeeafaec42a80d4e0abee3c24f8c",
      "parents": [
        "128626fc5aa3bf12d1ae5981c7f84f63625e8972"
      ],
      "author": {
        "name": "Ken Sumrall",
        "email": "ksumrall@android.com",
        "time": "Mon Jul 11 15:38:57 2011 -0700"
      },
      "committer": {
        "name": "Ken Sumrall",
        "email": "ksumrall@android.com",
        "time": "Mon Jul 11 15:38:57 2011 -0700"
      },
      "message": "Prevent sharing or formatting of a vold managed volumes during encryption.\n\nMounting was already not allowed, but also unshare before starting\nencryption, and don\u0027t allow sharing or formatting to be initiated\nduring encrytion.\n\nChange-Id: Ida188d81f025739ba4dd90492b3e66088735991e\n"
    },
    {
      "commit": "736910ca99a40b9add4353bf619e778c40938948",
      "tree": "e259c18585f9198d5ba1ffc6ed27f0fc56afb519",
      "parents": [
        "97f2fc110b2ace7914671c2f5852379bd78922e4"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 27 13:37:07 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 27 13:37:28 2011 -0700"
      },
      "message": "Add new vold call to get the path to an asec fs.\n\nChange-Id: Ife15628ed6e2493c9e85a2ade6d59a194fdddde5\n"
    },
    {
      "commit": "97f2fc110b2ace7914671c2f5852379bd78922e4",
      "tree": "a6b73397af64f7b18836f0331acc35de258e1092",
      "parents": [
        "6b715592ec94f9d75ca8119ace824ff729c104c2"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jun 07 10:51:38 2011 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jun 17 23:57:12 2011 -0400"
      },
      "message": "Update path for seting USB mass storage backing store\n\nChange-Id: I0e5fab1624e5ef5d2f55e2584d8adc1b6bab91b0\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "6b715592ec94f9d75ca8119ace824ff729c104c2",
      "tree": "b01b2dd0e9501285e24c0a18384329e11aa32495",
      "parents": [
        "86bccb14d6db2435e0115b20e8e30f8200d06ef1",
        "a976656ff90291b9437a4d37b48e82abcd48195e"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jun 17 20:55:07 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 17 20:55:07 2011 -0700"
      },
      "message": "Merge \"Remove obsolete code for monitoring USB status\""
    },
    {
      "commit": "319b1043bbbd410aa2d572d88b5936f26072d026",
      "tree": "1283d2ae340dd330c980df0ef0ebd1b46e508a64",
      "parents": [
        "29d8da8cefa99e436c13295d4c9bad060ca18a6d"
      ],
      "author": {
        "name": "Ken Sumrall",
        "email": "ksumrall@android.com",
        "time": "Tue Jun 14 14:01:55 2011 -0700"
      },
      "committer": {
        "name": "Ken Sumrall",
        "email": "ksumrall@android.com",
        "time": "Tue Jun 14 14:01:55 2011 -0700"
      },
      "message": "Don\u0027t abort the encryption process if an internal volume is present but unmounted.\n\nIt is not a failure if the SD card is not mounted.\n\nChange-Id: If954f77c55ac124b9b7b39c89ffbafb4e5ea9e98\n"
    },
    {
      "commit": "a976656ff90291b9437a4d37b48e82abcd48195e",
      "tree": "3a3e6ae7721fbfe1bcf478fa7386c663419ce224",
      "parents": [
        "29d8da8cefa99e436c13295d4c9bad060ca18a6d"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jun 07 08:34:08 2011 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jun 07 08:34:08 2011 -0700"
      },
      "message": "Remove obsolete code for monitoring USB status\n\nChange-Id: I8ac8900b3135f03b7717540b825ff6df76f31c0b\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "29d8da8cefa99e436c13295d4c9bad060ca18a6d",
      "tree": "3608a594ae4a411b8bdfa5238812290090643274",
      "parents": [
        "10a9e42835e7a241e796fe1b9c159dbfb312a69d"
      ],
      "author": {
        "name": "Ken Sumrall",
        "email": "ksumrall@android.com",
        "time": "Wed May 18 17:20:07 2011 -0700"
      },
      "committer": {
        "name": "Ken Sumrall",
        "email": "ksumrall@android.com",
        "time": "Thu Jun 02 16:30:14 2011 -0700"
      },
      "message": "vold: allow to store key in a file on another partition\n\nAdd support for keeping the keys in a separate file on another partition,\nfor devices with no space reserved for a footer after the userdata filesystem.\n\nAdd support for encrypting the volumes managed by vold, if they meet certain\ncriteria, namely being marked as nonremovable and encryptable in vold.fstab.\nA bit of trickiness is required to keep vold happy.\n\nChange-Id: Idf0611f74b56c1026c45742ca82e0c26e58828fe\n"
    },
    {
      "commit": "3c9a73f643f7c782bdd326f628eeea97bec42ae8",
      "tree": "aa371c494fecb6dda3277427e984699ea1b58525",
      "parents": [
        "905ed1fbd34ecb537c8c89affa6fae7c592029dc"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Dec 10 15:07:14 2010 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Dec 10 15:07:14 2010 -0800"
      },
      "message": "Stifle \"Ignoring unknown switch\" logging\n\nChange-Id: I9770ab880f379e2f7f6a93d3c84990edec60a116\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "a28056b38275003895ff5d9576681aca01544822",
      "tree": "8179cf23a1b0906d8e4fc7d186a6df2203a6bb9a",
      "parents": [
        "918e5f9f10b9c1ff929683743ffbf229027ce240"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Thu Oct 28 15:21:24 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Thu Oct 28 15:21:24 2010 -0400"
      },
      "message": "Set VM dirty ratio to zero when UMS is active\n\nImproves UI responsiveness when copying large amount of data to the device.\n\nBUG: 3131847\n\nChange-Id: I4aa5ade7e2cd7e5110c8f0f7ee43bdc57577e11d\nSigned-off-by: Mike Lockwood \u003clockwood@google.com\u003e\n"
    },
    {
      "commit": "918e5f9f10b9c1ff929683743ffbf229027ce240",
      "tree": "a27ad6a7d6b2d4e0d0cdfe66e7149b4367a99b8e",
      "parents": [
        "cbacf78eff70bd43bb899e164ec2ab409bc0904c"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Sep 30 18:00:52 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Sep 30 18:02:34 2010 -0700"
      },
      "message": "Better error code for unmounting not-mounted volumes\n\nENOENT is more descriptive than the generic error that EINVAL gets\nturned into. Then we can actually treat it how we want on the other\nside.\n\nChange-Id: I9b4f3be6308e13f680eae368d2167ab9ee6aae5f\n"
    },
    {
      "commit": "cbacf78eff70bd43bb899e164ec2ab409bc0904c",
      "tree": "955a49db44566aa909b4e5c9e39c374c47c932e9",
      "parents": [
        "a4886f1f8ed72e24a302a91a0ab18bc54b6f585e"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Sep 24 15:11:48 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Sun Sep 26 07:35:17 2010 -0700"
      },
      "message": "Track type of container mounted\n\nOBB and ASEC are tracked in the same active container list, but when it\ncomes time to unmount everything, it was trying to unmount the OBBs\naccording to ASEC rules. This led to the OBB not being unmounted and the\nvolume unmount failing.\n\nChange-Id: I12c1d4d387b8022185d552b63edd61a50b9c0fc3\n"
    },
    {
      "commit": "2dfe297ec47559dbe2297a72bea71cf515c03797",
      "tree": "6e450b33108c9e9937a93603ca3656542b975a74",
      "parents": [
        "a3e06084564c86ff618c40f185f3676b8b629b94"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Sep 17 18:50:51 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Sep 17 18:50:51 2010 -0400"
      },
      "message": "Fixes for devices with internal FAT file system:\n\nOnly share a single partition via UMS if a specific partition\nis specified in vold.fstab (rather than \"auto\")\n\nDo not fail to reformat if MBR cannot be found.\n\nChange-Id: I544ca2ee325c308af656ab9f4732c788a964c156\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "a3e06084564c86ff618c40f185f3676b8b629b94",
      "tree": "4f3f124803330ec2ed41c31c9c8ba34a2b40fef9",
      "parents": [
        "e17e91f63b3cceb2ef670947fd7f9ff3c40ee1a7"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Aug 27 08:31:35 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Sep 02 13:16:53 2010 -0700"
      },
      "message": "Allow execute on mounted ASEC and OBB containers\n\nThis allows us to place shared libraries in these containers which may\nonly be loaded if they are executable.\n\nChange-Id: I78fa9ab6d5c58ec8b98c40004da72aebc0aade2a\n"
    },
    {
      "commit": "508c0e1605b795bbb51cb47d955b89f3df26ca94",
      "tree": "f81d933fa05f1653d6e67d75c756689371316638",
      "parents": [
        "fb7c4d5a8a1031cf0e493ff182dcf458e5fe8c77"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jul 12 09:59:49 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Jul 15 12:41:01 2010 -0700"
      },
      "message": "Additional Obb functionality\n\n* Rename all functions dealing with OBB files to mention Obb\n\n* Add \u0027path\u0027 and \u0027list\u0027 functionality to OBB commands\n\n* Store hashed filename in loop\u0027s lo_crypt_name and keep lo_file_name\n  for the real source filename. That way we can recover it later with an\n  ioctl call.\n\nChange-Id: I29e468265988bfb931d981532d86d7be7b3adfc8\n"
    },
    {
      "commit": "fb7c4d5a8a1031cf0e493ff182dcf458e5fe8c77",
      "tree": "134af6f5d522e4f08a1ad305f585e39ce973acf0",
      "parents": [
        "99635f6c289fe2528c226403ea215c917ce86037"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jun 30 18:48:41 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 07 08:14:32 2010 -0700"
      },
      "message": "Add image mounting commands for OBB files\n\nAllow the mounting of OBB filesystem images if they\u0027re encrypted with\ntwofish and in FAT filesystem format.\n\nChange-Id: I54804e598f46b1f3a784ffe517ebd9d7626de7aa\n"
    },
    {
      "commit": "99635f6c289fe2528c226403ea215c917ce86037",
      "tree": "03b1bdd0e42ec08e6cc361824a28368871e0158c",
      "parents": [
        "acc9e7dcca8978fc809fa5b4d9b819c515a980ff"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jun 25 23:04:04 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Mon Jun 28 08:57:00 2010 -0400"
      },
      "message": "Use new kernel notifications to determine if USB mass storage is available.\n\nThe usb_mass_storage switch no longer exists in our 2.6.35 kernel.\nInstead we will consider mass storage to be available if both USB is connected\nand the USB mass storage function is enable.\n\nChange-Id: I730d1b3cb3cac664fc2abcdc36cd39856a08404a\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "acc9e7dcca8978fc809fa5b4d9b819c515a980ff",
      "tree": "e87097a4721ae08f01f153a86800d90ff4003de9",
      "parents": [
        "f69b3b9af78c94b5ce56a73e086b22b585ea5c85"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Jun 18 19:06:50 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Sun Jun 20 22:03:10 2010 -0700"
      },
      "message": "Change ASCII conversion for hash and add tests\n\nHash was printed using snprintf(), but we can just write yet another hex\nconversion utility!\n\nChange-Id: I04f1992deaf5bf1b3e2751c8f07072f8ed6660e9\n"
    },
    {
      "commit": "1a06edaf4db4e9c520624bcc06e0e13ee470d90e",
      "tree": "274a062c49efd0f44af1943ed8b7ab51e8211be0",
      "parents": [
        "97ac40e4e6f3ed0bd5d6878d7d8d4a54fcaecb76"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Thu Apr 15 12:58:50 2010 -0700"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Thu Apr 15 12:59:15 2010 -0700"
      },
      "message": "vold: Ensure we cleanup secure containers on card removal.\n\nFixes bug: http://b/issue?id\u003d2567572\n\nNote: The framework will still likely restart since the system_server\nis holding references to assets on the card which are mmaped, but\nat least now storage will be available when a new card is re-inserted.\n\nChange-Id: I4e195c0c666426b93da47198fa826a6f58d855a9\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "97ac40e4e6f3ed0bd5d6878d7d8d4a54fcaecb76",
      "tree": "824665f991e4ec6aa6a6a0fbf491a06e24cae500",
      "parents": [
        "da62e7c00259f6b98696cedb7d031f04951caef0"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Mar 24 10:24:19 2010 -0700"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Thu Mar 25 08:02:28 2010 -0700"
      },
      "message": "vold: Switch from LOG -\u003e SLOG\n\nChange-Id: I48ee8bd90b47f5845f069cdf4d1b8ba6ecdb1b39\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "88ac2c06539485942bf414efda2d39647fa1a415",
      "tree": "2871f9e624e115b4c441c5f05b18c760fc31d538",
      "parents": [
        "96597e8b840ef671fe5279f8bd64fb09a8b38d4c"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Mar 23 11:15:58 2010 -0700"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Mar 23 11:15:58 2010 -0700"
      },
      "message": "vold: asec path cmd now returns OpFailedStorageNotFound if id doesn\u0027t exist\n\nChange-Id: Icbe3de7c28505f7496c8f8edea126c7b616de475\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "96597e8b840ef671fe5279f8bd64fb09a8b38d4c",
      "tree": "26acc737d672b4e52180bf5f491a4ad0819c3574",
      "parents": [
        "7b18a7b36f61574c0f0bdde0a7409dc36676fa12"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Mar 17 09:50:54 2010 -0700"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Mar 17 09:50:54 2010 -0700"
      },
      "message": "vold: Add mounted filesystems to dump cmd\n\nChange-Id: If025e7ee10a79ff089920a6d0c1a52358b2d2c22\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "7b18a7b36f61574c0f0bdde0a7409dc36676fa12",
      "tree": "2c9230487adece3a5bb6722ceda531ddc1cd33d9",
      "parents": [
        "befd59c152835b815665ec3c5e453b55e70d5f0b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Mar 15 13:13:41 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Mar 15 14:39:40 2010 -0700"
      },
      "message": "vold: Convert to use OpenSSL MD5 API\n\nChange-Id: I9b84370fa9a98464c211ebe8983be8dbe9dd7ccd\n"
    },
    {
      "commit": "befd59c152835b815665ec3c5e453b55e70d5f0b",
      "tree": "6f255ba0a2437331bb2c9695e075c106b865d643",
      "parents": [
        "cb4dac8a5243f6673b0590019b5b28a01bd3e343"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Mon Mar 15 10:28:21 2010 -0700"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Mon Mar 15 10:28:21 2010 -0700"
      },
      "message": "vold: remove some dead code\n\nChange-Id: Iaeb5d3334ec22ed31da9734bb8d7cd17e6a40eaf\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "d9a4e358614a0c5f60cc76c0636ee4bb02004a32",
      "tree": "00aaf23db6a1d1f4d385c5ed0ccfa8e711f41e19",
      "parents": [
        "2a5b8ce09b8836a8463ef9beaaff865c36ca5e6a"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Fri Mar 12 13:32:47 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Sat Mar 13 16:42:19 2010 -0800"
      },
      "message": "vold: Bugfixes \u0026 cleanups\n\n  - Fix issue where container-names \u003e 64 bytes were getting truncated in the\n    kernel. lo_name is only 64 bytes in length, so we now hash the container\n    id via md5\n  - Add \u0027dump\u0027 command to dump loop and devicemapper status\n  - Add \u0027debug\u0027 command to enable more detailed logging at runtime\n  - Log vold IPC arguments (minus encryption keys)\n  - Fix premature return from Loop::lookupActive() and friends\n\nChange-Id: I0e833261a445ce9dc1a8187e5501d27daba1ca76\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "fcf24fe62f98c5d44431aa575555569c2c7a29b0",
      "tree": "807d8d665f8e457c6fb6e0fb023e486aa581ed78",
      "parents": [
        "2350c44ff39b4cb2940893964a05f778fc80a436"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Mar 03 12:37:32 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Mar 03 12:40:34 2010 -0800"
      },
      "message": "vold: Add a versioned superblock to secure containers.\n\nAdd an un-encrypted superblock to the end of a secure container to\nhelp identify the crypto cipher used. This is required in order to\nprovide some semblence of versioning, in case we have cause to\nchange the crypto type on an update - say for example switching\nfrom software to hardware encryption, or from 128 -\u003e a zillion\nbit keys.\n\nNOTE: This format is incompatible with previous secure containers.\nAfter this change they will no longer be mountable.\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "a1091cb0c448a933068f9120fe6946c09812bfb6",
      "tree": "beeac205b538517083eda0b1fd5917a6b1c78b8e",
      "parents": [
        "55013f7131ffe094e1c7d929cfc32b3b25096a9b"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Sun Feb 28 20:17:20 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Sun Feb 28 20:17:20 2010 -0800"
      },
      "message": "vold: Allow creation of a container with no filesystem\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "55013f7131ffe094e1c7d929cfc32b3b25096a9b",
      "tree": "c799f3bc244bd00f9c991e6fba855d22425d2b3e",
      "parents": [
        "12f4b89046b54de1bdc188b7057ba77d7566e573"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Feb 24 12:12:34 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Feb 24 12:12:34 2010 -0800"
      },
      "message": "vold: Fix uninitialized mountpoint bug\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "12f4b89046b54de1bdc188b7057ba77d7566e573",
      "tree": "75c1ce570a13a852a8721aa816334dbccd72e888",
      "parents": [
        "96956ed0e220cb62a4a96136976ded0d8c2d9075"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Feb 24 11:43:22 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Feb 24 11:43:22 2010 -0800"
      },
      "message": "vold: Retry rmdir of asec mount point\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "96956ed0e220cb62a4a96136976ded0d8c2d9075",
      "tree": "c48b0c026597151114d25f6f75d5bfbcc78bab54",
      "parents": [
        "0e382532f32e97f90056250f2b13c59840d2c6b4"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Feb 24 08:42:51 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Feb 24 08:42:51 2010 -0800"
      },
      "message": "vold: Prohibit container rename when dst container is mounted\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "0e382532f32e97f90056250f2b13c59840d2c6b4",
      "tree": "53b7135b9b9048199520942281a9e61ec96f2248",
      "parents": [
        "52c2ccb6d25b94b96685efd4803226727710fbae"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Feb 24 08:25:55 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Feb 24 08:25:55 2010 -0800"
      },
      "message": "vold: fix infinite loop when failing to unmount a busy container in unmountVolume()\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "3bb6020e461e8872e8df0775cba6eb32e06b93ec",
      "tree": "97acf58f5a69cae34a09205c02e5cc782d19582a",
      "parents": [
        "8f2875b29780312f4edda3d831cc8a99e1648dd5"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Fri Feb 19 18:14:36 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Fri Feb 19 18:14:36 2010 -0800"
      },
      "message": "vold: Stage the mounting of media to hide the ASEC imagefile directory\n\n  In order to protect the \u0027/android_secure\u0027 directory on VFAT removable media\nfrom being mucked with by 3rd party applications on the device, we hide the\ndirectory with a read-only, zero-sized tmpfs mounted on-top. A reference to the\nhidden directory is kept by a bind-mount which is mounted at a location which\nonly root can access.\n\nStaging consists of:\n  1. Mount checked media at a secure location (/mnt/secure/staging)\n  2. Ensure /android_secure exists on the media, (creating if it doesnt)\n  3. Bind-mount /mnt/secure/staging/android_secure -\u003e /mnt/secure/asec\n     (where only root can access it)\n  4. Mount an RDONLY zero-sized tmpfs over /mnt/secure/staging/android_secure\n  5. Atomically move /mnt/secure/staging to the publicly accessable storage\n     directory (/mnt/sdcard)\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "4ba8948dc16463053e21cda5744f519a555080d0",
      "tree": "b033c6371d77569f490bf0b4a2a7e64dbac58882",
      "parents": [
        "d31e380bd9689dd9629b510ffe324707e261b439"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Thu Feb 18 09:00:18 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Thu Feb 18 11:48:49 2010 -0800"
      },
      "message": "vold: Add \u0027force\u0027 option to anything that can cause an unmount\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "d31e380bd9689dd9629b510ffe324707e261b439",
      "tree": "b82e3fb386be426389f418548b1dc6fe55e680d4",
      "parents": [
        "b3b4318ab8e2908f7b3c75fb68a5cbfc48fe6ab2"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Thu Feb 18 08:37:45 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Thu Feb 18 11:48:49 2010 -0800"
      },
      "message": "vold2: Don\u0027t allow containers \u003c 1mb, and clean up some logging\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "586536c60b773e3517531ad8a6cb0de6722c67fc",
      "tree": "afd0ab67daf64d18ef7bfca282d82e14d74d2f09",
      "parents": [
        "8c940ef7dbd423cadc92982b44a65ed1014389e2"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 16 17:12:00 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 16 17:12:00 2010 -0800"
      },
      "message": "vold: Refactor Processkiller and add command to return users of a mount point\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "8c940ef7dbd423cadc92982b44a65ed1014389e2",
      "tree": "c9184aaf7d322f94dfda24f46fb29ba42061a033",
      "parents": [
        "c6fc646af4f957dc7a586a448e63c458480d8355"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Sat Feb 13 14:19:53 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Sat Feb 13 18:59:48 2010 -0800"
      },
      "message": "vold: Fix devmapper/ptmx fd leak, and give asec unmount more time\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "b9aed74b146beb7499ebc5775e8ae179d16900ef",
      "tree": "64c7bbb8a16c2510b648452334d25e5e6d467144",
      "parents": [
        "f5c61980969a0b49bda37b5dc94ffe675ebd5a5a"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Thu Feb 04 15:07:01 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Thu Feb 04 15:07:01 2010 -0800"
      },
      "message": "vold: Fix a few bugs\n\n - share command was taking wrong arguments\n - shared command was returning two termination codes\n - Force FAT32 cluster size to 4k when formatting\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "f5c61980969a0b49bda37b5dc94ffe675ebd5a5a",
      "tree": "ab962d69410ec00231f7fbb202f7cdc4a65bc7ca",
      "parents": [
        "2b22552f9a3b077f9d0a3624ac6f9b8b332f8a7a"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Feb 03 11:04:46 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Feb 03 11:04:46 2010 -0800"
      },
      "message": "vold: Silly rabbit, don\u0027t use unlink() when you mean\u0027t rmdir()\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "eba65e9d438a05f1c5dfd0f8d31bc463a5d08eee",
      "tree": "1811be052e092794889020492ec909295e56b7d3",
      "parents": [
        "048b0801fcd6fcfbb8fa812284c751181e4821b8"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Fri Jan 29 05:15:16 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Feb 02 08:03:50 2010 -0800"
      },
      "message": "vold: Bloat reduction\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "048b0801fcd6fcfbb8fa812284c751181e4821b8",
      "tree": "01486b36199df7a155390a0b3fce968b4f7acdde",
      "parents": [
        "68f8ebdb24dfe1fe94de2c8fc11084ebfab9fa5d"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Sat Jan 23 08:17:06 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Sat Jan 23 08:17:06 2010 -0800"
      },
      "message": "vold: Add support for renaming secure containers\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "68f8ebdb24dfe1fe94de2c8fc11084ebfab9fa5d",
      "tree": "a14195a122db6e0fddc74823aba3f7766025321c",
      "parents": [
        "a4dc3b15b7886f661675ab5243800c80831e549b"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Sat Jan 23 07:21:21 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Sat Jan 23 07:23:59 2010 -0800"
      },
      "message": "vold2: update some debugging\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "a4dc3b15b7886f661675ab5243800c80831e549b",
      "tree": "5937c32749d5feb22d1ff689f6b89c919efeba55",
      "parents": [
        "5817821cf10b5f7d13eb693ffbc3f80f13bc681b"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Fri Jan 22 14:48:31 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Fri Jan 22 14:48:31 2010 -0800"
      },
      "message": "vold: Don\u0027t fail to return path if volume isn\u0027t mounted\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "88705166ab82057090a070c6d4200c3d9db76f11",
      "tree": "271b70fda4919c73e6741b4a50617b63eb2872ff",
      "parents": [
        "0586d54053ee00e6d6523d4f125282ccb9a24aab"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Fri Jan 15 09:26:28 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Fri Jan 15 09:26:28 2010 -0800"
      },
      "message": "vold: Unmount secure containers when the underlying media is removed.\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "0586d54053ee00e6d6523d4f125282ccb9a24aab",
      "tree": "a4ab1d9721cceace7f5b6a3797e2926f9c3a2e60",
      "parents": [
        "dfe79492a4f5280e9de2db6fa749a7781c59f2a6"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Jan 12 15:38:59 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Tue Jan 12 15:38:59 2010 -0800"
      },
      "message": "vold2: Fix issue with destroying / unmounting asec\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "8b8f71b1d760411279f3b07a5c97709f052c689e",
      "tree": "42b1009d8619b23173b15aa0c9386e184d40f9ed",
      "parents": [
        "b78a32c1d5eeb243bdac0eaf18effb1897f1ee67"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Mon Jan 11 09:17:25 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Mon Jan 11 09:17:25 2010 -0800"
      },
      "message": "vold: Internally use sector counts for asec lengths\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "b78a32c1d5eeb243bdac0eaf18effb1897f1ee67",
      "tree": "26d922ac90f359acf67cf49a5ed7ea40559922a1",
      "parents": [
        "8da6bcb006f4e4257cdd685e35e910a6334f6cea"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Sun Jan 10 13:02:12 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Mon Jan 11 08:12:52 2010 -0800"
      },
      "message": "vold: Add encrypted ASEC support via devmapper\n\n- Supports up to 4096 containers\n- Keys are now implemented - specifying a key of \u0027none\u0027 means no encryption.\n  Otherwise, the key must be a string of 32 characters\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "8da6bcb006f4e4257cdd685e35e910a6334f6cea",
      "tree": "f13b9435711bf6728c1cc09e711db3fb982a6b4a",
      "parents": [
        "8d934caeae971d7d08ca33e98dae294eb57c402d"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Sat Jan 09 12:24:05 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Sat Jan 09 12:24:05 2010 -0800"
      },
      "message": "vold: Increase max supported loop devices to 255\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "23969931fad6e993832208f099f6eea0f6f76eb5",
      "tree": "c6336161c3ddedb8a0ff10ed90f72616f68fc23e",
      "parents": [
        "cff5ec3d360b699ad13df05670efe0d0a7386fbe"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Sat Jan 09 07:08:06 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Sat Jan 09 07:08:06 2010 -0800"
      },
      "message": "vold: Use process-killer when unmounting asec containers\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "cff5ec3d360b699ad13df05670efe0d0a7386fbe",
      "tree": "b4c3ecede5d148e7b08b255e4eb45b35bd97caf8",
      "parents": [
        "1bc9558895dbb38b2103345ab90016f318c37bff"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Fri Jan 08 12:31:44 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Fri Jan 08 12:31:44 2010 -0800"
      },
      "message": "vold: Temporarily disable asec mountpoint permissions\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "eb13a90bb96b329d8e24a6c3d4720ae88451d301",
      "tree": "0d82e59e80b4d93b9a34f4f10c0fa7173189d84f",
      "parents": [
        "fff0b47998a722d57eea6a07350bbd7a6032b3cc"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Thu Jan 07 12:12:50 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Thu Jan 07 12:15:00 2010 -0800"
      },
      "message": "vold: Don\u0027t freak out if an asec mountpoint already exists\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    },
    {
      "commit": "fff0b47998a722d57eea6a07350bbd7a6032b3cc",
      "tree": "dc917e75cb94578ecea6e161711036293a5137e7",
      "parents": [
        "a19b250bd273455933ca3502cf2c2e0a803aff77"
      ],
      "author": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Jan 06 19:19:46 2010 -0800"
      },
      "committer": {
        "name": "San Mehat",
        "email": "san@google.com",
        "time": "Wed Jan 06 19:19:46 2010 -0800"
      },
      "message": "vold2: Enable support for custom mount perm masks and wire to asec\n\nSigned-off-by: San Mehat \u003csan@google.com\u003e\n"
    }
  ],
  "next": "a19b250bd273455933ca3502cf2c2e0a803aff77"
}
