Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 20 Apr 1996 20:01:19 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        current@freebsd.org, jkh@time.cdrom.com
Subject:   Re: Anyone else notice NFS broken in -current?
Message-ID:  <199604201001.UAA02505@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>Running the latest 2.2 kernels on two boxes here, I can only use NFS
>for a short time before any process doing NFS I/O hangs.  After awhile
>of this, one of the systems will then reset to the BIOS.

>This and other reports now leads me to say that NFS is very, very
>broken.  The only question is - who broke it, and when?

The ip header optimizations broken it yesterday.  All large packets
are probably broken.

I'm running with the following fix.  Note that it has breakpoint
instructions to trap the header optimizations that haven't  failed
yet.

Bruce

*** ip_output.c~	Fri Apr 19 17:11:21 1996
--- ip_output.c	Sat Apr 20 11:21:36 1996
***************
*** 332,336 ****
  		ip->ip_sum = 0;
  		if (ip->ip_vhl == IP_VHL_BORING) {
! 			ip->ip_sum = in_cksum_hdr(ip);
  		} else {
  			ip->ip_sum = in_cksum(m, hlen);
--- 332,340 ----
  		ip->ip_sum = 0;
  		if (ip->ip_vhl == IP_VHL_BORING) {
! 			u_short tmp;
! 			tmp = in_cksum_hdr(ip);
! 			ip->ip_sum = in_cksum(m, hlen);
! 			if (tmp != ip->ip_sum)
! 				breakpoint();
  		} else {
  			ip->ip_sum = in_cksum(m, hlen);
***************
*** 414,418 ****
  		mhip->ip_sum = 0;
  		if (mhip->ip_vhl == IP_VHL_BORING) {
! 			mhip->ip_sum = in_cksum_hdr(ip);
  		} else {
  			mhip->ip_sum = in_cksum(m, mhlen);
--- 418,426 ----
  		mhip->ip_sum = 0;
  		if (mhip->ip_vhl == IP_VHL_BORING) {
! 			u_short tmp;
! 			tmp = in_cksum_hdr(ip);
! 			mhip->ip_sum = in_cksum(m, mhlen);
! 			if (tmp != mhip->ip_sum)
! 				breakpoint();
  		} else {
  			mhip->ip_sum = in_cksum(m, mhlen);
***************
*** 432,440 ****
  	ip->ip_off = htons((u_short)(ip->ip_off | IP_MF));
  	ip->ip_sum = 0;
  	if (ip->ip_vhl == IP_VHL_BORING) {
! 		ip->ip_sum = in_cksum_hdr(ip);
  	} else {
  		ip->ip_sum = in_cksum(m, hlen);
  	}
  sendorfree:
  	for (m = m0; m; m = m0) {
--- 440,456 ----
  	ip->ip_off = htons((u_short)(ip->ip_off | IP_MF));
  	ip->ip_sum = 0;
+ #if 0
  	if (ip->ip_vhl == IP_VHL_BORING) {
! 		u_short tmp;
! 		tmp = in_cksum_hdr(ip);
! 		ip->ip_sum = in_cksum(m, hlen);
! 		if (tmp != ip->ip_sum)
! 			breakpoint();
  	} else {
  		ip->ip_sum = in_cksum(m, hlen);
  	}
+ #else
+ 	ip->ip_sum = in_cksum(m, hlen);
+ #endif
  sendorfree:
  	for (m = m0; m; m = m0) {
***************
*** 1223,1227 ****
  		ip->ip_sum = 0;
  		if (ip->ip_vhl == IP_VHL_BORING) {
! 			ip->ip_sum = in_cksum_hdr(ip);
  		} else {
  			ip->ip_sum = in_cksum(copym, 
--- 1239,1248 ----
  		ip->ip_sum = 0;
  		if (ip->ip_vhl == IP_VHL_BORING) {
! 			u_short tmp;
! 			tmp = in_cksum_hdr(ip);
! 			ip->ip_sum = in_cksum(copym, 
! 					      IP_VHL_HL(ip->ip_vhl) << 2);
! 			if (tmp != ip->ip_sum)
! 				breakpoint();
  		} else {
  			ip->ip_sum = in_cksum(copym, 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199604201001.UAA02505>