Merge "Revert "Cleaned up some slot logic""
This commit is contained in:
commit
b2fdbef489
3 changed files with 24 additions and 15 deletions
|
|
@ -1560,10 +1560,10 @@ static void CancelSnapshotIfNeeded() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetPartitionName(const ImageEntry& entry) {
|
std::string GetPartitionName(const ImageEntry& entry, std::string& current_slot) {
|
||||||
auto slot = entry.second;
|
auto slot = entry.second;
|
||||||
if (slot.empty()) {
|
if (slot.empty()) {
|
||||||
slot = get_current_slot();
|
slot = current_slot;
|
||||||
}
|
}
|
||||||
if (slot.empty()) {
|
if (slot.empty()) {
|
||||||
return entry.first->part_name;
|
return entry.first->part_name;
|
||||||
|
|
@ -1582,7 +1582,7 @@ class FlashAllTool {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void CheckRequirements();
|
void CheckRequirements();
|
||||||
void DetermineSecondarySlot();
|
void DetermineSlot();
|
||||||
void CollectImages();
|
void CollectImages();
|
||||||
void FlashImages(const std::vector<std::pair<const Image*, std::string>>& images);
|
void FlashImages(const std::vector<std::pair<const Image*, std::string>>& images);
|
||||||
void FlashImage(const Image& image, const std::string& slot, fastboot_buffer* buf);
|
void FlashImage(const Image& image, const std::string& slot, fastboot_buffer* buf);
|
||||||
|
|
@ -1600,13 +1600,15 @@ void FlashAllTool::Flash() {
|
||||||
|
|
||||||
// Change the slot first, so we boot into the correct recovery image when
|
// Change the slot first, so we boot into the correct recovery image when
|
||||||
// using fastbootd.
|
// using fastbootd.
|
||||||
if (fp_->slot_override == "all") {
|
if (fp_->slot == "all") {
|
||||||
set_active("a");
|
set_active("a");
|
||||||
} else {
|
} else {
|
||||||
set_active(fp_->slot_override);
|
set_active(fp_->slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
DetermineSecondarySlot();
|
DetermineSlot();
|
||||||
|
CollectImages();
|
||||||
|
|
||||||
CancelSnapshotIfNeeded();
|
CancelSnapshotIfNeeded();
|
||||||
|
|
||||||
// First flash boot partitions. We allow this to happen either in userspace
|
// First flash boot partitions. We allow this to happen either in userspace
|
||||||
|
|
@ -1651,12 +1653,18 @@ void FlashAllTool::CheckRequirements() {
|
||||||
::CheckRequirements({contents.data(), contents.size()}, fp_->force_flash);
|
::CheckRequirements({contents.data(), contents.size()}, fp_->force_flash);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FlashAllTool::DetermineSecondarySlot() {
|
void FlashAllTool::DetermineSlot() {
|
||||||
|
if (fp_->slot.empty()) {
|
||||||
|
fp_->current_slot = get_current_slot();
|
||||||
|
} else {
|
||||||
|
fp_->current_slot = fp_->slot;
|
||||||
|
}
|
||||||
|
|
||||||
if (fp_->skip_secondary) {
|
if (fp_->skip_secondary) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (fp_->slot_override != "" && fp_->slot_override != "all") {
|
if (fp_->slot != "" && fp_->slot != "all") {
|
||||||
fp_->secondary_slot = get_other_slot(fp_->slot_override);
|
fp_->secondary_slot = get_other_slot(fp_->slot);
|
||||||
} else {
|
} else {
|
||||||
fp_->secondary_slot = get_other_slot();
|
fp_->secondary_slot = get_other_slot();
|
||||||
}
|
}
|
||||||
|
|
@ -1670,7 +1678,7 @@ void FlashAllTool::DetermineSecondarySlot() {
|
||||||
|
|
||||||
void FlashAllTool::CollectImages() {
|
void FlashAllTool::CollectImages() {
|
||||||
for (size_t i = 0; i < images.size(); ++i) {
|
for (size_t i = 0; i < images.size(); ++i) {
|
||||||
std::string slot = fp_->slot_override;
|
std::string slot = fp_->slot;
|
||||||
if (images[i].IsSecondary()) {
|
if (images[i].IsSecondary()) {
|
||||||
if (fp_->skip_secondary) {
|
if (fp_->skip_secondary) {
|
||||||
continue;
|
continue;
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,8 @@ struct FlashingPlan {
|
||||||
bool skip_secondary = false;
|
bool skip_secondary = false;
|
||||||
bool force_flash = false;
|
bool force_flash = false;
|
||||||
|
|
||||||
std::string slot_override;
|
std::string slot;
|
||||||
|
std::string current_slot;
|
||||||
std::string secondary_slot;
|
std::string secondary_slot;
|
||||||
fastboot::FastBootDriver* fb;
|
fastboot::FastBootDriver* fb;
|
||||||
};
|
};
|
||||||
|
|
@ -102,7 +103,7 @@ struct NetworkSerial {
|
||||||
|
|
||||||
Result<NetworkSerial, FastbootError> ParseNetworkSerial(const std::string& serial);
|
Result<NetworkSerial, FastbootError> ParseNetworkSerial(const std::string& serial);
|
||||||
bool supports_AB();
|
bool supports_AB();
|
||||||
std::string GetPartitionName(const ImageEntry& entry);
|
std::string GetPartitionName(const ImageEntry& entry, std::string& current_slot_);
|
||||||
void flash_partition_files(const std::string& partition, const std::vector<SparsePtr>& files);
|
void flash_partition_files(const std::string& partition, const std::vector<SparsePtr>& files);
|
||||||
int64_t get_sparse_limit(int64_t size);
|
int64_t get_sparse_limit(int64_t size);
|
||||||
std::vector<SparsePtr> resparse_file(sparse_file* s, int64_t max_size);
|
std::vector<SparsePtr> resparse_file(sparse_file* s, int64_t max_size);
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ std::unique_ptr<FlashSuperLayoutTask> FlashSuperLayoutTask::Initialize(
|
||||||
LOG(VERBOSE) << "Cannot optimize flashing super on non-AB device";
|
LOG(VERBOSE) << "Cannot optimize flashing super on non-AB device";
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
if (fp->slot_override == "all") {
|
if (fp->slot == "all") {
|
||||||
LOG(VERBOSE) << "Cannot optimize flashing super for all slots";
|
LOG(VERBOSE) << "Cannot optimize flashing super for all slots";
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
@ -132,7 +132,7 @@ std::unique_ptr<FlashSuperLayoutTask> FlashSuperLayoutTask::Initialize(
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const auto& entry : os_images) {
|
for (const auto& entry : os_images) {
|
||||||
auto partition = GetPartitionName(entry);
|
auto partition = GetPartitionName(entry, fp->current_slot);
|
||||||
auto image = entry.first;
|
auto image = entry.first;
|
||||||
|
|
||||||
if (!helper->AddPartition(partition, image->img_name, image->optional_if_no_image)) {
|
if (!helper->AddPartition(partition, image->img_name, image->optional_if_no_image)) {
|
||||||
|
|
@ -145,7 +145,7 @@ std::unique_ptr<FlashSuperLayoutTask> FlashSuperLayoutTask::Initialize(
|
||||||
|
|
||||||
// Remove images that we already flashed, just in case we have non-dynamic OS images.
|
// Remove images that we already flashed, just in case we have non-dynamic OS images.
|
||||||
auto remove_if_callback = [&](const ImageEntry& entry) -> bool {
|
auto remove_if_callback = [&](const ImageEntry& entry) -> bool {
|
||||||
return helper->WillFlash(GetPartitionName(entry));
|
return helper->WillFlash(GetPartitionName(entry, fp->current_slot));
|
||||||
};
|
};
|
||||||
os_images.erase(std::remove_if(os_images.begin(), os_images.end(), remove_if_callback),
|
os_images.erase(std::remove_if(os_images.begin(), os_images.end(), remove_if_callback),
|
||||||
os_images.end());
|
os_images.end());
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue