Subject: Re: 1Nov -current kernel problem
To: None <msanders@confusion.net>
From: John Kohl <jtk@kolvir.arlington.ma.us>
List: current-users
Date: 11/02/1995 07:35:27
>>>>> "Michael" == Michael K Sanders <msanders@confusion.net> writes:

Michael> After building a GENERIC kernel from Nov 1st sources, I got 
Michael> 'Operation not supported by device' during the boot process when
Michael> it tried to mount sd0d on /usr. Any ideas?

You need a matched set of kernel and mount_ffs programs, or you need to
apply the last patch in PR#1403, which I've reproduced below.  It won't
apply cleanly, since part of the change is already in place.

==John

*** /sys/kern/vfs_conf.c	Fri Oct 13 22:41:57 1995
--- kern/vfs_conf.c	Thu Oct 12 23:51:01 1995
***************
*** 50,56 ****
   * The types are defined in mount.h.
   */
  #ifdef FFS
! extern	struct vfsops ufs_vfsops;
  #endif
  
  #ifdef LFS
--- 50,59 ----
   * The types are defined in mount.h.
   */
  #ifdef FFS
! extern	struct vfsops ffs_vfsops;
! #ifdef COMPAT_10
! extern	struct vfsops ffs_ufs_vfsops;
! #endif
  #endif
  
  #ifdef LFS
***************
*** 116,122 ****
  struct vfsops *vfssw[] = {
  	NULL,		/* 0 = MOUNT_NONE */
  #ifdef FFS
! 	&ufs_vfsops,		/* 1 = MOUNT_UFS */
  #else
  	NULL,
  #endif
--- 119,125 ----
  struct vfsops *vfssw[] = {
  	NULL,		/* 0 = MOUNT_NONE */
  #ifdef FFS
! 	&ffs_vfsops,		/* 1 = MOUNT_FFS */
  #else
  	NULL,
  #endif
***************
*** 188,193 ****
--- 191,201 ----
  #endif
  #ifdef ADOSFS
  	&adosfs_vfsops,		/* 16 = MOUNT_ADOSFS */
+ #else
+ 	NULL,
+ #endif
+ #if defined(FFS) && defined(COMPAT_10)
+ 	&ffs_ufs_vfsops,		/* 1 = MOUNT_FFS */
  #else
  	NULL,
  #endif
diff -c /sys/ufs/ffs/ffs_vfsops.c ufs/ffs/ffs_vfsops.c
*** /sys/ufs/ffs/ffs_vfsops.c	Fri Oct 13 22:58:15 1995
--- ufs/ffs/ffs_vfsops.c	Thu Oct 12 23:53:43 1995
***************
*** 78,83 ****
--- 78,100 ----
  	ffs_init,
  };
  
+ #ifdef COMPAT_10
+ struct vfsops ffs_ufs_vfsops = {
+ 	"ufs",
+ 	ffs_mount,
+ 	ufs_start,
+ 	ffs_unmount,
+ 	ufs_root,
+ 	ufs_quotactl,
+ 	ffs_statfs,
+ 	ffs_sync,
+ 	ffs_vget,
+ 	ffs_fhtovp,
+ 	ffs_vptofh,
+ 	ffs_init,
+ };
+ #endif
+ 
  extern u_long nextgennumber;
  
  /*
***************
*** 243,248 ****
--- 260,269 ----
  		}
  		VOP_UNLOCK(devvp);
  	}
+ #ifdef COMPAT_10
+ 	if (mp->mnt_op == &ffs_ufs_vfsops)
+ 	    mp->mnt_op = &ffs_vfsops;	/* change name, etc. */
+ #endif
  	if ((mp->mnt_flag & MNT_UPDATE) == 0)
  		error = ffs_mountfs(devvp, mp, p);
  	else {