History log of /system/vold/VolumeManager.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
c86ab6f538bec63638c168d6c843fe7cf73add3b 26-Jun-2015 Jeff Sharkey <jsharkey@android.com> Trim both internal and adopted private storage.

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
/system/vold/VolumeManager.h
66270a21df1058434e4d63691221f11ff5387a0f 24-Jun-2015 Jeff Sharkey <jsharkey@android.com> Let's reinvent storage, yet again!

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
/system/vold/VolumeManager.h
bc40cc8f07f69e0e26fc41516e2a83f0a8becbe0 18-Jun-2015 Jeff Sharkey <jsharkey@android.com> Add method to forget private partition keys.

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
/system/vold/VolumeManager.h
bd3038df74ace540d46c530a11e3145f922e1b42 10-Jun-2015 Jeff Sharkey <jsharkey@android.com> Start tracking added users with serial numbers.

vold will eventually use the serial numbers to clean up stale user
directories when mounting private storage devices.

Bug: 20275572
Change-Id: Ia29cb5da23e969f3087bb5caa5dc8f4e88f07613
/system/vold/VolumeManager.h
5a6bfca1638760b87cf64c5ffb48ff3557cc0563 15-May-2015 Jeff Sharkey <jsharkey@android.com> Initial pass at storage benchmarks.

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
/system/vold/VolumeManager.h
c8e04c5a8285de07d2c84bfbda8eda2c14a9457d 21-Apr-2015 Jeff Sharkey <jsharkey@android.com> Wider volume mutation lock, move force adoptable.

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
/system/vold/VolumeManager.h
f1b996df6f8283aac6953b22bd9e2496d8c30c86 18-Apr-2015 Jeff Sharkey <jsharkey@android.com> Volumes know parent disks; unsupported disks.

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
/system/vold/VolumeManager.h
9f18fe7807a4e4089778243dbbd08d154ec15540 02-Apr-2015 Jeff Sharkey <jsharkey@android.com> Remove unused code.

Bug: 19993667
Change-Id: I1f6519655c5a366eca25e2329e1bf95d81b3bf8c
/system/vold/VolumeManager.h
9c48498f4529f623650c56d03e63324c8d813032 31-Mar-2015 Jeff Sharkey <jsharkey@android.com> Support for private (adopted) volumes.

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
/system/vold/VolumeManager.h
36801cccf27152c9eca5aab6ba3527221525110f 14-Mar-2015 Jeff Sharkey <jsharkey@android.com> Progress towards dynamic storage support.

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
/system/vold/VolumeManager.h
43ed123d3fc1a3edf3660cd0e2528e971abc399e 22-Aug-2014 Jeff Sharkey <jsharkey@android.com> ASEC resize tweaking, allow read-write mounting.

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
/system/vold/VolumeManager.h
40b64a684124809132e04e3c499aa1e101fe808f 25-Jul-2014 JP Abgrall <jpa@google.com> vold: support "volume list [broadcast]" command

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: Benson Huang <benson.huang@mediatek.com>
(cherry picked from commit 85f4700f44170b772697e627b3075dcb9137e1b7)
/system/vold/VolumeManager.h
fcd34a0ddd45db83b7bc71ff47cba9b789089fdd 22-May-2014 Daniel Rosenberg <drosen@google.com> Added support for ext4 ASEC resizing.

ASECs formatted as ext4 can now be resized using vdc asec resize.
Refactored some common code.
Requires resize2fs.

Change-Id: Ie78bb6015114a7bc4af42b16d1f299322ffc1e2a
Signed-off-by: Daniel Rosenberg <drosen@google.com>
/system/vold/VolumeManager.h
669626096513cf741646cf18a9e8ba246d359596 27-Jan-2014 Nick Kralevich <nnk@google.com> Validate asec names.

Make sure asec names only contain alphanumeric, underscores,
dots, or dashes. Don't allow double dots.

