All of lore.kernel.org
 help / color / mirror / Atom feed
From: "J.A. Magallon" <jamagallon@able.es>
To: Marcelo Tosatti <marcelo.tosatti@cyclades.com>
Cc: linux-kernel@vger.kernel.org
Subject: [Linux 2.4.23-rc4] NFS mounts on top of initrd
Date: Mon, 24 Nov 2003 23:21:29 +0100	[thread overview]
Message-ID: <20031124222129.GC1823@werewolf.able.es> (raw)
In-Reply-To: <Pine.LNX.4.44.0311241656430.8709-100000@logos.cnet> (from marcelo.tosatti@cyclades.com on Mon, Nov 24, 2003 at 19:58:06 +0100)


On 11.24, Marcelo Tosatti wrote:
> 
> Hi, 
> 
> Here goes -rc4, fixing modular IDE breakage present in 2.4.23 kernels.
> 
> Hopefully this will become final.
> 

Hi. 

This is tested with rc3, but as nothing has changed wrt NFS ;)
Client and server are _plain_ rc3, no strange patches applied (no -jam, no
bproc...)

Plz tell me what am I doing wrong, or if it is a bug. I boot with an initrd that
mounts /lib via NFS.
Then just try this:

        fd = open("/lib/libnss_files-2.3.2.so", O_RDONLY);
        res = read(fd,buf,512);

It fails. strace is like this:

execve("./tst", ["./tst"], [/* 10 vars */]) = 0
uname({sys="Linux", node="node00.net0.cluster", ...}) = 0
brk(0)                                  = 0x8049658
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40014000
open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = -1 ENOENT (No such file or directory)
open("/lib/i686/sse/mmx/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/i686/sse/mmx", 0xbffff580) = -1 ENOENT (No such file or directory)
open("/lib/i686/sse/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/i686/sse", 0xbffff580)     = -1 ENOENT (No such file or directory)
open("/lib/i686/mmx/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/i686/mmx", 0xbffff580)     = -1 ENOENT (No such file or directory)
open("/lib/i686/libc.so.6", O_RDONLY)   = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20]\1\000"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1237568, ...}) = 0
old_mmap(NULL, 1242756, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40015000
old_mmap(0x4013f000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x12a000) = 0x4013f000
old_mmap(0x40142000, 9860, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40142000
close(3)                                = 0
open("/lib/libnss_files-2.3.2.so", O_RDONLY) = -1 ESTALE (Stale NFS file handle)
read(-1, 0xbffffc40, 512)               = -1 EBADF (Bad file descriptor)

No program can read that. So anything that tries to mmap it breaks, like
anything that tries to get protocol info:
      proto = getprotobyname("tcp");

open("/etc/nsswitch.conf", O_RDONLY)    = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=1744, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40145000
read(3, "#\n# /etc/nsswitch.conf\n#\n# An ex"..., 4096) = 1744
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0x40145000, 4096)                = 0
open("/lib/i686/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/sse/mmx/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/sse/mmx", 0xbffff4e0)      = -1 ENOENT (No such file or directory)
open("/lib/sse/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/sse", 0xbffff4e0)          = -1 ENOENT (No such file or directory)
open("/lib/mmx/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/mmx", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/lib/libnss_files.so.2", O_RDONLY) = -1 ESTALE (Stale NFS file handle)

I can guess where the problem comes from (something that was suggested in
previous answers). I use an initrd built copying anything
I need before the NFS mounts, like ifup and so on. I have not messed with
syslinux or dietlibc, so some of the utils need libnss_files, and it is present
in the initrd. So I think the problem comes when I try to use a NFS file that
was also in the initrd, and is probably already mapped, because I used programs
that used it before the NFS mounts.

Should all this work ? Is my fault ? Is a bug ?

TIA

-- 
J.A. Magallon <jamagallon()able!es>     \                 Software is like sex:
werewolf!able!es                         \           It's better when it's free
Mandrake Linux release 10.0 (Cooker) for i586
Linux 2.4.23-rc3-jam1 (gcc 3.3.1 (Mandrake Linux 9.2 3.3.1-4mdk))

  parent reply	other threads:[~2003-11-24 22:21 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-11-24 18:58 Linux 2.4.23-rc4 Marcelo Tosatti
2003-11-24 19:39 ` Chuck Harding
2003-11-24 19:59   ` Marcelo Tosatti
     [not found] ` <Pine.LNX.4.44.0311241656430.8709-100000-IP5UegVbiV6sTnJN9+BGXg@public.gmane.org>
2003-11-24 22:01   ` J.A. Magallon
2003-11-24 22:01 ` J.A. Magallon
2003-11-24 22:21 ` J.A. Magallon [this message]
2003-11-26  0:25   ` [Linux 2.4.23-rc4] NFS mounts on top of initrd Trond Myklebust

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20031124222129.GC1823@werewolf.able.es \
    --to=jamagallon@able.es \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marcelo.tosatti@cyclades.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.