432{
436 const char *path_pos, *path_end;
440
441 if (session_out) *session_out =
session;
442
444
445
446
450
451 path_pos =
path.path;
453
455
458 parent_out->fh.len = target_out->fh.len = 0;
459
461 &parent_out->fh, &target_out->fh, info_out, &negative);
464
465 if (parent_out->fh.len) {
466
467 if (&
parent != parent_out) {
468
469
471 }
473 } else {
474
476 }
477
479 &
path, path_pos, &referral, parent_out, target_out, info_out);
480
483
484
485
487 &referral, path_inout, &new_session);
491 }
492
493
494 last_component(path_inout->path, path_inout->path + path_inout->len,
495 &target_out->name);
497 &parent_out->name);
498
499 if (session_out) *session_out = new_session;
500
501
503 parent_out, target_out, info_out, session_out);
504 }
508}
static int server_lookup_loop(IN nfs41_session *session, IN OPTIONAL nfs41_path_fh *parent_in, IN nfs41_abs_path *path, IN const char *path_pos, IN struct lookup_referral *referral, OUT OPTIONAL nfs41_path_fh *parent_out, OUT OPTIONAL nfs41_path_fh *target_out, OUT OPTIONAL nfs41_file_info *info_out)
static int referral_resolve(IN nfs41_root *root, IN nfs41_session *session_in, IN struct lookup_referral *referral, OUT nfs41_abs_path *path_out, OUT nfs41_session **session_out)
int nfs41_lookup(IN nfs41_root *root, IN nfs41_session *session, IN OUT nfs41_abs_path *path_inout, OUT OPTIONAL nfs41_path_fh *parent_out, OUT OPTIONAL nfs41_path_fh *target_out, OUT OPTIONAL nfs41_file_info *info_out, OUT nfs41_session **session_out)
void abs_path_copy(OUT nfs41_abs_path *dst, IN const nfs41_abs_path *src)
void path_fh_copy(OUT nfs41_path_fh *dst, IN const nfs41_path_fh *src)
void eprintf(LPCSTR format,...)
VOID WINAPI ReleaseSRWLockShared(PSRWLOCK Lock)
VOID WINAPI AcquireSRWLockShared(PSRWLOCK Lock)
VOID WINAPI InitializeSRWLock(PSRWLOCK Lock)
int nfs41_name_cache_lookup(IN struct nfs41_name_cache *cache, IN const char *path, IN const char *path_end, OUT OPTIONAL const char **remaining_path_out, OUT OPTIONAL nfs41_fh *parent_out, OUT OPTIONAL nfs41_fh *target_out, OUT OPTIONAL nfs41_file_info *info_out, OUT OPTIONAL bool_t *is_negative)
static __inline struct nfs41_name_cache * session_name_cache(IN nfs41_session *session)
static void server_start(server_params *par)