From c4d64008ac77f150e7d5191a6da1f59699f0f7dc Mon Sep 17 00:00:00 2001 From: Yi-Yo Chiang Date: Fri, 12 Feb 2021 02:17:03 +0800 Subject: gsid: Make createPartition() don't preempttively clear installer_ As enableGsi() uses the nullness of installer_ to decide if an on-going installation is happening, we shouldn't clear installer_ in createPartition() no matter what. Even when the installation failed to start, we should still leave installer_ pointing to an useless installation session, so that the caller can have a chance to handle the error state. I think we probably need a dedicated variable to indicate the installation state, so we can tell these subtle differences easier. Bug: 165925766 Bug: 179980369 Test: Verify that DSU installation completes successfully even when scratch failed to be installed. Change-Id: I7b465ac8a83859db45fc9c1a64eabfb76d780aee --- gsi_service.cpp | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/gsi_service.cpp b/gsi_service.cpp index 66e01ee..e4052b2 100644 --- a/gsi_service.cpp +++ b/gsi_service.cpp @@ -173,9 +173,6 @@ binder::Status GsiService::createPartition(const ::std::string& name, int64_t si return binder::Status::ok(); } - // Make sure a pending interrupted installations are cleaned up. - installer_ = nullptr; - // Do some precursor validation on the arguments before diving into the // install process. if (size % LP_SECTOR_SIZE) { @@ -202,11 +199,7 @@ binder::Status GsiService::createPartition(const ::std::string& name, int64_t si installer_ = std::make_unique(this, install_dir_, name, GetDsuSlot(install_dir_), size, readOnly); progress_ = {}; - int status = installer_->StartInstall(); - if (status != INSTALL_OK) { - installer_ = nullptr; - } - *_aidl_return = status; + *_aidl_return = installer_->StartInstall(); return binder::Status::ok(); } -- cgit v1.2.3