blob: b7b9c1f310caa73ee5c468c5b98155d222a9d287 [file] [log] [blame]
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -08001/*
2 * Copyright (C) 2007 The Android Open Source Project
Tom Marshalla08c6f12019-01-04 14:37:31 -08003 * Copyright (C) 2019 The LineageOS Project
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -08004 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18#ifndef RECOVERY_ROOTS_H_
19#define RECOVERY_ROOTS_H_
20
Tao Bao3e18f2b2017-09-29 17:11:13 -070021#include <string>
22
Tao Baoac9d94d2016-11-03 11:37:15 -070023typedef struct fstab_rec Volume;
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -080024
Doug Zongkercc8cd3f2010-09-20 12:16:13 -070025// Load and parse volume data from /etc/recovery.fstab.
26void load_volume_table();
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -080027
Tao Bao3e18f2b2017-09-29 17:11:13 -070028// Return the Volume* record for this mount point (or nullptr).
29Volume* volume_for_mount_point(const std::string& mount_point);
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -080030
Doug Zongkercc8cd3f2010-09-20 12:16:13 -070031// Make sure that the volume 'path' is on is mounted. Returns 0 on
32// success (volume is mounted).
Tom Marshalla08c6f12019-01-04 14:37:31 -080033int ensure_volume_mounted(Volume* v);
Doug Zongkercc8cd3f2010-09-20 12:16:13 -070034int ensure_path_mounted(const char* path);
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -080035
Tao Baoabb8f772015-07-30 14:43:27 -070036// Similar to ensure_path_mounted, but allows one to specify the mount_point.
37int ensure_path_mounted_at(const char* path, const char* mount_point);
38
39// Make sure that the volume 'path' is on is unmounted. Returns 0 on
Doug Zongkercc8cd3f2010-09-20 12:16:13 -070040// success (volume is unmounted);
Tom Marshalla08c6f12019-01-04 14:37:31 -080041int ensure_volume_unmounted(const Volume* v, bool detach = false);
42int ensure_path_unmounted(const char* path, bool detach = false);
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -080043
Doug Zongkercc8cd3f2010-09-20 12:16:13 -070044// Reformat the given volume (must be the mount point only, eg
45// "/cache"), no paths permitted. Attempts to unmount the volume if
46// it is mounted.
47int format_volume(const char* volume);
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -080048
Paul Lawrenced0db3372015-11-05 13:38:40 -080049// Reformat the given volume (must be the mount point only, eg
50// "/cache"), no paths permitted. Attempts to unmount the volume if
51// it is mounted.
52// Copies 'directory' to root of the newly formatted volume
53int format_volume(const char* volume, const char* directory);
54
Doug Zongker239ac6a2013-08-20 16:03:25 -070055// Ensure that all and only the volumes that packages expect to find
56// mounted (/tmp and /cache) are mounted. Returns 0 on success.
57int setup_install_mounts();
58
Tom Marshalla08c6f12019-01-04 14:37:31 -080059int get_num_volumes();
60
61#define MAX_NUM_MANAGED_VOLUMES 10
62
The Android Open Source Projectc24a8e62009-03-03 19:28:42 -080063#endif // RECOVERY_ROOTS_H_