- cleanup/add missing stuff to struct smbXsrv_open* - create_guid, application_guid..., file_name desired_access, granted_access, share_mode - replace get_gen_count() by smbXsrv_open_hash() smbXsrv_open_hash() should calculate the jenkins hash over global->open_persistent_id global->open_volatile_id and global->open_time - in long run we should replace fsp->fh->gen_id with a dynamic blob - add NTSTATUS SMB_VFS_DURABLE_COOKIE(fsp, mem_ctx, &cookie_blob); vfs_default => NT_STATUS_NOT_IMPLEMENTED vfs_simple_durable => blob = data_blob(fsp->file_id + fsp->fh->gen_id) - add NTSTATUS SMB_VFS_DURABLE_REOPEN(fsp, cookie_blob); vfs_default => NT_STATUS_NOT_SUPPORTED vfs_simple_durable => what we have currently... - or three functions: // called at open when durable is requested: NTSTATUS SMB_VFS_DURABLE_COOKIE(fsp, mem_ctx, &cookie_blob); // maybe pass persistent or resilient... NTSTATUS SMB_VFS_DURABLE_COOKIE(fsp, in_flags, mem_ctx, &cookie_blob, &out_flags); // called at disconnect: NTSTATUS SMB_VFS_DURABLE_DISCONNECT(fsp, mem_ctx, old_cookie_blob, &new_cookie_blob); // called at durable reconnect: NTSTATUS SMB_VFS_DURABLE_RECONNECT(fsp, cookie_blob); - remove file_find_fd() - in oplocks_linux use a global linked list of struct linux_oplock_fd_mapping { struct linux_oplock_fd_mapping *prev, *next; int fd; struct files_struct *fsp; }; - in smb_Dir_destructor() -- I don't know yet...