On 3/7/07, Alan Cox <[EMAIL PROTECTED]> wrote:
The right way IMHO would be to do the work that was done for pread/pwrite and implement preadv/pwritev. The moment you want to do atomic things with the file->f_pos instead of doing it with a local passed pos value it gets ugly.. why do you need to do it with f_pos ?
I didn't see any clean way to intersperse overwrites and appends to a record-structured file without using vfs_llseek, which steps on f_pos. Actually, we may already have a problem with append races in sys_write/sys_writev. If it's possible for two threads to write() to the same file in different threads (both intending to append), they may wind up passing the same "pos" value into vfs_write(). Or does fget_light/fput_light do some sort of locking that I'm not seeing? Cheers, - Michael - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/