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