43 if (
state->locks.stateid.seqid) {
46 }
else if (
state->do_close) {
61 if (
state->locks.stateid.seqid == 0) {
64 }
else if (stateid->seqid >
state->locks.stateid.seqid) {
66 state->locks.stateid.seqid = stateid->seqid;
93 if (
open->delegation.state) {
110 #define lock_entry(pos) list_container(pos, nfs41_lock_state, open_entry) 134 if (
lock->delegated) {
183 dprintf(1,
"parsing NFS41_LOCK: offset=0x%llx length=0x%llx exclusive=%u " 274 dprintf(1,
"--> cancel_lock()\n");
316 dprintf(1,
"parsing NFS41_UNLOCK: count=%u\n",
args->count);
327 unsigned char *
buf =
args->buf;
332 for (
i = 0;
i <
args->count;
i++) {
VOID WINAPI AcquireSRWLockExclusive(PSRWLOCK Lock)
static int handle_unlock(nfs41_upcall *upcall)
int nfs_to_windows_error(int status, int default_error)
GLenum GLuint GLenum GLsizei const GLchar * buf
const nfs41_upcall_op nfs41_op_lock
GLuint GLuint GLsizei GLenum type
DWORD WINAPI GetLastError(VOID)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
static int open_unlock_delegate(IN nfs41_open_state *open, IN const nfs41_lock_state *input)
static int parse_lock(unsigned char *buffer, uint32_t length, nfs41_upcall *upcall)
__WINE_SERVER_LIST_INLINE void list_add_tail(struct list *list, struct list *elem)
#define ERROR_BAD_NET_RESP
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static int lock_range_cmp(const struct list_entry *entry, const void *value)
static void cancel_lock(IN nfs41_upcall *upcall)
static void lock_stateid_arg(IN nfs41_open_state *state, OUT stateid_arg *arg)
static void open_lock_add(IN nfs41_open_state *open, IN const stateid_arg *stateid, IN nfs41_lock_state *lock)
static const uint64_t NFS4_UINT64_MAX
static int handle_lock(nfs41_upcall *upcall)
int nfs41_delegation_to_open(IN nfs41_open_state *open, IN bool_t try_recovery)
__WINE_SERVER_LIST_INLINE void list_remove(struct list *elem)
const nfs41_upcall_op nfs41_op_unlock
static void lock_stateid_update(OUT nfs41_open_state *state, IN const stateid4 *stateid)
GLenum GLuint GLenum GLsizei length
enum open_delegation_type4 type
const char * nfs_error_string(int status)
int nfs41_unlock(IN nfs41_session *session, IN nfs41_path_fh *file, IN uint64_t offset, IN uint64_t length, IN OUT stateid_arg *stateid)
VOID WINAPI ReleaseSRWLockExclusive(PSRWLOCK Lock)
#define memcpy(s1, s2, n)
static void open_unlock_remove(IN nfs41_open_state *open, IN const stateid_arg *stateid, IN const nfs41_lock_state *input)
static struct list_entry * list_search(const struct list_entry *head, const void *value, list_compare_fn compare)
GLenum GLenum GLenum input
int nfs41_lock(IN nfs41_session *session, IN nfs41_path_fh *file, IN state_owner4 *owner, IN uint32_t type, IN uint64_t offset, IN uint64_t length, IN bool_t reclaim, IN bool_t try_recovery, IN OUT stateid_arg *stateid)
enum delegation_status status
#define ERROR_FILE_INVALID
static bool_t open_lock_delegate(IN nfs41_open_state *open, IN nfs41_lock_state *lock)
nfs41_updowncall_list upcall
static __inline uint32_t get_lock_type(BOOLEAN exclusive, BOOLEAN blocking)
int safe_read(unsigned char **pos, uint32_t *remaining, void *dest, uint32_t dest_len)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
static SERVICE_STATUS status
VOID WINAPI AcquireSRWLockShared(PSRWLOCK Lock)
VOID WINAPI ReleaseSRWLockShared(PSRWLOCK Lock)
static int parse_unlock(unsigned char *buffer, uint32_t length, nfs41_upcall *upcall)