Bug 852449

Summary: NFS idmap issue prevents pulseaudio from launching
Product: [Fedora] Fedora Reporter: Roland Roberts <roland>
Component: nfs-utilsAssignee: Steve Dickson <steved>
Status: CLOSED DUPLICATE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 17CC: bfields, csimpson, jlayton, steved
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-10-14 12:59:02 EDT Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:

Description Roland Roberts 2012-08-28 10:14:35 EDT
Description of problem:

programs which attempt to chown files on NFS mount fail with EREMOTEIO. Most notably affected is pulseaudio will not launch.
 
Version-Release number of selected component (if applicable):

257 roland> rpm -q nfs-utils
nfs-utils-1.2.6-3.fc17.x86_64

How reproducible:



Steps to Reproduce:
1. Home directories mounted via NFS, server is Fedora 14, client is Fedora 17
2. Attempt to launch pulseaudio
3.
  
Actual results:

258 roland> pulseaudio -vvv
I: [pulseaudio] main.c: setrlimit(RLIMIT_NICE, (31, 31)) failed: Operation not permitted
I: [pulseaudio] main.c: setrlimit(RLIMIT_RTPRIO, (9, 9)) failed: Operation not permitted
D: [pulseaudio] core-rtclock.c: Timer slack is set to 50 us.
D: [pulseaudio] core-util.c: RealtimeKit worked.
I: [pulseaudio] core-util.c: Successfully gained nice level -11.
I: [pulseaudio] main.c: This is PulseAudio 1.1
D: [pulseaudio] main.c: Compilation host: x86_64-redhat-linux-gnu
D: [pulseaudio] main.c: Compilation CFLAGS: -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4  -m64 -mtune=generic -W -Wextra -Wno-long-long -Wvla -Wno-overlength-strings -Wunsafe-loop-optimizations -Wundef -Wformat=2 -Wlogical-op -Wsign-compare -Wformat-security -Wmissing-include-dirs -Wformat-nonliteral -Wpointer-arith -Winit-self -Wdeclaration-after-statement -Wfloat-equal -Wmissing-prototypes -Wredundant-decls -Wmissing-declarations -Wmissing-noreturn -Wshadow -Wendif-labels -Wcast-align -Wstrict-aliasing -Wwrite-strings -Wno-unused-parameter -ffast-math -fno-common -fdiagnostics-show-option
D: [pulseaudio] main.c: Running on host: Linux x86_64 3.5.2-3.fc17.x86_64 #1 SMP Tue Aug 21 19:06:52 UTC 2012
D: [pulseaudio] main.c: Found 8 CPUs.
I: [pulseaudio] main.c: Page size is 4096 bytes
D: [pulseaudio] main.c: Compiled with Valgrind support: no
D: [pulseaudio] main.c: Running in valgrind mode: no
D: [pulseaudio] main.c: Running in VM: no
D: [pulseaudio] main.c: Optimized build: yes
D: [pulseaudio] main.c: All asserts enabled.
I: [pulseaudio] main.c: Machine ID is 900e0303994c4cd9e050faf500000009.
E: [pulseaudio] core-util.c: Failed to create secure directory: Remote I/O error


261 roland> strace pulseaudio 
execve("/usr/bin/pulseaudio", ["pulseaudio"], [/* 70 vars */]) = 0
brk(0)                                  = 0x1f1c000
...
stat("/home/roland", {st_mode=S_IFDIR|0700, st_size=20480, ...}) = 0
getuid()                                = 502
umask(077)                              = 022
mkdir("/home/roland/.pulse", 0700)      = 0
umask(022)                              = 077
open("/home/roland/.pulse", O_RDONLY|O_NOCTTY|O_NOFOLLOW|O_CLOEXEC) = 4
fstat(4, {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
getuid()                                = 502
getgid()                                = 502
fchown(4, 502, 502)                     = -1 EREMOTEIO (Remote I/O error)
rmdir("/home/roland/.pulse")            = 0
prctl(PR_GET_NAME, 0x2583050, 0x2583050, 0x41, 0) = 0
ioctl(2, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
write(2, "E: [pulseaudio] core-util.c: \33[1"..., 92E: [pulseaudio] core-util.c: Failed to create secure directory: Remote I/O error
) = 92
close(3)                                = 0
exit_group(1)                           = ?
+++ exited with 1 +++


Expected results:

pulseaudio should successfully launch. 

Additional info:

With Fedora 16, I was being hit by bug #838730, but NFS permissions worked normally. The symptoms for me were the traceback with rpc.idmap implicated, but sometimes the system would crash and power off instantly with no change to see the screen or dump/traceback. WIth Fedora 17, I *may* still be having the problem with #838730 (I have had one system shutdown/poweroff while not present, I came back to the room and the system was off). I never have such a shutdown when the system is up by no NFS users logged in.

However, the no_squash_root option of the nfs server is being suppressed. Instead, in /etc/mtab I see the sec=sys line that has been mentioned in other bug reports:

archos.rlent.pnet:/data/home/roland /home/roland nfs4 rw,context=system_u:object_r:user_home_t:s0,relatime,vers=4.0,rsize=32768,wsize=32768,namlen=255,hard,posix,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.3.37,local_lock=none,addr=192.168.3.3 0 0

I have also looked at bug #837998, and the suggestion there to add this to /etc/request-key.conf had not effect:

create  id_resolver  *          *               /usr/sbin/nfsidmap -v -v -t 600 %k %d

On the nfs server, I am seeing syslog entries like:

Aug 28 08:22:53 archos rpc.idmapd[1829]: nss_getpwnam: name '502' does not map into domain 'rlent.pnet'

Also note, that on the client, because I have IDs in the 500-range, I have modified login.defs to set UID_MIN=500 and SYS_UID_MAX=499 and run autoconfig --updateall in the process of eliminating the possibility that this was due to bug #815413 from the Common F17 bugs list.
Comment 1 Colin Simpson 2012-10-07 15:08:35 EDT
I'm also unable to launch pulseaudio as I have an NFS mounted homedir.

I resorted to creating /usr/local/pulse copying my ~/.pulse to here and creating an empty runtime directory, writable by me.

Then I added to my .bash_profile:

export PULSE_CONFIG_PATH=/usr/local/pulse/.pulse
export PULSE_STATE_PATH=/usr/local/pulse/.pulse
export PULSE_RUNTIME_PATH=/usr/local/pulse/runtime


But it would be better if this just worked out of the box.
Comment 2 Steve Dickson 2012-10-14 12:59:02 EDT
This is probably related to bz 829362

*** This bug has been marked as a duplicate of bug 829362 ***