Julio 2012 Problema 2 parte b)

Julio 2012 Problema 2 parte b)

de Juan Andres Nin Maccio -
Número de respuestas: 3

Por qué en la solución no se busca directamente el inodo de la ruta buscada?

Una vez que comprobamos que la ruta existe no se puede hacer:

getInode(cam, inodoArchivo, ok);

No entiendo por qué se busca el archivo dentro de los bloques del inodo del directorio padre en lugar de buscar directamente el inodo del archivo.

En respuesta a Juan Andres Nin Maccio

Re: Julio 2012 Problema 2 parte b)

de Andres Bello Ureta -
Del nro_inodo no podes ir a su dir_entry asociada. Entonces, si usas getInodo para obtener el nro del inodo del archivo no vas a poder obtener el nro de bloque y dir_entry de ese archivo.

Para borrarlo tenes que pararte en el padre y acceder al dir_entry del archivo para marcarlo como no usado. La unica forma de saber eso es recorrer todos lo bloques del dir padre y para cada bloque el dir_entry hasta encontrar al archivo. Una vez encotnrado almacenas el nro de bloque y dir entry par aluego "borrarlo".

Ademas hacer getInodo del padre y luego getInodo del hijo es mucho mas ineficiente.
En respuesta a Andres Bello Ureta

Re: Julio 2012 Problema 2 parte b)

de Juan Andres Nin Maccio -

Pero si tengo el nro_inodo del archivo no puedo acceder al inodo desde TD y en el campo data ver los bloque que usa y su dir_entry?

En respuesta a Juan Andres Nin Maccio

Re: Julio 2012 Problema 2 parte b)

de Andres Bello Ureta -

Capaz que no estoy entendiendo bien la pregunta, estamos de acuerdo con que si tenes el número de i_nodo del archivo podes acceder desde data a sus dir_entry asociados, el tema es que cuando borres el archivo tenes que borrarlo del directorio al cual pertenecia (el padre). Para hacer esto último tenes que recorrer los dir_entry's del padre y marcar como no usado al que corresponda al archivo.