Чтение проблем с размером буфера растрового изображения файловой системы EXT2 - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь прочитать битовую карту блоков и определить, какие блоки свободны / используются для определенной группы в файловой системе 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);
    }
}```

...