Salut, Andrei.<br><br>O sa incerc sa iti raspund la intrebari.<br><br>1) Daca vrei sa sincronizezi accesul la acelasi fisier studiaza sectiunea de advisory locking de la fcntl(2) sau alternativ, functia flock(2). Doar cu open fara O_CREAT nu cred ca se poate obtine acces exclusiv.
<br><br>2) In generic_file_write se face asta:<br>&nbsp;&nbsp;&nbsp; down(&amp;inode-&gt;i_sem);<br>&nbsp;&nbsp;&nbsp; err = generic_file_write_nolock(file, &amp;local_iov, 1, ppos);<br>&nbsp;&nbsp;&nbsp; up(&amp;inode-&gt;i_sem);<br><br>Deci aici apare locking-ul. Nu o sa apara datele intretesute in fisier, ci in functie de ordinea operatiilor, o sa fie ori una ori alta cea care are ultimul cuvant pe portiunea comuna :). In exemplul din intrebare, daca 2 clienti incearca sa scrie la acelasi offset &quot;abc&quot; si &quot;xyz&quot; o sa ai ori &quot;abc&quot; ori &quot;xyz&quot; in final.
<br><br>Oricum, nu trebuie sa va preocupe prea mult chestiunea asta in contextul temei. Testele nu verifica asa ceva, deci puteti ignora cu succes aspectele astea :).<br><br>Cosmin.<br><br><br><div class="gmail_quote">On Dec 14, 2007 2:01 PM, Andrei Homescu &lt;
<a href="mailto:ahomescu@gmail.com">ahomescu@gmail.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Salut!<br><br>Am niste intrebari legate de accesele la fisiere care se rezuma asa:
<br>ce se intampla daca mai multi clienti incearca sa scrie in acelasi<br>timp in acelasi fisier.<br>Intrebarile mele de fapt sunt:<br>1) Se poate deschide cu open() acelasi fisier de mai multe ori, chiar<br>si pentru scriere. Cum se poate impiedica a doua deschidere a unui
<br>fisier?<br>2) Am urmarit apelurile de functii si arata cam asa:<br>aio_write-&gt;pwrite-&gt;do_pwrite-&gt;pwrite64=&gt;sys_pwrite64-&gt;vfs_write-&gt;generic_file_write.<br>Nicaieri in acest lant nu apare vreun lock, deci nu mi-e clar daca
<br>operatia de scriere e atomica. Ce se intampla daca 2 clienti incearca<br>sa scrie niste date la acelasi offset din fisier? De exemplu, sirurile<br>&quot;abc&quot; si &quot;xyz&quot; vor fi scrise intotdeauna &quot;abcxyz&quot; sau pot aparea
<br>intretesute?<br><br>A doua intrebare a venit de la Alex Suhan si acum stam amandoi cu<br>sufletul la gura dupa raspuns :D<br><font color="#888888"><br>Andrei Homescu<br>_______________________________________________<br>
so mailing list<br><a href="mailto:so@cursuri.cs.pub.ro">so@cursuri.cs.pub.ro</a><br><a href="http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so" target="_blank">http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so</a><br>
</font></blockquote></div><br>