Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bd83b72b authored by Akilesh Kailash's avatar Akilesh Kailash Committed by Gerrit Code Review
Browse files

Merge "libsnapshot:snapuserd: Multithreading support"

parents 394a1ede 8f084094
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -416,6 +416,7 @@ cc_defaults {
        "snapuserd_server.cpp",
        "snapuserd.cpp",
        "snapuserd_daemon.cpp",
	"snapuserd_worker.cpp",
    ],

    cflags: [
@@ -554,6 +555,7 @@ cc_test {
    srcs: [
        "cow_snapuserd_test.cpp",
        "snapuserd.cpp",
	"snapuserd_worker.cpp",
    ],
    cflags: [
        "-Wall",
+23 −0
Original line number Diff line number Diff line
@@ -42,6 +42,29 @@ static void SHA256(const void*, size_t, uint8_t[]) {
#endif
}

bool CowReader::InitForMerge(android::base::unique_fd&& fd) {
    owned_fd_ = std::move(fd);
    fd_ = owned_fd_.get();

    auto pos = lseek(fd_.get(), 0, SEEK_END);
    if (pos < 0) {
        PLOG(ERROR) << "lseek end failed";
        return false;
    }
    fd_size_ = pos;

    if (lseek(fd_.get(), 0, SEEK_SET) < 0) {
        PLOG(ERROR) << "lseek header failed";
        return false;
    }
    if (!android::base::ReadFully(fd_, &header_, sizeof(header_))) {
        PLOG(ERROR) << "read header failed";
        return false;
    }

    return true;
}

bool CowReader::Parse(android::base::unique_fd&& fd, std::optional<uint64_t> label) {
    owned_fd_ = std::move(fd);
    return Parse(android::base::borrowed_fd{owned_fd_}, label);
+5 −0
Original line number Diff line number Diff line
@@ -116,12 +116,15 @@ class ICowOpReverseIter {
class CowReader : public ICowReader {
  public:
    CowReader();
    ~CowReader() { owned_fd_ = {}; }

    // Parse the COW, optionally, up to the given label. If no label is
    // specified, the COW must have an intact footer.
    bool Parse(android::base::unique_fd&& fd, std::optional<uint64_t> label = {});
    bool Parse(android::base::borrowed_fd fd, std::optional<uint64_t> label = {});

    bool InitForMerge(android::base::unique_fd&& fd);

    bool GetHeader(CowHeader* header) override;
    bool GetFooter(CowFooter* footer) override;

@@ -146,6 +149,8 @@ class CowReader : public ICowReader {

    uint64_t total_data_ops() { return total_data_ops_; }

    void CloseCowFd() { owned_fd_ = {}; }

  private:
    bool ParseOps(std::optional<uint64_t> label);

+1 −1
Original line number Diff line number Diff line
@@ -1265,7 +1265,7 @@ static bool DeleteDmDevice(const std::string& name, const std::chrono::milliseco
            LOG(ERROR) << "DeleteDevice timeout: " << name;
            return false;
        }
        std::this_thread::sleep_for(250ms);
        std::this_thread::sleep_for(400ms);
    }

    return true;
+30 −581

File changed.

Preview size limit exceeded, changes collapsed.

Loading