Modified files:
	include/linux/ext2_fs.h		Define VICEMAGIC flag
	include/linux/ext2_fs_i.h	Add i_vice3 word to internal ext2_inode
	fs/ext2/ialloc.c		Initialize i_vice3 to 0
	fs/ext2/inode.c			copy i_vice3 into i_reserved1
					dont overload i_dir_acl if VICEMAGIC
	fs/ext2/ioctl.c			dont allow version setting if VICEMAGIC
	kernel/ksyms.c			export symbols for AFS
					Note: ext2 symbols should probably
					be exported from the ext2 code


*** /tmp/T00FZjtb	Fri Sep 18 15:01:08 1998
--- linux/include/linux/ext2_fs.h	Fri Sep 18 14:27:36 1998
***************
*** 198,203 ****
--- 198,204 ----
  #define EXT2_ECOMPR_FL			0x00000800 /* Compression error */
  /* End compression flags --- maybe not all used */	
  #define EXT2_BTREE_FL			0x00001000 /* btree format dir */
+ #define EXT2_VICEMAGIC_FL		0x00002000 /* AFS Vice Inode */
  #define EXT2_RESERVED_FL		0x80000000 /* reserved for ext2 lib */
  
  #define EXT2_FL_USER_VISIBLE		0x00001FFF /* User visible flags */

*** /tmp/T00FZjtb	Fri Sep 18 15:01:08 1998
--- linux/include/linux/ext2_fs_i.h	Fri Sep 18 14:52:15 1998
***************
*** 36,41 ****
--- 36,42 ----
  	__u32	i_prealloc_block;
  	__u32	i_prealloc_count;
  	__u32	i_high_size;
+ 	__u32	i_vice3;	/* AFS Vice word #3 */
  	int	i_new_inode:1;	/* Is a freshly allocated inode */
  };
  
*** /tmp/T0kYbFB_	Fri Sep 18 15:01:08 1998
--- linux/fs/ext2/ialloc.c	Fri Sep 18 14:53:59 1998
***************
*** 485,490 ****
--- 485,491 ----
  	inode->u.ext2_i.i_file_acl = 0;
  	inode->u.ext2_i.i_dir_acl = 0;
  	inode->u.ext2_i.i_dtime = 0;
+ 	inode->u.ext2_i.i_vice3 = 0;
  	inode->u.ext2_i.i_block_group = i;
  	inode->i_op = NULL;
  	if (inode->u.ext2_i.i_flags & EXT2_SYNC_FL)

*** /tmp/T0kYbFB_	Fri Sep 18 15:01:08 1998
--- linux/fs/ext2/inode.c	Fri Sep 18 14:58:25 1998
***************
*** 538,544 ****
  	inode->u.ext2_i.i_frag_size = raw_inode->i_fsize;
  	inode->u.ext2_i.i_osync = 0;
  	inode->u.ext2_i.i_file_acl = le32_to_cpu(raw_inode->i_file_acl);
! 	if (S_ISDIR(inode->i_mode))
  		inode->u.ext2_i.i_dir_acl = le32_to_cpu(raw_inode->i_dir_acl);
  	else {
  		inode->u.ext2_i.i_dir_acl = 0;
--- 538,544 ----
  	inode->u.ext2_i.i_frag_size = raw_inode->i_fsize;
  	inode->u.ext2_i.i_osync = 0;
  	inode->u.ext2_i.i_file_acl = le32_to_cpu(raw_inode->i_file_acl);
! 	if (S_ISDIR(inode->i_mode) || inode->u.ext2_i.i_flags & EXT2_VICEMAGIC_FL)
  		inode->u.ext2_i.i_dir_acl = le32_to_cpu(raw_inode->i_dir_acl);
  	else {
  		inode->u.ext2_i.i_dir_acl = 0;
***************
*** 553,558 ****
--- 553,559 ----
  #endif
  	}
  	inode->u.ext2_i.i_version = le32_to_cpu(raw_inode->i_version);
+ 	inode->u.ext2_i.i_vice3 = le32_to_cpu(raw_inode->i_reserved1);
  	inode->u.ext2_i.i_block_group = block_group;
  	inode->u.ext2_i.i_next_alloc_block = 0;
  	inode->u.ext2_i.i_next_alloc_goal = 0;
***************
*** 672,678 ****
  	raw_inode->i_frag = inode->u.ext2_i.i_frag_no;
  	raw_inode->i_fsize = inode->u.ext2_i.i_frag_size;
  	raw_inode->i_file_acl = cpu_to_le32(inode->u.ext2_i.i_file_acl);
! 	if (S_ISDIR(inode->i_mode))
  		raw_inode->i_dir_acl = cpu_to_le32(inode->u.ext2_i.i_dir_acl);
  	else { 
  #if BITS_PER_LONG < 64
--- 673,679 ----
  	raw_inode->i_frag = inode->u.ext2_i.i_frag_no;
  	raw_inode->i_fsize = inode->u.ext2_i.i_frag_size;
  	raw_inode->i_file_acl = cpu_to_le32(inode->u.ext2_i.i_file_acl);
! 	if (S_ISDIR(inode->i_mode) || inode->u.ext2_i.i_flags & EXT2_VICEMAGIC_FL)
  		raw_inode->i_dir_acl = cpu_to_le32(inode->u.ext2_i.i_dir_acl);
  	else { 
  #if BITS_PER_LONG < 64
***************
*** 683,688 ****
--- 684,690 ----
  #endif
  	}
  	raw_inode->i_version = cpu_to_le32(inode->u.ext2_i.i_version);
+ 	raw_inode->i_reserved1 = cpu_to_le32(inode->u.ext2_i.i_vice3);
  	if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode))
  		raw_inode->i_block[0] = cpu_to_le32(kdev_t_to_nr(inode->i_rdev));
  	else if (S_ISLNK(inode->i_mode) && !inode->i_blocks)

*** /tmp/T0kYbFB_	Fri Sep 18 15:01:08 1998
--- linux/fs/ext2/ioctl.c	Fri Sep 18 14:23:44 1998
***************
*** 75,80 ****
--- 75,83 ----
  			return -EPERM;
  		if (IS_RDONLY(inode))
  			return -EROFS;
+ 		/* Disallow setting the version on AFS VICEMAGIC inodes */
+ 		if (inode->u.ext2_i.i_flags & EXT2_VICEMAGIC_FL)
+ 			return -EINVAL;
  		if (get_user(inode->u.ext2_i.i_version, (int *) arg))
  			return -EFAULT;	
  		inode->i_ctime = CURRENT_TIME;

*** /tmp/T0vnmXI_	Fri Sep 18 16:23:26 1998
--- linux/kernel/ksyms.c	Fri Sep 18 16:22:29 1998
***************
*** 192,198 ****
--- 192,204 ----
  EXPORT_SYMBOL(shrink_dcache_parent);
  EXPORT_SYMBOL(find_inode_number);
  EXPORT_SYMBOL(is_subdir);
+ EXPORT_SYMBOL(lookup_vfsmnt);
  
+ /* These two are for AFS */
+ /* XXX -- is there a better way of adding these? */
+ EXPORT_SYMBOL(ext2_new_inode);
+ EXPORT_SYMBOL(ext2_file_inode_operations);
+ 
  #if !defined(CONFIG_NFSD) && defined(CONFIG_NFSD_MODULE)
  EXPORT_SYMBOL(do_nfsservctl);
  #endif
