mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-07 07:08:07 +00:00
splice: fix problem with atime not being updated
A bug report on nfsd that states that since it was switched to use splice instead of sendfile, the atime was no longer being updated on the input file. do_generic_mapping_read() does this when accessing the file, make splice do it for the direct splice handler. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
parent
12f32bb317
commit
9e97198dbf
1 changed files with 7 additions and 8 deletions
15
fs/splice.c
15
fs/splice.c
|
@ -1031,7 +1031,11 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd,
|
||||||
goto out_release;
|
goto out_release;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
done:
|
||||||
pipe->nrbufs = pipe->curbuf = 0;
|
pipe->nrbufs = pipe->curbuf = 0;
|
||||||
|
if (bytes > 0)
|
||||||
|
file_accessed(in);
|
||||||
|
|
||||||
return bytes;
|
return bytes;
|
||||||
|
|
||||||
out_release:
|
out_release:
|
||||||
|
@ -1047,16 +1051,11 @@ out_release:
|
||||||
buf->ops = NULL;
|
buf->ops = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pipe->nrbufs = pipe->curbuf = 0;
|
|
||||||
|
|
||||||
/*
|
if (!bytes)
|
||||||
* If we transferred some data, return the number of bytes:
|
bytes = ret;
|
||||||
*/
|
|
||||||
if (bytes > 0)
|
|
||||||
return bytes;
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(splice_direct_to_actor);
|
EXPORT_SYMBOL(splice_direct_to_actor);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue