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"],
|
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