[Unionfs] bug on rhel4

Erez Zadok ezk at cs.sunysb.edu
Wed Sep 19 23:46:21 EDT 2007


In message <365C0ECB-7F18-4348-BB7E-988632C455EE at dugeo.com>, Stuart Midgley writes:
> Evening
> 
> I have been trying to get unionfs 2.1.3 (and previously 2.1.2)  
> working on a lustre rhel4 kernel
> 
> 	2.6.9-42.0.10.EL_lustre-1.4.10.1smp
> 
> The patch to fs/Makefile failed to apply, but was easily applied by  
> hand.  There was also an issue with compat.h with the redefinition of  
> atomic_inc_return which I found defined elsewhere in the kernel  
> source tree.  The simple solution was
> 
> #if 0
> static inline int atomic_inc_return(atomic_t *v)
> {
>    atomic_inc(v);
>    return atomic_read(v);
> }
> #endif
> 
> So the kernel module now builds perfectly.  However, when I try to  
> insert the module I get
> 
> linux-2.6.9-42.0.10.EL_lustre-1.4.10.1/fs/unionfs # insmod unionfs.ko
> insmod: error inserting 'unionfs.ko': -1 Unknown symbol in module
> 
> and dmesg is showing
> 
> unionfs: Unknown symbol fsstack_copy_inode_size
> 
> Now, I am really confused.  fsstack_copy_inode_size is in fs/stack.c
> 
> void fsstack_copy_inode_size(struct inode *dst, const struct inode *src)
> {
>          i_size_write(dst, i_size_read((struct inode *)src));
>          dst->i_blocks = src->i_blocks;
> }
> EXPORT_SYMBOL_GPL(fsstack_copy_inode_size);
> 
> and should be in the kernel???  I would have thought the compile  
> would fail if it wasn't present?  Of course, the kernel I'm running  
> (binary from a CFS supplied rpm) may not have this symbol...
> 
> Ideas?
> Stu.

Stu, make sure that fs/stack.c gets compiled, and that it gets linked into
fs/libfs.a.  Your fs/Makefile should list stack.o in obj-y.  I suspect that
your hand-patching of fs/Makefile missed the latter.

And, when in doubt, make clean and recompile your kernel from scratch.

Erez.


More information about the unionfs mailing list