mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-11-17 18:11:00 +03:00
Handle the FAPPEND option in vn_rdwr().
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
This commit is contained in:
parent
82a358d9c0
commit
663e02a135
@ -181,7 +181,7 @@ EXPORT_SYMBOL(vn_openat);
|
|||||||
|
|
||||||
int
|
int
|
||||||
vn_rdwr(uio_rw_t uio, vnode_t *vp, void *addr, ssize_t len, offset_t off,
|
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;
|
loff_t offset;
|
||||||
mm_segment_t saved_fs;
|
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);
|
||||||
ASSERT(vp->v_file);
|
ASSERT(vp->v_file);
|
||||||
ASSERT(seg == UIO_SYSSPACE);
|
ASSERT(seg == UIO_SYSSPACE);
|
||||||
ASSERT(x1 == 0);
|
ASSERT((ioflag & ~FAPPEND) == 0);
|
||||||
ASSERT(x2 == RLIM64_INFINITY);
|
ASSERT(x2 == RLIM64_INFINITY);
|
||||||
|
|
||||||
offset = off;
|
|
||||||
fp = vp->v_file;
|
fp = vp->v_file;
|
||||||
|
|
||||||
|
offset = off;
|
||||||
|
if (ioflag & FAPPEND)
|
||||||
|
offset = fp->f_pos;
|
||||||
|
|
||||||
/* Writable user data segment must be briefly increased for this
|
/* Writable user data segment must be briefly increased for this
|
||||||
* process so we can use the user space read call paths to write
|
* process so we can use the user space read call paths to write
|
||||||
* in to memory allocated by the kernel. */
|
* in to memory allocated by the kernel. */
|
||||||
|
Loading…
Reference in New Issue
Block a user