[Top][All Lists]
[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
>
>
- [Qemu-devel] [PATCH-V2 5/7] virtio-9p: Implemented security model for symlink and link., (continued)
- [Qemu-devel] [PATCH-V2 5/7] virtio-9p: Implemented security model for symlink and link., Venkateswararao Jujjuri (JV), 2010/05/11
- [Qemu-devel] [PATCH-V2 7/7] virtio-9p: Implemented security model for chown and chgrp., Venkateswararao Jujjuri (JV), 2010/05/11
- [Qemu-devel] [PATCH-V2 0/7] virtio-9p:Introducing security model for VirtFS, Venkateswararao Jujjuri (JV), 2010/05/21
- [Qemu-devel] [PATCH -V3 4/7] virtio-9p: Implement Security model for mknod related files, Venkateswararao Jujjuri (JV), 2010/05/21
- [Qemu-devel] [PATCH -V3 5/7] virtio-9p: Implemented security model for symlink and link., Venkateswararao Jujjuri (JV), 2010/05/21
- [Qemu-devel] [PATCH -V3 7/7] virtio-9p: Implemented security model for chown and chgrp., Venkateswararao Jujjuri (JV), 2010/05/21
- [Qemu-devel] [PATCH -V3 1/7] virtio-9p: Introduces an option to specify the security model., Venkateswararao Jujjuri (JV), 2010/05/21
- [Qemu-devel] [PATCH -V3 2/7] virtio-9p: Rearrange fileop structures, Venkateswararao Jujjuri (JV), 2010/05/21
- [Qemu-devel] [PATCH -V3 6/7] virtio-9p: Implemented Security model for lstat and fstat, Venkateswararao Jujjuri (JV), 2010/05/21
- [Qemu-devel] [PATCH -V3 3/7] virtio-9p: modify create/open2 and mkdir for new security model., Venkateswararao Jujjuri (JV), 2010/05/21