From 3e18f2bf4004e9df2f7fcee0d2035552404ff715 Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Fri, 29 Sep 2017 17:11:13 -0700 Subject: roots: Fix an issue with volume_for_path(). The earlier commit in 2dfc1a38982c4052bb32bc7fc06edeadf3908fb9 unintentionally changed the behavior. It gives a different result when looking up non-existent mount points (e.g. /cache on marlin). The logic behind volume_for_path("/xyz") is unclear: - It's fine to return non-null value if it's called by ensure_path_mounted() before accessing that file "/xyz". (Just based on the function name, we're not actually having this case.) - It should return nullptr if the caller is interested in the existence of that particular mount point "/xyz". This CL renames the function to volume_for_mount_point(), which does an exact match by querying the given mount point from libfs_mgr. The former volume_for_path() has been moved down to function scope for serving ensure_path_mounted() only. Test: Build and boot into recovery on bullhead and marlin respectively. 'View recovery logs'. Test: 'Mount /system' Test: 'Apply update from ADB' Change-Id: I1a16390f57540cae08a2b8f3d439d17886975217 --- roots.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'roots.h') diff --git a/roots.h b/roots.h index 542f03b9c..46bb77e02 100644 --- a/roots.h +++ b/roots.h @@ -17,13 +17,15 @@ #ifndef RECOVERY_ROOTS_H_ #define RECOVERY_ROOTS_H_ +#include + typedef struct fstab_rec Volume; // Load and parse volume data from /etc/recovery.fstab. void load_volume_table(); -// Return the Volume* record for this path (or NULL). -Volume* volume_for_path(const char* path); +// 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). -- cgit v1.2.3