[Linux-cluster] GFS for Linux kernel 2.6.16

Robert Peterson rpeterso at redhat.com
Wed Aug 16 14:24:07 UTC 2006


Thomas Karsten wrote:
> Does this mean that I just missed the time when the Linux kernel 2.6.16
> was the recent one? Is the code nowhere stored, just developed in the
> CVS?
>
> Since the recent kernel version is 2.6.17 I assume that the GFS code was
> already developed for 2.6.16. That's why I thought there has to be an
> archive of all GFS versions somewhere (that matches the older kernel
> versions, because they have been programmed for those in the past). Of
> course, then I would not use the latest version of GFS but the version
> that has been programmed for kernel 2.6.16.
>
> Is there no other possibility for me than to "downgrade" it on my own
> now?
>
> Thanks,
> Thomas
>   
Hi Thomas,

CVS keeps all back versions of the code, but it's not necessarily easy 
to find a
subset that works with a given kernel, unless it happens to be the one 
we're developing on.
However, it shouldn't be too difficult to port the latest GFS to a 
different kernel.

The HEAD branch is currently set to compile against 2.6.18-rc4.
I don't know about 2.6.16 specifically, but there are only two changes 
necessary to
make the current HEAD branch compile against 2.6.17:

--- a/cluster/gfs-kernel/src/gfs/inode.c     2006-08-02 
11:33:09.000000000 -0500
+++ b/cluster/gfs-kernel/src/gfs/inode.c       2006-08-11 
14:10:26.000000000 -0500
@@ -97,7 +97,6 @@ inode_attr_in(struct gfs_inode *ip, stru
        inode->i_mtime.tv_sec = ip->i_di.di_mtime;
        inode->i_ctime.tv_sec = ip->i_di.di_ctime;
        inode->i_atime.tv_nsec = inode->i_mtime.tv_nsec = 
inode->i_ctime.tv_nsec = 0;
-       inode->i_blksize = PAGE_SIZE;
        inode->i_blocks = ip->i_di.di_blocks <<
                (ip->i_sbd->sd_sb.sb_bsize_shift - GFS_BASIC_BLOCK_SHIFT);
        inode->i_generation = ip->i_di.di_header.mh_incarn;
--- a/cluster/gfs-kernel/src/gfs/gfs.h       2006-08-10 
17:07:07.000000000 -0500
+++ b/cluster/gfs-kernel/src/gfs/gfs.h 2006-08-11 14:11:51.000000000 -0500
@@ -66,8 +67,8 @@

 #define get_v2sdp(sb) ((struct gfs_sbd *)(sb)->s_fs_info)
 #define set_v2sdp(sb, sdp) (sb)->s_fs_info = (sdp)
-#define get_v2ip(inode) ((struct gfs_inode *)(inode)->u.generic_ip)
-#define set_v2ip(inode, ip) (inode)->u.generic_ip = (ip)
+#define get_v2ip(inode) ((struct gfs_inode *)(inode)->i_private)
+#define set_v2ip(inode, ip) (inode)->i_private = (ip)
 #define get_v2fp(file) ((struct gfs_file *)(file)->private_data)
 #define set_v2fp(file, fp) (file)->private_data = (fp)
 #define get_v2bd(bh) ((struct gfs_bufdata *)(bh)->b_private)

Without this patch, the symptom is this message:

acl.c:177: struct inode has no member named u

Some older kernels have issues with using mutexes vs. semaphores,
but that's easy to fix.

There's always the possibility of upgrading your kernel too.  :7)

Regards,

Bob Peterson
Red Hat Cluster Suite




More information about the Linux-cluster mailing list