From: Michael Adam Date: Wed, 29 Apr 2009 14:33:45 +0000 (+0200) Subject: s3:vfs: untangle logic for loading and probing modules in vfs_init_custom() X-Git-Tag: tdb-1.1.5~855 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8aa41bdeb21d087cba1ab20bd2a4bd69cd519881;p=thirdparty%2Fsamba.git s3:vfs: untangle logic for loading and probing modules in vfs_init_custom() This is to be able to provide more specific error messages. Michael --- diff --git a/source3/smbd/vfs.c b/source3/smbd/vfs.c index 426772889c7..f219e5554c4 100644 --- a/source3/smbd/vfs.c +++ b/source3/smbd/vfs.c @@ -161,18 +161,30 @@ bool vfs_init_custom(connection_struct *conn, const char *vfs_object) } /* First, try to load the module with the new module system */ - if((entry = vfs_find_backend_entry(module_name)) || - (NT_STATUS_IS_OK(smb_probe_module("vfs", module_path)) && - (entry = vfs_find_backend_entry(module_name)))) { - - DEBUGADD(5,("Successfully loaded vfs module [%s] with the new modules system\n", vfs_object)); - - if ((ops = entry->vfs_op_tuples) == NULL) { - DEBUG(0, ("entry->vfs_op_tuples==NULL for [%s] failed\n", vfs_object)); + entry = vfs_find_backend_entry(module_name); + if (!entry) { + NTSTATUS status; + + DEBUG(5, ("vfs module [%s] not loaded - trying to load...\n", + vfs_object)); + + status = smb_probe_module("vfs", module_path); + if (!NT_STATUS_IS_OK(status)) { + DEBUG(0, ("error probing vfs module '%s': %s\n", + module_path, nt_errstr(status))); + goto fail; + } + + entry = vfs_find_backend_entry(module_name); + if (!entry) { + DEBUG(0,("Can't find a vfs module [%s]\n",vfs_object)); goto fail; - } - } else { - DEBUG(0,("Can't find a vfs module [%s]\n",vfs_object)); + } + } + + DEBUGADD(5,("Successfully loaded vfs module [%s] with the new modules system\n", vfs_object)); + if ((ops = entry->vfs_op_tuples) == NULL) { + DEBUG(0, ("entry->vfs_op_tuples==NULL for [%s] failed\n", vfs_object)); goto fail; }