ISOFS fixed from Bruce Evans:
[unix-history] / sys / isofs / isofs_vfsops.c
index 25a868a..cab949b 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- *     $Id: isofs_vfsops.c,v 1.5 1993/07/19 13:40:09 cgd Exp $
+ *     $Id: isofs_vfsops.c,v 1.5 1993/12/19 00:51:07 wollman Exp $
  */
 
 #include "param.h"
  */
 
 #include "param.h"
@@ -43,6 +43,9 @@ struct vfsops isofs_vfsops = {
  */
 #define ROOTNAME       "root_device"
 
  */
 #define ROOTNAME       "root_device"
 
+static int iso_mountfs(struct vnode *, struct mount *, struct proc *);
+
+int
 isofs_mountroot()
 {
        register struct mount *mp;
 isofs_mountroot()
 {
        register struct mount *mp;
@@ -96,6 +99,7 @@ int iso_doforce = 1;
  *
  * mount system call
  */
  *
  * mount system call
  */
+int
 isofs_mount(mp, path, data, ndp, p)
        register struct mount *mp;
        char *path;
 isofs_mount(mp, path, data, ndp, p)
        register struct mount *mp;
        char *path;
@@ -107,7 +111,7 @@ isofs_mount(mp, path, data, ndp, p)
        struct ufs_args args;
        u_int size;
        int error;
        struct ufs_args args;
        u_int size;
        int error;
-       struct iso_mnt *imp;
+       struct iso_mnt *imp = 0;
 
        if (error = copyin(data, (caddr_t)&args, sizeof (struct ufs_args)))
                return (error);
 
        if (error = copyin(data, (caddr_t)&args, sizeof (struct ufs_args)))
                return (error);
@@ -172,12 +176,12 @@ isofs_mount(mp, path, data, ndp, p)
        imp = VFSTOISOFS(mp);
 
        /* Check the Rock Ridge Extention support */
        imp = VFSTOISOFS(mp);
 
        /* Check the Rock Ridge Extention support */
-       if ( args.exflags & ISOFSMNT_NORRIP ) {
+       if ( args.exflags & MNT_NORRIP ) {
                imp->iso_ftype = ISO_FTYPE_9660;
                imp->iso_ftype = ISO_FTYPE_9660;
-               mp->mnt_flag  |= ISOFSMNT_NORRIP;
+               mp->mnt_flag  |= MNT_NORRIP;
        } else {
                imp->iso_ftype = ISO_FTYPE_RRIP;
        } else {
                imp->iso_ftype = ISO_FTYPE_RRIP;
-               mp->mnt_flag  &= ~ISOFSMNT_NORRIP;
+               mp->mnt_flag  &= ~MNT_NORRIP;
        }
 
        (void) copyinstr(path, imp->im_fsmnt, sizeof(imp->im_fsmnt)-1, &size);
        }
 
        (void) copyinstr(path, imp->im_fsmnt, sizeof(imp->im_fsmnt)-1, &size);
@@ -194,6 +198,7 @@ isofs_mount(mp, path, data, ndp, p)
 /*
  * Common code for mount and mountroot
  */
 /*
  * Common code for mount and mountroot
  */
+static int
 iso_mountfs(devvp, mp, p)
        register struct vnode *devvp;
        struct mount *mp;
 iso_mountfs(devvp, mp, p)
        register struct vnode *devvp;
        struct mount *mp;
@@ -328,6 +333,7 @@ out:
  * Nothing to do at the moment.
  */
 /* ARGSUSED */
  * Nothing to do at the moment.
  */
 /* ARGSUSED */
+int
 isofs_start(mp, flags, p)
        struct mount *mp;
        int flags;
 isofs_start(mp, flags, p)
        struct mount *mp;
        int flags;
@@ -340,6 +346,7 @@ isofs_start(mp, flags, p)
 /*
  * unmount system call
  */
 /*
  * unmount system call
  */
+int
 isofs_unmount(mp, mntflags, p)
        struct mount *mp;
        int mntflags;
 isofs_unmount(mp, mntflags, p)
        struct mount *mp;
        int mntflags;
@@ -374,6 +381,7 @@ isofs_unmount(mp, mntflags, p)
 /*
  * Check to see if a filesystem is mounted on a block device.
  */
 /*
  * Check to see if a filesystem is mounted on a block device.
  */
+int
 iso_mountedon(vp)
        register struct vnode *vp;
 {
 iso_mountedon(vp)
        register struct vnode *vp;
 {
@@ -396,6 +404,7 @@ iso_mountedon(vp)
 /*
  * Return root of a filesystem
  */
 /*
  * Return root of a filesystem
  */
+int
 isofs_root(mp, vpp)
        struct mount *mp;
        struct vnode **vpp;
 isofs_root(mp, vpp)
        struct mount *mp;
        struct vnode **vpp;
@@ -423,6 +432,7 @@ isofs_root(mp, vpp)
 /*
  * Get file system statistics.
  */
 /*
  * Get file system statistics.
  */
+int
 isofs_statfs(mp, sbp, p)
        struct mount *mp;
        register struct statfs *sbp;
 isofs_statfs(mp, sbp, p)
        struct mount *mp;
        register struct statfs *sbp;
@@ -450,6 +460,7 @@ isofs_statfs(mp, sbp, p)
        return (0);
 }
 
        return (0);
 }
 
+int
 isofs_sync(mp, waitfor)
        struct mount *mp;
        int waitfor;
 isofs_sync(mp, waitfor)
        struct mount *mp;
        int waitfor;
@@ -476,6 +487,7 @@ struct ifid {
        int     ifid_ino;
 };
 
        int     ifid_ino;
 };
 
+int
 isofs_fhtovp(mp, fhp, vpp)
        register struct mount *mp;
        struct fid *fhp;
 isofs_fhtovp(mp, fhp, vpp)
        register struct mount *mp;
        struct fid *fhp;
@@ -509,7 +521,7 @@ isofs_fhtovp(mp, fhp, vpp)
                return (EINVAL);
 
        if (ifhp->ifid_offset + sizeof (struct iso_directory_record)
                return (EINVAL);
 
        if (ifhp->ifid_offset + sizeof (struct iso_directory_record)
-           >= imp->im_bsize)
+           > imp->im_bsize)
                return (EINVAL);
 
        if (error = bread (imp->im_devvp,
                return (EINVAL);
 
        if (error = bread (imp->im_devvp,
@@ -522,7 +534,7 @@ isofs_fhtovp(mp, fhp, vpp)
        dirp = (struct iso_directory_record *)
                                 (bp->b_un.b_addr + ifhp->ifid_offset);
 
        dirp = (struct iso_directory_record *)
                                 (bp->b_un.b_addr + ifhp->ifid_offset);
 
-       if (ifhp->ifid_offset + isonum_711 (dirp->length) >= imp->im_bsize) {
+       if (ifhp->ifid_offset + isonum_711 (dirp->length) > imp->im_bsize) {
                brelse (bp);
                return (EINVAL);
        }
                brelse (bp);
                return (EINVAL);
        }
@@ -552,6 +564,7 @@ isofs_fhtovp(mp, fhp, vpp)
  * Vnode pointer to File handle
  */
 /* ARGSUSED */
  * Vnode pointer to File handle
  */
 /* ARGSUSED */
+int
 isofs_vptofh(vp, fhp)
        struct vnode *vp;
        struct fid *fhp;
 isofs_vptofh(vp, fhp)
        struct vnode *vp;
        struct fid *fhp;