Merge "Add binary to write basic COW" into main
This commit is contained in:
commit
0fc7feeafb
3 changed files with 71 additions and 0 deletions
|
|
@ -20,3 +20,26 @@ cc_binary {
|
|||
|
||||
cflags: ["-Werror"],
|
||||
}
|
||||
|
||||
|
||||
cc_binary {
|
||||
name: "basic_v2_cow_writer",
|
||||
host_supported: true,
|
||||
defaults: [
|
||||
"fs_mgr_defaults",
|
||||
"libsnapshot_cow_defaults",
|
||||
],
|
||||
|
||||
srcs: ["basic_v2_cow_writer.cpp"],
|
||||
|
||||
static_libs: [
|
||||
"libsnapshot_cow",
|
||||
],
|
||||
|
||||
shared_libs: [
|
||||
"libbase",
|
||||
"liblog",
|
||||
],
|
||||
|
||||
cflags: ["-Werror"],
|
||||
}
|
||||
|
|
|
|||
48
fs_mgr/libsnapshot/tools/basic_v2_cow_writer.cpp
Normal file
48
fs_mgr/libsnapshot/tools/basic_v2_cow_writer.cpp
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
#include <android-base/file.h>
|
||||
#include <android-base/logging.h>
|
||||
#include <libsnapshot/cow_compress.h>
|
||||
#include <libsnapshot/cow_format.h>
|
||||
#include <libsnapshot/cow_writer.h>
|
||||
#include <filesystem>
|
||||
|
||||
#include "android-base/unique_fd.h"
|
||||
|
||||
using namespace android::snapshot;
|
||||
|
||||
// This writes a simple cow v2 file in the current directory. This file will serve as testdata for
|
||||
// ensuring our v3 cow reader will be able to read a cow file created by the v2 writer.
|
||||
//
|
||||
// WARNING: We should not be overriding this test file, as it will serve as historic marker for what
|
||||
// a device with old writer_v2 will write as a cow.
|
||||
void write_cow_v2() {
|
||||
CowOptions options;
|
||||
options.cluster_ops = 5;
|
||||
options.num_merge_ops = 1;
|
||||
std::string data = "This is some data, believe it";
|
||||
data.resize(options.block_size, '\0');
|
||||
|
||||
char cwd_buffer[1024];
|
||||
size_t cwd_buffer_size = sizeof(cwd_buffer);
|
||||
|
||||
// Get the current working directory path.
|
||||
char* err = getcwd(cwd_buffer, cwd_buffer_size);
|
||||
if (!err) {
|
||||
LOG(ERROR) << "Couldn't get current directory";
|
||||
}
|
||||
android::base::unique_fd fd(open(strcat(cwd_buffer, "/cow_v2"), O_CREAT | O_RDWR, 0666));
|
||||
if (fd.get() == -1) {
|
||||
LOG(FATAL) << "couldn't open tmp_cow";
|
||||
}
|
||||
std::unique_ptr<ICowWriter> writer = CreateCowWriter(2, options, std::move(fd));
|
||||
writer->AddCopy(0, 5);
|
||||
writer->AddRawBlocks(2, data.data(), data.size());
|
||||
writer->AddLabel(1);
|
||||
writer->AddXorBlocks(50, data.data(), data.size(), 24, 10);
|
||||
writer->AddZeroBlocks(5, 10);
|
||||
writer->AddLabel(2);
|
||||
writer->Finalize();
|
||||
}
|
||||
|
||||
int main() {
|
||||
write_cow_v2();
|
||||
}
|
||||
BIN
fs_mgr/libsnapshot/tools/testdata/cow_v2
vendored
Normal file
BIN
fs_mgr/libsnapshot/tools/testdata/cow_v2
vendored
Normal file
Binary file not shown.
Loading…
Add table
Reference in a new issue