On 03/03/2014 06:36 PM, Linus Torvalds wrote: > Ok, sorry for the long delay, I was distracted (and hoping that Al > would come up with a patch). > > Anyway, attached is the patch I think we should do for this issue. It > is fairly simple: > > - it adds a "f_pos_mutex" to the "struct file". > > - it adds a new FMODE_ATOMIC_POS flag to the file mode flags to mark > things that need atomic f_pos updates > > - it makes the "struct fd" flags be two flags rather than one: the > second flag is for "unlock f_pos_mutex when done" > > - it introduces "fd[get,put]_pos()" which gets the f_pos_mutex when required > > - it makes read/write/lseek use that. > > It's pretty damn straightforward, I think, and is minimally serializing. > > Al, comments? Yongzhi Pan, this is pretty much untested, but it's > pretty simple and it does fix your test-case. The original code (where Yongzhi Pan reported an issue) and the multi_writer.c test code where both mine actually. Anyway, I applied the patch to 3.14-rc5, and I (not withstanding the other points raised by Al about the patch) I confirm that this patch makes the problem that I'm seeing go away. Thanks for looking at this, Linus. Cheers, Michael -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/ -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html