};
struct fileid_handle_data {
+ struct vfs_handle_struct *handle;
struct file_id (*mapping_fn)(struct fileid_handle_data *data,
const SMB_STRUCT_STAT *sbuf);
char **fstype_deny_list;
return id;
}
+static struct file_id fileid_mapping_next_module(struct fileid_handle_data *data,
+ const SMB_STRUCT_STAT *sbuf)
+{
+ return SMB_VFS_NEXT_FILE_ID_CREATE(data->handle, sbuf);
+}
+
static int get_connectpath_ino(struct vfs_handle_struct *handle,
const char *path,
SMB_STRUCT_STAT *psbuf)
return ret;
}
- data = talloc_zero(handle->conn, struct fileid_handle_data);
+ data = talloc_zero(handle, struct fileid_handle_data);
if (!data) {
saved_errno = errno;
SMB_VFS_NEXT_DISCONNECT(handle);
errno = saved_errno;
return -1;
}
+ data->handle = handle;
/*
* "fileid:mapping" is only here as fallback for old setups
} else if (strcmp("fsname_norootdir_ext", algorithm) == 0) {
data->mapping_fn = fileid_mapping_fsname_norootdir_ext;
rootdir_nolock = true;
+ } else if (strcmp("next_module", algorithm) == 0) {
+ data->mapping_fn = fileid_mapping_next_module;
} else {
SMB_VFS_NEXT_DISCONNECT(handle);
DEBUG(0,("fileid_connect(): unknown algorithm[%s]\n", algorithm));