Deleted Added
full compact
ext2_vnops.c (193377) ext2_vnops.c (194296)
1/*-
2 * modified for EXT2FS support in Lites 1.1
3 *
4 * Aug 1995, Godmar Back (gback@cs.utah.edu)
5 * University of Utah, Department of Computer Science
6 */
7/*-
8 * Copyright (c) 1982, 1986, 1989, 1993

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

34 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
35 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
36 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
37 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
38 * SUCH DAMAGE.
39 *
40 * @(#)ufs_vnops.c 8.7 (Berkeley) 2/3/94
41 * @(#)ufs_vnops.c 8.27 (Berkeley) 5/27/95
1/*-
2 * modified for EXT2FS support in Lites 1.1
3 *
4 * Aug 1995, Godmar Back (gback@cs.utah.edu)
5 * University of Utah, Department of Computer Science
6 */
7/*-
8 * Copyright (c) 1982, 1986, 1989, 1993

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

34 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
35 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
36 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
37 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
38 * SUCH DAMAGE.
39 *
40 * @(#)ufs_vnops.c 8.7 (Berkeley) 2/3/94
41 * @(#)ufs_vnops.c 8.27 (Berkeley) 5/27/95
42 * $FreeBSD: head/sys/gnu/fs/ext2fs/ext2_vnops.c 193377 2009-06-03 13:25:50Z stas $
42 * $FreeBSD: head/sys/gnu/fs/ext2fs/ext2_vnops.c 194296 2009-06-16 15:13:45Z kib $
43 */
44
45#include "opt_suiddir.h"
46
47#include <sys/param.h>
48#include <sys/systm.h>
49#include <sys/resourcevar.h>
50#include <sys/kernel.h>

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

