Bug 243551 - Cannot "svn checkout" in automounted $HOME
Summary: Cannot "svn checkout" in automounted $HOME
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 12.1-RELEASE
Hardware: Any Any
: --- Affects Only Me
Assignee: freebsd-bugs mailing list
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-01-23 20:47 UTC by Joerg Wunsch
Modified: 2020-01-23 21:59 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Joerg Wunsch freebsd_committer 2020-01-23 20:47:38 UTC
On a server where user's $HOME is automounted through the following maps:

/etc/auto_master:

/home           auto_home

/etc/auto_home:

*       -nfsv4  server:/home/&

trying to "svn checkout" a new working copy from any SVN server yields:

joerg@daemon ~/tmp% svn co https://svn.freebsd.org/base
svn: E000005: Can't check path '/home/.svn/wc.db': Input/output error

The respective ktrace output is:

  8779 svn      NAMI  "/home/joerg/.svn"
  8779 svn      RET   fstatat -1 errno 2 No such file or directory
  8779 svn      CALL  fstatat(AT_FDCWD,0x801abc0d0,0x7fffffffdfa0,0x200<AT_SYMLINK_NOFOLLOW>)
  8779 svn      NAMI  "/home/.svn"
  8779 svn      STRU  struct stat {dev=18446744072887533315, ino=4, mode=040755, nlink=3, uid=0, gid=0, rdev=0, atime=1579769649.589640074, mtime=1579769649.589640074, ctime=1579769649.589640074, birthtime=1579769649.589640074, size=512, blksize=4096, blocks=1, flags=0x0 }
  8779 svn      RET   fstatat 0
  8779 svn      CALL  fstatat(AT_FDCWD,0x8013e6d80,0x7fffffffdf30,0x200<AT_SYMLINK_NOFOLLOW>)
  8779 svn      NAMI  "/home/.svn/wc.db"
  8779 svn      RET   fstatat -1 errno 5 Input/output error
  8779 svn      CALL  write(0x2,0x80137e1e0,0x46)
  8779 svn      GIO   fd 2 wrote 70 bytes
       "svn: E000005: Can't check path '/home/.svn/wc.db': Input/output error
       "

So SVN traverses directories upwards for .svn/wc.db entries. Surprisingly enough, stat(2) on /home/.svn does not yield the expected ENOENT but a valid result. (NB: /home/.svn does *not* exist on the NFS server.) However, trying to access wc.db under that ficticous directory then yields EIO.

The automountd debug log looks like that:

Jan 23 21:34:44 daemon automountd[8692]: map "auto_home" maps to "/etc/auto_home"
Jan 23 21:34:44 daemon automountd[8692]: done parsing map "auto_home"
Jan 23 21:34:44 daemon automountd[8692]: map may contain wildcard entries
Jan 23 21:34:44 daemon automountd[8692]: found node defined at auto_home:1; it is a mountpoint
Jan 23 21:34:44 daemon automountd[8692]: fstype not specified in options; defaulting to "nfs"
Jan 23 21:34:44 daemon automountd[8692]: retrycnt not specified in options; defaulting to 1
Jan 23 21:34:44 daemon automountd[8692]: executing "mount -t nfs -o nfsv4,automounted,retrycnt=1 alfred.sax.de:/home/joerg /home/joerg/" as pid 8693
Jan 23 21:34:44 daemon automountd[8692]: "mount -t nfs -o nfsv4,automounted,retrycnt=1 alfred.sax.de:/home/joerg /home/joerg/", pid 8693, terminated gracefully
Jan 23 21:34:44 daemon automountd[8692]: mount done; exiting
Jan 23 21:34:44 daemon automountd[8692]: completing request 100 with error 0
Jan 23 21:34:44 daemon automountd[8675]: child process 8692 terminated gracefully
Jan 23 21:34:44 daemon automountd[8675]: waiting for request from the kernel
Jan 23 21:35:26 daemon automountd[8675]: got request; forking child process #0
Jan 23 21:35:26 daemon automountd[8675]: waiting for request from the kernel
Jan 23 21:35:26 daemon automountd[8705]: got request 101: from map auto_home, path /home/.svn/, prefix "/home", key ".svn", options ""
Jan 23 21:35:26 daemon automountd[8705]: parsing map "auto_home"
Jan 23 21:35:26 daemon automountd[8705]: map "auto_home" maps to "/etc/auto_home"
Jan 23 21:35:26 daemon automountd[8705]: done parsing map "auto_home"
Jan 23 21:35:26 daemon automountd[8705]: map may contain wildcard entries
Jan 23 21:35:26 daemon automountd[8705]: found node defined at auto_home:1; it is a mountpoint
Jan 23 21:35:26 daemon automountd[8705]: fstype not specified in options; defaulting to "nfs"
Jan 23 21:35:26 daemon automountd[8705]: retrycnt not specified in options; defaulting to 1
Jan 23 21:35:26 daemon automountd[8705]: executing "mount -t nfs -o nfsv4,automounted,retrycnt=1 alfred.sax.de:/home/.svn /home/.svn/" as pid 8706
Jan 23 21:35:26 daemon automountd[8705]: completing request 101 with error 5
Jan 23 21:35:26 daemon automountd[8675]: child process 8705 terminated with exit status 1
Jan 23 21:35:26 daemon automountd[8675]: waiting for request from the kernel
Jan 23 21:35:27 daemon automountd[8675]: got request; forking child process #0
Jan 23 21:35:27 daemon automountd[8675]: waiting for request from the kernel
Jan 23 21:35:27 daemon automountd[8708]: got request 102: from map auto_home, path /home/.svn/, prefix "/home", key ".svn", options ""
Jan 23 21:35:27 daemon automountd[8708]: parsing map "auto_home"
Jan 23 21:35:27 daemon automountd[8708]: map "auto_home" maps to "/etc/auto_home"
Jan 23 21:35:27 daemon automountd[8708]: done parsing map "auto_home"
Jan 23 21:35:27 daemon automountd[8708]: map may contain wildcard entries
Jan 23 21:35:27 daemon automountd[8708]: found node defined at auto_home:1; it is a mountpoint
Jan 23 21:35:27 daemon automountd[8708]: fstype not specified in options; defaulting to "nfs"
Jan 23 21:35:27 daemon automountd[8708]: retrycnt not specified in options; defaulting to 1
Jan 23 21:35:27 daemon automountd[8708]: executing "mount -t nfs -o nfsv4,automounted,retrycnt=1 alfred.sax.de:/home/.svn /home/.svn/" as pid 8709
Jan 23 21:35:27 daemon automountd[8708]: completing request 102 with error 5
Jan 23 21:35:27 daemon automountd[8675]: child process 8708 terminated with exit status 1
Jan 23 21:35:27 daemon automountd[8675]: waiting for request from the kernel
Jan 23 21:35:28 daemon automountd[8675]: got request; forking child process #0
Jan 23 21:35:28 daemon automountd[8675]: waiting for request from the kernel
Jan 23 21:35:28 daemon automountd[8711]: got request 103: from map auto_home, path /home/.svn/, prefix "/home", key ".svn", options ""
Jan 23 21:35:28 daemon automountd[8711]: parsing map "auto_home"
Jan 23 21:35:28 daemon automountd[8711]: map "auto_home" maps to "/etc/auto_home"
Jan 23 21:35:28 daemon automountd[8711]: done parsing map "auto_home"
Jan 23 21:35:28 daemon automountd[8711]: map may contain wildcard entries
Jan 23 21:35:28 daemon automountd[8711]: found node defined at auto_home:1; it is a mountpoint
Jan 23 21:35:28 daemon automountd[8711]: fstype not specified in options; defaulting to "nfs"
Jan 23 21:35:28 daemon automountd[8711]: retrycnt not specified in options; defaulting to 1
Jan 23 21:35:28 daemon automountd[8711]: executing "mount -t nfs -o nfsv4,automounted,retrycnt=1 alfred.sax.de:/home/.svn /home/.svn/" as pid 8712
Jan 23 21:35:28 daemon automountd[8711]: completing request 103 with error 5
Jan 23 21:35:28 daemon automountd[8675]: child process 8711 terminated with exit status 1
Jan 23 21:35:28 daemon automountd[8675]: waiting for request from the kernel

Me thinks stat()ing /home/.svn ought to immediately return ENOENT rather than pretending that directory might exist.