Messages in this thread Patch in this message | | | Subject | [PATCH] fix i_generation in ext2, and nfsd headers | Date | Mon, 10 May 1999 23:45:18 -0700 | From | "G. Allen Morris III" <> |
| |
This patch fixes the i_generation (what was called i_version) code in ext2. It also adds a location to keep a generation number in the nfsd filehandle. ------------------------------------------------------------------------------- diff -u --new-file -X exclude linux-2.2.7-knfsdv3/fs/ext2/ialloc.c linux/fs/ext2/ialloc.c --- linux-2.2.7-knfsdv3/fs/ext2/ialloc.c Tue Oct 20 14:08:14 1998 +++ linux/fs/ext2/ialloc.c Mon May 10 22:59:21 1999 @@ -268,21 +268,6 @@ } /* - * This function increments the inode version number - * - * This may be used one day by the NFS server - */ -static void inc_inode_version (struct inode * inode, - struct ext2_group_desc *gdp, - int mode) -{ - inode->u.ext2_i.i_version++; - mark_inode_dirty(inode); - - return; -} - -/* * There are two policies for allocating an inode. If the new inode is * a directory, then a forward search is made for a block group with both * free space and a low directory-to-inode ratio; if that fails, then of @@ -493,8 +478,8 @@ if (inode->u.ext2_i.i_flags & EXT2_SYNC_FL) inode->i_flags |= MS_SYNCHRONOUS; insert_inode_hash(inode); + inode->i_generation++; mark_inode_dirty(inode); - inc_inode_version (inode, gdp, mode); unlock_super (sb); if(DQUOT_ALLOC_INODE(sb, inode)) { diff -u --new-file -X exclude linux-2.2.7-knfsdv3/fs/ext2/inode.c linux/fs/ext2/inode.c --- linux-2.2.7-knfsdv3/fs/ext2/inode.c Fri Apr 30 13:48:58 1999 +++ linux/fs/ext2/inode.c Mon May 10 11:39:00 1999 @@ -552,7 +552,7 @@ << 32; #endif } - inode->u.ext2_i.i_version = le32_to_cpu(raw_inode->i_version); + inode->i_generation = le32_to_cpu(raw_inode->i_generation); 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; @@ -682,7 +682,7 @@ raw_inode->i_size_high = cpu_to_le32(inode->i_size >> 32); #endif } - raw_inode->i_version = cpu_to_le32(inode->u.ext2_i.i_version); + raw_inode->i_generation = cpu_to_le32(inode->i_generation); 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) diff -u --new-file -X exclude linux-2.2.7-knfsdv3/fs/ext2/ioctl.c linux/fs/ext2/ioctl.c --- linux-2.2.7-knfsdv3/fs/ext2/ioctl.c Wed May 6 10:56:05 1998 +++ linux/fs/ext2/ioctl.c Sun May 9 19:01:41 1999 @@ -69,13 +69,13 @@ mark_inode_dirty(inode); return 0; case EXT2_IOC_GETVERSION: - return put_user(inode->u.ext2_i.i_version, (int *) arg); + return put_user(inode->i_generation, (int *) arg); case EXT2_IOC_SETVERSION: if ((current->fsuid != inode->i_uid) && !capable(CAP_FOWNER)) return -EPERM; if (IS_RDONLY(inode)) return -EROFS; - if (get_user(inode->u.ext2_i.i_version, (int *) arg)) + if (get_user(inode->i_generation, (int *) arg)) return -EFAULT; inode->i_ctime = CURRENT_TIME; mark_inode_dirty(inode); diff -u --new-file -X exclude linux-2.2.7-knfsdv3/include/linux/ext2_fs.h linux/include/linux/ext2_fs.h --- linux-2.2.7-knfsdv3/include/linux/ext2_fs.h Fri Apr 30 13:50:19 1999 +++ linux/include/linux/ext2_fs.h Sun May 9 18:57:50 1999 @@ -238,7 +238,7 @@ } masix1; } osd1; /* OS dependent 1 */ __u32 i_block[EXT2_N_BLOCKS];/* Pointers to blocks */ - __u32 i_version; /* File version (for NFS) */ + __u32 i_generation; /* File version (for NFS) */ __u32 i_file_acl; /* File ACL */ __u32 i_dir_acl; /* Directory ACL */ __u32 i_faddr; /* Fragment address */ diff -u --new-file -X exclude linux-2.2.7-knfsdv3/include/linux/ext2_fs_i.h linux/include/linux/ext2_fs_i.h --- linux-2.2.7-knfsdv3/include/linux/ext2_fs_i.h Thu Apr 2 13:39:51 1998 +++ linux/include/linux/ext2_fs_i.h Mon May 10 23:02:04 1999 @@ -29,7 +29,7 @@ __u32 i_file_acl; __u32 i_dir_acl; __u32 i_dtime; - __u32 i_version; + __u32 not_used_1; /* FIX: not used/ 2.2 placeholder */ __u32 i_block_group; __u32 i_next_alloc_block; __u32 i_next_alloc_goal; diff -u --new-file -X exclude linux-2.2.7-knfsdv3/include/linux/nfsd/nfsfh.h linux/include/linux/nfsd/nfsfh.h --- linux-2.2.7-knfsdv3/include/linux/nfsd/nfsfh.h Fri Apr 30 16:30:11 1999 +++ linux/include/linux/nfsd/nfsfh.h Mon May 10 12:59:00 1999 @@ -36,6 +36,7 @@ __u32 fb_dev; /* our device */ __u32 fb_xdev; __u32 fb_xino; + __u32 fb_generation; }; #define NFS_FH_PADDING (NFS_FHSIZE - sizeof(struct nfs_fhbase)) @@ -50,6 +51,7 @@ #define fh_dev fh_base.fb_dev #define fh_xdev fh_base.fb_xdev #define fh_xino fh_base.fb_xino +#define fh_generation fh_base.fb_generation #ifdef __KERNEL__ -- Allen Morris <gam3@acm.org> - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |