OSDN Git Service
Paul Crowley [Tue, 19 May 2015 16:31:39 +0000 (17:31 +0100)]
Scrub the key from the disk with BLKSECDISCARD.
Bug:
19706593
(cherry-picked from commit
8d0cd7ffd903a753c6bb5c6f33987a7a66621cef)
Change-Id: Ieea73da233fe53767b5adcdb4d49f9bb00fedac1
Paul Crowley [Tue, 19 May 2015 16:31:39 +0000 (17:31 +0100)]
Add tool for scrubbing files with BLKSECDISCARD.
Bug:
19706593
(based on work in commit
8d0cd7ffd903a753c6bb5c6f33987a7a66621cef)
Change-Id: I9699275a63f2d0a110435bd4a725d7dfcce4ed90
Paul Crowley [Tue, 19 May 2015 11:34:09 +0000 (12:34 +0100)]
Add "cryptfs deleteuserkey" command to vold.
Bug:
19706593
(cherry-picked from commit
eebf44563bf9c6f2795442e8d2bc886e4eb3bbbe)
Change-Id: I50dc4c39595c06bf0016d6a490130bbbc25de91b
Paul Crowley [Wed, 6 May 2015 14:04:43 +0000 (15:04 +0100)]
Add vold commands for setting up per-user encrypted user
directories
Bug:
19704432
(cherry-picked from commit
75a5202d9f65747edabb1dd0ebd50a779d4142c2)
Change-Id: I733e8745ec21f8e53c2cc6d8a98313275db7d897
Paul Crowley [Wed, 6 May 2015 12:38:53 +0000 (13:38 +0100)]
Break key installation into its own function so we can install
non-master keys.
Bug:
19704432
(cherry-picked from commit
1da96dc549b86a1c7ec02d7a808a9532cdcb5fe7)
Change-Id: I762e8f6c927db3a337fa8ce6bd428262d9e05c7a
Paul Lawrence [Tue, 7 Jul 2015 22:43:14 +0000 (15:43 -0700)]
Don't break on setting default password
Bug:
22329642
Change-Id: I58dac4dba8e65c7015d50ca0c3575f77f550a215
Jeff Sharkey [Tue, 7 Jul 2015 21:37:03 +0000 (14:37 -0700)]
Mount emulated volumes as consistent location.
We really only support a single emulated volume on the device at a
time, either on internal storage, or moved to a private volume. To
avoid kicking off a giant rescan of all media when moved, keep all
the paths the same when mounted as primary.
Also ensure we have /data/media/0 ready on private volumes.
Bug:
20275423
Change-Id: I0c102f430b865ca7536772b1fae56d8c9660a97a
Jeff Sharkey [Fri, 26 Jun 2015 21:02:09 +0000 (14:02 -0700)]
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
Jeff Sharkey [Tue, 30 Jun 2015 22:54:17 +0000 (15:54 -0700)]
Null-terminate readlink() result, full remount.
In order to compare results from readlink() calls, we need to null
terminate the read value, otherwise we can end up doing an infinitely
recursive remount in the root namespace.
When remounting inside a namespace, unmount all existing mounts before
mounting the new storage into place. This also means we need to mount
the user-specific symlinks back into place.
Skip spinning up the FUSE daemon when not visible, otherwise we get
stuck waiting for a daemon that never shows up.
Bug:
22192518,
22204412
Change-Id: Icc7db822354ab7ffc47c39cd0611f65edecc32e5
Jeff Sharkey [Fri, 26 Jun 2015 18:16:14 +0000 (11:16 -0700)]
Last ditch check for partition on raw disk.
Some storage devices can be formatted as bare partitions, without an
MBR or GPT header. If we found no partitions, try poking at the raw
disk, and treat it as a public volume if we found a valid filesystem.
Bug:
20503551
Change-Id: I80304e1ad865435321c341b667c0daf2daf4d56c
Jeff Sharkey [Wed, 24 Jun 2015 18:49:24 +0000 (11:49 -0700)]
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
Makoto Onuki [Wed, 24 Jun 2015 20:33:55 +0000 (20:33 +0000)]
Merge "Make sure volume is vfat before fsck'ing." into mnc-dev
Makoto Onuki [Wed, 24 Jun 2015 20:30:45 +0000 (13:30 -0700)]
Make sure volume is vfat before fsck'ing.
Bug
21948137
Change-Id: I6843423fd8809d9e2f352059a810aa17dd83b3e3
Shawn Willden [Wed, 24 Jun 2015 14:21:54 +0000 (07:21 -0700)]
Add purpose to vold-generated keymaster1 keys.
Also remove the app ID and additional padding and digest options.
Bug:
22009890
Change-Id: Ibff9bbd0e0c11d651d11fac85d4ac907588f1cd2
Jeff Sharkey [Thu, 18 Jun 2015 21:25:08 +0000 (14:25 -0700)]
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
Shawn Willden [Thu, 18 Jun 2015 18:26:59 +0000 (12:26 -0600)]
Use correct error code for rate limiting.
Note that this CL depends on cl 712195, which must be submitted first.
Bug:
21607106
Change-Id: Iafc42d1c8a1145a31ea252b33b404044f92ec62b
Shawn Willden [Wed, 3 Jun 2015 15:40:45 +0000 (09:40 -0600)]
Add keymaster1 support to vold.
Bug:
21607106
Change-Id: I498141b90888d4f0652912413b04519f61886935
Paul Lawrence [Thu, 11 Jun 2015 18:15:29 +0000 (11:15 -0700)]
Improve boot time by 0.1s by reducing a polling sleep interval
Bug:
21516860
Change-Id: I9e28f4d9cc20ec2a7d9e325c02ef85f0ad9b3d60
Jeff Sharkey [Wed, 10 Jun 2015 16:44:50 +0000 (16:44 +0000)]
Merge "Start tracking added users with serial numbers." into mnc-dev
Jeff Sharkey [Wed, 10 Jun 2015 16:42:01 +0000 (09:42 -0700)]
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
Paul Lawrence [Tue, 9 Jun 2015 20:37:44 +0000 (13:37 -0700)]
Remove hex encoding and password adjusting now that patterns are '1' based
Bug:
21606650
Change-Id: I3486ad394d563135c5171a1d4785f7a27eeea3ae
Jeff Sharkey [Tue, 9 Jun 2015 17:59:17 +0000 (10:59 -0700)]
Run restorecon over mounted private volumes.
This ensures that we have consistent SELinux policy in place before
going any further, and it mirrors the way we restorecon /data when
first mounted.
Bug:
21121357
Change-Id: I2a7e3584ade655fe1fae8916cf54f9eae3a0f99d
Jeff Sharkey [Fri, 22 May 2015 05:35:42 +0000 (22:35 -0700)]
Add f2fs support for private volumes.
When formatting volumes, pass along fsType string which can be "auto"
to let the volume select the best choice. For now, private volumes
assume that MMC devices (like SD cards) are best off using f2fs when
both kernel support and tools are present, otherwise fall back to
ext4. Use blkid when mounting to pick the right set of tools.
Move filesystem utility methods into namespaces and place in separate
directory to be more organized.
Bug:
20275581
Change-Id: Id5f82d8672dda2e9f68c35b075f28232b0b55ed4
Paul Lawrence [Wed, 3 Jun 2015 21:19:51 +0000 (14:19 -0700)]
Move crypt commands to a different listener in vold
In order to prevent this bug from happening, we must allow vold cryptfs
commands to complete while a long running mount is underway.
While waiting for vold to be changed to a binder interface, we will simply
create two listeners, one for cryptfs and one for everything else.
Bug:
19197175
Change-Id: If74142aa81abd58f718a9de6c9e387f6ea442754
Paul Lawrence [Thu, 4 Jun 2015 17:49:25 +0000 (10:49 -0700)]
Improve boot time
Bug:
21516860
Change-Id: I3153c7f9a414a8eeadc0118f0a642ad8e96c81ce
Elliott Hughes [Fri, 29 May 2015 22:04:26 +0000 (22:04 +0000)]
Merge "Don't use TEMP_FAILURE_RETRY on close in vold." into mnc-dev
Paul Lawrence [Wed, 6 May 2015 20:53:43 +0000 (13:53 -0700)]
DO NOT MERGE Delete password as per block encryption
(cherry-picked from commit
00f4aade5c172534c16070540d1c6c26d0a78c84)
Bug:
18151196
Change-Id: Iee0f932c61ff4a309dc2861725b24bf976adb4c7
Paul Lawrence [Tue, 5 May 2015 22:58:27 +0000 (15:58 -0700)]
DO NOT MERGE Fix problem that reading/writing crypto footers wasn't identity
(cherry-picked from commit
75c922f49b593f3203ee59c33d00ccb5b3b66ca8)
Bug:
18151196
Change-Id: Ideef6bcdbccf068a64ed3e042be50c4837a373f8
Paul Lawrence [Tue, 5 May 2015 21:28:25 +0000 (14:28 -0700)]
DO NOT MERGE Retry unmounts in ext4 encryption
(cherry-picked from commit
29b54aab8ee2d08e2129832364f9b719dd17fa4e)
Bug:
18151196
Change-Id: I52ca23b2ce3adcff44bd003d4a12243a0bd6ac34
Paul Lawrence [Tue, 5 May 2015 18:09:07 +0000 (11:09 -0700)]
DO NOT MERGE Use default key permissions for ext4enc
(cherry-picked from commit
1190a26f6d7dd34bf10ffc7b367b374d5e591146)
As per discussion default permissions are the correct ones.
Note that since we use logon keys, they cannot be read outside
the kernel.
Note also that we limit who can read/write keys in selinux policy.
Bug:
18151196
Change-Id: Icc916f430a70eff22e6b74c20ec361c8f3789c1c
Paul Lawrence [Mon, 4 May 2015 22:48:24 +0000 (15:48 -0700)]
DO NOT MERGE Simplify password checking logic
(cherry-picked from commit
aaccfac3442ab48f5f94603c07427cc1bb00e12d)
Bug:
18151196
Change-Id: I07ffde534dee7d1032149cfcbaa1a61c5246d759
Paul Lawrence [Wed, 15 Apr 2015 21:12:00 +0000 (14:12 -0700)]
DO NOT MERGE Enable properties in ext4enc
(cherry-picked from
4e7274551c93e1c064648409f52ca430da647050)
Enables OwnerInfo and pattern suppression
Bug:
18151196
Change-Id: I46144e16cb00319deeb5492ab82c67f5dd43d6d3
Paul Lawrence [Tue, 14 Apr 2015 22:26:29 +0000 (15:26 -0700)]
DO NOT MERGE Check password is correct by checking hash
(cherry-picked from commit
3ca21e227a2e1ed01138a29f450917290a9d1e6e)
Handle failures gracefully
Change-Id: Ifb6da8c11a86c50fb11964c18cc1be1326461f78
Paul Lawrence [Fri, 10 Apr 2015 14:48:51 +0000 (07:48 -0700)]
DO NOT MERGE New ext4enc kernel switching from xattrs to ioctl
(cherrypicked from commit
5e7f0042318156ef39c1e4641613f3191ea85b4a)
This is one of three changes to enable this functionality:
https://android-review.googlesource.com/#/c/146259/
https://android-review.googlesource.com/#/c/146264/
https://android-review.googlesource.com/#/c/146265/
Bug:
18151196
Change-Id: Iba5146b8be1e15050ae901e08b3aaa26d96dcf7e
Paul Lawrence [Tue, 28 Apr 2015 22:14:15 +0000 (22:14 +0000)]
DO NOT MERGE Securely encrypt the master key
(cherry-picked from commit
707fd6c7cccc31c0ab0ec1a6ac8b6077c632fc35)
Move all key management into vold
Reuse vold's existing key management through the crypto footer
to manage the device wide keys.
Use ro.crypto.type flag to determine crypto type, which prevents
any issues when running in block encrypted mode, as well as speeding
up boot in block or no encryption.
This is one of four changes to enable this functionality:
https://android-review.googlesource.com/#/c/148586/
https://android-review.googlesource.com/#/c/148604/
https://android-review.googlesource.com/#/c/148606/
https://android-review.googlesource.com/#/c/148607/
Bug:
18151196
Change-Id: I3c68691717a61b5e1df76423ca0c02baff0dab98
Elliott Hughes [Fri, 29 May 2015 05:02:14 +0000 (22:02 -0700)]
Don't use TEMP_FAILURE_RETRY on close in vold.
Bug: http://b/
20501816
Change-Id: Ia0a3899947582b8dd0e8e185c203d1ad7dad572e
Jeff Sharkey [Tue, 19 May 2015 22:54:15 +0000 (15:54 -0700)]
Offer debug flag to force default primary.
Useful for transforming a secondary SD card slot into a primary SD
card slot without doing a completely different lunch target.
$ adb shell stop
$ adb shell setprop vold.debug.default_primary 1
$ adb shell setprop ro.vold.primary_physical 1
$ adb shell setprop ctl.restart vold
$ adb shell start
Bug:
21017105
Change-Id: I45aac7ab3bb4c5ac3e0140572844883823fc3e4f
Jeff Sharkey [Tue, 19 May 2015 18:20:48 +0000 (11:20 -0700)]
Fully sync filesystem before time measurements.
Also drop unneeded SCR register logging.
Bug:
21172095
Change-Id: I17c5aae2edc0eb7144ab38701f90a1fd54e119da
Elliott Hughes [Sat, 16 May 2015 02:42:30 +0000 (02:42 +0000)]
Merge "Don't use TEMP_FAILURE_RETRY on close in vold." into mnc-dev
Elliott Hughes [Sat, 16 May 2015 01:34:24 +0000 (18:34 -0700)]
Don't use TEMP_FAILURE_RETRY on close in vold.
Bug: http://b/
20501816
Change-Id: Ieecce9304539c250ed1728252b8c2c09d29afd7f
Jeff Sharkey [Fri, 15 May 2015 03:33:55 +0000 (20:33 -0700)]
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
Jeff Sharkey [Wed, 13 May 2015 20:53:07 +0000 (13:53 -0700)]
Communicate if we have adoptable disks.
Bug:
19993667
Change-Id: I3c3dddab157a11038f7160d24d53e728bde2194f
Jeff Sharkey [Wed, 13 May 2015 19:36:48 +0000 (12:36 -0700)]
Report internal path for public volumes.
Used by framework to bypass FUSE daemon overhead in some cases.
Bug:
21017105
Change-Id: I2f3ae70607417fc4cd2c970cb17cf3afa2f42613
Jeff Sharkey [Thu, 30 Apr 2015 17:07:15 +0000 (17:07 +0000)]
Merge "Fix signed issue with hex conversion." into mnc-dev
Jeff Sharkey [Wed, 29 Apr 2015 22:22:23 +0000 (15:22 -0700)]
Update primary symlinks after mounting.
Since otherwise we might have a stale path.
Bug:
19993667
Change-Id: I099e3dc0c5aa9ab6820cded4f2ae7fd6bf18ea40
Jeff Sharkey [Wed, 29 Apr 2015 22:57:48 +0000 (15:57 -0700)]
Fix signed issue with hex conversion.
Change-Id: Ia11c689c373f41b2a63bc84151eb16f7c7b9d155
Jeff Sharkey [Wed, 29 Apr 2015 15:57:18 +0000 (08:57 -0700)]
Property to enable debugging.
Bug:
19993667
Change-Id: Ie226e06edcb426caca2dbc97d2d5d60ae948c85e
Jeff Sharkey [Wed, 29 Apr 2015 04:17:43 +0000 (21:17 -0700)]
Scan failure still means we finished scan.
Bug:
19993667
Change-Id: If6a79391e34b652b2ba4e6df40a8e712f7a2e172
Elliott Hughes [Sat, 25 Apr 2015 17:24:04 +0000 (17:24 +0000)]
am
85c7c08e: am
d5aa67cc: Merge "Wait for completion of device mapping in mountObb"
* commit '
85c7c08e2511509a306c3a5b202ceda922f5f2b5':
Wait for completion of device mapping in mountObb
Elliott Hughes [Sat, 25 Apr 2015 17:02:47 +0000 (17:02 +0000)]
am
d5aa67cc: Merge "Wait for completion of device mapping in mountObb"
* commit '
d5aa67cc53bd10ba851179d634a7ed649958e5ee':
Wait for completion of device mapping in mountObb
Elliott Hughes [Sat, 25 Apr 2015 16:42:37 +0000 (16:42 +0000)]
Merge "Wait for completion of device mapping in mountObb"
yoshiyuki hama [Wed, 28 Jan 2015 07:37:23 +0000 (16:37 +0900)]
Wait for completion of device mapping in mountObb
The VolumeManager::mountObb() creates a mapping between
a loopback device and a dm device. However the device-mapper
carries it out asynchronously, so there is a possibility that
Vold accesses to the dm device which is being built. Added
waiting for completion of the mapping in that function, like
mountAsec().
To verify install FrameworksCoreTests.apk and do:
adb shell am instrument -r -w -e class android.os.storage.\
StorageManagerIntegrationTest#testMountTwoEncryptedObb \
com.android.frameworks.coretests/android.test.\
InstrumentationTestRunner
Change-Id: If42f4b7494bb2f8a8b72d106ad84b3e3bf91fd9b
Jeff Sharkey [Fri, 24 Apr 2015 23:00:03 +0000 (16:00 -0700)]
Migrate primary external storage.
When requested, kick off a thread that will migrate storage contents
between two locations. This is performed in several steps that
also interact with the framework:
1. Take old and new volumes offline during migration
2. Wipe new location clean (10% of progress)
3. Copy files from old to new (60% of progress)
4. Inform framework that move was successful so it can persist
5. Wipe old location clean (15% of progress)
Derives a hacky progress estimate by using a rough proxy of free
disk space changes while a cp/rm is taking place.
Add new internal path for direct access to volumes to bypass any
FUSE emulation overhead, and send it to framework. Remove mutex
around various exec calls since setexeccon() is already per-thread.
Bug:
19993667
Change-Id: Ibcb4f6fe0126d05b2365f316f53e71dc3e79a2b8
Jeff Sharkey [Tue, 21 Apr 2015 19:14:17 +0000 (12:14 -0700)]
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
Jeff Sharkey [Sun, 19 Apr 2015 22:55:42 +0000 (15:55 -0700)]
Handle *ALL* the SCSI disks!
Bug:
19993667
Change-Id: I47099c262686127f82dd376570d49cf0ad119842
Jeff Sharkey [Sun, 19 Apr 2015 21:57:55 +0000 (14:57 -0700)]
Notify when disk scan finished.
Bug:
19993667
Change-Id: I20dc183a35c11b5b4ba6139e690929b9c279b830
Jeff Sharkey [Sat, 18 Apr 2015 23:15:10 +0000 (16:15 -0700)]
Switch logging to system log, persistable prop.
Use system log for more durable log history. Also accept persistable
version of flag to force adoptability.
Bug:
19993667
Change-Id: Icdf36799e26038e9a8e2bdaca276d97b22ba3941
Jeff Sharkey [Sat, 18 Apr 2015 00:35:20 +0000 (17:35 -0700)]
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
Jeff Sharkey [Wed, 15 Apr 2015 06:14:23 +0000 (23:14 -0700)]
Lock while partitioning.
Otherwise we get really excited and trip over ourselves while
partitions are still being created.
Bug:
19993667
Change-Id: I034e56b3063a71d73f9311a945c05ea2ae255f7d
Jeff Sharkey [Wed, 15 Apr 2015 05:22:34 +0000 (22:22 -0700)]
Don't be picky about zap status.
Bug:
19993667
Change-Id: Id125d9252bf7130516c0ec619d5f067fea24d560
Jeff Sharkey [Tue, 14 Apr 2015 23:45:18 +0000 (16:45 -0700)]
Fix destroy ordering bug; add debug flag.
Bug:
19993667
Change-Id: Ib15e79a94a185843dace35fea7daaea866120f87
Jeff Sharkey [Mon, 13 Apr 2015 04:50:32 +0000 (21:50 -0700)]
Remember to tear down ASEC bind mount.
Bug:
19993667
Change-Id: I17093f0f9abe8762e5ee4f38ce99f9024e419dfc
Jeff Sharkey [Sun, 12 Apr 2015 23:03:33 +0000 (16:03 -0700)]
Emulated volumes above private volumes.
When a private volume is mounted, create an emulated volume above it
hosted at the /media path on that device. That emulated volume is
automatically torn down when unmounting the private volume.
Add "removed" state for volume, which signals to framework that
media has left the building, send when the volume is destroyed.
Bug:
19993667
Change-Id: I1f82b51de578ac5cfcc5d7b9a6fb44f6f25c775c
Jeff Sharkey [Thu, 9 Apr 2015 04:07:21 +0000 (21:07 -0700)]
Exclusive exec() path, format after partition.
Sadly setexeccon() is process global, so we need to carefully ensure
that all exec() are mutually exclusive to avoid transitioning into
unwanted domains. Also, because we have several threads floating
around, we need to guard all our FDs with O_CLOEXEC.
Format all newly created volumes immediately after partitioning,
but silence all events emitted from those volumes to prevent the
framework from getting all excited. Unify all notify events under a
single codepath to make them easy to silence.
Sent SIGINT before escalating to SIGTERM when unmounting.
Bug:
19993667
Change-Id: Idc6c806afc7919a004a93e2240b42884f6b52d6b
Mohamad Ayyash [Tue, 7 Apr 2015 18:44:08 +0000 (18:44 +0000)]
am
959de99a: am
f8c905e0: Merge "Add dependency on libsquashfs_utils due to fs_mgr dependency"
* commit '
959de99af47dec9ed7a3499ce57e4097be399d7d':
Add dependency on libsquashfs_utils due to fs_mgr dependency
Mohamad Ayyash [Tue, 7 Apr 2015 18:13:19 +0000 (18:13 +0000)]
am
f8c905e0: Merge "Add dependency on libsquashfs_utils due to fs_mgr dependency"
* commit '
f8c905e043cbeb76bf0d88dff5b5676f4e00f71c':
Add dependency on libsquashfs_utils due to fs_mgr dependency
Mohamad Ayyash [Tue, 7 Apr 2015 18:00:52 +0000 (18:00 +0000)]
Merge "Add dependency on libsquashfs_utils due to fs_mgr dependency"
Mohamad Ayyash [Tue, 7 Apr 2015 01:15:53 +0000 (18:15 -0700)]
Add dependency on libsquashfs_utils due to fs_mgr dependency
Change-Id: I894d18c2086a6532194f478853a9837eb4b6fc09
Signed-off-by: Mohamad Ayyash <mkayyash@google.com>
Jeff Sharkey [Mon, 6 Apr 2015 21:08:45 +0000 (14:08 -0700)]
Updates for expanded storage.
Mount private volumes at /mnt/expand, which is where we have new
SELinux policy waiting for us. Also ensure that foundational
directories are ready when mounting.
Create local fs_prepare_dir() wrapper that sets SELinux context
based on path, avoiding the need for a later restorecon.
Use UUID as directory name for public volumes. Wait a few seconds
before issuing first signal when force unmounting.
Bug:
19993667
Change-Id: If22595380faaae321705b06c87d877419620da48
Jeff Sharkey [Sun, 5 Apr 2015 04:38:59 +0000 (21:38 -0700)]
Add back "unmountable" volume state.
Also automatically unmount when format is requested.
Bug:
19993667
Change-Id: I2c81b7ccc9d69df61d7ae4df1e8224c02f260044
Jeff Sharkey [Thu, 2 Apr 2015 06:32:18 +0000 (23:32 -0700)]
Remove unused code.
Bug:
19993667
Change-Id: I1f6519655c5a366eca25e2329e1bf95d81b3bf8c
Jeff Sharkey [Thu, 2 Apr 2015 06:07:19 +0000 (23:07 -0700)]
Some CLOEXEC love.
Bug:
19993667
Change-Id: If8c0b346820f30c6a7dac495f935be17d677ffcc
Jeff Sharkey [Wed, 1 Apr 2015 18:54:32 +0000 (11:54 -0700)]
Different blkid and fsck execution domains.
vold works with two broad classes of block devices: untrusted devices
that come in from the wild, and trusted devices like PrivateVolume
which are encrypted.
When running blkid and fsck, we pick which SELinux execution domain
to use based on which class the device belongs to.
Bug:
19993667
Change-Id: I2695f028710a4863f0c3b2ed6da437f466401272
Jeff Sharkey [Tue, 31 Mar 2015 17:35:33 +0000 (10:35 -0700)]
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
Jeff Sharkey [Tue, 31 Mar 2015 04:22:07 +0000 (21:22 -0700)]
Fix 64 bit builds.
Change-Id: I4e30ecff3c29d0f8351c6f43de1c979c8c792fab
Jeff Sharkey [Fri, 13 Mar 2015 23:09:20 +0000 (16:09 -0700)]
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
Elliott Hughes [Mon, 30 Mar 2015 21:28:10 +0000 (21:28 +0000)]
am
8a0fde27: am
e9623fed: Merge "Fixed type mismatch for ioctl(BLKGETSIZE)"
* commit '
8a0fde272be430f66b2e5db6236aa732d2ba6efc':
Fixed type mismatch for ioctl(BLKGETSIZE)
Elliott Hughes [Mon, 30 Mar 2015 21:14:49 +0000 (21:14 +0000)]
am
e9623fed: Merge "Fixed type mismatch for ioctl(BLKGETSIZE)"
* commit '
e9623fede7a89d61952f983f0c0a294fc3563c9c':
Fixed type mismatch for ioctl(BLKGETSIZE)
Elliott Hughes [Mon, 30 Mar 2015 21:03:04 +0000 (21:03 +0000)]
Merge "Fixed type mismatch for ioctl(BLKGETSIZE)"
Hiroaki Miyazawa [Wed, 4 Feb 2015 04:29:15 +0000 (13:29 +0900)]
Fixed type mismatch for ioctl(BLKGETSIZE)
ioctl(BLKGETSIZE) expects unsigned long
(8 bytes on 64 bit environment).
This is fixing fails in android.os.storage.StorageManagerIntegrationTest
(in FrameworkCoreTests).
To verify, install FrameworksCoreTests.apk and do:
adb shell am instrument -r -w -e class android.os.storage.\
StorageManagerIntegrationTest#testMountSingleEncryptedObb \
com.android.frameworks.coretests/android.test.InstrumentationTestRunner
Change-Id: Ib6d5c7490c02521c93f107c35ad0aac49f6a3f1a
Paul Lawrence [Fri, 27 Mar 2015 23:31:44 +0000 (23:31 +0000)]
am
836e7860: am
8120c3d1: Merge "Adding e4crypt support"
* commit '
836e78608dcb16a490330e051416787df2ee14db':
Adding e4crypt support
Paul Lawrence [Fri, 27 Mar 2015 21:42:21 +0000 (21:42 +0000)]
am
8120c3d1: Merge "Adding e4crypt support"
* commit '
8120c3d1b2a8b4c6570c36bcdaf7c55392f5fa45':
Adding e4crypt support
Paul Lawrence [Fri, 27 Mar 2015 20:46:05 +0000 (20:46 +0000)]
Merge "Adding e4crypt support"
Paul Lawrence [Thu, 5 Mar 2015 17:46:23 +0000 (09:46 -0800)]
Adding e4crypt support
Redirect all crypto calls to e4crypt equivalents if file level encryption
detected. Note this change implements only the ones needed for minimal
functionality.
Requires matching change:
https://googleplex-android-review.git.corp.google.com/#/c/642778/
Change-Id: I622d1a91704de4b3ab655486e6d38cd6718e6016
Paul Lawrence [Thu, 5 Mar 2015 17:46:23 +0000 (09:46 -0800)]
Adding e4crypt support
Redirect all crypto calls to e4crypt equivalents if file level encryption
detected. Note this change implements only the ones needed for minimal
functionality.
Requires matching change:
https://googleplex-android-review.git.corp.google.com/#/c/642778/
Change-Id: I622d1a91704de4b3ab655486e6d38cd6718e6016
JP Abgrall [Mon, 16 Mar 2015 19:42:57 +0000 (12:42 -0700)]
fstrim: Don't double trim mountpoints with alternative fs types.
Now we skip mountpoints that are repeated.
Bug:
19744511
Change-Id: Iff1618274a07180e62a01c3e2479dc1d52baf267
Signed-off-by: JP Abgrall <jpa@google.com>
Dan Albert [Mon, 16 Mar 2015 17:35:17 +0000 (10:35 -0700)]
Update for libbase.
Change-Id: I23b1281a63031a7481ea7b33c9ddbdbe7d3d6174
Jeff Sharkey [Fri, 13 Mar 2015 20:47:50 +0000 (20:47 +0000)]
Merge "Follow NetlinkEvent refactoring."
Jeff Sharkey [Fri, 13 Mar 2015 20:40:50 +0000 (13:40 -0700)]
Follow NetlinkEvent refactoring.
Change-Id: I130b250a663cdfb379def24583523d0287ec31dd
Jeff Sharkey [Fri, 13 Mar 2015 18:05:07 +0000 (18:05 +0000)]
Merge "Checkpoint of better dynamic device support."
Jeff Sharkey [Tue, 3 Mar 2015 05:01:40 +0000 (21:01 -0800)]
Checkpoint of better dynamic device support.
This is the first in a series of changes that are designed to
introduce better support for dynamic block devices.
It starts by defining a new Volume object which represents a storage
endpoint that knows how to mount, unmount, and format itself. This
could be a filesystem directly on a partition, or it could be an
emulated FUSE filesystem, an ASEC, or an OBB.
These new volumes can be "stacked" so that unmounting a volume will
also unmount any volumes stacked above it. Volumes that provide
shared storage can also be asked to present themselves (through bind
mounts) into user-specific mount areas.
This change also adds a Disk class which is created based on block
kernel netlink events. Instead of waiting for partition events from
the kernel, it uses gptfdisk to read partition details and creates
the relevant Volume objects.
Change-Id: I0e8bc1f8f9dcb24405f5e795c0658998e22ae2f7
JP Abgrall [Fri, 6 Mar 2015 01:30:20 +0000 (17:30 -0800)]
fstrim: don't trim mount points flagged as notrim
Bug:
19624276
Change-Id: I84eeb029114d6ba2a26a53d4155d123d8acd7502
Nick Kralevich [Thu, 5 Mar 2015 21:15:39 +0000 (21:15 +0000)]
am
58819cde: am
cdcffc0d: am
3393bb65: Merge "fstrim.c: use open(O_DIRECTORY) instead of stat"
* commit '
58819cde54c61776bf72e8b3369d240cd2dc5b4d':
fstrim.c: use open(O_DIRECTORY) instead of stat
Nick Kralevich [Thu, 5 Mar 2015 21:10:01 +0000 (21:10 +0000)]
am
cdcffc0d: am
3393bb65: Merge "fstrim.c: use open(O_DIRECTORY) instead of stat"
* commit '
cdcffc0d29da177399eb403df00e6693ce5e83bb':
fstrim.c: use open(O_DIRECTORY) instead of stat
Nick Kralevich [Thu, 5 Mar 2015 21:03:15 +0000 (21:03 +0000)]
am
3393bb65: Merge "fstrim.c: use open(O_DIRECTORY) instead of stat"
* commit '
3393bb650fd931e494a0280fc13717f36aea22fc':
fstrim.c: use open(O_DIRECTORY) instead of stat
Nick Kralevich [Thu, 5 Mar 2015 20:57:54 +0000 (20:57 +0000)]
Merge "fstrim.c: use open(O_DIRECTORY) instead of stat"
Nick Kralevich [Thu, 5 Mar 2015 20:50:23 +0000 (12:50 -0800)]
fstrim.c: use open(O_DIRECTORY) instead of stat
open(O_DIRECTORY) returns an error if the open attempt
is against anything other than a directory. This basically
duplicates the check that the stat() call was trying to do.
Eliminate the unnecessary stat() call and use O_DIRECTORY
instead.
Change-Id: I1821abbed325f29a7214fdc41ed27cd9e26817d0
Shawn Willden [Thu, 26 Feb 2015 23:55:44 +0000 (23:55 +0000)]
am
42c79333: am
47bc0ffa: am
5054f7ee: Merge "Rename keymaster_device_t to keymaster0_device_t."
* commit '
42c793333c7cfdb311e0abbe0dfeb64074c9f34f':
Rename keymaster_device_t to keymaster0_device_t.
Shawn Willden [Thu, 26 Feb 2015 23:44:34 +0000 (23:44 +0000)]
am
47bc0ffa: am
5054f7ee: Merge "Rename keymaster_device_t to keymaster0_device_t."
* commit '
47bc0ffaddacc3514d12db1b8b8bb4b10eae13ea':
Rename keymaster_device_t to keymaster0_device_t.
Shawn Willden [Thu, 26 Feb 2015 23:31:10 +0000 (23:31 +0000)]
am
5054f7ee: Merge "Rename keymaster_device_t to keymaster0_device_t."
* commit '
5054f7ee4fa6e747eb8d08f60ec91ba6a9363878':
Rename keymaster_device_t to keymaster0_device_t.