Bug: 12504045
Change-Id: I3dd0350c79327dc91a5a10d5724d85d99814e769
/system/vold/VolumeManager.h
71ebe154a5fbbb4b394a439ff0b6b9c84fbd04f5 18-Sep-2013 Jeff Sharkey <jsharkey@android.com> Add mkdirs() command.

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
/system/vold/VolumeManager.h
9caab76c6b5aefdeeb1715a3695491ca793b8c18 12-Jun-2013 Ken Sumrall <ksumrall@android.com> vold: Add an optional wipe paramter to the volume format command

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
/system/vold/VolumeManager.h
93ecb38daded7583a4a61f4f22519bb7a8a8c154 09-Aug-2012 Kenny Root <kroot@google.com> Only cleanup ASECs in external storage

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
/system/vold/VolumeManager.h
425524dba1552ab3d2ad39e205e65d0a2af997f2 15-Jun-2012 Ken Sumrall <ksumrall@android.com> Unmount all asec apps before encrypting

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
/system/vold/VolumeManager.h
344ca10856f3d3087a3288ce8f91ad83665d93fb 04-Apr-2012 Kenny Root <kroot@google.com> Add in ext4 support for ASEC containers

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
/system/vold/VolumeManager.h
0b8b59719357fb80c330442787f7d5b1e332263b 01-Sep-2011 Ken Sumrall <ksumrall@android.com> Add the ability to revert a crypto mapping when unmounting a volume

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
/system/vold/VolumeManager.h
3b17005083be230509480ea65ae67c237142fada 12-Jul-2011 Ken Sumrall <ksumrall@android.com> Prevent sharing or formatting of a vold managed volumes during encryption.

Mounting was already not allowed, but also unshare before starting
encryption, and don't allow sharing or formatting to be initiated
during encrytion.

Change-Id: Ida188d81f025739ba4dd90492b3e66088735991e
/system/vold/VolumeManager.h
736910ca99a40b9add4353bf619e778c40938948 27-Jun-2011 Dianne Hackborn <hackbod@google.com> Add new vold call to get the path to an asec fs.

Change-Id: Ife15628ed6e2493c9e85a2ade6d59a194fdddde5
/system/vold/VolumeManager.h
6b715592ec94f9d75ca8119ace824ff729c104c2 18-Jun-2011 Mike Lockwood <lockwood@android.com> Merge "Remove obsolete code for monitoring USB status"
319b1043bbbd410aa2d572d88b5936f26072d026 14-Jun-2011 Ken Sumrall <ksumrall@android.com> Don't abort the encryption process if an internal volume is present but unmounted.

It is not a failure if the SD card is not mounted.

Change-Id: If954f77c55ac124b9b7b39c89ffbafb4e5ea9e98
/system/vold/VolumeManager.h
a976656ff90291b9437a4d37b48e82abcd48195e 07-Jun-2011 Mike Lockwood <lockwood@android.com> Remove obsolete code for monitoring USB status

Change-Id: I8ac8900b3135f03b7717540b825ff6df76f31c0b
Signed-off-by: Mike Lockwood <lockwood@android.com>
/system/vold/VolumeManager.h
29d8da8cefa99e436c13295d4c9bad060ca18a6d 19-May-2011 Ken Sumrall <ksumrall@android.com> vold: allow to store key in a file on another partition

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
/system/vold/VolumeManager.h
a28056b38275003895ff5d9576681aca01544822 28-Oct-2010 Mike Lockwood <lockwood@google.com> Set VM dirty ratio to zero when UMS is active

Improves UI responsiveness when copying large amount of data to the device.

BUG: 3131847

Change-Id: I4aa5ade7e2cd7e5110c8f0f7ee43bdc57577e11d
Signed-off-by: Mike Lockwood <lockwood@google.com>
/system/vold/VolumeManager.h
cbacf78eff70bd43bb899e164ec2ab409bc0904c 25-Sep-2010 Kenny Root <kroot@google.com> Track type of container mounted

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
/system/vold/VolumeManager.h
508c0e1605b795bbb51cb47d955b89f3df26ca94 12-Jul-2010 Kenny Root <kroot@google.com> Additional Obb functionality

* 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
/system/vold/VolumeManager.h
fb7c4d5a8a1031cf0e493ff182dcf458e5fe8c77 01-Jul-2010 Kenny Root <kroot@google.com> Add image mounting commands for OBB files

Allow the mounting of OBB filesystem images if they're encrypted with
twofish and in FAT filesystem format.

Change-Id: I54804e598f46b1f3a784ffe517ebd9d7626de7aa
/system/vold/VolumeManager.h
99635f6c289fe2528c226403ea215c917ce86037 26-Jun-2010 Mike Lockwood <lockwood@android.com> Use new kernel notifications to determine if USB mass storage is available.

The usb_mass_storage switch no longer exists in our 2.6.35 kernel.
Instead we will consider mass storage to be available if both USB is connected
and the USB mass storage function is enable.

Change-Id: I730d1b3cb3cac664fc2abcdc36cd39856a08404a
Signed-off-by: Mike Lockwood <lockwood@android.com>
/system/vold/VolumeManager.h
acc9e7dcca8978fc809fa5b4d9b819c515a980ff 19-Jun-2010 Kenny Root <kroot@google.com> Change ASCII conversion for hash and add tests

