---
title: VNOP_WRITE
framework: Kernel
role: symbol
role_heading: Function
platforms: [macOS 10.4+]
path: kernel/1586129-vnop_write
---

# VNOP_WRITE

Call down to the filesystem to write file data.

## Declaration

```occ
errno_t VNOP_WRITE(vnode_t vp, struct uio *uio, int ioflag, vfs_context_t ctx);
```

## Parameters

- `vp`: The vnode to write to.
- `uio`: Description of request, including file offset, amount of data to write, source address for data, and whether that destination is in kernel or user space.
- `ctx`: Context against which to authenticate write request.

## Return Value

Return Value 0 for success or a filesystem-specific error. VNOP_WRITE() can return success even if less data was written than originally requested; returning an error value should indicate that something actually went wrong.

## Discussion

Discussion VNOP_WRITE() is to write() as VNOP_READ() is to read(). The filesystem may use the buffer cache, the cluster layer, or an alternative method to write its data; uio routines will be used to see that data is copied to the correct virtual address in the correct address space and will update its uio argument to indicate how much data has been moved.

## See Also

### Support

- [nop_access](kernel/1523716-nop_access.md)
- [nop_advlock](kernel/1523779-nop_advlock.md)
- [nop_allocate](kernel/1523773-nop_allocate.md)
- [nop_blktooff](kernel/1523748-nop_blktooff.md)
- [nop_blockmap](kernel/1523729-nop_blockmap.md)
- [nop_bwrite](kernel/1523755-nop_bwrite.md)
- [nop_close](kernel/1523718-nop_close.md)
- [nop_copyfile](kernel/1523720-nop_copyfile.md)
- [nop_create](kernel/1523722-nop_create.md)
- [nop_exchange](kernel/1523694-nop_exchange.md)
- [nop_fsync](kernel/1523723-nop_fsync.md)
- [nop_getattr](kernel/1523698-nop_getattr.md)
- [nop_inactive](kernel/1523711-nop_inactive.md)
- [nop_ioctl](kernel/1523715-nop_ioctl.md)
- [nop_link](kernel/1523693-nop_link.md)
- [nop_mkdir](kernel/1523677-nop_mkdir.md)
- [nop_mknod](kernel/1523731-nop_mknod.md)
- [nop_mmap](kernel/1523753-nop_mmap.md)
- [nop_offtoblk](kernel/1523783-nop_offtoblk.md)
- [nop_open](kernel/1523733-nop_open.md)
- [nop_pagein](kernel/1523686-nop_pagein.md)
- [nop_pageout](kernel/1523770-nop_pageout.md)
- [nop_pathconf](kernel/1523727-nop_pathconf.md)
- [nop_read](kernel/1523765-nop_read.md)
- [nop_readdir](kernel/1523710-nop_readdir.md)
- [nop_readdirattr](kernel/1523717-nop_readdirattr.md)
- [nop_readlink](kernel/1523774-nop_readlink.md)
- [nop_reclaim](kernel/1523708-nop_reclaim.md)
- [nop_remove](kernel/1523713-nop_remove.md)
- [nop_rename](kernel/1523741-nop_rename.md)
- [nop_revoke](kernel/1523764-nop_revoke.md)
- [nop_rmdir](kernel/1523767-nop_rmdir.md)
- [nop_searchfs](kernel/1523744-nop_searchfs.md)
- [nop_select](kernel/1523738-nop_select.md)
- [nop_setattr](kernel/1523719-nop_setattr.md)
- [nop_strategy](kernel/1523746-nop_strategy.md)
- [nop_symlink](kernel/1523696-nop_symlink.md)
- [nop_whiteout](kernel/1523682-nop_whiteout.md)
- [nop_write](kernel/1523695-nop_write.md)
- [err_access](kernel/1523742-err_access.md)
- [err_advlock](kernel/1523766-err_advlock.md)
- [err_allocate](kernel/1523740-err_allocate.md)
- [err_blktooff](kernel/1523777-err_blktooff.md)
- [err_blockmap](kernel/1523771-err_blockmap.md)
- [err_bwrite](kernel/1523737-err_bwrite.md)
- [err_close](kernel/1523768-err_close.md)
- [err_copyfile](kernel/1523763-err_copyfile.md)
- [err_create](kernel/1523690-err_create.md)
- [err_exchange](kernel/1523683-err_exchange.md)
- [err_fsync](kernel/1523761-err_fsync.md)
- [err_getattr](kernel/1523757-err_getattr.md)
- [err_inactive](kernel/1523681-err_inactive.md)
- [err_ioctl](kernel/1523684-err_ioctl.md)
- [err_link](kernel/1523732-err_link.md)
- [err_mkdir](kernel/1523751-err_mkdir.md)
- [err_mknod](kernel/1523750-err_mknod.md)
- [err_mmap](kernel/1523704-err_mmap.md)
- [err_offtoblk](kernel/1523781-err_offtoblk.md)
- [err_open](kernel/1523735-err_open.md)
- [err_pagein](kernel/1523688-err_pagein.md)
- [err_pageout](kernel/1523700-err_pageout.md)
- [err_pathconf](kernel/1523679-err_pathconf.md)
- [err_read](kernel/1523775-err_read.md)
- [err_readdir](kernel/1523691-err_readdir.md)
- [err_readdirattr](kernel/1523705-err_readdirattr.md)
- [err_readlink](kernel/1523739-err_readlink.md)
- [err_reclaim](kernel/1523726-err_reclaim.md)
- [err_remove](kernel/1523769-err_remove.md)
- [err_rename](kernel/1523706-err_rename.md)
- [err_revoke](kernel/1523736-err_revoke.md)
- [err_rmdir](kernel/1523772-err_rmdir.md)
- [err_searchfs](kernel/1523702-err_searchfs.md)
- [err_select](kernel/1523714-err_select.md)
- [err_setattr](kernel/1523786-err_setattr.md)
- [err_strategy](kernel/1523730-err_strategy.md)
- [err_symlink](kernel/1523759-err_symlink.md)
- [err_whiteout](kernel/1523785-err_whiteout.md)
- [err_write](kernel/1523725-err_write.md)
- [advisory_read](kernel/1463716-advisory_read.md)
- [advisory_read_ext](kernel/1463707-advisory_read_ext.md)
- [VNOP_BWRITE](kernel/1585961-vnop_bwrite.md)
- [VNOP_FSYNC](kernel/1586212-vnop_fsync.md)
- [VNOP_GETXATTR](kernel/1586289-vnop_getxattr.md)
- [VNOP_IOCTL](kernel/1586258-vnop_ioctl.md)
- [VNOP_READ](kernel/1586326-vnop_read.md)
- [VNOP_SETXATTR](kernel/1586200-vnop_setxattr.md)
- [VNOP_STRATEGY](kernel/1586257-vnop_strategy.md)
- [cache_enter](kernel/1562285-cache_enter.md)
- [cache_lookup](kernel/1562195-cache_lookup.md)
- [cache_purge](kernel/1562225-cache_purge.md)
- [cache_purge_negatives](kernel/1562456-cache_purge_negatives.md)
