Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 03 Mar 2017 13:30:30 +0000
From:      bugzilla-noreply@freebsd.org
To:        pkg@FreeBSD.org
Subject:   [Bug 213611] ports-mgmt/pkg: 1.9.1 pkgdb locking doesn't work on NFS
Message-ID:  <bug-213611-32340-avCVasodvV@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-213611-32340@https.bugs.freebsd.org/bugzilla/>
References:  <bug-213611-32340@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D213611

iz-rpi03@hs-karlsruhe.de changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |iz-rpi03@hs-karlsruhe.de

--- Comment #6 from iz-rpi03@hs-karlsruhe.de ---
I am investigating the same problem.
NFS lockd and statd are up an running.

As far as I can tell sqlite uses the directory local.sqlite.lock in /var/db=
/pkg
for dotlocking /var/db/pkg/local.sqlite. But it never deletes it _there_.

Doing "pkg-static info" on an unlocked database shows the expected output
but leaves local.sqlite.lock in /var/db/pkg.

Next time you call pkg or pkg-static you will get the "database is locked"
error unless you are fast enough to remove /var/db/pkg/local.sqlite while
pkg is running.

The following part of ktrace/kdump shows the locking is done with a relative
path. So it happens in /var/db/pkg.
But the unlocking is done with a absolute path. An this path does not match
the relative one used for locking.

 95575 pkg-static CALL  stat(0xbfbfe150,0xbfbfe0f0)
 95575 pkg-static NAMI  "/var/db/pkg"
 95575 pkg-static STRU  struct stat {dev=3D973143811, ino=3D913835, mode=3D=
040755,
nlink=3D2, uid=3D0, gid=3D0, rdev=3D0, atime=3D1488515387.614408874,
mtime=3D1488543581.397913666, ctime=3D1488543581.397913666, birthtime=3D-1,
size=3D4096, blksize=3D4096, blocks=3D8, flags=3D0x0 }
 95575 pkg-static RET   stat 0
 95575 pkg-static CALL  eaccess(0xbfbfe150,0x4<R_OK>)
 95575 pkg-static NAMI  "/var/db/pkg"
 95575 pkg-static RET   eaccess 0
 95575 pkg-static CALL  stat(0xbfbfe150,0xbfbfe0f0)
 95575 pkg-static NAMI  "/var/db/pkg/local.sqlite"
 95575 pkg-static STRU  struct stat {dev=3D973143811, ino=3D913839, mode=3D=
0100644,
nlink=3D1, uid=3D0, gid=3D0, rdev=3D0, atime=3D1488508880.607008273,
mtime=3D1488508814.956928131, ctime=3D1488508814.956928131, birthtime=3D-1,
size=3D64334848, blksize=3D4096, blocks=3D125672, flags=3D0x0 }
 95575 pkg-static RET   stat 0
 95575 pkg-static CALL  eaccess(0xbfbfe150,0x4<R_OK>)
 95575 pkg-static NAMI  "/var/db/pkg/local.sqlite"
 95575 pkg-static RET   eaccess 0
 95575 pkg-static CALL=20
openat(AT_FDCWD,0x2880f0e0,0x120000<O_RDONLY|O_DIRECTORY|O_CLOEXEC>)
 95575 pkg-static NAMI  "/var/db/pkg"
 95575 pkg-static RET   openat 4
 95575 pkg-static CALL  faccessat(0x4,0x83ecfb0,0x4<R_OK>,0x100)
 95575 pkg-static NAMI  "local.sqlite"
 95575 pkg-static RET   faccessat 0
 95575 pkg-static CALL  statfs(0x2880f0e0,0xbfbfe358)
 95575 pkg-static NAMI  "/var/db/pkg"
 95575 pkg-static RET   statfs 0
 95575 pkg-static CALL  lstat(0x2881f728,0xbfbfe390)
 95575 pkg-static NAMI  "local.sqlite"
 95575 pkg-static RET   lstat -1 errno 2 No such file or directory
 95575 pkg-static CALL  __getcwd(0x28848008,0x1ff)
 95575 pkg-static NAMI  "/root"
 95575 pkg-static RET   __getcwd 0
 95575 pkg-static CALL  getpid
 95575 pkg-static RET   getpid 95575/0x17557
 95575 pkg-static CALL  getpid
 95575 pkg-static RET   getpid 95575/0x17557
 95575 pkg-static CALL  fstatat(0x4,0x2884d206,0xbfbfdfe0,0)
 95575 pkg-static NAMI  "local.sqlite"
 95575 pkg-static STRU  struct stat {dev=3D973143811, ino=3D913839, mode=3D=
0100644,
nlink=3D1, uid=3D0, gid=3D0, rdev=3D0, atime=3D1488508880.607008273,
mtime=3D1488508814.956928131, ctime=3D1488508814.956928131, birthtime=3D-1,
size=3D64334848, blksize=3D4096, blocks=3D125672, flags=3D0x0 }
 95575 pkg-static RET   fstatat 0
 95575 pkg-static CALL=20