Hash was printed using snprintf(), but we can just write yet another hex
conversion utility!

Change-Id: I04f1992deaf5bf1b3e2751c8f07072f8ed6660e9
/system/vold/VolumeManager.h
1a06edaf4db4e9c520624bcc06e0e13ee470d90e 15-Apr-2010 San Mehat <san@google.com> vold: Ensure we cleanup secure containers on card removal.

Fixes bug: http://b/issue?id=2567572

Note: The framework will still likely restart since the system_server
is holding references to assets on the card which are mmaped, but
at least now storage will be available when a new card is re-inserted.

Change-Id: I4e195c0c666426b93da47198fa826a6f58d855a9
Signed-off-by: San Mehat <san@google.com>
/system/vold/VolumeManager.h
befd59c152835b815665ec3c5e453b55e70d5f0b 15-Mar-2010 San Mehat <san@google.com> vold: remove some dead code

Change-Id: Iaeb5d3334ec22ed31da9734bb8d7cd17e6a40eaf
Signed-off-by: San Mehat <san@google.com>
/system/vold/VolumeManager.h
d9a4e358614a0c5f60cc76c0636ee4bb02004a32 12-Mar-2010 San Mehat <san@google.com> vold: Bugfixes & cleanups

- 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: San Mehat <san@google.com>
/system/vold/VolumeManager.h
4ba8948dc16463053e21cda5744f519a555080d0 18-Feb-2010 San Mehat <san@google.com> vold: Add 'force' option to anything that can cause an unmount

Signed-off-by: San Mehat <san@google.com>
/system/vold/VolumeManager.h
eba65e9d438a05f1c5dfd0f8d31bc463a5d08eee 29-Jan-2010 San Mehat <san@google.com> vold: Bloat reduction
Signed-off-by: San Mehat <san@google.com>
/system/vold/VolumeManager.h
048b0801fcd6fcfbb8fa812284c751181e4821b8 23-Jan-2010 San Mehat <san@google.com> vold: Add support for renaming secure containers

Signed-off-by: San Mehat <san@google.com>
/system/vold/VolumeManager.h
88705166ab82057090a070c6d4200c3d9db76f11 15-Jan-2010 San Mehat <san@google.com> vold: Unmount secure containers when the underlying media is removed.

Signed-off-by: San Mehat <san@google.com>
/system/vold/VolumeManager.h
8b8f71b1d760411279f3b07a5c97709f052c689e 11-Jan-2010 San Mehat <san@google.com> vold: Internally use sector counts for asec lengths

Signed-off-by: San Mehat <san@google.com>
/system/vold/VolumeManager.h
b78a32c1d5eeb243bdac0eaf18effb1897f1ee67 10-Jan-2010 San Mehat <san@google.com> vold: Add encrypted ASEC support via devmapper

- Supports up to 4096 containers
- Keys are now implemented - specifying a key of 'none' means no encryption.
Otherwise, the key must be a string of 32 characters

Signed-off-by: San Mehat <san@google.com>
/system/vold/VolumeManager.h
a19b250bd273455933ca3502cf2c2e0a803aff77 06-Jan-2010 San Mehat <san@google.com> vold2: Initial support for Android Secure External Caches

Signed-off-by: San Mehat <san@google.com>
/system/vold/VolumeManager.h
0cde53ce7b44ce189d0bc6fa81c0036e096deb51 22-Dec-2009 San Mehat <san@google.com> vold2: Manually bootstrap the ums switch since switch kernel uevents are broken

Signed-off-by: San Mehat <san@google.com>
/system/vold/VolumeManager.h
a2677e4ad01f250b0765f04adf0acfa6627efc98 13-Dec-2009 San Mehat <san@google.com> vold2: Get mounting/unmounting/formatting/sharing working

Signed-off-by: San Mehat <san@google.com>
/system/vold/VolumeManager.h
49e2bce5b74129c26a35e25d4693cbfe98c4688e 13-Oct-2009 San Mehat <san@android.com> vold2: Wire up more of the mount function

Signed-off-by: San Mehat <san@android.com>
/system/vold/VolumeManager.h
fd7f5875129adfe2845f4f3fffb17db3a89eea25 12-Oct-2009 San Mehat <san@android.com> vold2: Refactor the netlink event handling and better define how partitions/disks are handled

Signed-off-by: San Mehat <san@android.com>
/system/vold/VolumeManager.h
f1b736bc5605e92e917ab27f5abf3ba839be2270 11-Oct-2009 San Mehat <san@android.com> system: vold2: Initial skeleton for vold2.

Let there be light.

Signed-off-by: San Mehat <san@android.com>
/system/vold/VolumeManager.h