unionfs is using int in places where 2.6.12 (no idea about earlier kernels) use size_t. On x86_64, this makes a difference. Patch attached.

make -C /usr/src/linux SUBDIRS=/var/tmp/portage/unionfs-1.1.0/work/unionfs-1.1.0 FISTDEVMK=/var/tmp/portage/unionfs-1.1.0/work/unionfs-1.1.0/fistdev.mk modules
make[1]: Entering directory `/usr/src/xen-unstable.hg/linux-2.6.12-xen0'
  CC [M]  /var/tmp/portage/unionfs-1.1.0/work/unionfs-1.1.0/subr.o
  CC [M]  /var/tmp/portage/unionfs-1.1.0/work/unionfs-1.1.0/dentry.o
  CC [M]  /var/tmp/portage/unionfs-1.1.0/work/unionfs-1.1.0/file.o
  CC [M]  /var/tmp/portage/unionfs-1.1.0/work/unionfs-1.1.0/inode.o
/var/tmp/portage/unionfs-1.1.0/work/unionfs-1.1.0/inode.c:1003: warning: initialization from incompatible pointer type /var/tmp/portage/unionfs-1.1.0/work/unionfs-1.1.0/inode.c:1005: warning: initialization from incompatible pointer type /var/tmp/portage/unionfs-1.1.0/work/unionfs-1.1.0/inode.c:1015: warning: initialization from incompatible pointer type /var/tmp/portage/unionfs-1.1.0/work/unionfs-1.1.0/inode.c:1017: warning: initialization from incompatible pointer type make[2]: *** [/var/tmp/portage/unionfs-1.1.0/work/unionfs-1.1.0/inode.o] Error 1 make[1]: *** [_module_/var/tmp/portage/unionfs-1.1.0/work/unionfs-1.1.0] Error 2
make[1]: Leaving directory `/usr/src/xen-unstable.hg/linux-2.6.12-xen0'
make: *** [unionfs.ko] Error 2
diff -ruN unionfs-1.1.0/unionfs.h unionfs-1.1.0.working/unionfs.h
--- unionfs-1.1.0/unionfs.h	2005-10-17 22:40:10.000000000 -0500
+++ unionfs-1.1.0.working/unionfs.h	2005-10-21 08:50:47.000000000 -0500
@@ -389,10 +389,10 @@
 extern void *xattr_alloc(size_t size, size_t limit);
 extern void xattr_free(void *ptr, size_t size);
 
-extern int unionfs_getxattr(struct dentry *dentry, const char *name,
+extern ssize_t unionfs_getxattr(struct dentry *dentry, const char *name,
 			    void *value, size_t size);
 extern int unionfs_removexattr(struct dentry *dentry, const char *name);
-extern int unionfs_listxattr(struct dentry *dentry, char *list, size_t size);
+extern ssize_t unionfs_listxattr(struct dentry *dentry, char *list, size_t size);
 
 int unionfs_setxattr(struct dentry *dentry, const char *name, const void *value,
 		     size_t size, int flags);
diff -ruN unionfs-1.1.0/xattr.c unionfs-1.1.0.working/xattr.c
--- unionfs-1.1.0/xattr.c	2005-10-17 22:40:10.000000000 -0500
+++ unionfs-1.1.0.working/xattr.c	2005-10-21 08:50:12.000000000 -0500
@@ -53,8 +53,9 @@
 
 /* BKL held by caller.
  * dentry->d_inode->i_sem down
+ * ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t);
  */
-int unionfs_getxattr(struct dentry *dentry, const char *name, void *value,
+ssize_t unionfs_getxattr(struct dentry *dentry, const char *name, void *value,
 		     size_t size)
 {
 	struct dentry *hidden_dentry = NULL;
@@ -172,7 +173,7 @@
 /* BKL held by caller.
  * dentry->d_inode->i_sem down
  */
-int unionfs_listxattr(struct dentry *dentry, char *list, size_t size)
+ssize_t unionfs_listxattr(struct dentry *dentry, char *list, size_t size)
 {
 	struct dentry *hidden_dentry = NULL;
 	int err = -EOPNOTSUPP;
_______________________________________________
unionfs mailing list
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs

Reply via email to