1043 * and ".." set to point to the new parent.
1044 */
1045 if (doingdirectory && newparent) {
1046 dp->i_nlink--;
1047 dp->i_flag |= IN_CHANGE;
1048 error = vn_rdwr(UIO_READ, fvp, (caddr_t)&dirbuf,
1049 sizeof (struct dirtemplate), (off_t)0,
1050 UIO_SYSSPACE, IO_NODELOCKED | IO_NOMACCHECK,
43 */
44
45#include "opt_suiddir.h"
46
47#include <sys/param.h>
48#include <sys/systm.h>
49#include <sys/resourcevar.h>
50#include <sys/kernel.h>

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

1043 * and ".." set to point to the new parent.
1044 */
1045 if (doingdirectory && newparent) {
1046 dp->i_nlink--;
1047 dp->i_flag |= IN_CHANGE;
1048 error = vn_rdwr(UIO_READ, fvp, (caddr_t)&dirbuf,
1049 sizeof (struct dirtemplate), (off_t)0,
1050 UIO_SYSSPACE, IO_NODELOCKED | IO_NOMACCHECK,
1051 tcnp->cn_cred, NOCRED, (int *)0,
1052 (struct thread *)0);
1051 tcnp->cn_cred, NOCRED, NULL, NULL);
1053 if (error == 0) {
1054 /* Like ufs little-endian: */
1055 namlen = dirbuf.dotdot_type;
1056 if (namlen != 2 ||
1057 dirbuf.dotdot_name[0] != '.' ||
1058 dirbuf.dotdot_name[1] != '.') {
1059 ext2_dirbad(xp, (doff_t)12,
1060 "rename: mangled dir");
1061 } else {
1062 dirbuf.dotdot_ino = newparent;
1063 (void) vn_rdwr(UIO_WRITE, fvp,
1064 (caddr_t)&dirbuf,
1065 sizeof (struct dirtemplate),
1066 (off_t)0, UIO_SYSSPACE,
1067 IO_NODELOCKED | IO_SYNC |
1068 IO_NOMACCHECK, tcnp->cn_cred,
1052 if (error == 0) {
1053 /* Like ufs little-endian: */
1054 namlen = dirbuf.dotdot_type;
1055 if (namlen != 2 ||
1056 dirbuf.dotdot_name[0] != '.' ||
1057 dirbuf.dotdot_name[1] != '.') {
1058 ext2_dirbad(xp, (doff_t)12,
1059 "rename: mangled dir");
1060 } else {
1061 dirbuf.dotdot_ino = newparent;
1062 (void) vn_rdwr(UIO_WRITE, fvp,
1063 (caddr_t)&dirbuf,
1064 sizeof (struct dirtemplate),
1065 (off_t)0, UIO_SYSSPACE,
1066 IO_NODELOCKED | IO_SYNC |
1067 IO_NOMACCHECK, tcnp->cn_cred,
1069 NOCRED, (int *)0,
1070 (struct thread *)0);
1068 NOCRED, NULL, NULL);
1071 cache_purge(fdvp);
1072 }
1073 }
1074 }
1075 error = ext2_dirremove(fdvp, fcnp);
1076 if (!error) {
1077 xp->i_nlink--;
1078 xp->i_flag |= IN_CHANGE;

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

1198 * so let's just redefine it - for this function only
1199 */
1200#undef DIRBLKSIZ
1201#define DIRBLKSIZ VTOI(dvp)->i_e2fs->s_blocksize
1202 dirtemplate.dotdot_reclen = DIRBLKSIZ - 12;
1203 error = vn_rdwr(UIO_WRITE, tvp, (caddr_t)&dirtemplate,
1204 sizeof (dirtemplate), (off_t)0, UIO_SYSSPACE,
1205 IO_NODELOCKED | IO_SYNC | IO_NOMACCHECK, cnp->cn_cred, NOCRED,
1069 cache_purge(fdvp);
1070 }
1071 }
1072 }
1073 error = ext2_dirremove(fdvp, fcnp);
1074 if (!error) {
1075 xp->i_nlink--;
1076 xp->i_flag |= IN_CHANGE;

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

1196 * so let's just redefine it - for this function only
1197 */
1198#undef DIRBLKSIZ
1199#define DIRBLKSIZ VTOI(dvp)->i_e2fs->s_blocksize
1200 dirtemplate.dotdot_reclen = DIRBLKSIZ - 12;
1201 error = vn_rdwr(UIO_WRITE, tvp, (caddr_t)&dirtemplate,
1202 sizeof (dirtemplate), (off_t)0, UIO_SYSSPACE,
1203 IO_NODELOCKED | IO_SYNC | IO_NOMACCHECK, cnp->cn_cred, NOCRED,
1206 (int *)0, (struct thread *)0);
1204 NULL, NULL);
1207 if (error) {
1208 dp->i_nlink--;
1209 dp->i_flag |= IN_CHANGE;
1210 goto bad;
1211 }
1212 if (DIRBLKSIZ > VFSTOEXT2(dvp->v_mount)->um_mountp->mnt_stat.f_bsize)
1213 /* XXX should grow with balloc() */
1214 panic("ext2_mkdir: blksize");

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

1335 if (len < vp->v_mount->mnt_maxsymlinklen) {
1336 ip = VTOI(vp);
1337 bcopy(ap->a_target, (char *)ip->i_shortlink, len);
1338 ip->i_size = len;
1339 ip->i_flag |= IN_CHANGE | IN_UPDATE;
1340 } else
1341 error = vn_rdwr(UIO_WRITE, vp, ap->a_target, len, (off_t)0,
1342 UIO_SYSSPACE, IO_NODELOCKED | IO_NOMACCHECK,
1205 if (error) {
1206 dp->i_nlink--;
1207 dp->i_flag |= IN_CHANGE;
1208 goto bad;
1209 }
1210 if (DIRBLKSIZ > VFSTOEXT2(dvp->v_mount)->um_mountp->mnt_stat.f_bsize)
1211 /* XXX should grow with balloc() */
1212 panic("ext2_mkdir: blksize");

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

1333 if (len < vp->v_mount->mnt_maxsymlinklen) {
1334 ip = VTOI(vp);
1335 bcopy(ap->a_target, (char *)ip->i_shortlink, len);
1336 ip->i_size = len;
1337 ip->i_flag |= IN_CHANGE | IN_UPDATE;
1338 } else
1339 error = vn_rdwr(UIO_WRITE, vp, ap->a_target, len, (off_t)0,
1340 UIO_SYSSPACE, IO_NODELOCKED | IO_NOMACCHECK,
1343 ap->a_cnp->cn_cred, NOCRED, (int *)0, (struct thread *)0);
1341 ap->a_cnp->cn_cred, NOCRED, NULL, NULL);
1344 if (error)
1345 vput(vp);
1346 return (error);
1347}
1348
1349/*
1350 * Return target name of a symbolic link
1351 */

--- 296 unchanged lines hidden ---
1342 if (error)
1343 vput(vp);
1344 return (error);
1345}
1346
1347/*
1348 * Return target name of a symbolic link
1349 */

--- 296 unchanged lines hidden ---