Re: thread concurrent file operation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Very nice!


2013/2/7 Peter Teoh <htmldeveloper@xxxxxxxxx>
Multiple concurrent write() by different thread is possible, as they all can share the same file descriptor in a single similar process, and this is not allowed.   So nevertheless, the problem you posed is not allowed/acceptable by the kernel, so Linus himself fixed it:

See here:

http://lwn.net/Articles/180387/

And Linus patch:

http://lwn.net/Articles/180396/

but my present version (3.2.0) has rcu lock over it (higher performance):

        INIT_LIST_HEAD(&f->f_u.fu_list);
        atomic_long_set(&f->f_count, 1);
        rwlock_init(&f->f_owner.lock);
        spin_lock_init(&f->f_lock);
        eventpoll_init_file(f);
        /* f->f_version: 0 */


On Thu, Feb 7, 2013 at 4:44 PM, Karaoui mohamed lamine <moharaka@xxxxxxxxx> wrote:

Tahnks guys!

2013/1/30 Karaoui mohamed lamine <moharaka@xxxxxxxxx>
thanks, i think i get it.

2013/1/30 <Valdis.Kletnieks@xxxxxx>

On Tue, 29 Jan 2013 20:16:26 +0100, you said:

> Actually my question is :
> Does POSIX specifies  the fact that we need to use "lockf" to be able to do
> read/write operation in different offset ? Is'n the kernel supposed to
> ensure this ?

If you have non-overlapping writes, the kernel will eventually sort it out
for you.  If your writes overlap, you'll have to provide your own locking
via lockf() or similar, and synchronization via other methods.



_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies




--
Regards,
Peter Teoh

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux