]> git.proxmox.com Git - mirror_spl-debian.git/commitdiff
Handle the FAPPEND option in vn_rdwr().
authorRicardo Correia <Ricardo.M.Correia@Sun.COM>
Fri, 23 Apr 2010 19:19:10 +0000 (12:19 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 23 Apr 2010 21:39:42 +0000 (14:39 -0700)
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
module/spl/spl-vnode.c

index 77652a5a259902f4b1ecb4ee2332cc879c30fe10..a113ecb2ff718b413311dd3a2b57c5c197c4f9fd 100644 (file)
@@ -181,7 +181,7 @@ EXPORT_SYMBOL(vn_openat);
 
 int
 vn_rdwr(uio_rw_t uio, vnode_t *vp, void *addr, ssize_t len, offset_t off,
-       uio_seg_t seg, int x1, rlim64_t x2, void *x3, ssize_t *residp)
+       uio_seg_t seg, int ioflag, rlim64_t x2, void *x3, ssize_t *residp)
 {
        loff_t offset;
        mm_segment_t saved_fs;
@@ -193,12 +193,15 @@ vn_rdwr(uio_rw_t uio, vnode_t *vp, void *addr, ssize_t len, offset_t off,
        ASSERT(vp);
        ASSERT(vp->v_file);
        ASSERT(seg == UIO_SYSSPACE);
-       ASSERT(x1 == 0);
+       ASSERT((ioflag & ~FAPPEND) == 0);
        ASSERT(x2 == RLIM64_INFINITY);
 
-       offset = off;
        fp = vp->v_file;
 
+       offset = off;
+       if (ioflag & FAPPEND)
+               offset = fp->f_pos;
+
        /* Writable user data segment must be briefly increased for this
         * process so we can use the user space read call paths to write
         * in to memory allocated by the kernel. */