<div dir="ltr">Pai si in laborator si in minix_setattr se face truncate_setsize(inode, attr->ia_size), care din cate inteleg face inode->i_size = attr->ia_size pe fundal. Una din probleme este ca mereu am attr->ia_size egal cu 0. Am pus printuri, codul este copy paste cel din labul de filesystems 2. <div>Alta nelamurire este ca nu inteleg de unde am acces in pitix_truncate la dimensiunea veche. Adica am acces la dimensiunea noua, dar cum o iau si pe cea veche ca sa pot sa le compar sa vad daca trebuie sa aloc/sterg blocuri?</div><div>Imi e neclar.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, 19 Apr 2020 at 16:13, Sergiu Weisz via so2 <<a href="mailto:so2@cursuri.cs.pub.ro">so2@cursuri.cs.pub.ro</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 19.04.2020 15:52, Alexandru Meterez via so2 wrote:<br>
> Salutare.<br>
> Nu inteleg daca pitix_truncate merge ca truncate-ul din userspace.<br>
> <br>
> Adica in pitix_setattr, care eu inteleg ca se apeleaza mereu cand se schimba <br>
> ceva legat de inode(dimensiune, drepturi etc), daca modific size-ul, trebuie sa <br>
> intre pe pitix_truncate. In pitix_truncate, in functie de attr->ia_size, trebuie <br>
> sa ma uit daca noul size e mai mare sau mai mic fata de cel vechi si sa aloc mai <br>
> multe blocuri, respectiv sterg blocuri.<br>
> <br>
> Nu stiu daca fac eu ceva fundamental gresit, dar la mine attr->ia_size e vesnic <br>
> 0. Am pus printuri si nu se schimba nimic cand scriu/sterg ceva dintr-un fisier. <br>
> Putin ajutor va rog?<br>
<br>
Salutare,<br>
<br>
Ai inteles corect ce face truncate.<br>
<br>
Dimensiunea noua o determini in functie de numarul de blocuri pe care le are <br>
inode-ul, nu din attr->ia_size.<br>
<br>
Poti sa vezi o implementare referinta aici [1].<br>
<br>
[1] <a href="https://elixir.bootlin.com/linux/latest/source/fs/minix/itree_common.c#L294" rel="noreferrer" target="_blank">https://elixir.bootlin.com/linux/latest/source/fs/minix/itree_common.c#L294</a><br>
<br>
Sergiu<br>
_______________________________________________<br>
<a href="http://ocw.cs.pub.ro/courses/so2/resurse/lista-discutii" rel="noreferrer" target="_blank">http://ocw.cs.pub.ro/courses/so2/resurse/lista-discutii</a></blockquote></div>