#include #include #include 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; }