union_subr.c (3b6d96526388c71176bb69ee0ee30fa3e4332626) union_subr.c (a8d43c90af5122ecff75b55fbaf6d5806674411b)
1/*
2 * Copyright (c) 1994 Jan-Simon Pendry
3 * Copyright (c) 1994
4 * The Regents of the University of California. All rights reserved.
5 *
6 * This code is derived from software contributed to Berkeley by
7 * Jan-Simon Pendry.
8 *

--- 770 unchanged lines hidden (view full) ---

779
780 KASSERT(vrefcnt(uvp) > 0, ("copy: uvp refcount 0: %d", vrefcnt(uvp)));
781 if (docopy) {
782 /*
783 * XX - should not ignore errors
784 * from VOP_CLOSE()
785 */
786 vn_lock(lvp, LK_EXCLUSIVE | LK_RETRY, td);
1/*
2 * Copyright (c) 1994 Jan-Simon Pendry
3 * Copyright (c) 1994
4 * The Regents of the University of California. All rights reserved.
5 *
6 * This code is derived from software contributed to Berkeley by
7 * Jan-Simon Pendry.
8 *

--- 770 unchanged lines hidden (view full) ---

779
780 KASSERT(vrefcnt(uvp) > 0, ("copy: uvp refcount 0: %d", vrefcnt(uvp)));
781 if (docopy) {
782 /*
783 * XX - should not ignore errors
784 * from VOP_CLOSE()
785 */
786 vn_lock(lvp, LK_EXCLUSIVE | LK_RETRY, td);
787 error = VOP_OPEN(lvp, FREAD, cred, td);
787 error = VOP_OPEN(lvp, FREAD, cred, td, -1);
788 if (error == 0 && vn_canvmio(lvp) == TRUE)
789 error = vfs_object_create(lvp, td, cred);
790 if (error == 0) {
791 error = union_copyfile(lvp, uvp, cred, td);
792 VOP_UNLOCK(lvp, 0, td);
793 (void) VOP_CLOSE(lvp, FREAD, cred, td);
794 }
795 if (error == 0)

--- 14 unchanged lines hidden (view full) ---

810 * the right thing with (cred) and (FREAD) though.
811 * Ignoring error returns is not right, either.
812 */
813 if (error == 0) {
814 int i;
815
816 for (i = 0; i < un->un_openl; i++) {
817 (void) VOP_CLOSE(lvp, FREAD, cred, td);
788 if (error == 0 && vn_canvmio(lvp) == TRUE)
789 error = vfs_object_create(lvp, td, cred);
790 if (error == 0) {
791 error = union_copyfile(lvp, uvp, cred, td);
792 VOP_UNLOCK(lvp, 0, td);
793 (void) VOP_CLOSE(lvp, FREAD, cred, td);
794 }
795 if (error == 0)

--- 14 unchanged lines hidden (view full) ---

810 * the right thing with (cred) and (FREAD) though.
811 * Ignoring error returns is not right, either.
812 */
813 if (error == 0) {
814 int i;
815
816 for (i = 0; i < un->un_openl; i++) {
817 (void) VOP_CLOSE(lvp, FREAD, cred, td);
818 (void) VOP_OPEN(uvp, FREAD, cred, td);
818 (void) VOP_OPEN(uvp, FREAD, cred, td, -1);
819 }
820 if (un->un_openl) {
821 if (vn_canvmio(uvp) == TRUE)
822 error = vfs_object_create(uvp, td, cred);
823 }
824 un->un_openl = 0;
825 }
826

--- 298 unchanged lines hidden (view full) ---

1125 if (cn.cn_flags & HASBUF) {
1126 uma_zfree(namei_zone, cn.cn_pnbuf);
1127 cn.cn_flags &= ~HASBUF;
1128 }
1129 vput(un->un_dirvp);
1130 if (error)
1131 return (error);
1132
819 }
820 if (un->un_openl) {
821 if (vn_canvmio(uvp) == TRUE)
822 error = vfs_object_create(uvp, td, cred);
823 }
824 un->un_openl = 0;
825 }
826

--- 298 unchanged lines hidden (view full) ---

1125 if (cn.cn_flags & HASBUF) {
1126 uma_zfree(namei_zone, cn.cn_pnbuf);
1127 cn.cn_flags &= ~HASBUF;
1128 }
1129 vput(un->un_dirvp);
1130 if (error)
1131 return (error);
1132
1133 error = VOP_OPEN(vp, fmode, cred, td);
1133 error = VOP_OPEN(vp, fmode, cred, td, -1);
1134 if (error == 0 && vn_canvmio(vp) == TRUE)
1135 error = vfs_object_create(vp, td, cred);
1136 if (error) {
1137 vput(vp);
1138 return (error);
1139 }
1140 vp->v_writecount++;
1141 *vpp = vp;

--- 193 unchanged lines hidden (view full) ---

1335 error = VOP_GETATTR(*vp, &va, fp->f_cred, td);
1336 if (va.va_flags & OPAQUE) {
1337 vput(lvp);
1338 lvp = NULLVP;
1339 }
1340 }
1341
1342 if (lvp != NULLVP) {
1134 if (error == 0 && vn_canvmio(vp) == TRUE)
1135 error = vfs_object_create(vp, td, cred);
1136 if (error) {
1137 vput(vp);
1138 return (error);
1139 }
1140 vp->v_writecount++;
1141 *vpp = vp;

--- 193 unchanged lines hidden (view full) ---

1335 error = VOP_GETATTR(*vp, &va, fp->f_cred, td);
1336 if (va.va_flags & OPAQUE) {
1337 vput(lvp);
1338 lvp = NULLVP;
1339 }
1340 }
1341
1342 if (lvp != NULLVP) {
1343 error = VOP_OPEN(lvp, FREAD, fp->f_cred, td);
1343 error = VOP_OPEN(lvp, FREAD, fp->f_cred, td, -1);
1344 if (error == 0 && vn_canvmio(lvp) == TRUE)
1345 error = vfs_object_create(lvp, td, fp->f_cred);
1346 if (error) {
1347 vput(lvp);
1348 return (error);
1349 }
1350 VOP_UNLOCK(lvp, 0, td);
1351 FILE_LOCK(fp);

--- 37 unchanged lines hidden ---
1344 if (error == 0 && vn_canvmio(lvp) == TRUE)
1345 error = vfs_object_create(lvp, td, fp->f_cred);
1346 if (error) {
1347 vput(lvp);
1348 return (error);
1349 }
1350 VOP_UNLOCK(lvp, 0, td);
1351 FILE_LOCK(fp);

--- 37 unchanged lines hidden ---