# nfs half dead after system update (solved)

## danomac

I've just upgraded my server (including removing an old raid card and adding a new proper raid card.)

A new kernel was built with all the modules needed for the tuner card and raid device. This server had been locked to an old kernel because of my old rocketraid card which didn't work on newer kernels. After the new kernel, I did an update world. Numerous packages were built, as the last time this machine was last updated was likely in 2010. ("If it ain't broke, don't fix it?") This install is from 2008 which has only been updated a few times.

However, my nfs4 server is having issues. There are no changes to the clients.

The clients are able to mount the nfs4 share. You can go to a terminal and use ls & cd to navigate files.

BUT, as soon as you try to access a file, the client hangs and requires a kill command on the affected process (konsole, mplayer2, etc...) The server is set async and the clients are not using hard links. The other oddball thing is that there's no messages in logs on either server or client, unless logging got disabled somehow.

Booting to the previous kernel doesn't help, I tried that already, same issue.

The odd thing is other services like http and mythtv are fine. It still records shows and I can still get at recordings through the myth protocol.

Has something major changed (lol) in the last year or so for nfs that requires workarounds? I went from 2.6.32 - 3.2.1 but have tried a couple kernels in between with no luck.Last edited by danomac on Sat Mar 10, 2012 7:58 pm; edited 1 time in total

----------

## Hu

If you dropped back to the old kernel and that did not avoid the problem, that suggests that the problem lies in some package which was updated.  What version of net-fs/nfs-utils did you have before and after the change?  What is the current output of emerge --info?  Are there any more updates that you have not yet installed?

----------

## danomac

Weirdly enough, it had nfs-utils-1.2.3 before and after the update. As it didn't work, I tried nfs-utils-1.2.4 with no luck.

I must have updated something to do with nfs in the middle of 2011, as that's when 1.2.3 was installed. However, it had been working with no problems until doing a system update.

```

# equery list nfs-utils

 * Searching for nfs-utils ...

[IP-] [  ] net-fs/nfs-utils-1.2.3-r1:0

```

I still haven't figured out why it stopped working. This is also an x86 server, but I don't think that matters. I wonder why I didn't use amd64... oh well.

I'm going to mess around with it in the evenings this week, and if I can't figure it out I'll just wipe it and start over. I didn't even have unstable packages installed on the server, so who knows why it's behaving all weird. I also updated all config files in /etc, still no joy. Gah! Nothing like having the media server down.  :Sad: 

----------

## danomac

I also ran memtest on it for 14 hours, no errors, so that's not it.

I had a problem on another computer with a really old install that had problems similar (though not nfs specifically) to this one. I eventually gave up on it and started fresh.

I'll try an strace using mplayer2 and see what happens. Might have to recompile my kernel though...

----------

## danomac

So I ran an strace, and it hangs while trying to open a file. So I ctrl+c out and the konsole hung and I had to kill it.  :Sad: 

There's something weird going on.

Edit: And then it can't umount the nfs share...

```

$ sudo umount /mnt/coretwoduo

umount.nfs4: /mnt/coretwoduo: device is busy

umount.nfs4: /mnt/coretwoduo: device is busy

```

Edit2:

I ran strace and tried to touch a file on the nfs mount:

