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 --- |