Loading edify/include/edify/updater_runtime_interface.h +2 −1 Original line number Diff line number Diff line Loading @@ -72,7 +72,8 @@ class UpdaterRuntimeInterface { // Dynamic partition related functions. virtual bool MapPartitionOnDeviceMapper(const std::string& partition_name, std::string* path) = 0; virtual bool UnmapPartitionOnDeviceMapper(const std::string& partition_name) = 0; virtual bool UpdateDynamicPartitions(const std::string_view op_list_value) = 0; virtual bool UpdateDynamicPartitions(const std::string_view op_list_value, const std::string_view super_empty_value) = 0; // On devices supports A/B, add current slot suffix to arg. Otherwise, return |arg| as is. virtual std::string AddSlotSuffix(const std::string_view arg) const = 0; Loading updater/dynamic_partitions.cpp +14 −3 Original line number Diff line number Diff line Loading @@ -88,8 +88,10 @@ static constexpr char kMetadataUpdatedMarker[] = "/dynamic_partition_metadata.UP Value* UpdateDynamicPartitionsFn(const char* name, State* state, const std::vector<std::unique_ptr<Expr>>& argv) { if (argv.size() != 1) { ErrorAbort(state, kArgsParsingFailure, "%s expects 1 arguments, got %zu", name, argv.size()); const std::string_view empty_string_view{}; if (argv.size() != 1 && argv.size() != 2) { ErrorAbort(state, kArgsParsingFailure, "%s expects 1 or 2 arguments, got %zu", name, argv.size()); return StringValue(""); } std::vector<std::unique_ptr<Value>> args; Loading @@ -102,6 +104,14 @@ Value* UpdateDynamicPartitionsFn(const char* name, State* state, return StringValue(""); } const std::unique_ptr<Value>& super_empty_value = args[1]; if (argv.size() > 1) { if (super_empty_value->type != Value::Type::BLOB) { ErrorAbort(state, kArgsParsingFailure, "super_empty argument to %s must be blob", name); return StringValue(""); } } std::string updated_marker = Paths::Get().stash_directory_base() + kMetadataUpdatedMarker; if (state->is_retry) { struct stat sb; Loading @@ -121,7 +131,8 @@ Value* UpdateDynamicPartitionsFn(const char* name, State* state, } auto updater_runtime = state->updater->GetRuntime(); if (!updater_runtime->UpdateDynamicPartitions(op_list_value->data)) { if (!updater_runtime->UpdateDynamicPartitions( op_list_value->data, argv.size() > 1 ? super_empty_value->data : empty_string_view)) { return StringValue(""); } Loading updater/include/updater/simulator_runtime.h +2 −1 Original line number Diff line number Diff line Loading @@ -52,7 +52,8 @@ class SimulatorRuntime : public UpdaterRuntimeInterface { bool MapPartitionOnDeviceMapper(const std::string& partition_name, std::string* path) override; bool UnmapPartitionOnDeviceMapper(const std::string& partition_name) override; bool UpdateDynamicPartitions(const std::string_view op_list_value) override; bool UpdateDynamicPartitions(const std::string_view op_list_value, const std::string_view super_empty_value) override; std::string AddSlotSuffix(const std::string_view arg) const override; private: Loading updater/include/updater/updater_runtime.h +3 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ #include <utility> #include <vector> #include "edify/expr.h" #include "edify/updater_runtime_interface.h" class UpdaterRuntime : public UpdaterRuntimeInterface { Loading Loading @@ -53,7 +54,8 @@ class UpdaterRuntime : public UpdaterRuntimeInterface { bool MapPartitionOnDeviceMapper(const std::string& partition_name, std::string* path) override; bool UnmapPartitionOnDeviceMapper(const std::string& partition_name) override; bool UpdateDynamicPartitions(const std::string_view op_list_value) override; bool UpdateDynamicPartitions(const std::string_view op_list_value, const std::string_view super_empty_value) override; std::string AddSlotSuffix(const std::string_view arg) const override; struct selabel_handle* sehandle() const override { Loading updater/simulator_runtime.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -113,7 +113,8 @@ bool SimulatorRuntime::UnmapPartitionOnDeviceMapper(const std::string& partition return true; } bool SimulatorRuntime::UpdateDynamicPartitions(const std::string_view op_list_value) { bool SimulatorRuntime::UpdateDynamicPartitions(const std::string_view op_list_value, const std::string_view /* super_empty_value */) { const std::unordered_set<std::string> commands{ "resize", "remove", "add", "move", "add_group", "resize_group", "remove_group", "remove_all_groups", Loading Loading
edify/include/edify/updater_runtime_interface.h +2 −1 Original line number Diff line number Diff line Loading @@ -72,7 +72,8 @@ class UpdaterRuntimeInterface { // Dynamic partition related functions. virtual bool MapPartitionOnDeviceMapper(const std::string& partition_name, std::string* path) = 0; virtual bool UnmapPartitionOnDeviceMapper(const std::string& partition_name) = 0; virtual bool UpdateDynamicPartitions(const std::string_view op_list_value) = 0; virtual bool UpdateDynamicPartitions(const std::string_view op_list_value, const std::string_view super_empty_value) = 0; // On devices supports A/B, add current slot suffix to arg. Otherwise, return |arg| as is. virtual std::string AddSlotSuffix(const std::string_view arg) const = 0; Loading
updater/dynamic_partitions.cpp +14 −3 Original line number Diff line number Diff line Loading @@ -88,8 +88,10 @@ static constexpr char kMetadataUpdatedMarker[] = "/dynamic_partition_metadata.UP Value* UpdateDynamicPartitionsFn(const char* name, State* state, const std::vector<std::unique_ptr<Expr>>& argv) { if (argv.size() != 1) { ErrorAbort(state, kArgsParsingFailure, "%s expects 1 arguments, got %zu", name, argv.size()); const std::string_view empty_string_view{}; if (argv.size() != 1 && argv.size() != 2) { ErrorAbort(state, kArgsParsingFailure, "%s expects 1 or 2 arguments, got %zu", name, argv.size()); return StringValue(""); } std::vector<std::unique_ptr<Value>> args; Loading @@ -102,6 +104,14 @@ Value* UpdateDynamicPartitionsFn(const char* name, State* state, return StringValue(""); } const std::unique_ptr<Value>& super_empty_value = args[1]; if (argv.size() > 1) { if (super_empty_value->type != Value::Type::BLOB) { ErrorAbort(state, kArgsParsingFailure, "super_empty argument to %s must be blob", name); return StringValue(""); } } std::string updated_marker = Paths::Get().stash_directory_base() + kMetadataUpdatedMarker; if (state->is_retry) { struct stat sb; Loading @@ -121,7 +131,8 @@ Value* UpdateDynamicPartitionsFn(const char* name, State* state, } auto updater_runtime = state->updater->GetRuntime(); if (!updater_runtime->UpdateDynamicPartitions(op_list_value->data)) { if (!updater_runtime->UpdateDynamicPartitions( op_list_value->data, argv.size() > 1 ? super_empty_value->data : empty_string_view)) { return StringValue(""); } Loading
updater/include/updater/simulator_runtime.h +2 −1 Original line number Diff line number Diff line Loading @@ -52,7 +52,8 @@ class SimulatorRuntime : public UpdaterRuntimeInterface { bool MapPartitionOnDeviceMapper(const std::string& partition_name, std::string* path) override; bool UnmapPartitionOnDeviceMapper(const std::string& partition_name) override; bool UpdateDynamicPartitions(const std::string_view op_list_value) override; bool UpdateDynamicPartitions(const std::string_view op_list_value, const std::string_view super_empty_value) override; std::string AddSlotSuffix(const std::string_view arg) const override; private: Loading
updater/include/updater/updater_runtime.h +3 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ #include <utility> #include <vector> #include "edify/expr.h" #include "edify/updater_runtime_interface.h" class UpdaterRuntime : public UpdaterRuntimeInterface { Loading Loading @@ -53,7 +54,8 @@ class UpdaterRuntime : public UpdaterRuntimeInterface { bool MapPartitionOnDeviceMapper(const std::string& partition_name, std::string* path) override; bool UnmapPartitionOnDeviceMapper(const std::string& partition_name) override; bool UpdateDynamicPartitions(const std::string_view op_list_value) override; bool UpdateDynamicPartitions(const std::string_view op_list_value, const std::string_view super_empty_value) override; std::string AddSlotSuffix(const std::string_view arg) const override; struct selabel_handle* sehandle() const override { Loading
updater/simulator_runtime.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -113,7 +113,8 @@ bool SimulatorRuntime::UnmapPartitionOnDeviceMapper(const std::string& partition return true; } bool SimulatorRuntime::UpdateDynamicPartitions(const std::string_view op_list_value) { bool SimulatorRuntime::UpdateDynamicPartitions(const std::string_view op_list_value, const std::string_view /* super_empty_value */) { const std::unordered_set<std::string> commands{ "resize", "remove", "add", "move", "add_group", "resize_group", "remove_group", "remove_all_groups", Loading