wok rev 915

Remove shfs (replaced by sshfs-fuse)
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun Jun 15 20:17:40 2008 +0000 (2008-06-15)
parents 4fff3a92371f
children a3129d854cf2
files shfs/receipt shfs/stuff/shfs-0.35-2.6.22.9.u shfs/stuff/shfs-0.35-2.6.24.2.u
line diff
     1.1 --- a/shfs/receipt	Sun Jun 15 20:14:25 2008 +0000
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,56 +0,0 @@
     1.4 -# SliTaz package receipt.
     1.5 -
     1.6 -PACKAGE="shfs"
     1.7 -VERSION="0.35"
     1.8 -CATEGORY="network"
     1.9 -SHORT_DESC="(secure) SHell FileSystem Linux kernel module and userland tool."
    1.10 -MAINTAINER="pascal.bellard@ads-lu.com"
    1.11 -TARBALL="shfs-$VERSION.tar.gz"
    1.12 -WEB_SITE="http://$PACKAGE.sourceforge.net/"
    1.13 -WGET_URL="$SF_MIRROR/$PACKAGE/$TARBALL"
    1.14 -DEPENDS="dropbear"
    1.15 -BUILD_DEPENDS="perl"
    1.16 -
    1.17 -# Rules to configure and make the package.
    1.18 -compile_rules()
    1.19 -{
    1.20 -	local kver
    1.21 -	if [ ! -d ../linux/taz ]; then
    1.22 -		tazwok cook linux
    1.23 -	fi
    1.24 -	kver=$(grep "kernel version" ../linux/linux-*/.config)
    1.25 -	kver=${kver##* }
    1.26 -	cd $PACKAGE-$VERSION
    1.27 -	patch -p0 < ../stuff/$PACKAGE-$VERSION-$kver.u
    1.28 -	while read subs ; do
    1.29 -		perl -pi -e "$subs" Makefile
    1.30 -	done << EOF
    1.31 -s,^KERNEL=.*,KERNEL=$kver,
    1.32 -s,^KERNEL_SOURCES=.*,KERNEL_SOURCES=$(cd ../../linux/linux-$kver* ; pwd),
    1.33 -s,^ROOT=.*,ROOT=$(pwd)/_pkg,
    1.34 -EOF
    1.35 -	make 
    1.36 -	mkdir -p _pkg/lib/modules/$kver-slitaz/kernel/fs/shfs/ _pkg/usr/bin
    1.37 -	cp shfs/Linux-2.6/shfs.ko _pkg/lib/modules/$kver-slitaz/kernel/fs/shfs/
    1.38 -	cp shfsmount/shfsmount shfsmount/shfsumount _pkg/usr/bin
    1.39 -}
    1.40 -
    1.41 -
    1.42 -# Rules to gen a SliTaz package suitable for Tazpkg.
    1.43 -genpkg_rules()
    1.44 -{
    1.45 -	cp -a $PACKAGE-$VERSION/_pkg/* $fs
    1.46 -	strip -s $fs/usr/bin/*
    1.47 -}
    1.48 -
    1.49 -# Post install/remove commands for Tazpkg.
    1.50 -post_install()
    1.51 -{
    1.52 -	depmod -a -b /$1
    1.53 -}
    1.54 -
    1.55 -post_remove()
    1.56 -{
    1.57 -	depmod -a
    1.58 -}
    1.59 -
     2.1 --- a/shfs/stuff/shfs-0.35-2.6.22.9.u	Sun Jun 15 20:14:25 2008 +0000
     2.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.3 @@ -1,1 +0,0 @@
     2.4 -shfs-0.35-2.6.24.2.u
     2.5 \ No newline at end of file
     3.1 --- a/shfs/stuff/shfs-0.35-2.6.24.2.u	Sun Jun 15 20:14:25 2008 +0000
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,437 +0,0 @@
     3.4 ---- shfs/Linux-2.6/dcache.c
     3.5 -+++ shfs/Linux-2.6/dcache.c
     3.6 -@@ -68,7 +68,7 @@ shfs_invalidate_dircache_entries(struct 
     3.7 - 	spin_lock(&dcache_lock);
     3.8 - 	next = parent->d_subdirs.next;
     3.9 - 	while (next != &parent->d_subdirs) {
    3.10 --		dentry = list_entry(next, struct dentry, d_child);
    3.11 -+		dentry = list_entry(next, struct dentry, d_u.d_child);
    3.12 - 		dentry->d_fsdata = NULL;
    3.13 - 		shfs_age_dentry(info, dentry);
    3.14 - 		next = next->next;
    3.15 -@@ -101,7 +101,7 @@ shfs_dget_fpos(struct dentry *dentry, st
    3.16 - 	spin_lock(&dcache_lock);
    3.17 - 	next = parent->d_subdirs.next;
    3.18 - 	while (next != &parent->d_subdirs) {
    3.19 --		dent = list_entry(next, struct dentry, d_child);
    3.20 -+		dent = list_entry(next, struct dentry, d_u.d_child);
    3.21 - 		if ((unsigned long)dent->d_fsdata == fpos) {
    3.22 - 			if (dent->d_inode)
    3.23 - 				dget_locked(dent);
    3.24 ---- shfs/Linux-2.6/dir.c
    3.25 -+++ shfs/Linux-2.6/dir.c
    3.26 -@@ -300,8 +300,8 @@ shfs_create(struct inode* dir, struct de
    3.27 - 	
    3.28 - 	shfs_invalid_dir_cache(dir);
    3.29 - 	result = shfs_instantiate(dentry);
    3.30 --	if (forced_write && dentry->d_inode && dentry->d_inode->u.generic_ip)
    3.31 --		((struct shfs_inode_info *)dentry->d_inode->u.generic_ip)->unset_write_on_close = 1;
    3.32 -+	if (forced_write && dentry->d_inode && dentry->d_inode->i_private)
    3.33 -+		((struct shfs_inode_info *)dentry->d_inode->i_private)->unset_write_on_close = 1;
    3.34 - 	return result;
    3.35 - }
    3.36 - 
    3.37 -@@ -488,7 +488,7 @@ shfs_d_delete(struct dentry *dentry)
    3.38 - 	return 0;
    3.39 - }
    3.40 - 
    3.41 --static struct dentry_operations shfs_dentry_operations = {
    3.42 -+struct dentry_operations shfs_dentry_operations = {
    3.43 - 	.d_revalidate	= shfs_d_revalidate,
    3.44 - 	.d_delete 	= shfs_d_delete,
    3.45 - };
    3.46 ---- shfs/Linux-2.6/fcache.c
    3.47 -+++ shfs/Linux-2.6/fcache.c
    3.48 -@@ -29,12 +29,12 @@ struct shfs_file {
    3.49 - 	char          	*data;
    3.50 - };
    3.51 - 
    3.52 --kmem_cache_t	*file_cache = NULL;
    3.53 -+struct kmem_cache	*file_cache = NULL;
    3.54 - 
    3.55 - void
    3.56 - fcache_init(void)
    3.57 - {
    3.58 --	file_cache = kmem_cache_create("shfs_file", sizeof(struct shfs_file), 0, 0, NULL, NULL);
    3.59 -+	file_cache = kmem_cache_create("shfs_file", sizeof(struct shfs_file), 0, 0, NULL);
    3.60 - 	DEBUG("file_cache: %p\n", file_cache);
    3.61 - }
    3.62 - 
    3.63 -@@ -100,7 +100,7 @@ fcache_file_open(struct file *f)
    3.64 - 		VERBOSE("dir in file cache?\n");
    3.65 - 		return -EINVAL;
    3.66 - 	}
    3.67 --	p = (struct shfs_inode_info *)inode->u.generic_ip;
    3.68 -+	p = (struct shfs_inode_info *)inode->i_private;
    3.69 - 	if (!p) {
    3.70 - 		VERBOSE("inode without info\n");
    3.71 - 		return -EINVAL;
    3.72 -@@ -127,7 +127,7 @@ fcache_file_sync(struct file *f)
    3.73 - 		VERBOSE("dir in file cache?\n");
    3.74 - 		return -EINVAL;
    3.75 - 	}
    3.76 --	p = (struct shfs_inode_info *)inode->u.generic_ip;
    3.77 -+	p = (struct shfs_inode_info *)inode->i_private;
    3.78 - 	if (!p) {
    3.79 - 		VERBOSE("inode without info\n");
    3.80 - 		return -EINVAL;
    3.81 -@@ -160,7 +160,7 @@ fcache_file_close(struct file *f)
    3.82 - 	if (result == 0) {
    3.83 - 		struct shfs_inode_info *p;
    3.84 - 
    3.85 --		p = (struct shfs_inode_info *)f->f_dentry->d_inode->u.generic_ip;
    3.86 -+		p = (struct shfs_inode_info *)f->f_dentry->d_inode->i_private;
    3.87 - 		if (!p) {
    3.88 - 			VERBOSE("inode without info\n");
    3.89 - 			return -EINVAL;
    3.90 -@@ -184,7 +184,7 @@ fcache_file_clear(struct inode *inode)
    3.91 - 		return -EINVAL;
    3.92 - 	}
    3.93 - 	DEBUG("ino: %lu\n", inode->i_ino);
    3.94 --	p = (struct shfs_inode_info *)inode->u.generic_ip;
    3.95 -+	p = (struct shfs_inode_info *)inode->i_private;
    3.96 - 	if (!p) {
    3.97 - 		VERBOSE("inode without info\n");
    3.98 - 		return -EINVAL;
    3.99 -@@ -226,7 +226,7 @@ fcache_file_read(struct file *f, unsigne
   3.100 - 		VERBOSE("dir in file cache?\n");
   3.101 - 		return -EINVAL;
   3.102 - 	}
   3.103 --	p = (struct shfs_inode_info *)inode->u.generic_ip;
   3.104 -+	p = (struct shfs_inode_info *)inode->i_private;
   3.105 - 	if (!p) {
   3.106 - 		VERBOSE("inode without info\n");
   3.107 - 		return -EINVAL;
   3.108 -@@ -327,7 +327,7 @@ fcache_file_write(struct file *f, unsign
   3.109 - 		VERBOSE("dir in file cache?\n");
   3.110 - 		return -EINVAL;
   3.111 - 	}
   3.112 --	p = (struct shfs_inode_info *)inode->u.generic_ip;
   3.113 -+	p = (struct shfs_inode_info *)inode->i_private;
   3.114 - 	if (!p) {
   3.115 - 		VERBOSE("inode without info\n");
   3.116 - 		return -EINVAL;
   3.117 ---- shfs/Linux-2.6/file.c
   3.118 -+++ shfs/Linux-2.6/file.c
   3.119 -@@ -90,7 +90,7 @@ shfs_file_commitwrite(struct file *f, st
   3.120 - 	struct dentry *dentry = f->f_dentry;
   3.121 - 	struct shfs_sb_info *info = info_from_dentry(dentry);
   3.122 - 	struct inode *inode = p->mapping->host;
   3.123 --	struct shfs_inode_info *i = (struct shfs_inode_info *)inode->u.generic_ip;
   3.124 -+	struct shfs_inode_info *i = (struct shfs_inode_info *)inode->i_private;
   3.125 - 	char *buffer = kmap(p) + offset;
   3.126 - 	int written = 0, result;
   3.127 - 	unsigned count = to - offset;
   3.128 -@@ -199,7 +199,7 @@ shfs_file_open(struct inode *inode, stru
   3.129 - }
   3.130 - 
   3.131 - static int
   3.132 --shfs_file_flush(struct file *f)
   3.133 -+shfs_file_flush(struct file *f, fl_owner_t id)
   3.134 - {
   3.135 - 	struct dentry *dentry = f->f_dentry;
   3.136 - 	struct shfs_sb_info *info = info_from_dentry(dentry);
   3.137 -@@ -242,8 +242,8 @@ shfs_file_release(struct inode *inode, s
   3.138 - 		}
   3.139 - 	}
   3.140 - 	/* if file was forced to be writeable, change attrs back on close */
   3.141 --	if (dentry->d_inode && dentry->d_inode->u.generic_ip) {
   3.142 --		if  (((struct shfs_inode_info *)dentry->d_inode->u.generic_ip)->unset_write_on_close) {
   3.143 -+	if (dentry->d_inode && dentry->d_inode->i_private) {
   3.144 -+		if  (((struct shfs_inode_info *)dentry->d_inode->i_private)->unset_write_on_close) {
   3.145 - 			char name[SHFS_PATH_MAX];
   3.146 - 
   3.147 - 			if (get_name(dentry, name) < 0)
   3.148 -@@ -292,7 +292,9 @@ shfs_slow_read(struct file *f, char *buf
   3.149 - 		goto error;
   3.150 - 	}
   3.151 - 	if (result != 0) {
   3.152 --		copy_to_user(buf, (char *)page, result);
   3.153 -+		if (copy_to_user(buf, (char *)page, result)) {
   3.154 -+			goto error;
   3.155 -+		}
   3.156 - 		*ppos += result;
   3.157 - 	}
   3.158 - error:
   3.159 -@@ -309,9 +311,9 @@ shfs_slow_write(struct file *f, const ch
   3.160 - 	int result;
   3.161 - 	
   3.162 - 	DEBUG("\n");
   3.163 --	written = generic_file_write(f, buf, count, offset);
   3.164 -+	written = do_sync_write(f, buf, count, offset);
   3.165 - 	if (written > 0) {
   3.166 --		result = shfs_file_flush(f);
   3.167 -+		result = shfs_file_flush(f, 0);
   3.168 - 		written = result < 0 ? result: written;
   3.169 - 	}
   3.170 - 	
   3.171 -@@ -320,8 +322,8 @@ shfs_slow_write(struct file *f, const ch
   3.172 - 
   3.173 - struct file_operations shfs_file_operations = {
   3.174 - 	.llseek		= generic_file_llseek,
   3.175 --	.read		= generic_file_read,
   3.176 --	.write		= generic_file_write,
   3.177 -+	.read		= do_sync_read,
   3.178 -+	.write		= do_sync_write,
   3.179 - 	.ioctl		= shfs_ioctl,
   3.180 - 	.mmap		= generic_file_mmap,
   3.181 - 	.open		= shfs_file_open,
   3.182 ---- shfs/Linux-2.6/inode.c
   3.183 -+++ shfs/Linux-2.6/inode.c
   3.184 -@@ -29,13 +29,13 @@ int debug_level;
   3.185 - 	unsigned long alloc;
   3.186 - #endif
   3.187 - 
   3.188 --kmem_cache_t	*inode_cache = NULL;
   3.189 -+struct kmem_cache	*inode_cache = NULL;
   3.190 - 
   3.191 - void 
   3.192 - shfs_set_inode_attr(struct inode *inode, struct shfs_fattr *fattr)
   3.193 - {
   3.194 - 	struct shfs_sb_info *info = info_from_inode(inode);
   3.195 --	struct shfs_inode_info *i = inode->u.generic_ip;
   3.196 -+	struct shfs_inode_info *i = inode->i_private;
   3.197 - 	struct timespec last_time = inode->i_mtime;
   3.198 - 	loff_t last_size = inode->i_size;
   3.199 - 
   3.200 -@@ -52,7 +52,8 @@ shfs_set_inode_attr(struct inode *inode,
   3.201 - 	inode->i_ctime	= fattr->f_ctime;
   3.202 - 	inode->i_atime	= fattr->f_atime;
   3.203 - 	inode->i_mtime	= fattr->f_mtime;
   3.204 --	inode->i_blksize= fattr->f_blksize;
   3.205 -+	//inode->i_blksize= fattr->f_blksize;
   3.206 -+	inode->i_blkbits= 12; // 4K
   3.207 - 	inode->i_blocks	= fattr->f_blocks;
   3.208 - 	inode->i_size	= fattr->f_size;
   3.209 - 
   3.210 -@@ -60,7 +61,7 @@ shfs_set_inode_attr(struct inode *inode,
   3.211 - 
   3.212 - 	if (!timespec_equal(&inode->i_mtime, &last_time) || inode->i_size != last_size) {
   3.213 - 		DEBUG("inode changed (%ld/%ld, %lu/%lu)\n", inode->i_mtime.tv_sec, last_time.tv_sec, (unsigned long)inode->i_size, (unsigned long)last_size);
   3.214 --		invalidate_inode_pages(inode->i_mapping);
   3.215 -+		invalidate_mapping_pages(inode->i_mapping, 0, ~0UL);
   3.216 - 		fcache_file_clear(inode);
   3.217 - 	}
   3.218 - }
   3.219 -@@ -75,7 +76,7 @@ shfs_iget(struct super_block *sb, struct
   3.220 - 	if (!inode)
   3.221 - 		return NULL;
   3.222 - 	inode->i_ino = fattr->f_ino;
   3.223 --	i = inode->u.generic_ip = (struct shfs_inode_info *)KMEM_ALLOC("inode", inode_cache, GFP_KERNEL);
   3.224 -+	i = inode->i_private = (struct shfs_inode_info *)KMEM_ALLOC("inode", inode_cache, GFP_KERNEL);
   3.225 - 	if (!i)
   3.226 - 		return NULL;
   3.227 - 	i->cache = NULL;
   3.228 -@@ -107,7 +108,7 @@ shfs_delete_inode(struct inode *inode)
   3.229 - 	struct shfs_inode_info *i;
   3.230 - 
   3.231 - 	DEBUG("ino: %lu\n", inode->i_ino);
   3.232 --	i = (struct shfs_inode_info *)inode->u.generic_ip;
   3.233 -+	i = (struct shfs_inode_info *)inode->i_private;
   3.234 - 	if (!i) {
   3.235 - 		VERBOSE("invalid inode\n");
   3.236 - 		goto out;
   3.237 -@@ -158,7 +159,7 @@ shfs_refresh_inode(struct dentry *dentry
   3.238 - 		 * But we do want to invalidate the caches ...
   3.239 - 		 */
   3.240 - 		if (!S_ISDIR(inode->i_mode))
   3.241 --			invalidate_inode_pages(inode->i_mapping);
   3.242 -+			invalidate_mapping_pages(inode->i_mapping, 0, ~0UL);
   3.243 - 		else
   3.244 - 			shfs_invalid_dir_cache(inode);
   3.245 - 		result = -EIO;
   3.246 -@@ -172,7 +173,7 @@ shfs_revalidate_inode(struct dentry *den
   3.247 - {
   3.248 - 	struct shfs_sb_info *info = info_from_dentry(dentry);
   3.249 - 	struct inode *inode = dentry->d_inode;
   3.250 --	struct shfs_inode_info *i = (struct shfs_inode_info *)inode->u.generic_ip;
   3.251 -+	struct shfs_inode_info *i = (struct shfs_inode_info *)inode->i_private;
   3.252 - 	int result;
   3.253 - 
   3.254 -         DEBUG("%s\n", dentry->d_name.name);
   3.255 -@@ -337,11 +338,11 @@ out:
   3.256 - 	return -EINVAL;
   3.257 - }
   3.258 - 
   3.259 --static struct super_block *
   3.260 -+static int
   3.261 - shfs_get_sb(struct file_system_type *fs_type,
   3.262 --	    int flags, const char *dev_name, void *data)
   3.263 -+	    int flags, const char *dev_name, void *data, struct vfsmount *mnt)
   3.264 - {
   3.265 --	return get_sb_nodev(fs_type, flags, data, shfs_read_super);
   3.266 -+	return get_sb_nodev(fs_type, flags, data, shfs_read_super, mnt);
   3.267 - }
   3.268 - 
   3.269 - static struct file_system_type sh_fs_type = {
   3.270 -@@ -356,7 +357,7 @@ init_shfs(void)
   3.271 - {
   3.272 - 	printk(KERN_NOTICE "SHell File System, (c) 2002-2004 Miroslav Spousta\n");
   3.273 - 	fcache_init();
   3.274 --	inode_cache = kmem_cache_create("shfs_inode", sizeof(struct shfs_inode_info), 0, 0, NULL, NULL);
   3.275 -+	inode_cache = kmem_cache_create("shfs_inode", sizeof(struct shfs_inode_info), 0, 0, NULL);
   3.276 - 	
   3.277 - 	debug_level = 0;
   3.278 - #ifdef ENABLE_DEBUG
   3.279 ---- shfs/Linux-2.6/proc.c
   3.280 -+++ shfs/Linux-2.6/proc.c
   3.281 -@@ -148,6 +148,7 @@ int
   3.282 - sock_write(struct shfs_sb_info *info, const void *buffer, int count)
   3.283 - {
   3.284 - 	struct file *f = info->sock;
   3.285 -+	struct kiocb kiocb;
   3.286 - 	mm_segment_t fs;
   3.287 - 	int c, result = 0;
   3.288 - 	unsigned long flags, sigpipe;
   3.289 -@@ -173,12 +174,13 @@ sock_write(struct shfs_sb_info *info, co
   3.290 - 	SIGRECALC;
   3.291 - 	SIGUNLOCK(flags);
   3.292 - 
   3.293 -+	init_sync_kiocb(&kiocb, f);
   3.294 - 	do {
   3.295 - 		struct iovec vec[1];
   3.296 - 
   3.297 - 		vec[0].iov_base = (void *)buffer;
   3.298 - 		vec[0].iov_len = c;
   3.299 --		result = f->f_op->writev(f, (const struct iovec *) &vec, 1, &f->f_pos);
   3.300 -+		result = f->f_op->aio_write(&kiocb, (const struct iovec *) &vec, 1, f->f_pos);
   3.301 - 		if (result < 0) {
   3.302 - 			DEBUG("error: %d\n", result);
   3.303 - 			if (result == -EAGAIN)
   3.304 -@@ -218,6 +220,7 @@ int
   3.305 - sock_read(struct shfs_sb_info *info, void *buffer, int count)
   3.306 - {
   3.307 - 	struct file *f = info->sock;
   3.308 -+	struct kiocb kiocb;
   3.309 - 	mm_segment_t fs;
   3.310 - 	int c, result = 0;
   3.311 - 	unsigned long flags, sigpipe;
   3.312 -@@ -256,12 +259,13 @@ sock_read(struct shfs_sb_info *info, voi
   3.313 - 	fs = get_fs();
   3.314 - 	set_fs(get_ds());
   3.315 - 
   3.316 -+	init_sync_kiocb(&kiocb, f);
   3.317 - 	do {
   3.318 - 		struct iovec vec[1];
   3.319 - 
   3.320 - 		vec[0].iov_base = buffer;
   3.321 - 		vec[0].iov_len = c;
   3.322 --		result = f->f_op->readv(f, (const struct iovec *)&vec, 1, &f->f_pos);
   3.323 -+		result = f->f_op->aio_read(&kiocb, (const struct iovec *) &vec, 1, f->f_pos);
   3.324 - 		if (!result) {
   3.325 - 			/*  peer has closed socket */
   3.326 - 			result = -EIO;
   3.327 -@@ -302,6 +306,7 @@ int 
   3.328 - sock_readln(struct shfs_sb_info *info, char *buffer, int count)
   3.329 - {
   3.330 - 	struct file *f = info->sock;
   3.331 -+	struct kiocb kiocb;
   3.332 - 	mm_segment_t fs;
   3.333 - 	int c, l = 0, result;
   3.334 - 	char *nl;
   3.335 -@@ -315,6 +320,7 @@ sock_readln(struct shfs_sb_info *info, c
   3.336 - 		if (result < 0)
   3.337 - 			return result;
   3.338 - 	}
   3.339 -+	init_sync_kiocb(&kiocb, f);
   3.340 - 	while (1) {
   3.341 - 		struct iovec vec[1];
   3.342 - 
   3.343 -@@ -350,7 +356,7 @@ sock_readln(struct shfs_sb_info *info, c
   3.344 - 
   3.345 - 		vec[0].iov_base = BUFFER+LEN;
   3.346 - 		vec[0].iov_len = c;
   3.347 --		result = f->f_op->readv(f, (const struct iovec *)&vec, 1, &f->f_pos);
   3.348 -+		result = f->f_op->aio_read(&kiocb, (const struct iovec *) &vec, 1, f->f_pos);
   3.349 - 		SIGLOCK(flags);
   3.350 - 		if (result == -EPIPE && !sigpipe) {
   3.351 - 			sigdelset(&current->pending.signal, SIGPIPE);
   3.352 -@@ -571,9 +577,9 @@ error:
   3.353 - }
   3.354 - 
   3.355 - int
   3.356 --shfs_statfs(struct super_block *sb, struct kstatfs *attr)
   3.357 -+shfs_statfs(struct dentry *dentry, struct kstatfs *attr)
   3.358 - {
   3.359 --	struct shfs_sb_info *info = info_from_sb(sb);
   3.360 -+	struct shfs_sb_info *info = info_from_sb(dentry->d_sb);
   3.361 - 
   3.362 - 	DEBUG("\n");
   3.363 - 	return info->fops.statfs(info, attr);
   3.364 ---- shfs/Linux-2.6/shfs_debug.h
   3.365 -+++ shfs/Linux-2.6/shfs_debug.h
   3.366 -@@ -19,7 +19,7 @@ extern int debug_level;
   3.367 - extern unsigned long alloc;
   3.368 - 
   3.369 - static inline void *
   3.370 --__kmem_malloc_debug(char *s, kmem_cache_t *cache, int flags)
   3.371 -+__kmem_malloc_debug(char *s, struct kmem_cache *cache, int flags)
   3.372 - {
   3.373 - 	if (debug_level >= SHFS_ALLOC) {
   3.374 - 		void *x = kmem_cache_alloc(cache, flags);
   3.375 -@@ -32,7 +32,7 @@ __kmem_malloc_debug(char *s, kmem_cache_
   3.376 - }
   3.377 - 
   3.378 - static inline void
   3.379 --__kmem_free_debug(char *s, kmem_cache_t *cache, void *p)
   3.380 -+__kmem_free_debug(char *s, struct kmem_cache *cache, void *p)
   3.381 - {
   3.382 - 	if (debug_level >= SHFS_ALLOC) {
   3.383 - 		VERBOSE("free (%s): %p\n", s, p);
   3.384 ---- shfs/Linux-2.6/shfs_fs.h
   3.385 -+++ shfs/Linux-2.6/shfs_fs.h
   3.386 -@@ -74,10 +74,10 @@ int shfs_fill_cache(struct file*, void*,
   3.387 - 
   3.388 - /* shfs/fcache.c */
   3.389 - #include <linux/slab.h>
   3.390 --extern kmem_cache_t *file_cache;
   3.391 --extern kmem_cache_t *dir_head_cache;
   3.392 --extern kmem_cache_t *dir_entry_cache;
   3.393 --extern kmem_cache_t *dir_name_cache;
   3.394 -+extern struct kmem_cache *file_cache;
   3.395 -+extern struct kmem_cache *dir_head_cache;
   3.396 -+extern struct kmem_cache *dir_entry_cache;
   3.397 -+extern struct kmem_cache *dir_name_cache;
   3.398 - void fcache_init(void);
   3.399 - void fcache_finish(void);
   3.400 - int fcache_file_open(struct file*);
   3.401 -@@ -101,7 +101,7 @@ int reply(char *s);
   3.402 - void set_garbage(struct shfs_sb_info *info, int write, int count);
   3.403 - int get_name(struct dentry *d, char *name);
   3.404 - int shfs_notify_change(struct dentry *dentry, struct iattr *attr);
   3.405 --int shfs_statfs(struct super_block *sb, struct kstatfs *attr);
   3.406 -+int shfs_statfs(struct dentry *dentry, struct kstatfs *attr);
   3.407 - 	
   3.408 - /* shfs/inode.c */
   3.409 - void shfs_set_inode_attr(struct inode *inode, struct shfs_fattr *fattr);
   3.410 ---- shfs/Linux-2.6/symlink.c
   3.411 -+++ shfs/Linux-2.6/symlink.c
   3.412 -@@ -41,7 +41,7 @@ error:
   3.413 - 	return result;
   3.414 - }
   3.415 - 
   3.416 --static int
   3.417 -+static void *
   3.418 - shfs_follow_link(struct dentry *dentry, struct nameidata *nd)
   3.419 - {
   3.420 - 	struct shfs_sb_info *info = info_from_dentry(dentry);
   3.421 -@@ -51,7 +51,6 @@ shfs_follow_link(struct dentry *dentry, 
   3.422 - 	
   3.423 - 	DEBUG("%s\n", dentry->d_name.name);
   3.424 - 
   3.425 --	result = -ENAMETOOLONG;
   3.426 - 	if (get_name(dentry, name) < 0)
   3.427 - 		goto error;
   3.428 - 
   3.429 -@@ -59,9 +58,9 @@ shfs_follow_link(struct dentry *dentry, 
   3.430 - 	if (result < 0)
   3.431 - 		goto error;
   3.432 - 	DEBUG("%s\n", real_name);
   3.433 --	result = vfs_follow_link(nd, real_name);
   3.434 -+	nd_set_link(nd, real_name);
   3.435 - error:
   3.436 --	return result;
   3.437 -+	return NULL;
   3.438 - }
   3.439 - 
   3.440 - struct inode_operations shfs_symlink_inode_operations = {