[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2] tools/libxc: Implement writev_exact() in the same style as write_exact()
On 08/07/14 17:58, Ian Jackson wrote: > Andrew Cooper writes ("Re: [Xen-devel] [PATCH v2] tools/libxc: Implement > writev_exact() in the same style as write_exact()"): >> Final paragraph in the DESCRIPTION >> >> "The data transfers performed by readv() and writev() are atomic: the >> data written by writev() is written as a single block that is not >> intermingled with output from writes in other processes" >> >> By my reading, it cannot guarantee atomicity if it would split an iov[] >> element. > Firstly, we should be using the spec, not manpages: > http://pubs.opengroup.org/onlinepubs/9699919799/functions/writev.html > http://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html > etc. > > There are various guarantees that write and writev provide, including > the special rule for pipes (from write.html): > > Write requests to a pipe or FIFO shall be handled in the same way as > a regular file with the following exceptions: > [ complicated rules involving PIPE_BUF ] > > and the general rule about system call atomicity: > > > http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_09_07 > > All of the following functions shall be atomic with respect to each > other in the effects specified in POSIX.1-2008 when they operate on > regular files or symbolic links: > [...] write() writev() [...] > > However neither of these are the guarantee that you are assuming. > > In particular, there is nothing saying that _if_ writev performs a > partial write, it won't stop inside an iov. > > Ian. Ok - in which case v1 of the patch is correct. I shall submit v3 which looks similar to v1, but with some comments improvements ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |