Package: cdfs-src
Version: 2.6.23-3
Severity: important
Tags: patch

cdfs-src Debian package don't build in 2.6.25 kernels

I have made a patch for it.

Patch can also be downloaded from:

http://trac.tcosproject.org/browser/trunk/tcos-extra-modules/patches/cdfs-2.6.25-2-486.patch?rev=812&format=raw


Greetings and thanks for your work at Debian

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)

Kernel: Linux 2.6.25-2-686 (SMP w/2 CPU cores)
Locale: LANG=es_ES.UTF-8, LC_CTYPE=es_ES.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages cdfs-src depends on:
ii  bzip2                         1.0.5-0.1  high-quality block-sorting file co
ii  debhelper                     7.0.9      helper programs for debian/rules
ii  kernel-package                11.001-0.1 A utility for building Linux kerne
ii  make                          3.81-4     The GNU version of the "make" util
ii  module-assistant              0.10.11.0  tool to make module package creati

cdfs-src recommends no packages.

-- no debconf information
diff -Naur --exclude=Makefile build/modules/cdfs.orig/2.6/modules.order build/modules/cdfs/2.6/modules.order
--- build/modules/cdfs.orig/2.6/modules.order	1970-01-01 01:00:00.000000000 +0100
+++ build/modules/cdfs/2.6/modules.order	2008-05-20 18:27:00.000000000 +0200
@@ -0,0 +1 @@
+kernel//home/mario/forja-rediris/trunk/tcos-extra-modules/build/modules/cdfs/2.6/cdfs.ko
diff -Naur --exclude=Makefile build/modules/cdfs.orig/2.6/root.c build/modules/cdfs/2.6/root.c
--- build/modules/cdfs.orig/2.6/root.c	2006-10-24 21:41:12.000000000 +0200
+++ build/modules/cdfs/2.6/root.c	2008-05-20 18:26:56.000000000 +0200
@@ -42,6 +42,9 @@
 extern struct seq_operations cdfs_operations;
 extern struct _track_info *dummy_track_p;
 
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,4,24)
+struct inode *cdfs_iget(struct super_block *sp, unsigned long ino);
+#endif
 
 /*============================================================================*
  *  cdfs_open()                                                               *
@@ -361,8 +364,12 @@
   sb->s_magic  = CDFS_MAGIC;
   sb->s_flags |= MS_RDONLY;
   sb->s_op     = &cdfs_ops;
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,4,24)
+  sb->s_root   = d_alloc_root(cdfs_iget(sb, 0));
+#else
   sb->s_root   = d_alloc_root(iget(sb, 0));
-  
+#endif
+
   cdfs_proc_cd = this_cd;
 
 #ifdef OLD_KERNEL
@@ -459,7 +466,11 @@
 
   for(i=0; i<T2I(this_cd->tracks); i++)
     if (!(strcmp(this_cd->track[i].name, dentry->d_name.name))) {
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,4,24)
+      if ((inode=iget_locked(dir->i_sb, i))==NULL) {
+#else
       if ((inode=iget(dir->i_sb, i))==NULL) {
+#endif
         return ERR_PTR(-EACCES);
       } else {
         d_add(dentry, inode);
@@ -482,8 +493,19 @@
 };
 
 /**************************************************************************/
-
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,4,24)
+struct inode *cdfs_iget(struct super_block *sp, unsigned long ino) {
+  /* info from http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=12debc4248a4a7f1873e47cda2cdd7faca80b099 */
+  struct inode *i;
+  i = iget_locked(sp, ino);
+  if (!i)
+    return ERR_PTR(-ENOMEM);
+  if (!(i->i_state & I_NEW))
+    return i;
+#else
 static void cdfs_read_inode(struct inode *i) {
+#endif
+
   cd * this_cd = cdfs_info(i->i_sb);
 
   //printk("this_cd = 0x%x\n\n\n", (unsigned)this_cd);
@@ -536,12 +558,23 @@
       i->i_data.a_ops   = &cdfs_cdXA_aops;
     }
   }
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,4,24)
+  unlock_new_inode(i);
+  return i;
+/*
+error:
+  iget_failed(inode);
+  return ERR_PTR(ret);
+*/
+#endif
 }
 
 /******************************************************************/
 
 static struct super_operations cdfs_ops = {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,24)
   .read_inode = cdfs_read_inode,
+#endif
   .put_super  = cdfs_umount,
   .statfs     = cdfs_statfs
 };

Reply via email to