From bcd307089b56ff8b0df050a4747a1405ff26ad80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Sat, 28 Jun 2008 16:08:38 +0000 Subject: [PATCH] * Fixed a deadlock found by Salvatore; the volume lock is now only used to protect the bfs_read_fs_stat() and bfs_write_fs_stat() functions. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26154 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/file_systems/bfs/Inode.cpp | 2 -- src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp | 4 +--- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/add-ons/kernel/file_systems/bfs/Inode.cpp b/src/add-ons/kernel/file_systems/bfs/Inode.cpp index 38147ff967..2c6ca76f90 100644 --- a/src/add-ons/kernel/file_systems/bfs/Inode.cpp +++ b/src/add-ons/kernel/file_systems/bfs/Inode.cpp @@ -2211,8 +2211,6 @@ Inode::Remove(Transaction &transaction, const char *name, ino_t *_id, if (GetTree(&tree) != B_OK) RETURN_ERROR(B_BAD_VALUE); - RecursiveLocker locker(fVolume->Lock()); - // does the file even exist? off_t id; if (tree->Find((uint8 *)name, (uint16)strlen(name), &id) < B_OK) diff --git a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp index 45ec6164bb..47033c2077 100644 --- a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp @@ -937,7 +937,7 @@ bfs_rename(fs_volume *_volume, fs_vnode *_oldDir, const char *oldName, if (status < B_OK) return status; - RecursiveLocker locker(volume->Lock()); + Transaction transaction(volume, oldDirectory->BlockNumber()); // Get the directory's tree, and a pointer to the inode which should be // changed @@ -982,8 +982,6 @@ bfs_rename(fs_volume *_volume, fs_vnode *_oldDir, const char *oldName, // Everything okay? Then lets get to work... - Transaction transaction(volume, oldDirectory->BlockNumber()); - // First, try to make sure there is nothing that will stop us in // the target directory - since this is the only non-critical // failure, we will test this case first