Репозиторий SVN, экспортированный в NFS, поврежден - PullRequest
0 голосов
/ 12 апреля 2019

В FreeBSD 12.0-STABLE r345345, когда я экспортирую репозиторий SVN через NFS, у меня появляется тот же симптом, что и этот вопрос :

svn: E155016: The working copy database at '/usr/src' is corrupt.

Репозиторий SVN выглядит нормально:

$ svnlite info /usr/src-12.0
Path: /usr/src-12.0
Working Copy Root Path: /usr/src-12.0
URL: svn://svn.example.com/base/stable/12
Relative URL: ^/stable/12
Repository Root: svn://svn.example.com/base
Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Revision: 341836
Node Kind: directory
Schedule: normal
Last Changed Author: zeising
Last Changed Rev: 341831
Last Changed Date: 2018-12-11 13:01:38 -0800 (Tue, 11 Dec 2018)

И я экспортирую это довольно типично, но поправьте меня, если я ошибаюсь:

$ cat /etc/exports
/usr/src-12.0 -ro -maproot=root -network 127.0.0.0/8
/usr/obj-12.0 -ro -maproot=root -network 127.0.0.0/8
$ showmount -e
Exports list on localhost:
/usr/src-12.0                      127.0.0.0
/usr/obj-12.0                      127.0.0.0

Первоначально я обнаружил эту проблему между двумя разными хостами, но обнаружил, что экспорта и монтирования локального хоста было достаточно, чтобы воспроизвести проблему.

Если я смонтирую этот общий ресурс NFS и осмотрю копию хранилища, смонтированную в NFS, svnlite сообщает, что она повреждена:

# mount localhost:/usr/src-12.0 /mnt
# svnlite info /mnt
svn: E155016: The working copy database at '/mnt' is corrupt.

Копирование репо с помощью rsync или nullfs, монтирование репо на клиенте работает нормально.

Я проверил все файлы и каталоги в дереве, выполнив проверку sha256 с помощью mtree(8):

# mtree -K sha256 -cp /usr/src-12.0 > mtree.out
# mount localhost:/usr/src-12.0 /mnt
# mtree -p /mnt < mtree.out
.:      flags ("uarch" is not "none")
# echo $?
2

Единственное отличие, которое обнаруживает mtree, заключается в том, что в каталоге / mnt не установлен флаг uarch:

# ls -lod /mnt /usr/src-12.0
drwxr-xr-x  25 root  wheel  -     40 Apr 12 14:53 /mnt/
drwxr-xr-x  25 root  wheel  uarch 40 Apr 12 14:53 /usr/src-12.0/

Похоже, что сам экспорт NFS создает какую-то поломку с SVN. Как я могу найти и исправить проблему?

Редактировать: После добавления:

rpc_lockd_enable="YES"
rpc_statd_enable="YES"

на сервер /etc/rc.conf и перезагрузка сервера, sockstat показывает:

# sockstat | grep rpc
root     rpc.lockd  1051  3  dgram  -> /var/run/logpriv
root     rpc.statd  1043  4  udp6   *:611                 *:*
root     rpc.statd  1043  5  tcp6   *:611                 *:*
root     rpc.statd  1043  6  udp4   *:611                 *:*
root     rpc.statd  1043  7  tcp4   *:611                 *:*
root     rpc.statd  1043  9  dgram  -> /var/run/logpriv
root     rpcbind    1019  5  stream /var/run/rpcbind.sock
root     rpcbind    1019  6  udp6   *:111                 *:*
root     rpcbind    1019  7  udp6   *:901                 *:*
root     rpcbind    1019  8  tcp6   *:111                 *:*
root     rpcbind    1019  9  udp4   *:111                 *:*
root     rpcbind    1019  10 udp4   *:681                 *:*
root     rpcbind    1019  11 tcp4   *:111                 *:*
root     rpcbind    1019  13 udp6   *:*                   *:*

И все же клиент все еще жалуется:

# umount /mnt
# mount localhost:/usr/src-12.0 /mnt
# svnlite info /mnt
svn: E155016: The working copy database at '/mnt' is corrupt.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...