cbd/libcbd/tune.c

41 lines
861 B
C

#include <libcbd.h>
#include <libdevmapper.h>
#include <cbdutil.h>
int
cbd_tune(const char* dev,
bool zero_detect, uint level, bool repack)
{
int fd;
uint8_t header_buf[SECTOR_SIZE];
struct cbd_header header;
fd = open(dev, O_RDWR);
if (fd < 0) {
error("Cannot open device");
}
pblk_read(fd, SECTOR_SIZE, 0, 1, header_buf);
cbd_header_get(header_buf, &header);
cbd_check_header(&header);
if (zero_detect) {
header.params.flags |= CBD_FLAG_DETECT_ZEROS;
}
else {
header.params.flags &= ~CBD_FLAG_DETECT_ZEROS;
}
if (level) {
cbd_compression_level_put(&header.params, level);
}
cbd_header_put(header_buf, &header);
pblk_write(fd, SECTOR_SIZE, 0, 1, header_buf);
if (repack) {
error("repack not supported yet\n");
}
return 0;
}