Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Aug 1995 13:36:20 -0500 (CDT)
From:      faulkner@mpd.tandem.com (Boyd Faulkner)
To:        graichen@sirius.physik.fu-berlin.de (Thomas Graichen)
Cc:        hackers@freebsd.org, ezk@cs.columbia.edu
Subject:   Re: PLEASE help me to get broken FreeBSD automounter working PLEASE !!!
Message-ID:  <9508091836.AA04499@olympus>
In-Reply-To: <9508091414.AA24306@sirius.physik.fu-berlin.de> from "Thomas Graichen" at Aug 9, 95 04:14:55 pm

next in thread | previous in thread | raw e-mail | index | archive | help
> 
> PLEASE. PLEASE, PLEASE ... can anybody help me out to get the
> "-type:=direct" option which is broken in FreeBSD working - PLEASE -
> i've now tried to debug it some hours but i'm at the end of my
> knowlegde - i'll now try to explain what i've done and hope that
> someone will take a deeper look into it - PLEASE
> 
> the problem:
> if you try to use the "-type:=direct" option of the amd (which
> should do a "mount -t nfs localhost:/usr/share /a/localhost/usr/share"
> for the following amd-map - amd.test - this should be done if i access
> /share/something which will then be a link to /a/localhost/usr/share) -
> but it will not mount - instead i get an "Stale NFS handle" if i try
> to access /share/something - ok and now the result of some hours of
> debugging and trying - PLEASE read on ...
> 
> what i did: (this is the striped down problem)
> * exporting for example /usr/share to the machine itself (/usr/share
>   localhost) in /etc/exports
> 
> * made the machine serving and clienting (mountd; nfsd -u -t 4; nfsiod
>   -n 4)
> 
> * made an amd.test map with the following line
>   test	type:=nfs;rfs:=/usr/share;rhost:=localhost
> 
> * build /usr/src/usr.sbin/amd/amd with the following CFLAGS added
>   CFLAGS=-static -g -DDEBUG
>   note: here only CFLAGS= not CFLAGS+= - because this way we avoid
>   possible set optimizations from other places (more later)
> 
> * run this amd:
>   ./amd -x all -D all -l amd.log /test amd.test -type:=direct
> 
> * watch at amd.log - it says somethere something like:
>   ...
>   Aug  9 15:36:27 mordillo amd[253]/map:   Trying mount of amd.test on
>   /test fstype direct
>   Aug  9 15:36:27 mordillo amd[253]/debug: backgrounding mount of "/test"
>   Aug  9 15:36:27 mordillo amd[254]/debug: backgrounded
>   Aug  9 15:36:27 mordillo amd[253]/debug: 6 new fds allocated; total is 6
>   Aug  9 15:36:27 mordillo amd[253]/debug: 0x62ffc bytes of memory
>   allocated; total is 0x62ffc (99 pages)
>   Aug  9 15:36:27 mordillo amd[253]/debug: Timing out automount points...
>   Aug  9 15:36:27 mordillo amd[253]/debug: Next mount timeout in 300s
>   Aug  9 15:36:27 mordillo amd[253]/debug: Select waits for 300s
>   Aug  9 15:36:27 mordillo amd[254]/debug: mkdir(/test)
>   Aug  9 15:36:27 mordillo amd[254]/debug: root_fh substitutes pid 253
>   Aug  9 15:36:27 mordillo amd[254]/info:  defeating nfs window computation
>   Aug  9 15:36:27 mordillo amd[254]/debug: /test fstype 2 (auto) flags 0
>   (intr,rw,port=1023,timeo=8,retrans=110,direct)
>   Aug  9 15:37:08 mordillo amd[253]/debug: Process 254 exited with status 0
>   Aug  9 15:37:08 mordillo amd[253]/debug: select interrupted
>   ...
> 
> * i made the same at one of our dec alpha's (where amd with the
>   "-type:=direct" option works fine) and it's exactly the same until the
>   "select interrupted" - this interruption does'nt occur there - thus
>   i think this is the problem
> 
> * ok - i changed nfs_start.c: (therefore all optimization must be off)
> --- /cdrom/usr/src/usr.sbin/amd/amd/nfs_start.c	Mon May 29 15:45:53 1995
> +++ amd/nfs_start.c	Wed Aug  9 15:11:16 1995
> @@ -188,6 +188,7 @@
>  
>  static serv_state run_rpc(P_void)
>  {
> +	int gdbwait=0;
>  	int dtbsz = max_fds + 1;
>  	int smask = sigblock(MASKED_SIGS);
>  
> @@ -250,6 +251,8 @@
>  		else
>  			dlog("Select waits for Godot");
>  #endif /* DEBUG */
> +
> +		while (gdbwait==0){}
>  
>  		nsel = do_select(smask, dtbsz, &readfds, &tvv);
>  
> 
> * now i may start the amd - it stops there and waits until i attach to
>   it with gdb - make a "set gdbwait=1" and can debug it (the pid for the
>   attach is the one from the "select interrupted" line in the log - here
>   253) 
> 
> * thus i found that the interruption of that system-call happens at
>   line 137 of nfs_start.c (in do_select - the line "(void)
>   sigsetmask(smask);")
> 
> * and now - can please someone better than me try to find out why the
>   interruption happens here - many, many, many thanks in advance - i'll
>   help you as much as i can
> 
> t 
> 
>  _______________________________________________________||_____________________
>                                                   __||
>  Perfection is reached, not when there is no  __||       thomas graichen
>  longer anything to add, but when there   __||      freie universitaet berlin
>  is no longer anything to take away   __||              fachbereich physik
>                                   __||
>  - Antoine de Saint-Exupery - __||
>  ___________________________||____email: graichen@omega.physik.fu-berlin.de____
> 


-- 
_______________________________________________________________________

 Boyd Faulkner - faulkner@isd.tandem.com - http://cactus.org/~faulkner
_______________________________________________________________________



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