From a368fecb8d8e493724a12d9a943b59e71e74e5f1 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Wed, 12 Jan 2005 03:33:25 +0000 Subject: [PATCH] When opening the node O_RDWR failed, we try again O_RDONLY, but we did that only, if the returned error code was B_READ_ONLY_DEVICE or B_PERMISSION_DENIED. Some FS return other error codes though, so we are completely ignorant now and always retry on error. Maybe we shouldn't for obvious cases like B_ENTRY_NOT_FOUND. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10679 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/storage/Node.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/kits/storage/Node.cpp b/src/kits/storage/Node.cpp index 5641a03758..5fab018b72 100644 --- a/src/kits/storage/Node.cpp +++ b/src/kits/storage/Node.cpp @@ -700,7 +700,7 @@ BNode::_SetTo(int fd, const char *path, bool traverse) if (error == B_OK) { int traverseFlag = (traverse ? 0 : O_NOTRAVERSE); fFd = _kern_open(fd, path, O_RDWR | traverseFlag); - if (fFd == B_READ_ONLY_DEVICE || fFd == B_PERMISSION_DENIED) { + if (fFd < B_OK) { // opening read-write failed, re-try read-only fFd = _kern_open(fd, path, O_RDONLY | traverseFlag); } @@ -734,7 +734,7 @@ BNode::_SetTo(const entry_ref *ref, bool traverse) int traverseFlag = (traverse ? 0 : O_NOTRAVERSE); fFd = _kern_open_entry_ref(ref->device, ref->directory, ref->name, O_RDWR | traverseFlag); - if (fFd == B_READ_ONLY_DEVICE || fFd == B_PERMISSION_DENIED) { + if (fFd < B_OK) { // opening read-write failed, re-try read-only fFd = _kern_open_entry_ref(ref->device, ref->directory, ref->name, O_RDONLY | traverseFlag);