2b2f423ef6
When using dynamic partitions, the blk_device field in fstab_rec must be translated to a /dev/block/dm-N node with fs_mgr_update_logical_partition. However, init will not have created these nodes to begin with since CreateLogicalPartitions is not called in recovery. This patch addresses both issues. Note that flashing system through fastbootd will not work while /system is mounted. Bug: 118634720 Test: manual test Change-Id: I06c83309d09eab6b65245b1ed10c51d05398f23e
58 lines
2 KiB
C++
58 lines
2 KiB
C++
/*
|
|
* Copyright (C) 2007 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef RECOVERY_ROOTS_H_
|
|
#define RECOVERY_ROOTS_H_
|
|
|
|
#include <string>
|
|
|
|
typedef struct fstab_rec Volume;
|
|
|
|
// Load and parse volume data from /etc/recovery.fstab.
|
|
void load_volume_table();
|
|
|
|
// Return the Volume* record for this mount point (or nullptr).
|
|
Volume* volume_for_mount_point(const std::string& mount_point);
|
|
|
|
// Make sure that the volume 'path' is on is mounted. Returns 0 on
|
|
// success (volume is mounted).
|
|
int ensure_path_mounted(const char* path);
|
|
|
|
// Similar to ensure_path_mounted, but allows one to specify the mount_point.
|
|
int ensure_path_mounted_at(const char* path, const char* mount_point);
|
|
|
|
// Make sure that the volume 'path' is on is unmounted. Returns 0 on
|
|
// success (volume is unmounted);
|
|
int ensure_path_unmounted(const char* path);
|
|
|
|
// Reformat the given volume (must be the mount point only, eg
|
|
// "/cache"), no paths permitted. Attempts to unmount the volume if
|
|
// it is mounted.
|
|
int format_volume(const char* volume);
|
|
|
|
// Reformat the given volume (must be the mount point only, eg
|
|
// "/cache"), no paths permitted. Attempts to unmount the volume if
|
|
// it is mounted.
|
|
// Copies 'directory' to root of the newly formatted volume
|
|
int format_volume(const char* volume, const char* directory);
|
|
|
|
// Ensure that all and only the volumes that packages expect to find
|
|
// mounted (/tmp and /cache) are mounted. Returns 0 on success.
|
|
int setup_install_mounts();
|
|
|
|
bool logical_partitions_mapped();
|
|
|
|
#endif // RECOVERY_ROOTS_H_
|