Lines Matching full:ap

80 unionfs_lookup(struct vop_cachedlookup_args *ap)
95 cnp = ap->a_cnp;
98 dvp = ap->a_dvp;
104 *(ap->a_vpp) = NULLVP;
178 *(ap->a_vpp) = dtmpvp;
184 *(ap->a_vpp) = NULLVP;
234 *(ap->a_vpp) = dvp;
273 *(ap->a_vpp) = dvp;
385 *(ap->a_vpp) = vp;
409 unionfs_create(struct vop_create_args *ap)
419 KASSERT_UNIONFS_VNODE(ap->a_dvp);
421 dunp = VTOUNIONFS(ap->a_dvp);
422 cnp = ap->a_cnp;
430 error = VOP_CREATE(udvp, &vp, cnp, ap->a_vap);
433 if (__predict_false(unionfs_forward_vop_finish(ap->a_dvp, udvp,
439 error = unionfs_nodeget(ap->a_dvp->v_mount, vp, NULLVP,
440 ap->a_dvp, ap->a_vpp, cnp);
452 unionfs_whiteout(struct vop_whiteout_args *ap)
461 KASSERT_UNIONFS_VNODE(ap->a_dvp);
463 dunp = VTOUNIONFS(ap->a_dvp);
464 cnp = ap->a_cnp;
470 switch (ap->a_flags) {
475 error = VOP_WHITEOUT(udvp, cnp, ap->a_flags);
476 unionfs_forward_vop_finish(ap->a_dvp, udvp, lkflags);
490 unionfs_mknod(struct vop_mknod_args *ap)
500 KASSERT_UNIONFS_VNODE(ap->a_dvp);
502 dunp = VTOUNIONFS(ap->a_dvp);
503 cnp = ap->a_cnp;
511 error = VOP_MKNOD(udvp, &vp, cnp, ap->a_vap);
514 if (__predict_false(unionfs_forward_vop_finish(ap->a_dvp, udvp,
520 error = unionfs_nodeget(ap->a_dvp->v_mount, vp, NULLVP,
521 ap->a_dvp, ap->a_vpp, cnp);
617 unionfs_open(struct vop_open_args *ap)
634 KASSERT_UNIONFS_VNODE(ap->a_vp);
637 vp = ap->a_vp;
639 cred = ap->a_cred;
640 td = ap->a_td;
667 (ap->a_mode & FWRITE) && lvp->v_type == VREG)
672 if ((ap->a_mode & FWRITE) && lvp->v_type == VREG) {
674 !(ap->a_mode & O_TRUNC), cred, td);
702 error = VOP_OPEN(targetvp, ap->a_mode, cred, td, ap->a_fp);
731 VOP_CLOSE(uvp, ap->a_mode, cred, td);
742 unsp->uns_lower_openmode = ap->a_mode;
760 unionfs_close(struct vop_close_args *ap)
777 KASSERT_UNIONFS_VNODE(ap->a_vp);
779 vp = ap->a_vp;
780 cred = ap->a_cred;
781 td = ap->a_td;
824 error = VOP_CLOSE(ovp, ap->a_fflag, cred, td);
925 unionfs_access(struct vop_access_args *ap)
938 KASSERT_UNIONFS_VNODE(ap->a_vp);
940 ump = MOUNTTOUNIONFSMOUNT(ap->a_vp->v_mount);
941 unp = VTOUNIONFS(ap->a_vp);
944 td = ap->a_td;
945 accmode = ap->a_accmode;
949 (ap->a_vp->v_mount->mnt_flag & MNT_RDONLY)) {
950 switch (ap->a_vp->v_type) {
961 error = VOP_ACCESS(uvp, accmode, ap->a_cred, td);
971 switch (ap->a_vp->v_type) {
979 } else if (ap->a_vp->v_type == VREG ||
980 ap->a_vp->v_type == VDIR) {
984 lvp, &va, ap->a_cred, td);
989 accmode, &va, ap->a_cred);
997 error = VOP_ACCESS(lvp, accmode, ap->a_cred, td);
1006 unionfs_getattr(struct vop_getattr_args *ap)
1018 KASSERT_UNIONFS_VNODE(ap->a_vp);
1020 unp = VTOUNIONFS(ap->a_vp);
1021 ump = MOUNTTOUNIONFSMOUNT(ap->a_vp->v_mount);
1027 if ((error = VOP_GETATTR(uvp, ap->a_vap, ap->a_cred)) == 0)
1028 ap->a_vap->va_fsid =
1029 ap->a_vp->v_mount->mnt_stat.f_fsid.val[0];
1033 ap->a_vap->va_mode, ap->a_vap->va_uid,
1034 ap->a_vap->va_gid, error);
1039 error = VOP_GETATTR(lvp, ap->a_vap, ap->a_cred);
1043 if (ap->a_vp->v_type == VREG || ap->a_vp->v_type == VDIR) {
1044 unionfs_create_uppervattr_core(ump, ap->a_vap, &va, td);
1045 ap->a_vap->va_mode = va.va_mode;
1046 ap->a_vap->va_uid = va.va_uid;
1047 ap->a_vap->va_gid = va.va_gid;
1052 ap->a_vap->va_fsid = ap->a_vp->v_mount->mnt_stat.f_fsid.val[0];
1056 ap->a_vap->va_mode, ap->a_vap->va_uid, ap->a_vap->va_gid, error);
1062 unionfs_setattr(struct vop_setattr_args *ap)
1073 KASSERT_UNIONFS_VNODE(ap->a_vp);
1076 unp = VTOUNIONFS(ap->a_vp);
1080 vap = ap->a_vap;
1082 if ((ap->a_vp->v_mount->mnt_flag & MNT_RDONLY) &&
1089 error = unionfs_copyfile(ap->a_vp, (vap->va_size != 0),
1090 ap->a_cred, td);
1099 error = VOP_SETATTR(uvp, vap, ap->a_cred);
1100 unionfs_forward_vop_finish(ap->a_vp, uvp, lkflags);
1109 unionfs_read(struct vop_read_args *ap)
1117 KASSERT_UNIONFS_VNODE(ap->a_vp);
1119 unp = VTOUNIONFS(ap->a_vp);
1122 error = VOP_READ(tvp, ap->a_uio, ap->a_ioflag, ap->a_cred);
1130 unionfs_write(struct vop_write_args *ap)
1139 KASSERT_UNIONFS_VNODE(ap->a_vp);
1141 unp = VTOUNIONFS(ap->a_vp);
1145 error = VOP_WRITE(tvp, ap->a_uio, ap->a_ioflag, ap->a_cred);
1146 unionfs_forward_vop_finish(ap->a_vp, tvp, lkflags);
1154 unionfs_ioctl(struct vop_ioctl_args *ap)
1163 KASSERT_UNIONFS_VNODE(ap->a_vp);
1165 vn_lock(ap->a_vp, LK_EXCLUSIVE | LK_RETRY);
1166 unp = VTOUNIONFS(ap->a_vp);
1167 unionfs_get_node_status(unp, ap->a_td, &unsp);
1170 VOP_UNLOCK(ap->a_vp);
1175 error = VOP_IOCTL(ovp, ap->a_command, ap->a_data, ap->a_fflag,
1176 ap->a_cred, ap->a_td);
1184 unionfs_poll(struct vop_poll_args *ap)
1190 KASSERT_UNIONFS_VNODE(ap->a_vp);
1192 vn_lock(ap->a_vp, LK_EXCLUSIVE | LK_RETRY);
1193 unp = VTOUNIONFS(ap->a_vp);
1194 unionfs_get_node_status(unp, ap->a_td, &unsp);
1197 VOP_UNLOCK(ap->a_vp);
1202 return (VOP_POLL(ovp, ap->a_events, ap->a_cred, ap->a_td));
1206 unionfs_fsync(struct vop_fsync_args *ap)
1214 KASSERT_UNIONFS_VNODE(ap->a_vp);
1216 unp = VTOUNIONFS(ap->a_vp);
1217 lkstatus = unionfs_upgrade_lock(ap->a_vp);
1219 unionfs_downgrade_lock(ap->a_vp, lkstatus);
1222 unionfs_get_node_status(unp, ap->a_td, &unsp);
1226 unionfs_downgrade_lock(ap->a_vp, lkstatus);
1232 error = VOP_FSYNC(ovp, ap->a_waitfor, ap->a_td);
1233 unionfs_forward_vop_finish(ap->a_vp, ovp, lkflags);
1239 unionfs_remove(struct vop_remove_args *ap)
1255 KASSERT_UNIONFS_VNODE(ap->a_dvp);
1256 KASSERT_UNIONFS_VNODE(ap->a_vp);
1259 dunp = VTOUNIONFS(ap->a_dvp);
1261 cnp = ap->a_cnp;
1264 ump = MOUNTTOUNIONFSMOUNT(ap->a_vp->v_mount);
1265 unp = VTOUNIONFS(ap->a_vp);
1282 unionfs_forward_vop_finish_pair(ap->a_dvp, udvp, udvp_lkflags,
1283 ap->a_vp, uvp, uvp_lkflags);
1285 error = unionfs_mkwhiteout(ap->a_dvp, ap->a_vp, cnp, td,
1295 unionfs_link(struct vop_link_args *ap)
1307 KASSERT_UNIONFS_VNODE(ap->a_tdvp);
1308 KASSERT_UNIONFS_VNODE(ap->a_vp);
1311 dunp = VTOUNIONFS(ap->a_tdvp);
1315 cnp = ap->a_cnp;
1321 unp = VTOUNIONFS(ap->a_vp);
1324 if (ap->a_vp->v_type != VREG)
1327 VOP_UNLOCK(ap->a_tdvp);
1328 error = unionfs_copyfile(ap->a_vp, 1, cnp->cn_cred, td);
1329 vn_lock(ap->a_tdvp, LK_EXCLUSIVE | LK_RETRY);
1341 unionfs_forward_vop_finish_pair(ap->a_tdvp, udvp, udvp_lkflags,
1342 ap->a_vp, uvp, uvp_lkflags);
1351 unionfs_rename(struct vop_rename_args *ap)
1373 fdvp = ap->a_fdvp;
1374 fvp = ap->a_fvp;
1375 fcnp = ap->a_fcnp;
1376 tdvp = ap->a_tdvp;
1377 tvp = ap->a_tvp;
1378 tcnp = ap->a_tcnp;
1604 unionfs_mkdir(struct vop_mkdir_args *ap)
1617 KASSERT_UNIONFS_VNODE(ap->a_dvp);
1620 dvp = ap->a_dvp;
1622 cnp = ap->a_cnp;
1639 error = VOP_MKDIR(udvp, &uvp, cnp, ap->a_vap);
1649 dvp, ap->a_vpp, cnp);
1663 unionfs_rmdir(struct vop_rmdir_args *ap)
1677 KASSERT_UNIONFS_VNODE(ap->a_dvp);
1678 KASSERT_UNIONFS_VNODE(ap->a_vp);
1681 dunp = VTOUNIONFS(ap->a_dvp);
1682 unp = VTOUNIONFS(ap->a_vp);
1683 cnp = ap->a_cnp;
1713 VOP_UNLOCK(ap->a_vp);
1714 VOP_UNLOCK(ap->a_dvp);
1717 vn_lock(ap->a_dvp, LK_EXCLUSIVE | LK_RETRY);
1718 vn_lock(ap->a_vp, LK_EXCLUSIVE | LK_RETRY);
1721 error = unionfs_check_rmdir(ap->a_vp, cnp->cn_cred, td);
1733 ump = MOUNTTOUNIONFSMOUNT(ap->a_vp->v_mount);
1740 unionfs_forward_vop_finish_pair(ap->a_dvp, udvp, udvp_lkflags,
1741 ap->a_vp, uvp, uvp_lkflags);
1743 error = unionfs_mkwhiteout(ap->a_dvp, ap->a_vp, cnp, td,
1748 cache_purge(ap->a_dvp);
1749 cache_purge(ap->a_vp);
1758 unionfs_symlink(struct vop_symlink_args *ap)
1769 KASSERT_UNIONFS_VNODE(ap->a_dvp);
1772 dunp = VTOUNIONFS(ap->a_dvp);
1773 cnp = ap->a_cnp;
1781 error = VOP_SYMLINK(udvp, &uvp, cnp, ap->a_vap, ap->a_target);
1784 if (__predict_false(unionfs_forward_vop_finish(ap->a_dvp, udvp,
1790 error = unionfs_nodeget(ap->a_dvp->v_mount, uvp, NULLVP,
1791 ap->a_dvp, ap->a_vpp, cnp);
1804 unionfs_readdir(struct vop_readdir_args *ap)
1825 KASSERT_UNIONFS_VNODE(ap->a_vp);
1830 uio = ap->a_uio;
1837 vp = ap->a_vp;
1866 if ((error = VOP_GETATTR(uvp, &va, ap->a_cred)) != 0)
1875 error = VOP_READDIR(uvp, uio, ap->a_cred, ap->a_eofflag,
1876 ap->a_ncookies, ap->a_cookies);
1888 error = VOP_READDIR(lvp, uio, ap->a_cred, ap->a_eofflag,
1889 ap->a_ncookies, ap->a_cookies);
1910 error = VOP_READDIR(uvp, uio, ap->a_cred, &eofflag,
1911 ap->a_ncookies, ap->a_cookies);
1931 if (ap->a_ncookies != NULL) {
1932 ncookies_bk = *(ap->a_ncookies);
1933 *(ap->a_ncookies) = 0;
1935 if (ap->a_cookies != NULL) {
1936 cookies_bk = *(ap->a_cookies);
1937 *(ap->a_cookies) = NULL;
1959 error = VOP_READDIR(lvp, uio, ap->a_cred, ap->a_eofflag,
1960 ap->a_ncookies, ap->a_cookies);
1986 size = *(ap->a_ncookies) + ncookies_bk;
1993 memcpy(pos, *(ap->a_cookies),
1994 *(ap->a_ncookies) * sizeof(*newcookies));
1996 free(*(ap->a_cookies), M_TEMP);
1997 *(ap->a_ncookies) = size;
1998 *(ap->a_cookies) = newcookies;
2002 if (error != 0 && ap->a_eofflag != NULL)
2003 *(ap->a_eofflag) = 1;
2011 unionfs_readlink(struct vop_readlink_args *ap)
2019 KASSERT_UNIONFS_VNODE(ap->a_vp);
2021 unp = VTOUNIONFS(ap->a_vp);
2024 error = VOP_READLINK(vp, ap->a_uio, ap->a_cred);
2032 unionfs_getwritemount(struct vop_getwritemount_args *ap)
2042 vp = ap->a_vp;
2075 error = VOP_GETWRITEMOUNT(uvp, ap->a_mpp);
2079 *(ap->a_mpp) = NULL;
2088 unionfs_inactive(struct vop_inactive_args *ap)
2090 ap->a_vp->v_object = NULL;
2091 vrecycle(ap->a_vp);
2096 unionfs_reclaim(struct vop_reclaim_args *ap)
2100 unionfs_noderem(ap->a_vp);
2108 unionfs_print(struct vop_print_args *ap)
2113 unp = VTOUNIONFS(ap->a_vp);
2117 ap->a_vp, unp->un_uppervp, unp->un_lowervp);
2132 unionfs_lock(struct vop_lock1_args *ap)
2142 flags = ap->a_flags;
2143 vp = ap->a_vp;
2164 ap->a_flags = flags;
2165 return (vop_stdlock(ap));
2236 unionfs_unlock(struct vop_unlock_args *ap)
2243 KASSERT_UNIONFS_VNODE(ap->a_vp);
2245 vp = ap->a_vp;
2249 return (vop_stdunlock(ap));
2261 unionfs_pathconf(struct vop_pathconf_args *ap)
2266 KASSERT_UNIONFS_VNODE(ap->a_vp);
2268 unp = VTOUNIONFS(ap->a_vp);
2271 return (VOP_PATHCONF(vp, ap->a_name, ap->a_retval));
2275 unionfs_advlock(struct vop_advlock_args *ap)
2286 KASSERT_UNIONFS_VNODE(ap->a_vp);
2288 vp = ap->a_vp;
2293 unp = VTOUNIONFS(ap->a_vp);
2297 error = unionfs_copyfile(ap->a_vp, 1, td->td_ucred, td);
2319 error = VOP_ADVLOCK(uvp, ap->a_id, ap->a_op, ap->a_fl, ap->a_flags);
2334 unionfs_strategy(struct vop_strategy_args *ap)
2339 KASSERT_UNIONFS_VNODE(ap->a_vp);
2341 unp = VTOUNIONFS(ap->a_vp);
2348 if (ap->a_bp->b_iocmd == BIO_WRITE && vp == unp->un_lowervp)
2352 return (VOP_STRATEGY(vp, ap->a_bp));
2356 unionfs_getacl(struct vop_getacl_args *ap)
2362 KASSERT_UNIONFS_VNODE(ap->a_vp);
2364 unp = VTOUNIONFS(ap->a_vp);
2369 error = VOP_GETACL(vp, ap->a_type, ap->a_aclp, ap->a_cred, ap->a_td);
2377 unionfs_setacl(struct vop_setacl_args *ap)
2387 KASSERT_UNIONFS_VNODE(ap->a_vp);
2390 unp = VTOUNIONFS(ap->a_vp);
2393 td = ap->a_td;
2395 if (ap->a_vp->v_mount->mnt_flag & MNT_RDONLY)
2399 if ((error = unionfs_copyfile(ap->a_vp, 1, ap->a_cred, td)) != 0)
2407 error = VOP_SETACL(uvp, ap->a_type, ap->a_aclp, ap->a_cred, td);
2408 unionfs_forward_vop_finish(ap->a_vp, uvp, lkflags);
2417 unionfs_aclcheck(struct vop_aclcheck_args *ap)
2425 KASSERT_UNIONFS_VNODE(ap->a_vp);
2427 unp = VTOUNIONFS(ap->a_vp);
2430 error = VOP_ACLCHECK(vp, ap->a_type, ap->a_aclp, ap->a_cred, ap->a_td);
2438 unionfs_openextattr(struct vop_openextattr_args *ap)
2445 KASSERT_UNIONFS_VNODE(ap->a_vp);
2447 vp = ap->a_vp;
2455 error = VOP_OPENEXTATTR(tvp, ap->a_cred, ap->a_td);
2473 unionfs_closeextattr(struct vop_closeextattr_args *ap)
2480 KASSERT_UNIONFS_VNODE(ap->a_vp);
2482 vp = ap->a_vp;
2494 error = VOP_CLOSEEXTATTR(tvp, ap->a_commit, ap->a_cred, ap->a_td);
2512 unionfs_getextattr(struct vop_getextattr_args *ap)
2517 KASSERT_UNIONFS_VNODE(ap->a_vp);
2519 unp = VTOUNIONFS(ap->a_vp);
2530 return (VOP_GETEXTATTR(vp, ap->a_attrnamespace, ap->a_name,
2531 ap->a_uio, ap->a_size, ap->a_cred, ap->a_td));
2535 unionfs_setextattr(struct vop_setextattr_args *ap)
2545 KASSERT_UNIONFS_VNODE(ap->a_vp);
2548 unp = VTOUNIONFS(ap->a_vp);
2552 cred = ap->a_cred;
2553 td = ap->a_td;
2558 if (ap->a_vp->v_mount->mnt_flag & MNT_RDONLY)
2572 (error = unionfs_copyfile(ap->a_vp, 1, cred, td)) != 0) {
2574 unp = VTOUNIONFS(ap->a_vp);
2595 error = VOP_SETEXTATTR(ovp, ap->a_attrnamespace, ap->a_name,
2596 ap->a_uio, cred, td);
2597 unionfs_forward_vop_finish(ap->a_vp, ovp, lkflags);
2607 unionfs_listextattr(struct vop_listextattr_args *ap)
2612 KASSERT_UNIONFS_VNODE(ap->a_vp);
2614 unp = VTOUNIONFS(ap->a_vp);
2625 return (VOP_LISTEXTATTR(vp, ap->a_attrnamespace, ap->a_uio,
2626 ap->a_size, ap->a_cred, ap->a_td));
2630 unionfs_deleteextattr(struct vop_deleteextattr_args *ap)
2640 KASSERT_UNIONFS_VNODE(ap->a_vp);
2643 unp = VTOUNIONFS(ap->a_vp);
2647 cred = ap->a_cred;
2648 td = ap->a_td;
2653 if (ap->a_vp->v_mount->mnt_flag & MNT_RDONLY)
2667 (error = unionfs_copyfile(ap->a_vp, 1, cred, td)) != 0) {
2669 unp = VTOUNIONFS(ap->a_vp);
2688 error = VOP_DELETEEXTATTR(ovp, ap->a_attrnamespace, ap->a_name,
2689 ap->a_cred, ap->a_td);
2698 unionfs_setlabel(struct vop_setlabel_args *ap)
2708 KASSERT_UNIONFS_VNODE(ap->a_vp);
2711 unp = VTOUNIONFS(ap->a_vp);
2714 td = ap->a_td;
2716 if (ap->a_vp->v_mount->mnt_flag & MNT_RDONLY)
2720 if ((error = unionfs_copyfile(ap->a_vp, 1, ap->a_cred, td)) != 0)
2726 error = VOP_SETLABEL(uvp, ap->a_label, ap->a_cred, td);
2734 unionfs_vptofh(struct vop_vptofh_args *ap)
2740 unionfs_add_writecount(struct vop_add_writecount_args *ap)
2746 vp = ap->a_vp;
2751 error = VOP_ADD_WRITECOUNT(tvp, ap->a_inc);
2758 writerefs = atomic_fetchadd_int(&vp->v_writecount, ap->a_inc);
2762 VNASSERT(writerefs + ap->a_inc >= 0, vp,
2764 writerefs, ap->a_inc));
2769 unionfs_vput_pair(struct vop_vput_pair_args *ap)
2776 dvp = ap->a_dvp;
2777 vpp = ap->a_vpp;
2818 if (!ap->a_unlock_vp) {
2847 if (vp != NULLVP && ap->a_unlock_vp)
2851 if (vp == NULLVP || ap->a_unlock_vp)
2880 unionfs_set_text(struct vop_set_text_args *ap)
2891 unp = VTOUNIONFS(ap->a_vp);
2892 ASSERT_VOP_LOCKED(ap->a_vp, __func__);
2899 unionfs_unset_text(struct vop_unset_text_args *ap)
2904 ASSERT_VOP_LOCKED(ap->a_vp, __func__);
2905 unp = VTOUNIONFS(ap->a_vp);
2912 unionfs_unp_bind(struct vop_unp_bind_args *ap)
2917 ASSERT_VOP_LOCKED(ap->a_vp, __func__);
2918 unp = VTOUNIONFS(ap->a_vp);
2920 VOP_UNP_BIND(tvp, ap->a_unpcb);
2925 unionfs_unp_connect(struct vop_unp_connect_args *ap)
2930 ASSERT_VOP_LOCKED(ap->a_vp, __func__);
2931 unp = VTOUNIONFS(ap->a_vp);
2933 VOP_UNP_CONNECT(tvp, ap->a_unpcb);
2938 unionfs_unp_detach(struct vop_unp_detach_args *ap)
2949 VI_LOCK(ap->a_vp);
2950 unp = VTOUNIONFS(ap->a_vp);
2961 VI_UNLOCK(ap->a_vp);