```

execve("/usr/bin/touch", ["touch", "foo"], [/* 36 vars */]) = 0

brk(0)                                  = 0x1ebf000

mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe72ce71000

access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)

open("/etc/ld.so.cache", O_RDONLY)      = 3

fstat(3, {st_mode=S_IFREG|0644, st_size=215425, ...}) = 0

mmap(NULL, 215425, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fe72ce3c000

close(3)                                = 0

open("/lib64/librt.so.1", O_RDONLY)     = 3

read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 (\0\0\0\0\0\0"..., 832) = 832                                                                                                                                                                                          

fstat(3, {st_mode=S_IFREG|0755, st_size=35656, ...}) = 0                                                                                                                                                                                                                       

mmap(NULL, 2132976, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe72ca4b000                                                                                                                                                                                     

mprotect(0x7fe72ca53000, 2093056, PROT_NONE) = 0                                                                                                                                                                                                                               

mmap(0x7fe72cc52000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7fe72cc52000                                                                                                                                                              

close(3)                                = 0                                                                                                                                                                                                                                    

open("/lib64/libc.so.6", O_RDONLY)      = 3                                                                                                                                                                                                                                    

read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\"\2\0\0\0\0\0"..., 832) = 832                                                                                                                                                                                        

fstat(3, {st_mode=S_IFREG|0755, st_size=1584336, ...}) = 0                                                                                                                                                                                                                     

mmap(NULL, 3692712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe72c6c5000                                                                                                                                                                                     

mprotect(0x7fe72c842000, 2093056, PROT_NONE) = 0                                                                                                                                                                                                                               

mmap(0x7fe72ca41000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17c000) = 0x7fe72ca41000                                                                                                                                                           

mmap(0x7fe72ca46000, 18600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe72ca46000                                                                                                                                                                 

close(3)                                = 0                                                                                                                                                                                                                                    

open("/lib64/libpthread.so.0", O_RDONLY) = 3                                                                                                                                                                                                                                   

read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320k\0\0\0\0\0\0"..., 832) = 832                                                                                                                                                                                       

fstat(3, {st_mode=S_IFREG|0755, st_size=135459, ...}) = 0                                                                                                                                                                                                                      

mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe72ce3b000                                                                                                                                                                                      

mmap(NULL, 2212768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe72c4a8000                                                                                                                                                                                     

mprotect(0x7fe72c4bf000, 2097152, PROT_NONE) = 0                                                                                                                                                                                                                               

mmap(0x7fe72c6bf000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7fe72c6bf000                                                                                                                                                             

mmap(0x7fe72c6c1000, 13216, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe72c6c1000                                                                                                                                                                 

close(3)                                = 0                                                                                                                                                                                                                                    

mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe72ce3a000                                                                                                                                                                                      

mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe72ce39000                                                                                                                                                                                      

mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe72ce38000                                                                                                                                                                                      

arch_prctl(ARCH_SET_FS, 0x7fe72ce39700) = 0                                                                                                                                                                                                                                    

mprotect(0x7fe72c6bf000, 4096, PROT_READ) = 0                                                                                                                                                                                                                                  

mprotect(0x7fe72ca41000, 16384, PROT_READ) = 0                                                                                                                                                                                                                                 

mprotect(0x7fe72cc52000, 4096, PROT_READ) = 0                                                                                                                                                                                                                                  

mprotect(0x60c000, 4096, PROT_READ)     = 0                                                                                                                                                                                                                                    

mprotect(0x7fe72ce72000, 4096, PROT_READ) = 0                                                                                                                                                                                                                                  

munmap(0x7fe72ce3c000, 215425)          = 0                                                                                                                                                                                                                                    

set_tid_address(0x7fe72ce399d0)         = 18986                                                                                                                                                                                                                                

set_robust_list(0x7fe72ce399e0, 0x18)   = 0                                                                                                                                                                                                                                    

futex(0x7fff4406e86c, FUTEX_WAKE_PRIVATE, 1) = 0                                                                                                                                                                                                                               

futex(0x7fff4406e86c, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, 7fe72ce39700) = -1 EAGAIN (Resource temporarily unavailable)                                                                                                                                    

rt_sigaction(SIGRTMIN, {0x7fe72c4aea50, [], SA_RESTORER|SA_SIGINFO, 0x7fe72c4b8340}, NULL, 8) = 0                                                                                                                                                                              

rt_sigaction(SIGRT_1, {0x7fe72c4aeae0, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fe72c4b8340}, NULL, 8) = 0

rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0

getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0

brk(0)                                  = 0x1ebf000

brk(0x1ee0000)                          = 0x1ee0000

open("foo", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666

```

It's getting stuck on basically any file operation, but I can use a terminal to browse around. It's very strange.

----------

## danomac

I've noticed other things that are not working, like mythtv's thumbnailing.

Yay for updating a 4-year-old install. Next weekend will be reformat time...

----------

## danomac

So I decided to reformat and it still had the same issue.

I had been originally mounting the nfs root on my machines and accessing other shares using the subdiretories under thr root share. Something changed causing the clients (or server?) to not like that setup. I've discovered that I have to mount each share under the root nfs share separately and it works properly.

Doh!

----------

## Hu

It sounds like the NFS server was exporting with nohide enabled on /.  See man exports for a description and why the explicit sub-mounting is a better approach in general.

----------

