From 18930132609da80f070fc6b3b885ed724254a452 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 31 Oct 2005 12:03:27 +0000 Subject: [PATCH] Volume::Initialize() needs a valid nspace object in the kernel - this fixes the "*** remove ..." error messages when initializing a BFS image via the bfs_shell. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14591 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../file_systems/bfs/r5/kernel_interface_r5.cpp | 7 +++++-- .../add-ons/kernel/file_systems/fs_shell/fsh.cpp | 1 - .../add-ons/kernel/file_systems/fs_shell/initfs.c | 1 - .../add-ons/kernel/file_systems/fs_shell/kernel.c | 15 +++++++++++---- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/tests/add-ons/kernel/file_systems/bfs/r5/kernel_interface_r5.cpp b/src/tests/add-ons/kernel/file_systems/bfs/r5/kernel_interface_r5.cpp index 13b4792541..ba88fc8f2b 100644 --- a/src/tests/add-ons/kernel/file_systems/bfs/r5/kernel_interface_r5.cpp +++ b/src/tests/add-ons/kernel/file_systems/bfs/r5/kernel_interface_r5.cpp @@ -5,7 +5,9 @@ */ -#define COMPILE_FOR_R5 +#ifndef COMPILE_FOR_R5 +# define COMPILE_FOR_R5 +#endif #include "Debug.h" #include "Volume.h" @@ -399,7 +401,8 @@ bfs_initialize(const char *deviceName, void *parms, size_t len) return -1; } - Volume volume(-1); + Volume volume(2); + // we just happen to know it's 2... status_t status = volume.Initialize(deviceName, volumeName, blockSize, flags); if (status < B_OK) { FATAL(("Initializing volume failed: %s\n", strerror(status))); diff --git a/src/tests/add-ons/kernel/file_systems/fs_shell/fsh.cpp b/src/tests/add-ons/kernel/file_systems/fs_shell/fsh.cpp index eae20a0378..eaf79b241c 100644 --- a/src/tests/add-ons/kernel/file_systems/fs_shell/fsh.cpp +++ b/src/tests/add-ons/kernel/file_systems/fs_shell/fsh.cpp @@ -94,7 +94,6 @@ main(int argc, char **argv) if (initialize) { const char *deviceName = arg; initialize_fs(deviceName, argv + argi, argc - argi); - } else { if (arg != NULL && !isdigit(arg[0])) disk_name = arg; diff --git a/src/tests/add-ons/kernel/file_systems/fs_shell/initfs.c b/src/tests/add-ons/kernel/file_systems/fs_shell/initfs.c index 06cddacbc4..aa86d86954 100644 --- a/src/tests/add-ons/kernel/file_systems/fs_shell/initfs.c +++ b/src/tests/add-ons/kernel/file_systems/fs_shell/initfs.c @@ -40,7 +40,6 @@ init_fs(char *disk_name) exit(0); } - data = sys_mount(1, "myfs", -1, "/myfs", disk_name, 0, NULL, 0); if (data == NULL) { printf("could not mount %s on /myfs\n", disk_name); diff --git a/src/tests/add-ons/kernel/file_systems/fs_shell/kernel.c b/src/tests/add-ons/kernel/file_systems/fs_shell/kernel.c index 4c8afc2fc9..6ca753b8c1 100644 --- a/src/tests/add-ons/kernel/file_systems/fs_shell/kernel.c +++ b/src/tests/add-ons/kernel/file_systems/fs_shell/kernel.c @@ -3386,14 +3386,21 @@ status_t initialize_file_system(const char *device, const char *fsName, void *params, int paramLength) { + struct nspace *mount; status_t error; - + fsystem *fs = inc_file_system(fsName); - if (!fs) + if (fs == NULL || fs->ops.initialize == NULL) return FS_ERROR; - error = (*fs->ops.initialize)(device, params, paramLength); - + mount = (nspace *)malloc(sizeof(nspace)); + if (add_nspace(mount, NULL, "myfs", -1, -1) < B_OK) { + error = B_ERROR; + } else { + error = (*fs->ops.initialize)(device, params, paramLength); + remove_nspace(mount); + } + dec_file_system(fs); return error;