From 5b89b67d95dd4dfdcd15dfec20a1c40fc27a4b3c Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Tue, 6 Mar 2007 07:52:24 +0000 Subject: [PATCH] Added missing module initialization/uninitialization. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20341 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../userlandfs/server/HaikuKernelFileSystem.cpp | 13 +++++++++++++ .../userlandfs/server/HaikuKernelFileSystem.h | 2 ++ .../userlandfs/server/UserlandFSServer.cpp | 7 +++++++ 3 files changed, 22 insertions(+) diff --git a/src/add-ons/kernel/file_systems/userlandfs/server/HaikuKernelFileSystem.cpp b/src/add-ons/kernel/file_systems/userlandfs/server/HaikuKernelFileSystem.cpp index 8632f8d3ee..0c3814fd18 100644 --- a/src/add-ons/kernel/file_systems/userlandfs/server/HaikuKernelFileSystem.cpp +++ b/src/add-ons/kernel/file_systems/userlandfs/server/HaikuKernelFileSystem.cpp @@ -21,6 +21,19 @@ HaikuKernelFileSystem::HaikuKernelFileSystem(file_system_module_info* fsModule) // destructor HaikuKernelFileSystem::~HaikuKernelFileSystem() { + // call the kernel module uninitialization + if (fFSModule->info.std_ops) + fFSModule->info.std_ops(B_MODULE_UNINIT); +} + +// Init +status_t +HaikuKernelFileSystem::Init() +{ + // call the kernel module initialization + if (!fFSModule->info.std_ops) + return B_OK; + return fFSModule->info.std_ops(B_MODULE_INIT); } // CreateVolume diff --git a/src/add-ons/kernel/file_systems/userlandfs/server/HaikuKernelFileSystem.h b/src/add-ons/kernel/file_systems/userlandfs/server/HaikuKernelFileSystem.h index 0cdffb7429..c71210fbc7 100644 --- a/src/add-ons/kernel/file_systems/userlandfs/server/HaikuKernelFileSystem.h +++ b/src/add-ons/kernel/file_systems/userlandfs/server/HaikuKernelFileSystem.h @@ -15,6 +15,8 @@ public: file_system_module_info* fsModule); virtual ~HaikuKernelFileSystem(); + status_t Init(); + virtual status_t CreateVolume(Volume** volume, mount_id id); virtual status_t DeleteVolume(Volume* volume); diff --git a/src/add-ons/kernel/file_systems/userlandfs/server/UserlandFSServer.cpp b/src/add-ons/kernel/file_systems/userlandfs/server/UserlandFSServer.cpp index 34180bc7fd..5c1532da6a 100644 --- a/src/add-ons/kernel/file_systems/userlandfs/server/UserlandFSServer.cpp +++ b/src/add-ons/kernel/file_systems/userlandfs/server/UserlandFSServer.cpp @@ -273,8 +273,15 @@ UserlandFSServer::_CreateHaikuKernelInterface(const char* fsName, = new(nothrow) HaikuKernelFileSystem(module); if (!fileSystem) RETURN_ERROR(B_NO_MEMORY); + ObjectDeleter fsDeleter(fileSystem); + + // init the FS + error = fileSystem->Init(); + if (error != B_OK) + return error; // everything went fine + fsDeleter.Detach(); *_fileSystem = fileSystem; return B_OK; }