Open lucaszane opened 5 years ago
Essa implementação é a encadeada tradicional. E tem, portanto, todas as vantagens e desvantagens que o próprio livro cita.
É uma implementação muito melhor que a contígua.
Você chegou a dar uma olhada na implementação FAT? O livre a descreve em detalhes. Ela é quase a mesma coisa que a encadeada mas você guarda os ponteiros no superbloco. Assim você economiza o espaço no bloco (4 bytes) propriamente dito.
Que tipo de problemas vocês estão enfrentando?
Obrigado, professor! Na verdade queríamos confirmar se estavamos no caminho certo.
Agora estamos enfrentando um problema com a leitura e armazenamento de múltiplos bocos no buffer "buf" que recebemos do fuse na função "read_brisafs". A ideia é que leiamos o conteúdo de todos os blocos nesse buffer, iterando sobre cada bloco encadeado da seguinte forma:
// readed_size -> Tamanho já lido de outros blocos;
// size_to_read -> Tamanho a ler no bloco atual;
memcpy(buf + readed_size, disco[bloco].data, size_to_read);
O problema é que não estamos conseguindo copiar todos os blocos para o buffer desta maneira, ele está copiando o conteúdo somente do primeiro bloco. Não conseguimos alocar mais memória nele também. Será que existe alguma questão específica para esse buffer que o fuse envia?
Obrigado.
O buffer enviado pelo fuse é um vetor de bytes sem nenhum detalhe escondido.
Note que a função que efetua a leitura precisa devolver o total de bytes lidos. Talvez o retorno da sua função não esteja sendo atualizado após a leitura do último bloco?
Obrigado pela dica, mas não é isso. Conferimos o retorno da função e bate com o total de bytes lidos em todos os blocos :(
Professor,
Estamos pensando na implementação de alocação encadeada da seguinte forma:
O senhor encorajaria uma implementação deste tipo? Será que é a melhor forma de fazermos ou você poderia nos dar alguma outra indicação?
Estamos tendo algumas dificuldades com relação a essa estrutura.
Obrigado, Lucas Zane