Loading fs_mgr/libsnapshot/snapuserd/user-space-merge/handler_manager.cpp +2 −3 Original line number Diff line number Diff line Loading @@ -51,11 +51,10 @@ SnapshotHandlerManager::SnapshotHandlerManager() { std::shared_ptr<HandlerThread> SnapshotHandlerManager::AddHandler( const std::string& misc_name, const std::string& cow_device_path, const std::string& backing_device, const std::string& base_path_merge, std::shared_ptr<IBlockServerOpener> opener, int num_worker_threads, bool use_iouring, bool perform_verification) { std::shared_ptr<IBlockServerOpener> opener, int num_worker_threads, bool use_iouring) { auto snapuserd = std::make_shared<SnapshotHandler>(misc_name, cow_device_path, backing_device, base_path_merge, opener, num_worker_threads, use_iouring, perform_verification); use_iouring, perform_verification_); if (!snapuserd->InitCowDevice()) { LOG(ERROR) << "Failed to initialize Snapuserd"; return nullptr; Loading fs_mgr/libsnapshot/snapuserd/user-space-merge/handler_manager.h +7 −4 Original line number Diff line number Diff line Loading @@ -57,8 +57,7 @@ class ISnapshotHandlerManager { const std::string& backing_device, const std::string& base_path_merge, std::shared_ptr<IBlockServerOpener> opener, int num_worker_threads, bool use_iouring, bool perform_verification) = 0; int num_worker_threads, bool use_iouring) = 0; // Start serving requests on a snapshot handler. virtual bool StartHandler(const std::string& misc_name) = 0; Loading @@ -84,6 +83,9 @@ class ISnapshotHandlerManager { // Returns whether all snapshots have verified. virtual bool GetVerificationStatus() = 0; // Disable partition verification virtual void DisableVerification() = 0; }; class SnapshotHandlerManager final : public ISnapshotHandlerManager { Loading @@ -94,8 +96,7 @@ class SnapshotHandlerManager final : public ISnapshotHandlerManager { const std::string& backing_device, const std::string& base_path_merge, std::shared_ptr<IBlockServerOpener> opener, int num_worker_threads, bool use_iouring, bool perform_verification) override; int num_worker_threads, bool use_iouring) override; bool StartHandler(const std::string& misc_name) override; bool DeleteHandler(const std::string& misc_name) override; bool InitiateMerge(const std::string& misc_name) override; Loading @@ -104,6 +105,7 @@ class SnapshotHandlerManager final : public ISnapshotHandlerManager { void TerminateMergeThreads() override; double GetMergePercentage() override; bool GetVerificationStatus() override; void DisableVerification() override { perform_verification_ = false; } private: bool StartHandler(const std::shared_ptr<HandlerThread>& handler); Loading @@ -128,6 +130,7 @@ class SnapshotHandlerManager final : public ISnapshotHandlerManager { int num_partitions_merge_complete_ = 0; std::queue<std::shared_ptr<HandlerThread>> merge_handlers_; android::base::unique_fd monitor_merge_event_fd_; bool perform_verification_ = true; }; } // namespace snapshot Loading fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_server.cpp +4 −5 Original line number Diff line number Diff line Loading @@ -360,16 +360,15 @@ std::shared_ptr<HandlerThread> UserSnapshotServer::AddHandler(const std::string& num_worker_threads = 1; } bool perform_verification = true; if (android::base::EndsWith(misc_name, "-init") || is_socket_present_) { perform_verification = false; if (android::base::EndsWith(misc_name, "-init") || is_socket_present_ || (access(kBootSnapshotsWithoutSlotSwitch, F_OK) == 0)) { handlers_->DisableVerification(); } auto opener = block_server_factory_->CreateOpener(misc_name); return handlers_->AddHandler(misc_name, cow_device_path, backing_device, base_path_merge, opener, num_worker_threads, io_uring_enabled_, perform_verification); opener, num_worker_threads, io_uring_enabled_); } bool UserSnapshotServer::WaitForSocket() { Loading fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_server.h +2 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,8 @@ namespace snapshot { static constexpr uint32_t kMaxPacketSize = 512; static constexpr uint8_t kMaxMergeThreads = 2; static constexpr char kBootSnapshotsWithoutSlotSwitch[] = "/metadata/ota/snapshot-boot-without-slot-switch"; class UserSnapshotServer { private: Loading fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_test.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -627,9 +627,10 @@ void SnapuserdTest::CreateCowDeviceOrderedOps() { void SnapuserdTest::InitCowDevice() { auto factory = harness_->GetBlockServerFactory(); auto opener = factory->CreateOpener(system_device_ctrl_name_); handlers_->DisableVerification(); auto handler = handlers_->AddHandler(system_device_ctrl_name_, cow_system_->path, base_dev_->GetPath(), base_dev_->GetPath(), opener, 1, GetParam(), false); base_dev_->GetPath(), opener, 1, GetParam()); ASSERT_NE(handler, nullptr); ASSERT_NE(handler->snapuserd(), nullptr); #ifdef __ANDROID__ Loading Loading
fs_mgr/libsnapshot/snapuserd/user-space-merge/handler_manager.cpp +2 −3 Original line number Diff line number Diff line Loading @@ -51,11 +51,10 @@ SnapshotHandlerManager::SnapshotHandlerManager() { std::shared_ptr<HandlerThread> SnapshotHandlerManager::AddHandler( const std::string& misc_name, const std::string& cow_device_path, const std::string& backing_device, const std::string& base_path_merge, std::shared_ptr<IBlockServerOpener> opener, int num_worker_threads, bool use_iouring, bool perform_verification) { std::shared_ptr<IBlockServerOpener> opener, int num_worker_threads, bool use_iouring) { auto snapuserd = std::make_shared<SnapshotHandler>(misc_name, cow_device_path, backing_device, base_path_merge, opener, num_worker_threads, use_iouring, perform_verification); use_iouring, perform_verification_); if (!snapuserd->InitCowDevice()) { LOG(ERROR) << "Failed to initialize Snapuserd"; return nullptr; Loading
fs_mgr/libsnapshot/snapuserd/user-space-merge/handler_manager.h +7 −4 Original line number Diff line number Diff line Loading @@ -57,8 +57,7 @@ class ISnapshotHandlerManager { const std::string& backing_device, const std::string& base_path_merge, std::shared_ptr<IBlockServerOpener> opener, int num_worker_threads, bool use_iouring, bool perform_verification) = 0; int num_worker_threads, bool use_iouring) = 0; // Start serving requests on a snapshot handler. virtual bool StartHandler(const std::string& misc_name) = 0; Loading @@ -84,6 +83,9 @@ class ISnapshotHandlerManager { // Returns whether all snapshots have verified. virtual bool GetVerificationStatus() = 0; // Disable partition verification virtual void DisableVerification() = 0; }; class SnapshotHandlerManager final : public ISnapshotHandlerManager { Loading @@ -94,8 +96,7 @@ class SnapshotHandlerManager final : public ISnapshotHandlerManager { const std::string& backing_device, const std::string& base_path_merge, std::shared_ptr<IBlockServerOpener> opener, int num_worker_threads, bool use_iouring, bool perform_verification) override; int num_worker_threads, bool use_iouring) override; bool StartHandler(const std::string& misc_name) override; bool DeleteHandler(const std::string& misc_name) override; bool InitiateMerge(const std::string& misc_name) override; Loading @@ -104,6 +105,7 @@ class SnapshotHandlerManager final : public ISnapshotHandlerManager { void TerminateMergeThreads() override; double GetMergePercentage() override; bool GetVerificationStatus() override; void DisableVerification() override { perform_verification_ = false; } private: bool StartHandler(const std::shared_ptr<HandlerThread>& handler); Loading @@ -128,6 +130,7 @@ class SnapshotHandlerManager final : public ISnapshotHandlerManager { int num_partitions_merge_complete_ = 0; std::queue<std::shared_ptr<HandlerThread>> merge_handlers_; android::base::unique_fd monitor_merge_event_fd_; bool perform_verification_ = true; }; } // namespace snapshot Loading
fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_server.cpp +4 −5 Original line number Diff line number Diff line Loading @@ -360,16 +360,15 @@ std::shared_ptr<HandlerThread> UserSnapshotServer::AddHandler(const std::string& num_worker_threads = 1; } bool perform_verification = true; if (android::base::EndsWith(misc_name, "-init") || is_socket_present_) { perform_verification = false; if (android::base::EndsWith(misc_name, "-init") || is_socket_present_ || (access(kBootSnapshotsWithoutSlotSwitch, F_OK) == 0)) { handlers_->DisableVerification(); } auto opener = block_server_factory_->CreateOpener(misc_name); return handlers_->AddHandler(misc_name, cow_device_path, backing_device, base_path_merge, opener, num_worker_threads, io_uring_enabled_, perform_verification); opener, num_worker_threads, io_uring_enabled_); } bool UserSnapshotServer::WaitForSocket() { Loading
fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_server.h +2 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,8 @@ namespace snapshot { static constexpr uint32_t kMaxPacketSize = 512; static constexpr uint8_t kMaxMergeThreads = 2; static constexpr char kBootSnapshotsWithoutSlotSwitch[] = "/metadata/ota/snapshot-boot-without-slot-switch"; class UserSnapshotServer { private: Loading
fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_test.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -627,9 +627,10 @@ void SnapuserdTest::CreateCowDeviceOrderedOps() { void SnapuserdTest::InitCowDevice() { auto factory = harness_->GetBlockServerFactory(); auto opener = factory->CreateOpener(system_device_ctrl_name_); handlers_->DisableVerification(); auto handler = handlers_->AddHandler(system_device_ctrl_name_, cow_system_->path, base_dev_->GetPath(), base_dev_->GetPath(), opener, 1, GetParam(), false); base_dev_->GetPath(), opener, 1, GetParam()); ASSERT_NE(handler, nullptr); ASSERT_NE(handler->snapuserd(), nullptr); #ifdef __ANDROID__ Loading