vnop_create_attr Entry Point

Purpose

Creates a new file.

Syntax

int vnop_create_attr (dvp, vpp, flags, name, vap, vcf, finfop, crp) struct vnode *dvp; struct vnode *vpp; int flags; char *name; struct vattr *vap; int vcf; caddr_t finfop; struct ucred *crp;

Parameters

Item Description
dvp Points to the directory vnode.
vpp Points to the newly created vnode pointer.
flags Specifies file creation flags.
name Specifies the name of the file to create.
vattr Points to the initial attributes.
vcf Specifies create flags.
finfop Specifies address of finfo field.
crp Specifies user's credentials.

Description

The vnop_create_attr entry point is used to create a new file. This operation is similar to the vnop_create entry point except that the initial file attributes are passed in a vattr structure.

The va_mask field in the vattr structure identifies which attributes are to be applied. For example, if the AT_SIZE bit is set, then the file system should use va_size for the initial file size. For all vnop_create_attr calls, at least AT_TYPE and AT_MODE must be set.

The vcf parameter controls how the new vnode is to be activated. If vcf is set to VC_OPEN, then the new object should be opened. If vcf is VC_LOOKUP, then the new object should be created, but not opened. If vcf is VC_DEFAULT, then the new object should be created, but the vnode for the object is not activated.

File systems that do not define GFS_VERSION421 in their gfs flags do not need to supply a vnop_create_attr entry point. The logical file system will funnel all creation requests through the old vnop_create entry point.

Execution Environment

The vnop_create_attr entry point can be called from the process environment only.

Return Values

Item Description
Zero Indicates a successful operation; *vpp contains a pointer to the new vnode.
Nonzero Indicates that the operation failed; return values should be chosen from the /usr/include/sys/errno.h file.