Subject: Re: diskless boot of 3/60 fails mounting root?
To: None <mouse@Collatz.McRCIM.McGill.EDU>
From: michael smith <miff@spam.frisbee.net.au>
List: port-sun3
Date: 12/14/1995 21:38:43
   > Ok; this is really verbose, so I'm a bit wary of sending it to the
   > list,

   Well, that's why I said get them to _me_.  No need to bother the list.

Sorry 8(  Wasn't thinking too clearly at that point in time.
I've re-cc'd the list in the hope that this might be more useful 8)

   _Full_ packet contents would have been nice; most of these seem to have
   had the Ethernet headers - and thus the Ethernet type field - stripped
   off.  I would simply take them as IP packets, except that there are a
   few whose type fields are wrong for that; the one-line descriptions of
   the packets identify them as ARP and RARP packets.

If you have any suggestions as to better ways of capturing packetsm short of
sitting down with libpcap and writing a packet sucker, I'm all ears.

   This seems to be the relevant thing; the NFS server (more precisely,
   the mount daemon on the NFS server) is refusing to give out a file
   handle for /local2/export/salty/swap and it's claiming ENOENT.

If I understand correctly, it's refusing to give out a handle because it's
a file, not a directory; viz the Guelph mountd code in FreeBSD :

('bad' is preset to ENOENT)

                /*
                 * Get the real pathname and make sure it is a directory
                 * that exists.
                 */
                if (realpath(rpcpath, dirpath) == 0 ||
                    stat(dirpath, &stb) < 0 ||
                    (stb.st_mode & S_IFMT) != S_IFDIR ||
                    statfs(dirpath, &fsb) < 0) {
                        chdir("/");     /* Just in case realpath doesn't */
                        if (debug)
                                fprintf(stderr, "stat failed on %s\n", dirpath);
                        if (!svc_sendreply(transp, xdr_long, (caddr_t)&bad))
                                syslog(LOG_ERR, "Can't send reply");
                        return;
                }

In contrast, the relevant version in NetBSD:

                if (realpath(rpcpath, dirpath) == 0 ||
                    stat(dirpath, &stb) < 0 ||
                    (!S_ISDIR(stb.st_mode) && !S_ISREG(stb.st_mode)) ||
                    statfs(dirpath, &fsb) < 0) {
 
Obviously, asking here "would it be bad to allow file mounts under FreeBSD"
is pretty silly, so I'll just ask "has anyone else done this?", and if I don't
hear anything more about it, I'll try it 8)

					   der Mouse

Mike