X-Git-Url: http://git.samba.org/samba.git/?p=kai%2Fsamba-autobuild%2F.git;a=blobdiff_plain;f=source4%2Fntvfs%2Fposix%2Fvfs_posix.c;h=304a9ff8fe58063c12c69c93079fac417dd28fb9;hp=1e0efcddc8481c34ac2d7db1c90dc7f7f9ab7ea2;hb=d6db35d7a564ee556b74131ef4c3a3cdb8097e14;hpb=6b266b85cf34145ac1f03d8f787b81121e4ec92b diff --git a/source4/ntvfs/posix/vfs_posix.c b/source4/ntvfs/posix/vfs_posix.c index 1e0efcddc84..304a9ff8fe5 100644 --- a/source4/ntvfs/posix/vfs_posix.c +++ b/source4/ntvfs/posix/vfs_posix.c @@ -26,8 +26,8 @@ #include "includes.h" #include "vfs_posix.h" #include "librpc/gen_ndr/security.h" -#include "../tdb/include/tdb.h" -#include "tdb_wrap.h" +#include "tdb_compat.h" +#include "lib/tdb_wrap/tdb_wrap.h" #include "libcli/security/security.h" #include "lib/events/events.h" #include "param/param.h" @@ -38,7 +38,8 @@ static void pvfs_setup_options(struct pvfs_state *pvfs) { struct share_config *scfg = pvfs->ntvfs->ctx->config; - const char *eadb; + char *eadb; + char *xattr_backend; bool def_perm_override = false; if (share_bool_option(scfg, SHARE_MAP_HIDDEN, SHARE_MAP_HIDDEN_DEFAULT)) @@ -117,10 +118,13 @@ static void pvfs_setup_options(struct pvfs_state *pvfs) FS_ATTR_SPARSE_FILES; /* allow xattrs to be stored in a external tdb */ - eadb = share_string_option(scfg, PVFS_EADB, NULL); + eadb = share_string_option(pvfs, scfg, PVFS_EADB, NULL); if (eadb != NULL) { - pvfs->ea_db = tdb_wrap_open(pvfs, eadb, 50000, - TDB_DEFAULT, O_RDWR|O_CREAT, 0600); + pvfs->ea_db = tdb_wrap_open( + pvfs, eadb, 50000, + lpcfg_tdb_flags(pvfs->ntvfs->ctx->lp_ctx, TDB_DEFAULT), + O_RDWR|O_CREAT, 0600); + TALLOC_FREE(eadb); if (pvfs->ea_db != NULL) { pvfs->flags |= PVFS_FLAG_XATTR_ENABLE; } else { @@ -146,7 +150,9 @@ static void pvfs_setup_options(struct pvfs_state *pvfs) } /* enable an ACL backend */ - pvfs->acl_ops = pvfs_acl_backend_byname(share_string_option(scfg, PVFS_ACL, "xattr")); + xattr_backend = share_string_option(pvfs, scfg, PVFS_ACL, "xattr"); + pvfs->acl_ops = pvfs_acl_backend_byname(xattr_backend); + TALLOC_FREE(xattr_backend); } static int pvfs_state_destructor(struct pvfs_state *pvfs) @@ -212,14 +218,14 @@ static NTSTATUS pvfs_connect(struct ntvfs_module_context *ntvfs, * TODO: call this from ntvfs_posix_init() * but currently we don't have a lp_ctx there */ - status = pvfs_acl_init(ntvfs->ctx->lp_ctx); + status = pvfs_acl_init(); NT_STATUS_NOT_OK_RETURN(status); pvfs = talloc_zero(ntvfs, struct pvfs_state); NT_STATUS_HAVE_NO_MEMORY(pvfs); /* for simplicity of path construction, remove any trailing slash now */ - base_directory = talloc_strdup(pvfs, share_string_option(ntvfs->ctx->config, SHARE_PATH, "")); + base_directory = share_string_option(pvfs, ntvfs->ctx->config, SHARE_PATH, ""); NT_STATUS_HAVE_NO_MEMORY(base_directory); if (strcmp(base_directory, "/") != 0) { trim_string(base_directory, NULL, "/"); @@ -249,7 +255,7 @@ static NTSTATUS pvfs_connect(struct ntvfs_module_context *ntvfs, ntvfs->private_data = pvfs; - pvfs->brl_context = brl_init(pvfs, + pvfs->brl_context = brlock_init(pvfs, pvfs->ntvfs->ctx->server_id, pvfs->ntvfs->ctx->lp_ctx, pvfs->ntvfs->ctx->msg_ctx); @@ -270,13 +276,6 @@ static NTSTATUS pvfs_connect(struct ntvfs_module_context *ntvfs, pvfs->ntvfs->ctx->event_ctx, pvfs->ntvfs->ctx->config); - pvfs->wbc_ctx = wbc_init(pvfs, - pvfs->ntvfs->ctx->msg_ctx, - pvfs->ntvfs->ctx->event_ctx); - if (pvfs->wbc_ctx == NULL) { - return NT_STATUS_INTERNAL_DB_CORRUPTION; - } - /* allocate the search handle -> ptr tree */ pvfs->search.idtree = idr_init(pvfs); NT_STATUS_HAVE_NO_MEMORY(pvfs->search.idtree); @@ -372,37 +371,37 @@ NTSTATUS ntvfs_posix_init(void) ops.type = NTVFS_DISK; /* fill in all the operations */ - ops.connect = pvfs_connect; - ops.disconnect = pvfs_disconnect; - ops.unlink = pvfs_unlink; - ops.chkpath = pvfs_chkpath; - ops.qpathinfo = pvfs_qpathinfo; - ops.setpathinfo = pvfs_setpathinfo; - ops.open = pvfs_open; - ops.mkdir = pvfs_mkdir; - ops.rmdir = pvfs_rmdir; - ops.rename = pvfs_rename; - ops.copy = pvfs_copy; - ops.ioctl = pvfs_ioctl; - ops.read = pvfs_read; - ops.write = pvfs_write; - ops.seek = pvfs_seek; - ops.flush = pvfs_flush; - ops.close = pvfs_close; - ops.exit = pvfs_exit; - ops.lock = pvfs_lock; - ops.setfileinfo = pvfs_setfileinfo; - ops.qfileinfo = pvfs_qfileinfo; - ops.fsinfo = pvfs_fsinfo; - ops.lpq = pvfs_lpq; - ops.search_first = pvfs_search_first; - ops.search_next = pvfs_search_next; - ops.search_close = pvfs_search_close; - ops.trans = pvfs_trans; - ops.logoff = pvfs_logoff; - ops.async_setup = pvfs_async_setup; - ops.cancel = pvfs_cancel; - ops.notify = pvfs_notify; + ops.connect_fn = pvfs_connect; + ops.disconnect_fn = pvfs_disconnect; + ops.unlink_fn = pvfs_unlink; + ops.chkpath_fn = pvfs_chkpath; + ops.qpathinfo_fn = pvfs_qpathinfo; + ops.setpathinfo_fn = pvfs_setpathinfo; + ops.open_fn = pvfs_open; + ops.mkdir_fn = pvfs_mkdir; + ops.rmdir_fn = pvfs_rmdir; + ops.rename_fn = pvfs_rename; + ops.copy_fn = pvfs_copy; + ops.ioctl_fn = pvfs_ioctl; + ops.read_fn = pvfs_read; + ops.write_fn = pvfs_write; + ops.seek_fn = pvfs_seek; + ops.flush_fn = pvfs_flush; + ops.close_fn = pvfs_close; + ops.exit_fn = pvfs_exit; + ops.lock_fn = pvfs_lock; + ops.setfileinfo_fn = pvfs_setfileinfo; + ops.qfileinfo_fn = pvfs_qfileinfo; + ops.fsinfo_fn = pvfs_fsinfo; + ops.lpq_fn = pvfs_lpq; + ops.search_first_fn = pvfs_search_first; + ops.search_next_fn = pvfs_search_next; + ops.search_close_fn = pvfs_search_close; + ops.trans_fn = pvfs_trans; + ops.logoff_fn = pvfs_logoff; + ops.async_setup_fn = pvfs_async_setup; + ops.cancel_fn = pvfs_cancel; + ops.notify_fn = pvfs_notify; /* register ourselves with the NTVFS subsystem. We register under the name 'default' as we wish to be the default