qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH -V3 2/7] virtio-9p: Rearrange fileop structures


From: Sripathi Kodi
Subject: Re: [Qemu-devel] [PATCH -V3 2/7] virtio-9p: Rearrange fileop structures
Date: Tue, 25 May 2010 23:37:05 +0530

On Fri, 21 May 2010 14:26:05 -0700
"Venkateswararao Jujjuri (JV)" <address@hidden> wrote:

Hi JV,

While I agree that this patch is nice to have, why is this part of the
security model patchset? Is it required to implement the models?

Thanks,
Sripathi.

> Signed-off-by: Venkateswararao Jujjuri <address@hidden>
> ---
>  hw/virtio-9p.c |  185 
> ++++++++++++++------------------------------------------
>  hw/virtio-9p.h |   92 ++++++++++++++++++++++++++++
>  2 files changed, 138 insertions(+), 139 deletions(-)
> 
> diff --git a/hw/virtio-9p.c b/hw/virtio-9p.c
> index 8ecd39c..fda3c4a 100644
> --- a/hw/virtio-9p.c
> +++ b/hw/virtio-9p.c
> @@ -21,6 +21,52 @@
>  int dotu = 1;
>  int debug_9p_pdu;
> 
> +enum {
> +    Oread   = 0x00,
> +    Owrite  = 0x01,
> +    Ordwr   = 0x02,
> +    Oexec   = 0x03,
> +    Oexcl   = 0x04,
> +    Otrunc  = 0x10,
> +    Orexec  = 0x20,
> +    Orclose = 0x40,
> +    Oappend = 0x80,
> +};
> +
> +static int omode_to_uflags(int8_t mode)
> +{
> +    int ret = 0;
> +
> +    switch (mode & 3) {
> +    case Oread:
> +        ret = O_RDONLY;
> +        break;
> +    case Ordwr:
> +        ret = O_RDWR;
> +        break;
> +    case Owrite:
> +        ret = O_WRONLY;
> +        break;
> +    case Oexec:
> +        ret = O_RDONLY;
> +        break;
> +    }
> +
> +    if (mode & Otrunc) {
> +        ret |= O_TRUNC;
> +    }
> +
> +    if (mode & Oappend) {
> +        ret |= O_APPEND;
> +    }
> +
> +    if (mode & Oexcl) {
> +        ret |= O_EXCL;
> +    }
> +
> +    return ret;
> +}
> +
>  static int v9fs_do_lstat(V9fsState *s, V9fsString *path, struct stat *stbuf)
>  {
>      return s->ops->lstat(&s->ctx, path->data, stbuf);
> @@ -999,14 +1045,6 @@ out:
>      v9fs_string_free(&aname);
>  }
> 
> -typedef struct V9fsStatState {
> -    V9fsPDU *pdu;
> -    size_t offset;
> -    V9fsStat v9stat;
> -    V9fsFidState *fidp;
> -    struct stat stbuf;
> -} V9fsStatState;
> -
>  static void v9fs_stat_post_lstat(V9fsState *s, V9fsStatState *vs, int err)
>  {
>      if (err == -1) {
> @@ -1057,19 +1095,6 @@ out:
>      qemu_free(vs);
>  }
> 
> -typedef struct V9fsWalkState {
> -    V9fsPDU *pdu;
> -    size_t offset;
> -    int16_t nwnames;
> -    int name_idx;
> -    V9fsQID *qids;
> -    V9fsFidState *fidp;
> -    V9fsFidState *newfidp;
> -    V9fsString path;
> -    V9fsString *wnames;
> -    struct stat stbuf;
> -} V9fsWalkState;
> -
>  static void v9fs_walk_complete(V9fsState *s, V9fsWalkState *vs, int err)
>  {
>      complete_pdu(s, vs->pdu, err);
> @@ -1233,62 +1258,6 @@ out:
>      v9fs_walk_complete(s, vs, err);
>  }
> 
> -typedef struct V9fsOpenState {
> -    V9fsPDU *pdu;
> -    size_t offset;
> -    int8_t mode;
> -    V9fsFidState *fidp;
> -    V9fsQID qid;
> -    struct stat stbuf;
> -
> -} V9fsOpenState;
> -
> -enum {
> -    Oread   = 0x00,
> -    Owrite  = 0x01,
> -    Ordwr   = 0x02,
> -    Oexec   = 0x03,
> -    Oexcl   = 0x04,
> -    Otrunc  = 0x10,
> -    Orexec  = 0x20,
> -    Orclose = 0x40,
> -    Oappend = 0x80,
> -};
> -
> -static int omode_to_uflags(int8_t mode)
> -{
> -    int ret = 0;
> -
> -    switch (mode & 3) {
> -    case Oread:
> -        ret = O_RDONLY;
> -        break;
> -    case Ordwr:
> -        ret = O_RDWR;
> -        break;
> -    case Owrite:
> -        ret = O_WRONLY;
> -        break;
> -    case Oexec:
> -        ret = O_RDONLY;
> -        break;
> -    }
> -
> -    if (mode & Otrunc) {
> -        ret |= O_TRUNC;
> -    }
> -
> -    if (mode & Oappend) {
> -        ret |= O_APPEND;
> -    }
> -
> -    if (mode & Oexcl) {
> -        ret |= O_EXCL;
> -    }
> -
> -    return ret;
> -}
> -
>  static void v9fs_open_post_opendir(V9fsState *s, V9fsOpenState *vs, int err)
>  {
>      if (vs->fidp->dir == NULL) {
> @@ -1391,25 +1360,6 @@ out:
>      complete_pdu(s, pdu, err);
>  }
> 
> -typedef struct V9fsReadState {
> -    V9fsPDU *pdu;
> -    size_t offset;
> -    int32_t count;
> -    int32_t total;
> -    int64_t off;
> -    V9fsFidState *fidp;
> -    struct iovec iov[128]; /* FIXME: bad, bad, bad */
> -    struct iovec *sg;
> -    off_t dir_pos;
> -    struct dirent *dent;
> -    struct stat stbuf;
> -    V9fsString name;
> -    V9fsStat v9stat;
> -    int32_t len;
> -    int32_t cnt;
> -    int32_t max_count;
> -} V9fsReadState;
> -
>  static void v9fs_read_post_readdir(V9fsState *, V9fsReadState *, ssize_t);
> 
>  static void v9fs_read_post_seekdir(V9fsState *s, V9fsReadState *vs, ssize_t 
> err)
> @@ -1597,19 +1547,6 @@ out:
>      qemu_free(vs);
>  }
> 
> -typedef struct V9fsWriteState {
> -    V9fsPDU *pdu;
> -    size_t offset;
> -    int32_t len;
> -    int32_t count;
> -    int32_t total;
> -    int64_t off;
> -    V9fsFidState *fidp;
> -    struct iovec iov[128]; /* FIXME: bad, bad, bad */
> -    struct iovec *sg;
> -    int cnt;
> -} V9fsWriteState;
> -
>  static void v9fs_write_post_writev(V9fsState *s, V9fsWriteState *vs,
>                                     ssize_t err)
>  {
> @@ -1706,19 +1643,6 @@ out:
>      qemu_free(vs);
>  }
> 
> -typedef struct V9fsCreateState {
> -    V9fsPDU *pdu;
> -    size_t offset;
> -    V9fsFidState *fidp;
> -    V9fsQID qid;
> -    int32_t perm;
> -    int8_t mode;
> -    struct stat stbuf;
> -    V9fsString name;
> -    V9fsString extension;
> -    V9fsString fullname;
> -} V9fsCreateState;
> -
>  static void v9fs_post_create(V9fsState *s, V9fsCreateState *vs, int err)
>  {
>      if (err == 0) {
> @@ -1938,12 +1862,6 @@ static void v9fs_flush(V9fsState *s, V9fsPDU *pdu)
>      complete_pdu(s, pdu, 7);
>  }
> 
> -typedef struct V9fsRemoveState {
> -    V9fsPDU *pdu;
> -    size_t offset;
> -    V9fsFidState *fidp;
> -} V9fsRemoveState;
> -
>  static void v9fs_remove_post_remove(V9fsState *s, V9fsRemoveState *vs,
>                                                                  int err)
>  {
> @@ -1986,17 +1904,6 @@ out:
>      qemu_free(vs);
>  }
> 
> -typedef struct V9fsWstatState
> -{
> -    V9fsPDU *pdu;
> -    size_t offset;
> -    int16_t unused;
> -    V9fsStat v9stat;
> -    V9fsFidState *fidp;
> -    struct stat stbuf;
> -    V9fsString nname;
> -} V9fsWstatState;
> -
>  static void v9fs_wstat_post_truncate(V9fsState *s, V9fsWstatState *vs, int 
> err)
>  {
>      if (err < 0) {
> diff --git a/hw/virtio-9p.h b/hw/virtio-9p.h
> index 9b6cbde..992c765 100644
> --- a/hw/virtio-9p.h
> +++ b/hw/virtio-9p.h
> @@ -154,6 +154,98 @@ typedef struct V9fsState
>      enum p9_proto_version proto_version;
>  } V9fsState;
> 
> +typedef struct V9fsCreateState {
> +    V9fsPDU *pdu;
> +    size_t offset;
> +    V9fsFidState *fidp;
> +    V9fsQID qid;
> +    int32_t perm;
> +    int8_t mode;
> +    struct stat stbuf;
> +    V9fsString name;
> +    V9fsString extension;
> +    V9fsString fullname;
> +} V9fsCreateState;
> +
> +typedef struct V9fsStatState {
> +    V9fsPDU *pdu;
> +    size_t offset;
> +    V9fsStat v9stat;
> +    V9fsFidState *fidp;
> +    struct stat stbuf;
> +} V9fsStatState;
> +
> +typedef struct V9fsWalkState {
> +    V9fsPDU *pdu;
> +    size_t offset;
> +    int16_t nwnames;
> +    int name_idx;
> +    V9fsQID *qids;
> +    V9fsFidState *fidp;
> +    V9fsFidState *newfidp;
> +    V9fsString path;
> +    V9fsString *wnames;
> +    struct stat stbuf;
> +} V9fsWalkState;
> +
> +typedef struct V9fsOpenState {
> +    V9fsPDU *pdu;
> +    size_t offset;
> +    int8_t mode;
> +    V9fsFidState *fidp;
> +    V9fsQID qid;
> +    struct stat stbuf;
> +} V9fsOpenState;
> +
> +typedef struct V9fsReadState {
> +    V9fsPDU *pdu;
> +    size_t offset;
> +    int32_t count;
> +    int32_t total;
> +    int64_t off;
> +    V9fsFidState *fidp;
> +    struct iovec iov[128]; /* FIXME: bad, bad, bad */
> +    struct iovec *sg;
> +    off_t dir_pos;
> +    struct dirent *dent;
> +    struct stat stbuf;
> +    V9fsString name;
> +    V9fsStat v9stat;
> +    int32_t len;
> +    int32_t cnt;
> +    int32_t max_count;
> +} V9fsReadState;
> +
> +typedef struct V9fsWriteState {
> +    V9fsPDU *pdu;
> +    size_t offset;
> +    int32_t len;
> +    int32_t count;
> +    int32_t total;
> +    int64_t off;
> +    V9fsFidState *fidp;
> +    struct iovec iov[128]; /* FIXME: bad, bad, bad */
> +    struct iovec *sg;
> +    int cnt;
> +} V9fsWriteState;
> +
> +typedef struct V9fsRemoveState {
> +    V9fsPDU *pdu;
> +    size_t offset;
> +    V9fsFidState *fidp;
> +} V9fsRemoveState;
> +
> +typedef struct V9fsWstatState
> +{
> +    V9fsPDU *pdu;
> +    size_t offset;
> +    int16_t unused;
> +    V9fsStat v9stat;
> +    V9fsFidState *fidp;
> +    struct stat stbuf;
> +    V9fsString nname;
> +} V9fsWstatState;
> +
>  struct virtio_9p_config
>  {
>      /* number of characters in tag */
> -- 
> 1.6.5.2
> 
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]