Add VOP_VPUT_PAIR() with trivial default implementation.

(cherry picked from commit 49c117c193)
This commit is contained in:
Konstantin Belousov 2021-01-29 00:30:53 +02:00
parent 75f0d88bd3
commit 1f96e4cd1e
2 changed files with 24 additions and 0 deletions

View File

@ -92,6 +92,7 @@ static int vop_stdfdatasync(struct vop_fdatasync_args *ap);
static int vop_stdgetpages_async(struct vop_getpages_async_args *ap);
static int vop_stdread_pgcache(struct vop_read_pgcache_args *ap);
static int vop_stdstat(struct vop_stat_args *ap);
static int vop_stdvput_pair(struct vop_vput_pair_args *ap);
/*
* This vnode table stores what we want to do if the filesystem doesn't
@ -151,6 +152,7 @@ struct vop_vector default_vnodeops = {
.vop_unset_text = vop_stdunset_text,
.vop_add_writecount = vop_stdadd_writecount,
.vop_copy_file_range = vop_stdcopy_file_range,
.vop_vput_pair = vop_stdvput_pair,
};
VFS_VOP_VECTOR_REGISTER(default_vnodeops);
@ -1592,3 +1594,16 @@ vop_stdread_pgcache(struct vop_read_pgcache_args *ap __unused)
{
return (EJUSTRETURN);
}
static int
vop_stdvput_pair(struct vop_vput_pair_args *ap)
{
struct vnode *dvp, *vp, **vpp;
dvp = ap->a_dvp;
vpp = ap->a_vpp;
vput(dvp);
if (vpp != NULL && ap->a_unlock_vp && (vp = *vpp) != NULL)
vput(vp);
return (0);
}

View File

@ -792,6 +792,15 @@ vop_copy_file_range {
};
%% vput_pair dvp E - -
vop_vput_pair {
IN struct vnode *dvp;
INOUT struct vnode **vpp;
IN bool unlock_vp;
};
# The VOPs below are spares at the end of the table to allow new VOPs to be
# added in stable branches without breaking the KBI. New VOPs in HEAD should
# be added above these spares. When merging a new VOP to a stable branch,