| From | Sent On | Attachments |
|---|---|---|
| Konstantin Belousov | Aug 18, 2006 4:48 pm | |
| Tor Egge | Aug 18, 2006 8:19 pm | |
| Peter Holm | Aug 20, 2006 5:28 pm | |
| Tor Egge | Aug 21, 2006 1:21 pm | |
| Eric Anderson | Aug 21, 2006 1:37 pm | |
| Kostik Belousov | Aug 21, 2006 1:38 pm | |
| Kostik Belousov | Aug 21, 2006 1:44 pm | |
| Tor Egge | Aug 21, 2006 2:09 pm | |
| Bruce Evans | Aug 22, 2006 9:15 am | |
| Kostik Belousov | Aug 22, 2006 1:07 pm | |
| Kostik Belousov | Aug 22, 2006 1:16 pm | |
| Tor Egge | Aug 22, 2006 9:46 pm | |
| Kostik Belousov | Aug 23, 2006 4:40 am | |
| Kostik Belousov | Aug 23, 2006 11:07 am | |
| Bruce Evans | Aug 23, 2006 2:04 pm | |
| Bruce Evans | Aug 23, 2006 3:39 pm | |
| Tor Egge | Aug 23, 2006 3:47 pm | |
| Tor Egge | Aug 23, 2006 4:31 pm | |
| Tor Egge | Aug 23, 2006 4:57 pm | |
| Bruce Evans | Aug 23, 2006 6:32 pm | |
| Bruce Evans | Aug 23, 2006 7:12 pm | |
| Tor Egge | Aug 23, 2006 8:06 pm |
| Subject: | Deadlock between nfsd and snapshots. | |
|---|---|---|
| From: | Kostik Belousov (kost...@gmail.com) | |
| Date: | Aug 21, 2006 1:44:30 pm | |
| List: | org.freebsd.freebsd-fs | |
On Mon, Aug 21, 2006 at 08:37:38AM -0500, Eric Anderson wrote:
On 08/21/06 08:21, Tor Egge wrote:
I wrote:
The deadlock indicates that one or more of IN_CHANGE, IN_MODIFIED or IN_UPDATE was set on the inode, indicating a write operation (e.g. VOP_WRITE(), VOP_RENAME(), VOP_CREATE(), VOP_REMOVE(), VOP_LINK(), VOP_SYMLINK(), VOP_SETATTR(), VOP_MKDIR(), VOP_RMDIR(), VOP_MKNOD()) that was not protected by vn_start_write() or vn_start_secondary_write().
The most common "write" operation was probably VOP_GETATTR().
ufs_itimes(), called from ufs_getattr(), might set the IN_MODIFIED inode flag if IN_ACCESS is set on the inode even if neither IN_CHANGE nor IN_UPDATE is set, transitioning the inode flags into a state where ufs_inactive() calls the blocking variant of vn_start_secondary_write().
calling ufs_itimes() with only a shared vnode lock might cause unsafe accesses to the inode flags. Setting of IN_ACCESS at the end of ffs_read() and ffs_extread() might also be unsafe. If DIRECTIO is enabled then O_DIRECT reads might not even attempt to set the IN_ACCESS flag.
Does this mean that setting the noatime flag on mount would dodge this?
On the server, yes.





