Linux kernel 2.6.15 changes break arla 0.41 module build

Michael Milligan milli at acmeps.com
Mon Jan 9 05:46:23 CET 2006


Issues:  (with quick and dirty patches, relative to 0.41 release)

1) user_get_super() is no longer exported.  Need to export it again,
rebuild kernel.  Not sure how to work around this newly unexported call
in the arla source only.

diff -ub linux-2.6.15-orig/fs/super.c linux-2.6.15-mm/fs/super.c
--- linux-2.6.15-orig/fs/super.c     2006-01-02 20:21:10 -0700
+++ linux-2.6.15-mm/fs/super.c  2006-01-08 20:47:02 -0700
@@ -475,6 +475,8 @@
         return NULL;
  }

+EXPORT_SYMBOL(user_get_super);
+
  asmlinkage long sys_ustat(unsigned dev, struct ustat __user * ubuf)
  {
          struct super_block *s;


2) Semaphore usage changes in fs.h, hiding the namespace semaphore.
Need to export it, and then need to modify nnpfs_syscalls.c to be happy
again.  Again, not sure how to work around this new issue in 2.6.15 in
just arla...

diff -ub linux-2.6.15-orig/fs/namespace.c linux-2.6.15-mm/fs/namespace.c
--- linux-2.6.15-orig/fs/namespace.c    2006-01-02 20:21:10 -0700
+++ linux-2.6.15-mm/fs/namespace.c      2006-01-08 21:17:59 -0700
@@ -47,6 +47,8 @@
  static kmem_cache_t *mnt_cache;
  static struct rw_semaphore namespace_sem;

+EXPORT_SYMBOL(namespace_sem);
+
  static inline unsigned long hash(struct vfsmount *mnt, struct dentry
*dentry)
  {
         unsigned long tmp = ((unsigned long)mnt / L1_CACHE_BYTES);
diff -ub modules-orig/arla/nnpfs/linux/nnpfs_syscalls.c
modules/arla/nnpfs/linux/nnpfs_syscalls.c
--- modules-orig/arla/nnpfs/linux/nnpfs_syscalls.c      2005-08-09
09:37:07 -0600
+++ modules/arla/nnpfs/linux/nnpfs_syscalls.c   2006-01-08 21:24:32 -0700
@@ -648,6 +648,8 @@
   * (hope it's good enough)
   */

+extern struct rw_semaphore namespace_sem;
+
  static struct vfsmount *
  nnpfs_find_first_vfsmount(struct inode *inode) {
      struct dentry *root = dget(inode->i_sb->s_root);
@@ -656,7 +658,7 @@
      struct vfsmount *tmp = NULL;
      struct list_head *head;

-    down_read(&namespace->sem);
+    down_read(&namespace_sem);
      list_for_each(head, &namespace->list) {
         tmp = list_entry(head, struct vfsmount, mnt_list);
         if (tmp->mnt_root == root) {
@@ -665,7 +667,7 @@
             break;
         }
      }
-    up_read(&namespace->sem);
+    up_read(&namespace_sem);

      dput(root);
      return mnt;


-- 
Michael Milligan                                   -> milli at acmeps.com



More information about the Arla-drinkers mailing list