1. 21 Oct, 2015 1 commit
  2. 01 Jul, 2015 1 commit
    • Jeff Sharkey's avatar
      Trim both internal and adopted private storage. · c86ab6f5
      Jeff Sharkey authored
      Refactor fstrim code to be encapsulated in unique task object, and
      give it option of benchmarking when finished.  Trimming now includes
      both storage from fstab and adopted private volumes.  Cleaner timing
      stats are logged for each unique volume.
      
      Add wakelock during ongoing async move tasks.  Push disk sysfs path
      to framework so it can parse any SD card registers as desired.
      
      Bug: 21831325
      Change-Id: I76577685f5cae4929c251ad314ffdaeb5eb1c8bf
      c86ab6f5
  3. 26 Jun, 2015 1 commit
    • Jeff Sharkey's avatar
      Let's reinvent storage, yet again! · 66270a21
      Jeff Sharkey authored
      Now that we're treating storage as a runtime permission, we need to
      grant read/write access without killing the app.  This is really
      tricky, since we had been using GIDs for access control, and they're
      set in stone once Zygote drops privileges.
      
      The only thing left that can change dynamically is the filesystem
      itself, so let's do that.  This means changing the FUSE daemon to
      present itself as three different views:
      
      /mnt/runtime_default/foo - view for apps with no access
      /mnt/runtime_read/foo - view for apps with read access
      /mnt/runtime_write/foo - view for apps with write access
      
      There is still a single location for all the backing files, and
      filesystem permissions are derived the same way for each view, but
      the file modes are masked off differently for each mountpoint.
      
      During Zygote fork, it wires up the appropriate storage access into
      an isolated mount namespace based on the current app permissions.  When
      the app is granted permissions dynamically at runtime, the system
      asks vold to jump into the existing mount namespace and bind mount
      the newly granted access model into place.
      
      Bug: 21858077
      Change-Id: Iade538e4bc7af979fe20095f74416e8a0f165a4a
      66270a21
  4. 22 Jun, 2015 1 commit
    • Jeff Sharkey's avatar
      Add method to forget private partition keys. · bc40cc8f
      Jeff Sharkey authored
      Report both the disk and the partition GUID for private volumes to
      userspace, and offer to forget the encryption key for a given
      partition GUID.
      
      Bug: 21782268
      Change-Id: Ie77a3a58e47bf3563cdb3e4b0edfab1de4d0e6b4
      bc40cc8f
  5. 10 Jun, 2015 1 commit
  6. 15 May, 2015 1 commit
    • Jeff Sharkey's avatar
      Initial pass at storage benchmarks. · 5a6bfca1
      Jeff Sharkey authored
      Now that we're offering to store private app data on adopted storage
      devices, the performance of those devices is much more important to
      overall user experience.
      
      To help set user expectations, this change offers to execute a
      real-world benchmark on a storage device, returning a metric that can
      be used to compare internal and external storage.  The benchmark is
      generated from the strace-instrumented storage access patterns of
      typical apps.
      
      A typical device completes the benchmark in under two seconds on
      internal storage, a UHS-3 SD card is even faster (!), but a very slow
      Class 4 SD card takes about 30 seconds to complete, giving us a clear
      signal.
      
      The measured benchmark numbers are logged along with information
      about the storage device, such as manufacturer, model, etc.  Card
      serial numbers are scrubbed from output.
      
      Bug: 21172095
      Change-Id: I9b2713dafdfdfcf5d97bf1bc21841f39409a7e54
      5a6bfca1
  7. 21 Apr, 2015 1 commit
    • Jeff Sharkey's avatar
      Wider volume mutation lock, move force adoptable. · c8e04c5a
      Jeff Sharkey authored
      We eventually should move back to per-disk locks, but use a giant
      lock to keep development rolling forward.  Also move force adoptable
      flag to framework since, since encrypted devices don't have persisted
      properties loaded early during boot.
      
      Bug: 19993667
      Change-Id: Ifa3016ef41b038f8f71fc30bc81596cfd21dcd2a
      c8e04c5a
  8. 18 Apr, 2015 1 commit
    • Jeff Sharkey's avatar
      Volumes know parent disks; unsupported disks. · f1b996df
      Jeff Sharkey authored
      This is cleaner and more direct than the reverse of having the disk
      publish child volume membership.  Rename state constants to match
      public API.  Add state representing bad removal.  Make it clear that
      volume flags are related to mounting.
      
      Send new unsupported disk event when we finish scanning an entire
      disk and have no meaningful volumes.
      
      Bug: 19993667
      Change-Id: I08a91452ff561171a484d1da5745293ec893aec0
      f1b996df
  9. 02 Apr, 2015 1 commit
  10. 01 Apr, 2015 1 commit
    • Jeff Sharkey's avatar
      Support for private (adopted) volumes. · 9c48498f
      Jeff Sharkey authored
      This adds support for private volumes which is just a filesystem
      wrapped in a dm-crypt layer.  For now we're using the exact same
      configuration as internal encryption (aes-cbc-essiv:sha256), but we
      don't store any key material on the removable media.  Instead, we
      store the key on internal storage, and use the GPT partition GUID
      to identify which key should be used.
      
      This means that private external storage is effectively as secure as
      the internal storage of the device.  That is, if the internal storage
      is encrypted, then our external storage key is also encrypted.
      
      When partitioning disks, we now support a "private" mode which has
      a PrivateVolume partition, and a currently unused 16MB metadata
      partition reserved for future use.  It also supports a "mixed" mode
      which creates both a PublicVolume and PrivateVolume on the same
      disk.  Mixed mode is currently experimental.
      
      For now, just add ext4 support to PrivateVolume; we'll look at f2fs
      in a future change.  Add VolumeBase lifecycle for setting up crypto
      mappings, and extract blkid logic into shared method.  Sprinkle some
      more "static" around the cryptfs code to improve invariants.
      
      Bug: 19993667
      Change-Id: Ibd1df6250735b706959a1eb9d9f7219ea85912a0
      9c48498f
  11. 31 Mar, 2015 1 commit
    • Jeff Sharkey's avatar
      Progress towards dynamic storage support. · 36801ccc
      Jeff Sharkey authored
      Wire up new Disk and VolumeBase objects and events to start replacing
      older DirectVolume code.  Use filesystem UUID as visible PublicVolume
      name to be more deterministic.
      
      When starting, create DiskSource instances based on fstab, and watch
      for kernel devices to appear.  Turn matching devices into Disk
      objects, scan for partitions, and create any relevant VolumeBase
      objects.  Broadcast all of these events towards userspace so the
      framework can decide what to mount.
      
      Keep track of the primary VolumeBase, and update the new per-user
      /storage/self/primary symlink for all started users.
      
      Provide a reset command that framework uses to start from a known
      state when runtime is restarted.  When vold is unexpectedly killed,
      try recovering by unmounting everything under /mnt and /storage
      before moving forward.
      
      Remove UMS sharing support for now, since no current devices support
      it; MTP is the recommended solution going forward because it offers
      better multi-user support.
      
      Switch killProcessesWithOpenFiles() to directly take signal.  Fix
      one SOCK_CLOEXEC bug, but SELinux says there are more lurking.
      
      Bug: 19993667
      Change-Id: I2dad1303aa4667ec14c52f774e2a28b3c1c1ff6d
      36801ccc
  12. 22 Aug, 2014 1 commit
    • Jeff Sharkey's avatar
      ASEC resize tweaking, allow read-write mounting. · 43ed123d
      Jeff Sharkey authored
      Resize is no-op when sector count is unchanged; the caller can't
      anticipate how vold does its sector calculations.
      
      After resizing, we need to mount the container read-write, so allow
      the caller to request "ro" or "rw" mode.
      
      Handle ENOTSUP when trying to fallocate() on some filesystems
      
      Bug: 16514385
      Change-Id: I0d3a378280d4c36d14f8108ff428102283d583fa
      43ed123d
  13. 25 Jul, 2014 1 commit
    • JP Abgrall's avatar
      vold: support "volume list [broadcast]" command · 40b64a68
      JP Abgrall authored
      
      Sometimes when an sdcard is already mounted,
      some info like uuid and label are not re-broadcast to new listeners.
      The extra argument to list allows late listeners to catch up by asking
      volume list to broadcast that info again.
      
      Bug: 16253597
      Bug: 16306775
      Change-Id: Ie7d0c1132c22d307a5b2a0e50075a3716138d00b
      Signed-off-by: default avatarBenson Huang <benson.huang@mediatek.com>
      (cherry picked from commit 85f4700f44170b772697e627b3075dcb9137e1b7)
      40b64a68
  14. 10 Jun, 2014 1 commit
  15. 27 Jan, 2014 2 commits
    • Nick Kralevich's avatar
      Validate asec names. · 0de7c611
      Nick Kralevich authored
      Make sure asec names only contain alphanumeric, underscores,
      dots, or dashes. Don't allow double dots.
      
      Bug: 12504045
      
      (cherry picked from commit 66962609)
      
      Change-Id: Ia9d04f373aa95878b2e81584c4167dc2d4aa0c78
      0de7c611
    • Nick Kralevich's avatar
      Validate asec names. · 66962609
      Nick Kralevich authored
      Make sure asec names only contain alphanumeric, underscores,
      dots, or dashes. Don't allow double dots.
      
      Bug: 12504045
      Change-Id: I3dd0350c79327dc91a5a10d5724d85d99814e769
      66962609
  16. 20 Sep, 2013 1 commit
    • Jeff Sharkey's avatar
      Add mkdirs() command. · 71ebe154
      Jeff Sharkey authored
      Apps without sdcard_r or sdcard_rw need to have someone create
      package-specific directories on their behalf.  If apps have trouble
      creating on their own, they now delegate through system to have
      vold create the paths.
      
      Requires that the requested path is actually managed by vold.
      
      Bug: 10577808
      Change-Id: I6835fc8f52240f9de07f89742a426a153e3ca32a
      71ebe154
  17. 13 Jun, 2013 1 commit
    • Ken Sumrall's avatar
      vold: Add an optional wipe paramter to the volume format command · 9caab76c
      Ken Sumrall authored
      The new wipe option to the vold format command will invoke BLKDISCARD
      on the partition before invoking newfs_msdos.  This will be used whenever
      a full wipe of the device is wanted, as this is more secure than just
      doing newfs_msdos.
      
      Bug: 9392982
      Change-Id: Ie106f1b9cc70abc61206006d1821641c27c7ccae
      9caab76c
  18. 13 Aug, 2012 1 commit
    • Kenny Root's avatar
      Only cleanup ASECs in external storage DO NOT MERGE · eacf7e03
      Kenny Root authored
      Any ASEC or OBB files were unmounted when USB storage was set to UMS
      mode. This changes it so only ASEC files on external storage and OBB
      files mounted from external storage are unmounted.
      
      (Cherry-pick of 93ecb38d)
      
      Bug: 6948035
      Change-Id: Ib60727bd360caa32173797ff5b4e1e21fcf20054
      eacf7e03
  19. 09 Aug, 2012 1 commit
    • Kenny Root's avatar
      Only cleanup ASECs in external storage · 93ecb38d
      Kenny Root authored
      Any ASEC or OBB files were unmounted when USB storage was set to UMS
      mode. This changes it so only ASEC files on external storage and OBB
      files mounted from external storage are unmounted.
      
      Bug: 6948035
      Change-Id: I91bc09ee5b792970b0eef895f6886f3ffad00e8f
      93ecb38d
  20. 15 Jun, 2012 2 commits
    • Ken Sumrall's avatar
      Unmount all asec apps before encrypting · 4053aaef
      Ken Sumrall authored
      Now that forward locked apps are stored on /data as asec image files
      that are mounted, they need to be unmounted before /data can be unmounted
      so it can be encrypted.
      
      Change-Id: I7c87deb52aaed21c8ad8ce8aceb7c15c2338620a
      4053aaef
    • Ken Sumrall's avatar
      Unmount all asec apps before encrypting · 425524db
      Ken Sumrall authored
      Now that forward locked apps are stored on /data as asec image files
      that are mounted, they need to be unmounted before /data can be unmounted
      so it can be encrypted.
      
      Change-Id: I7c87deb52aaed21c8ad8ce8aceb7c15c2338620a
      425524db
  21. 25 Apr, 2012 1 commit
    • Kenny Root's avatar
      Add in ext4 support for ASEC containers · 344ca108
      Kenny Root authored
      Now forward locked applications will be in ASEC containers both internal
      to the system and externally.
      
      This change adds support for putting applications in ext4-based ASECs.
      
      Change-Id: I8d6765b72dd2606e429c067b47a2dbcaa8bef37d
      344ca108
  22. 01 Sep, 2011 1 commit
    • Ken Sumrall's avatar
      Add the ability to revert a crypto mapping when unmounting a volume · 0b8b5971
      Ken Sumrall authored
      Add the force_and_revert option to the unmount command which will force
      the unmount, and revert a crypto mapping.  This is used during factory
      reset so that when the internal sdcard volume is formatted, it formats
      the raw device, not the encrypted mapping.
      
      Change-Id: I36b6ff9bb54863b121de635472a303bf4a2334a9
      0b8b5971
  23. 11 Jul, 2011 1 commit
  24. 27 Jun, 2011 1 commit
  25. 14 Jun, 2011 1 commit
  26. 07 Jun, 2011 1 commit
  27. 02 Jun, 2011 1 commit
    • Ken Sumrall's avatar
      vold: allow to store key in a file on another partition · 29d8da8c
      Ken Sumrall authored
      Add support for keeping the keys in a separate file on another partition,
      for devices with no space reserved for a footer after the userdata filesystem.
      
      Add support for encrypting the volumes managed by vold, if they meet certain
      criteria, namely being marked as nonremovable and encryptable in vold.fstab.
      A bit of trickiness is required to keep vold happy.
      
      Change-Id: Idf0611f74b56c1026c45742ca82e0c26e58828fe
      29d8da8c
  28. 28 Oct, 2010 1 commit
  29. 26 Sep, 2010 1 commit
    • Kenny Root's avatar
      Track type of container mounted · cbacf78e
      Kenny Root authored
      OBB and ASEC are tracked in the same active container list, but when it
      comes time to unmount everything, it was trying to unmount the OBBs
      according to ASEC rules. This led to the OBB not being unmounted and the
      volume unmount failing.
      
      Change-Id: I12c1d4d387b8022185d552b63edd61a50b9c0fc3
      cbacf78e
  30. 15 Jul, 2010 1 commit
    • Kenny Root's avatar
      Additional Obb functionality · 508c0e16
      Kenny Root authored
      * Rename all functions dealing with OBB files to mention Obb
      
      * Add 'path' and 'list' functionality to OBB commands
      
      * Store hashed filename in loop's lo_crypt_name and keep lo_file_name
        for the real source filename. That way we can recover it later with an
        ioctl call.
      
      Change-Id: I29e468265988bfb931d981532d86d7be7b3adfc8
      508c0e16
  31. 07 Jul, 2010 1 commit
    • Kenny Root's avatar
      Add image mounting commands for OBB files · fb7c4d5a
      Kenny Root authored
      Allow the mounting of OBB filesystem images if they're encrypted with
      twofish and in FAT filesystem format.
      
      Change-Id: I54804e598f46b1f3a784ffe517ebd9d7626de7aa
      fb7c4d5a
  32. 28 Jun, 2010 1 commit
  33. 21 Jun, 2010 1 commit
  34. 15 Apr, 2010 1 commit
  35. 15 Mar, 2010 1 commit
  36. 14 Mar, 2010 1 commit
    • San Mehat's avatar
      vold: Bugfixes & cleanups · d9a4e358
      San Mehat authored
      
        - Fix issue where container-names > 64 bytes were getting truncated in the
          kernel. lo_name is only 64 bytes in length, so we now hash the container
          id via md5
        - Add 'dump' command to dump loop and devicemapper status
        - Add 'debug' command to enable more detailed logging at runtime
        - Log vold IPC arguments (minus encryption keys)
        - Fix premature return from Loop::lookupActive() and friends
      
      Change-Id: I0e833261a445ce9dc1a8187e5501d27daba1ca76
      Signed-off-by: default avatarSan Mehat <san@google.com>
      d9a4e358
  37. 18 Feb, 2010 1 commit
  38. 02 Feb, 2010 1 commit