531{
539
546 }
548 eprintf(
"nfs41_rpc_openattr() failed with %s\n",
552 }
553
555
560
562 dprintf(
EALVL,
"empty named attribute directory for '%s'\n",
566 }
567
570 else if (
args->restart)
572
573
575 if (
query->NextEntryOffset == 0) {
578 else
581 }
583 }
584 }
585
586
589
594 }
595
597 remaining =
args->buf_len;
598
600
602 if (needed > remaining) {
605 }
606
607 ea->EaNameLength =
query->EaNameLength;
609 ea->Flags = 0;
610
611
613 &
state->owner, ea, remaining, &needed);
617 }
620 goto out_free;
621 }
622
624 ea->EaNameLength + 1 + ea->EaValueLength);
625
626 if (remaining < needed) {
627
628
629
630 remaining = 0;
631 } else
632 remaining -= needed;
633
635 if (
query->NextEntryOffset == 0 ||
args->single)
636 break;
637
638 prev = ea;
639 ea->NextEntryOffset = needed;
642 }
643
644 ea->NextEntryOffset = 0;
645 args->buf_len -= remaining;
651
654 }
656 }
658
659out_free:
662}
static int get_ea_list(IN OUT nfs41_open_state *state, IN nfs41_path_fh *eadir, OUT PFILE_GET_EA_INFORMATION *ealist_out, OUT uint32_t *eaindex_out)
static int empty_ea_error(IN uint32_t index, IN BOOLEAN restart)
static int get_ea_value(IN nfs41_session *session, IN nfs41_path_fh *parent, IN state_owner4 *owner, OUT PFILE_FULL_EA_INFORMATION ea, IN uint32_t length, OUT uint32_t *needed)
int nfs_to_windows_error(int status, int default_error)
__inline uint32_t align4(uint32_t offset)
struct _FILE_FULL_EA_INFORMATION * PFILE_FULL_EA_INFORMATION
struct _FILE_GET_EA_INFORMATION * PFILE_GET_EA_INFORMATION
struct _FILE_FULL_EA_INFORMATION FILE_FULL_EA_INFORMATION
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
nfs41_updowncall_list upcall
enum nfsstat4 nfs41_rpc_openattr(IN nfs41_session *session, IN nfs41_path_fh *file, IN bool_t createdir, OUT nfs41_fh *fh_out)
#define FIELD_OFFSET(t, f)
#define ERROR_EA_FILE_CORRUPT
#define ERROR_EAS_NOT_SUPPORTED