openat(0x4,0x2884d206,0x100202<O_RDWR|O_CREAT|O_CLOEXEC>,0644<S_IRUSR|S_IWU=
SR|S_IRGRP|S_IROTH>)
 95575 pkg-static NAMI  "local.sqlite"
 95575 pkg-static RET   openat 5
 95575 pkg-static CALL  fstat(0x5,0xbfbfde88)
 95575 pkg-static STRU  struct stat {dev=3D973143811, ino=3D913839, mode=3D=
0100644,
nlink=3D1, uid=3D0, gid=3D0, rdev=3D0, atime=3D1488508880.607008273,
mtime=3D1488508814.956928131, ctime=3D1488508814.956928131, birthtime=3D-1,
size=3D64334848, blksize=3D4096, blocks=3D125672, flags=3D0x0 }
 95575 pkg-static RET   fstat 0
 95575 pkg-static CALL  pread(0x5,0xbfbfe460,0x64,0,0)
 95575 pkg-static GIO   fd 5 read 100 bytes
       0x0000 5351 4c69 7465 2066 6f72 6d61 7420 3300 0400 0101 0040 2020 0=
007
6598 0000 f56b 0000 766c 0000 1565 0000 1e32  |SQLite format 3......@=20
..e....k..vl...e...2|
[bytes are skipped]
 95575 pkg-static RET   pread 100/0x64
[lock the database]
 95575 pkg-static CALL=20
mkdirat(0x4,0x2881f76e,0777<S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IWGRP|S_IXGRP=
|S_IROTH|S_IWOTH|S_IXOTH>)
 95575 pkg-static NAMI  "local.sqlite.lock"
 95575 pkg-static RET   mkdirat 0
 95575 pkg-static CALL  fstatat(0x4,0x2884d21a,0xbfbfe058,0)
 95575 pkg-static NAMI  "local.sqlite-journal"
 95575 pkg-static RET   fstatat -1 errno 2 No such file or directory
 95575 pkg-static CALL  fstat(0x5,0xbfbfe058)
 95575 pkg-static STRU  struct stat {dev=3D973143811, ino=3D913839, mode=3D=
0100644,
nlink=3D1, uid=3D0, gid=3D0, rdev=3D0, atime=3D1488543655.118915624,
mtime=3D1488508814.956928131, ctime=3D1488508814.956928131, birthtime=3D-1,
size=3D64334848, blksize=3D4096, blocks=3D125672, flags=3D0x0 }
 95575 pkg-static RET   fstat 0
 95575 pkg-static CALL  fstatat(0x4,0x2884d235,0xbfbfe058,0)
 95575 pkg-static NAMI  "local.sqlite-wal"
 95575 pkg-static RET   fstatat -1 errno 2 No such file or directory
 95575 pkg-static CALL  fstat(0x5,0xbfbfe058)
 95575 pkg-static STRU  struct stat {dev=3D973143811, ino=3D913839, mode=3D=
0100644,
nlink=3D1, uid=3D0, gid=3D0, rdev=3D0, atime=3D1488543655.118915624,
mtime=3D1488508814.956928131, ctime=3D1488508814.956928131, birthtime=3D-1,
size=3D64334848, blksize=3D4096, blocks=3D125672, flags=3D0x0 }
 95575 pkg-static RET   fstat 0
 95575 pkg-static CALL  pread(0x5,0x2889ce28,0x400,0,0)
 95575 pkg-static GIO   fd 5 read 1024 bytes
       0x0000 5351 4c69 7465 2066 6f72 6d61 7420 3300 0400 0101 0040 2020 0=
007
6598 0000 f56b 0000 766c 0000 1565 0000 1e32  |SQLite format 3......@=20
..e....k..vl...e...2|
[bytes are skipped]
 95575 pkg-static RET   pread 1024/0x400
[unlock the database]
 95575 pkg-static CALL  rmdir(0x2881f768)
 95575 pkg-static NAMI  "/root/local.sqlite.lock"
 95575 pkg-static RET   rmdir -1 errno 2 No such file or directory
 95575 pkg-static CALL  utimes(0x2881f768,0)
 95575 pkg-static NAMI  "/root/local.sqlite.lock"
 95575 pkg-static RET   utimes -1 errno 2 No such file or directory
 95575 pkg-static CALL  fstatat(0x4,0x2884d21a,0xbfbfdf08,0)
 95575 pkg-static NAMI  "local.sqlite-journal"
 95575 pkg-static RET   fstatat -1 errno 2 No such file or directory
 95575 pkg-static CALL  fstat(0x5,0xbfbfdf08)


Ralf

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-213611-32340-avCVasodvV>