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

Commit ad583f2a authored by Tianjie Xu's avatar Tianjie Xu
Browse files

Revert "libsnapshot: Implement OnlineKernelSnapshotWriter::OpenReader."

This reverts commit 39f25089.

Reason for revert: b/169981170, update crash for droidfooders.

Change-Id: I6a3d096df3174596d36195bf59fa8fbc88c982d0
parent 39f25089
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -74,7 +74,6 @@ filegroup {
        "android/snapshot/snapshot.proto",
        "device_info.cpp",
        "snapshot.cpp",
        "snapshot_reader.cpp",
        "snapshot_stats.cpp",
        "snapshot_stub.cpp",
        "snapshot_metadata_updater.cpp",
+0 −1
Original line number Diff line number Diff line
@@ -44,7 +44,6 @@
#include "device_info.h"
#include "partition_cow_creator.h"
#include "snapshot_metadata_updater.h"
#include "snapshot_reader.h"
#include "utility.h"

namespace android {
+0 −77
Original line number Diff line number Diff line
//
// Copyright (C) 2020 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

#include <ext4_utils/ext4_utils.h>

#include "snapshot_reader.h"

namespace android {
namespace snapshot {

// Not supported.
bool ReadOnlyFileDescriptor::Open(const char*, int, mode_t) {
    errno = EINVAL;
    return false;
}

bool ReadOnlyFileDescriptor::Open(const char*, int) {
    errno = EINVAL;
    return false;
}

ssize_t ReadOnlyFileDescriptor::Write(const void*, size_t) {
    errno = EINVAL;
    return false;
}

bool ReadOnlyFileDescriptor::BlkIoctl(int, uint64_t, uint64_t, int*) {
    errno = EINVAL;
    return false;
}

ReadFdFileDescriptor::ReadFdFileDescriptor(android::base::unique_fd&& fd) : fd_(std::move(fd)) {}

ssize_t ReadFdFileDescriptor::Read(void* buf, size_t count) {
    return read(fd_.get(), buf, count);
}

off64_t ReadFdFileDescriptor::Seek(off64_t offset, int whence) {
    return lseek(fd_.get(), offset, whence);
}

uint64_t ReadFdFileDescriptor::BlockDevSize() {
    return get_block_device_size(fd_.get());
}

bool ReadFdFileDescriptor::Close() {
    fd_ = {};
    return true;
}

bool ReadFdFileDescriptor::IsSettingErrno() {
    return true;
}

bool ReadFdFileDescriptor::IsOpen() {
    return fd_ >= 0;
}

bool ReadFdFileDescriptor::Flush() {
    return true;
}

}  // namespace snapshot
}  // namespace android
+0 −50
Original line number Diff line number Diff line
//
// Copyright (C) 2020 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

#pragma once

#include <android-base/file.h>
#include <payload_consumer/file_descriptor.h>

namespace android {
namespace snapshot {

class ReadOnlyFileDescriptor : public chromeos_update_engine::FileDescriptor {
  public:
    bool Open(const char* path, int flags, mode_t mode) override;
    bool Open(const char* path, int flags) override;
    ssize_t Write(const void* buf, size_t count) override;
    bool BlkIoctl(int request, uint64_t start, uint64_t length, int* result) override;
};

class ReadFdFileDescriptor : public ReadOnlyFileDescriptor {
  public:
    explicit ReadFdFileDescriptor(android::base::unique_fd&& fd);

    ssize_t Read(void* buf, size_t count) override;
    off64_t Seek(off64_t offset, int whence) override;
    uint64_t BlockDevSize() override;
    bool Close() override;
    bool IsSettingErrno() override;
    bool IsOpen() override;
    bool Flush() override;

  private:
    android::base::unique_fd fd_;
};

}  // namespace snapshot
}  // namespace android
+2 −8
Original line number Diff line number Diff line
@@ -19,12 +19,10 @@
#include <android-base/file.h>
#include <android-base/logging.h>
#include <payload_consumer/file_descriptor.h>
#include "snapshot_reader.h"

namespace android {
namespace snapshot {

using android::base::unique_fd;
using chromeos_update_engine::FileDescriptor;

ISnapshotWriter::ISnapshotWriter(const CowOptions& options) : ICowWriter(options) {}
@@ -85,13 +83,9 @@ bool OnlineKernelSnapshotWriter::EmitCopy(uint64_t new_block, uint64_t old_block
}

std::unique_ptr<FileDescriptor> OnlineKernelSnapshotWriter::OpenReader() {
    unique_fd fd(dup(snapshot_fd_.get()));
    if (fd < 0) {
        PLOG(ERROR) << "dup2 failed in OpenReader";
    LOG(ERROR) << "OnlineKernelSnapshotWriter::OpenReader not yet implemented";
    return nullptr;
}
    return std::make_unique<ReadFdFileDescriptor>(std::move(fd));
}

}  // namespace snapshot
}  // namespace android