43 lines
940 B
C
43 lines
940 B
C
#include <libcbd.h>
|
|
|
|
#include <libdevmapper.h>
|
|
|
|
#include <cbdutil.h>
|
|
|
|
int
|
|
cbd_tune(const char* dev,
|
|
tristate_t 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 != t_none) {
|
|
if (zero_detect == t_true) {
|
|
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;
|
|
}
|