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

Commit f9f83306 authored by Daniel Zheng's avatar Daniel Zheng
Browse files

Move Sync to base class

This function will be called in header write for both v3 and v2 writer.
Seems okay to move to base class as theres no unique functionality to
the v2 writer.

Test: cow_api_test

Change-Id: I70c1b08ce67127c9dcbd0f54b574d2cd5ad1d0b5
parent f7f3b62f
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -191,5 +191,16 @@ std::unique_ptr<chromeos_update_engine::FileDescriptor> CowWriterBase::OpenFileD
                                                      block_dev_size);
}

bool CowWriterBase::Sync() {
    if (is_dev_null_) {
        return true;
    }
    if (fsync(fd_.get()) < 0) {
        PLOG(ERROR) << "fsync failed";
        return false;
    }
    return true;
}

}  // namespace snapshot
}  // namespace android
+1 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ class CowWriterBase : public ICowWriter {
    // If the given label is not found, Initialize will fail.
    virtual bool Initialize(std::optional<uint64_t> label = {}) = 0;

    bool Sync();
    bool AddCopy(uint64_t new_block, uint64_t old_block, uint64_t num_blocks = 1) override;
    bool AddRawBlocks(uint64_t new_block_start, const void* data, size_t size) override;
    bool AddXorBlocks(uint32_t new_block_start, const void* data, size_t size, uint32_t old_block,
+0 −11
Original line number Diff line number Diff line
@@ -704,17 +704,6 @@ bool CowWriterV2::WriteRawData(const void* data, const size_t size) {
    return true;
}

bool CowWriterV2::Sync() {
    if (is_dev_null_) {
        return true;
    }
    if (fsync(fd_.get()) < 0) {
        PLOG(ERROR) << "fsync failed";
        return false;
    }
    return true;
}

bool CowWriterV2::Truncate(off_t length) {
    if (is_dev_null_ || is_block_device_) {
        return true;
+0 −1
Original line number Diff line number Diff line
@@ -58,7 +58,6 @@ class CowWriterV2 : public CowWriterBase {
    bool FlushCluster();

    bool CompressBlocks(size_t num_blocks, const void* data);
    bool Sync();
    bool Truncate(off_t length);
    bool EnsureSpaceAvailable(const uint64_t bytes_needed) const;