[OpenAFS] Strange Behavior of Openafs-1.1.1

Steven N. Hirsch shirsch@adelphia.net
Tue, 7 Aug 2001 17:45:04 -0400 (EDT)


On Tue, 7 Aug 2001 caldwell@lamar.colostate.edu wrote:

> Okay,
>
>  I just got back after a short vacation. Let me explain my situation a little
> more clearly. In my case I had openafs working perfectly under the vanilla
> 2.4.3 kernel and due to some other requirement was forced to move to at least
> 2.4.6. At this point I recompiled the openafs-1.0.4 libafs module with complete
> ease and installed it just as before. Upon starting afs I noticed it seemed to
> load much faster than prviously. As a check I kloged into the slac.stanford.edu
> server successfully and did a df to see if the afs directories were truely
> mounted. All seemed okay, but upon an attempt to enter any afs directory I got
> the error message, "cd: /afs: Not a directory". At this point I upgraded to
> afs-1.1.1 and vanilla kernel 2.4.7 with the same results. The only patch I am
> applying to the kernel source is the ext3 journaling patch.

I _think_ that the ext3 patch is causing problems.  I've been through
exactly the same exercise.  When I backed out ext3, it worked.  I'm just
getting ready to try again with ext3 to ensure that I didn't have
something else horked up.

I looked throught the ext3 patch, and I'm wondering if this change to the
filesystem structures isn't the cause of grief (include/linux/fs.h):


@@ -374,8 +381,11 @@ struct address_space_operations {
 	int (*sync_page)(struct page *);
 	int (*prepare_write)(struct file *, struct page *, unsigned, unsigned);
 	int (*commit_write)(struct file *, struct page *, unsigned, unsigned);
+	void (*abort_write)(struct file *, struct page *);
 	/* Unfortunately this kludge is needed for FIBMAP. Don't use it */
 	int (*bmap)(struct address_space *, long);
+	int (*flushpage) (struct page *, unsigned long);
+	int (*releasepage) (struct page *, int);
 };

 struct address_space {
@@ -432,6 +442,7 @@ struct inode {
 	unsigned long		i_blocks;
 	unsigned long		i_version;
 	struct semaphore	i_sem;
+	struct rw_semaphore	i_truncate_sem;
 	struct semaphore	i_zombie;
 	struct inode_operations	*i_op;
 	struct file_operations	*i_fop;	/* former ->i_op->default_file_ops */
@@ -460,6 +471,7 @@ struct inode {
 	union {
 		struct minix_inode_info		minix_i;
 		struct ext2_inode_info		ext2_i;
+		struct ext3_inode_info		ext3_i;
 		struct hpfs_inode_info		hpfs_i;
 		struct ntfs_inode_info		ntfs_i;
 		struct msdos_inode_info		msdos_i;

Are address_space and address_space_operations two of the structs which
AFS needs to be "in sync" with?

All other data patches are specific to the ext3 filesystem itself.



Steve