Я пытаюсь прочитать битовую карту блоков и определить, какие блоки свободны / используются для определенной группы в файловой системе EXT2. Это то, что у меня есть до сих пор, однако это дает неправильный результат. Я определил, что причина ошибки заключается в том, что у int недостаточно бит для хранения растрового изображения, но я не уверен, что использовать вместо этого.
int buff;
int block_offset = (group.bg_block_bitmap-1)*(EXT2_MIN_BLOCK_SIZE << superblock.s_log_block_size) + OFFSET;
ret = pread(fd, &buff, sizeof(buff), block_offset);
if(ret < 0){
perror("spread");
exit(1);
}
printf("bitmap:%x\n", buff);
for(i = 1; i < num_blocks; i++){
if(!(buff & (0x1 << (i-1)))){
fprintf(stdout, "BFREE,%d\n", i);
}
}```