Merge "roots: Fix an issue with volume_for_path()."
am: dd7a4b5264
Change-Id: I60b868ec677a252faeed6821cfe28f093ccd754a
This commit is contained in:
+1
-1
@@ -653,7 +653,7 @@ int install_package(const std::string& path, bool* wipe_cache, const std::string
|
|||||||
std::chrono::duration<double> duration = std::chrono::system_clock::now() - start;
|
std::chrono::duration<double> duration = std::chrono::system_clock::now() - start;
|
||||||
int time_total = static_cast<int>(duration.count());
|
int time_total = static_cast<int>(duration.count());
|
||||||
|
|
||||||
bool has_cache = volume_for_path("/cache") != nullptr;
|
bool has_cache = volume_for_mount_point("/cache") != nullptr;
|
||||||
// Skip logging the uncrypt_status on devices without /cache.
|
// Skip logging the uncrypt_status on devices without /cache.
|
||||||
if (has_cache) {
|
if (has_cache) {
|
||||||
static constexpr const char* UNCRYPT_STATUS = "/cache/recovery/uncrypt_status";
|
static constexpr const char* UNCRYPT_STATUS = "/cache/recovery/uncrypt_status";
|
||||||
|
|||||||
+1
-1
@@ -1396,7 +1396,7 @@ int main(int argc, char **argv) {
|
|||||||
printf("Starting recovery (pid %d) on %s", getpid(), ctime(&start));
|
printf("Starting recovery (pid %d) on %s", getpid(), ctime(&start));
|
||||||
|
|
||||||
load_volume_table();
|
load_volume_table();
|
||||||
has_cache = volume_for_path(CACHE_ROOT) != nullptr;
|
has_cache = volume_for_mount_point(CACHE_ROOT) != nullptr;
|
||||||
|
|
||||||
std::vector<std::string> args = get_args(argc, argv);
|
std::vector<std::string> args = get_args(argc, argv);
|
||||||
std::vector<char*> args_to_parse(args.size());
|
std::vector<char*> args_to_parse(args.size());
|
||||||
|
|||||||
@@ -69,11 +69,15 @@ void load_volume_table() {
|
|||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Volume* volume_for_mount_point(const std::string& mount_point) {
|
||||||
|
return fs_mgr_get_entry_for_mount_point(fstab, mount_point);
|
||||||
|
}
|
||||||
|
|
||||||
// Finds the volume specified by the given path. fs_mgr_get_entry_for_mount_point() does exact match
|
// Finds the volume specified by the given path. fs_mgr_get_entry_for_mount_point() does exact match
|
||||||
// only, so it attempts the prefixes recursively (e.g. "/cache/recovery/last_log",
|
// only, so it attempts the prefixes recursively (e.g. "/cache/recovery/last_log",
|
||||||
// "/cache/recovery", "/cache", "/" for a given path of "/cache/recovery/last_log") and returns the
|
// "/cache/recovery", "/cache", "/" for a given path of "/cache/recovery/last_log") and returns the
|
||||||
// first match or nullptr.
|
// first match or nullptr.
|
||||||
Volume* volume_for_path(const char* path) {
|
static Volume* volume_for_path(const char* path) {
|
||||||
if (path == nullptr || path[0] == '\0') return nullptr;
|
if (path == nullptr || path[0] == '\0') return nullptr;
|
||||||
std::string str(path);
|
std::string str(path);
|
||||||
while (true) {
|
while (true) {
|
||||||
|
|||||||
@@ -17,13 +17,15 @@
|
|||||||
#ifndef RECOVERY_ROOTS_H_
|
#ifndef RECOVERY_ROOTS_H_
|
||||||
#define RECOVERY_ROOTS_H_
|
#define RECOVERY_ROOTS_H_
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
typedef struct fstab_rec Volume;
|
typedef struct fstab_rec Volume;
|
||||||
|
|
||||||
// Load and parse volume data from /etc/recovery.fstab.
|
// Load and parse volume data from /etc/recovery.fstab.
|
||||||
void load_volume_table();
|
void load_volume_table();
|
||||||
|
|
||||||
// Return the Volume* record for this path (or NULL).
|
// Return the Volume* record for this mount point (or nullptr).
|
||||||
Volume* volume_for_path(const char* path);
|
Volume* volume_for_mount_point(const std::string& mount_point);
|
||||||
|
|
||||||
// Make sure that the volume 'path' is on is mounted. Returns 0 on
|
// Make sure that the volume 'path' is on is mounted. Returns 0 on
|
||||||
// success (volume is mounted).
|
// success (volume is mounted).
|
||||||
|
|||||||
Reference in New Issue
Block a user