]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/splice.c
splice: fix problem with atime not being updated
[linux-2.6-omap-h63xx.git] / fs / splice.c
index 0a0b79b01d059a1c71b632de1807100578be8269..1577a7391d23fa47cd74fb5089278dba81daee55 100644 (file)
@@ -1031,7 +1031,11 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd,
                        goto out_release;
        }
 
+done:
        pipe->nrbufs = pipe->curbuf = 0;
+       if (bytes > 0)
+               file_accessed(in);
+
        return bytes;
 
 out_release:
@@ -1047,16 +1051,11 @@ out_release:
                        buf->ops = NULL;
                }
        }
-       pipe->nrbufs = pipe->curbuf = 0;
-
-       /*
-        * If we transferred some data, return the number of bytes:
-        */
-       if (bytes > 0)
-               return bytes;
 
-       return ret;
+       if (!bytes)
+               bytes = ret;
 
+       goto done;
 }
 EXPORT_SYMBOL(splice_direct_to_actor);