diff --git a/.downloads/ncpfs-2.0.11.tgz b/.downloads/ncpfs-2.0.11.tgz new file mode 100644 index 0000000..e485f6b Binary files /dev/null and b/.downloads/ncpfs-2.0.11.tgz differ diff --git a/BUGS b/BUGS index c0d8116..edcd795 100644 --- a/BUGS +++ b/BUGS @@ -13,9 +13,8 @@ down the complete ipx subsystem by deleting all ipx interfaces, unmounting all ncpfs volumes (in this order!) and restarting all again. -For the kernel hackers who want to look at the problem: The routine -ipx_sendmsg in net/ipx/af_ipx.c sometimes locks forever if called with -nonblock=0. I DO NOT KNOW WHY!!! HELP ME, PLEASE! +This problem has been solved by Martin Stover (THANKS!!) +See patches/lockup-2.0.30.diff for the fix. ------------------------------------------------------------------------------- diff --git a/Changes b/Changes index 9eedd3f..14ed13e 100644 --- a/Changes +++ b/Changes @@ -1,6 +1,10 @@ I only began this file with ncpfs-0.12. If you're interested in older versions, you can find them on ftp.gwdg.de:/pub/linux/misc/ncpfs/old. +ncpfs-2.0.10 -> ncpfs-2.0.11 +- Added Martin's patch to Linux 2.0.30 to get rid of the lockups. + MANY thanks to Martin Stover! + ncpfs-2.0.9 -> ncpfs-2.0.10 - Made nwtrustee hopefully work ;-) - Made the manpages a little bit prettier diff --git a/Makefile b/Makefile index 27a3a88..233f9d6 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ # Makefile for the linux ncp-filesystem routines. # -VERSION = 2.0.10 +VERSION = 2.0.11 # If you are using kerneld to autoload ncp support, # uncomment this (kerneld is in linux since about 1.3.57): diff --git a/ncpfs-2.0.10.lsm b/ncpfs-2.0.11.lsm similarity index 50% rename from ncpfs-2.0.10.lsm rename to ncpfs-2.0.11.lsm index eb8ead1..1c56c9b 100644 --- a/ncpfs-2.0.10.lsm +++ b/ncpfs-2.0.11.lsm @@ -1,19 +1,17 @@ Begin3 Title: ncpfs -Version: 2.0.10 -Entered-date: 23. February 1997 +Version: 2.0.11 +Entered-date: July 14, 1997 Description: With ncpfs you can mount volumes of your netware server under Linux. You can also print to netware print queues and spool netware print queues to the - Linux printing system. You need kernel 1.2.x or - 1.3.71 and above. ncpfs does NOT work with any 1.3.x - kernel below 1.3.71. + Linux printing system. Keywords: filesystem ncp novell netware printing -Author: lendecke@namu01.Num.Math.Uni-Goettingen.de (Volker Lendecke) -Maintained-by: lendecke@namu01.Num.Math.Uni-Goettingen.de (Volker Lendecke) +Author: lendecke@Math.Uni-Goettingen.de (Volker Lendecke) +Maintained-by: lendecke@Math.Uni-Goettingen.de (Volker Lendecke) Primary-site: ftp.gwdg.de:/pub/linux/misc/ncpfs Alternate-site: sunsite.unc.edu:/pub/Linux/system/Filesystems/ncpfs - ~158k ncpfs-2.0.10.tgz - ~ 1k ncpfs-2.0.10.lsm + ~158k ncpfs-2.0.11.tgz + ~ 1k ncpfs-2.0.11.lsm Copying-policy: GPL End diff --git a/patches/README b/patches/README index e4edd17..9ed8629 100644 --- a/patches/README +++ b/patches/README @@ -4,10 +4,9 @@ and do: patch -p1 < patch-file -lockup-2.0.28.diff: -An *extremely* dirty fix to the lockup bug mentioned in the BUGS -file. Please only apply it if you experience the problem. Should apply -to 2.0.28 and above in the 2.0.x series. NOT TESTED with 2.1.x. +lockup-2.0.30.diff: +Please apply this patch to your 2.0.30 kernel to get rid of the ncpfs +lockups. See ../BUGS for the symptoms. linux-2.1.26.diff: Little fix to make ncpfs work with 2.1.26. Sent to Linus. diff --git a/patches/lockup-2.0.28.diff b/patches/lockup-2.0.28.diff deleted file mode 100644 index 13d924e..0000000 --- a/patches/lockup-2.0.28.diff +++ /dev/null @@ -1,44 +0,0 @@ -diff -urN 2.0.11/fs/ncpfs/sock.c linux/fs/ncpfs/sock.c ---- 2.0.28/fs/ncpfs/sock.c Fri Jul 12 08:14:53 1996 -+++ linux/fs/ncpfs/sock.c Thu Aug 8 19:27:26 1996 -@@ -55,7 +55,8 @@ - { - struct iovec iov; - struct msghdr msg; -- -+ int result; -+ - iov.iov_base = (void *)buff; - iov.iov_len = len; - -@@ -65,7 +66,29 @@ - msg.msg_iov = &iov; - msg.msg_iovlen = 1; - -- return sock->ops->sendmsg(sock, &msg, len, nonblock, flags); -+ result = sock->ops->sendmsg(sock, &msg, len, 1, flags); -+ -+ if ((result != -EAGAIN) || (nonblock != 0)) -+ { -+ return result; -+ } -+ -+ /* The following is probably one of the worst sins you can do -+ to a multitasking kernel: active polling. But when you call -+ ipx_sendmsg with nonblock==0, then it will block forever -+ from time to time. I really do not know why. To work around -+ this, I try to send the packet with nonblock=1 and retry -+ it. */ -+ -+ do { -+ /* Before retrying, give others a chance */ -+ current->state = TASK_INTERRUPTIBLE; -+ current->timeout = jiffies + HZ/10; -+ schedule(); -+ result = sock->ops->sendmsg(sock, &msg, len, 1, flags); -+ } while (result == -EAGAIN); -+ -+ return result; - } - - diff --git a/patches/lockup-2.0.30.diff b/patches/lockup-2.0.30.diff new file mode 100644 index 0000000..2d3d346 --- /dev/null +++ b/patches/lockup-2.0.30.diff @@ -0,0 +1,12 @@ +diff -u -urN 2.0.30/net/ipx/af_ipx.c 2.0.30-patched/net/ipx/af_ipx.c +--- 2.0.30/net/ipx/af_ipx.c Wed Nov 27 08:44:21 1996 ++++ 2.0.30-patched/net/ipx/af_ipx.c Mon Jul 14 17:25:12 1997 +@@ -1723,6 +1723,7 @@ + } + sk->rcvbuf=SK_RMEM_MAX; + sk->sndbuf=SK_WMEM_MAX; ++ sk->allocation=GFP_KERNEL; + sk->prot=NULL; /* So we use default free mechanisms */ + skb_queue_head_init(&sk->receive_queue); + skb_queue_head_init(&sk->write_queue); +