Is this an actual change? It looks to me that it is only a documentation 
change. Or is it the case that the intention is to remove some existing 
locks since they don't work anyway?


James Carlson wrote:
> I am sponsoring this fast-track request for Vasumathi Sundaram.  The
> timer is set to 01/02/2009 in light of the coming holidays.  Please
> speak up if you need more time than that.
>
> In an offline discussion, the project team went to lengths to find any
> sendfilev users, and determine whether the proposed change in
> semantics would affect any application.  There are just a few known
> users of sendfilev, and none of them do file-to-file transfers, so no
> problems are known or expected.
>
> It's an incompatible change to a Committed interface and we wish to
> assert Patch/Micro release binding, but the project team contends (and
> I agree) that (a) the original interface as specified has unresolvable
> defects that could lead to serious system stability problems, (b) we
> can't just remove the sendfilev interface because there are consumers,
> and (c) it appears unlikely that anyone ever used the functionality
> affected by this change as described.
>
>
> 1. Problem
>
>   sendfilev(3EXT) and sendfile(2) support transferring data from a
>   regular file to another regular file, in addition to being able to
>   transfer to a socket.  The current man page states that the
>   semantics of this function is analogous to writev(2), except that
>   sendfilev can read from data buffers or file descriptors.
>
>   Supporting this semantic, however, leads to unavoidable deadlock and
>   performance issues.
>
> 2. Solution
>
>   sendfilev is modified so that the output behavior is not the same as
>   writev() and when multiple threads attempt to write to the same
>   output file at the same time.  Instead, the result of the combined
>   operations is undefined.  The applications that use sendfilev() will
>   have to use their own synchronization mechanism to ensure a
>   consistent output.
>
> 3. Man page update
>
>   The following change will be made to the man page of sendfilev(3EXT).
>
> --- sendfilev.old       Thu Dec 18 15:41:16 2008
> +++ sendfilev.new       Thu Dec 18 15:45:40 2008
> @@ -44,12 +44,6 @@
>      open for writing.
>
>
> -     This function is analogous to the writev() system call.  See
> -     writev(2).  Instead  of sending out chunks of data, however,
> -     the sendfilev() function  can  read  input  data  from  data
> -     buffers or file descriptors.
> +     This function is analogous to the writev(2) system call, but can
> +     read from both buffers and file descriptors.  Unlike writev(),
> +     it does not provide protection against multiple writers on a
> +     single stream or file.  Applications must use their own
> +     synchronization mechanisms if such a situation is possible.
>
>       The following is the sendfilevec structure:
>
>        typedef struct sendfilevec {
>
>   


Reply via email to