On Jul 23, 2012 5:36 PM, <qemu-devel-requ...@nongnu.org> wrote:

> Send Qemu-devel mailing list submissions to
>         qemu-devel@nongnu.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         https://lists.nongnu.org/mailman/listinfo/qemu-devel
> or, via email, send a message with subject or body 'help' to
>         qemu-devel-requ...@nongnu.org
>
> You can reach the person managing the list at
>         qemu-devel-ow...@nongnu.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Qemu-devel digest..."
>
>
> Today's Topics:
>
>    1. Re: [RFC PATCH 2/2] block: gluster as block backend
>       (Stefan Hajnoczi)
>    2. Re: [RFC PATCH 0/2] GlusterFS support in QEMU - v2
>       (Daniel P. Berrange)
>    3. Re: [RFC PATCH 0/2] GlusterFS support in QEMU - v2
>       (Stefan Hajnoczi)
>    4. Re: [RFC PATCH 0/2] GlusterFS support in QEMU - v2
>       (ronnie sahlberg)
>    5. Re: [RFC PATCH 0/2] GlusterFS support in QEMU - v2
>       (ronnie sahlberg)
>    6. Re: [RFC PATCH 0/2] GlusterFS support in QEMU - v2
>       (Stefan Hajnoczi)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Mon, 23 Jul 2012 10:06:40 +0100
> From: Stefan Hajnoczi <stefa...@gmail.com>
> To: bhar...@linux.vnet.ibm.com
> Cc: Amar Tumballi <ama...@redhat.com>, Anand Avati
>         <aav...@redhat.com>,    qemu-devel@nongnu.org, Vijay Bellur
>         <vbel...@redhat.com>
> Subject: Re: [Qemu-devel] [RFC PATCH 2/2] block: gluster as block
>         backend
> Message-ID:
>         <
> cajsp0qu+exbjp9e_r2gaewhszkkaj8rpajoqdcouhy5jzpt...@mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
>
> On Mon, Jul 23, 2012 at 9:32 AM, Bharata B Rao
> <bhar...@linux.vnet.ibm.com> wrote:
> > On Sun, Jul 22, 2012 at 04:38:00PM +0100, Stefan Hajnoczi wrote:
> >> On Sat, Jul 21, 2012 at 9:31 AM, Bharata B Rao
> >> <bhar...@linux.vnet.ibm.com> wrote:
> >> > +} GlusterAIOCB;
> >> > +
> >> > +typedef struct GlusterCBKData {
> >> > +    GlusterAIOCB *acb;
> >> > +    struct BDRVGlusterState *s;
> >> > +    int64_t size;
> >> > +    int ret;
> >> > +} GlusterCBKData;
> >>
> >> I think GlusterCBKData could just be part of GlusterAIOCB.  That would
> >> simplify the code a little and avoid some malloc/free.
> >
> > Are you suggesting to put a field
> >
> > GlusterCBKData gcbk;
> >
> > inside GlusterAIOCB and use gcbk from there or
> >
> > Are you suggesting that I make the fields of GlusterCBKData part of
> > GlusterAIOCB and get rid of GlusterCBKData altogether ? This means I
> would
> > have to pass the GlusterAIOCB to gluster async calls and update its
> fields from
> > gluster callback routine. I can do this, but I am not sure if you can
> touch
> > the fields of GlusterAIOCB in non-QEMU threads (gluster callback thread).
>
> The fields in GlusterCBKData could become part of GlusterAIOCB.
> Different threads can access fields in a struct, they just need to
> ensure access is synchronized if they touch the same fields.  In the
> case of this code I think there is nothing that requires
> synchronization beyond the pipe mechanism that you already use to
> complete processing in a QEMU thread.
>
> >> When the argument is too long we should probably report an error
> >> instead of truncating.
> >
> > Or should we let gluster APIs to flag an error with truncated
> > server and volume names ?
>
> What if the truncated name is a valid but different object?  For example:
> Max chars = 5
> Objects:
> "helloworld"
> "hello"
>
> If "helloworld" is truncated to "hello" we get no error back because
> it's a valid object!
>
> We need to either check sizes explicitly without truncating or use a
> g_strdup() approach without any size limits and let the gfapi
> functions error out if the input string is too long.
>
> >> > +static struct glfs *qemu_gluster_init(GlusterConf *c, const char
> *filename)
> >> > +{
> >> > +    struct glfs *glfs = NULL;
> >> > +    int ret;
> >> > +
> >> > +    ret = qemu_gluster_parsename(c, filename);
> >> > +    if (ret < 0) {
> >> > +        errno = -ret;
> >> > +        goto out;
> >> > +    }
> >> > +
> >> > +    glfs = glfs_new(c->volname);
> >> > +    if (!glfs) {
> >> > +        goto out;
> >> > +    }
> >> > +
> >> > +    ret = glfs_set_volfile_server(glfs, "socket", c->server,
> c->port);
> >> > +    if (ret < 0) {
> >> > +        goto out;
> >> > +    }
> >> > +
> >> > +    /*
> >> > +     * TODO: Logging is not necessary but instead nice to have.
> >> > +     * Can QEMU optionally log into a standard place ?
> >>
> >> QEMU prints to stderr, can you do that here too?  The global log file
> >> is not okay, especially when multiple QEMU instances are running.
> >
> > Ok, I can do glfs_set_logging(glfs, "/dev/stderr", loglevel);
>
> Yes.  I think "-" is best since it is supported by gfapi
> (libglusterfs/src/logging.c:gf_log_init).  /dev/stderr is not POSIX.
>
> >> > +     * Need to use defines like gf_loglevel_t:GF_LOG_INFO instead of
> >> > +     * hard coded values like 7 here.
> >> > +     */
> >> > +    ret = glfs_set_logging(glfs, "/tmp/qemu-gluster.log", 7);
> >> > +    if (ret < 0) {
> >> > +        goto out;
> >> > +    }
> >> > +
> >> > +    ret = glfs_init(glfs);
> >> > +    if (ret < 0) {
> >> > +        goto out;
> >> > +    }
> >> > +    return glfs;
> >> > +
> >> > +out:
> >> > +    if (glfs) {
> >> > +        (void)glfs_fini(glfs);
> >> > +    }
> >> > +    return NULL;
> >> > +}
> >> > +
> >> > +static int qemu_gluster_open(BlockDriverState *bs, const char
> *filename,
> >> > +    int bdrv_flags)
> >> > +{
> >> > +    BDRVGlusterState *s = bs->opaque;
> >> > +    GlusterConf *c = g_malloc(sizeof(GlusterConf));
> >>
> >> Can this be allocated on the stack?
> >
> > It consists of PATH_MAX(4096), HOST_NAME_MAX(255) and
> GLUSTERD_MAX_VOLUME_NAME
> > (1000). A bit heavy to be on stack ?
>
> This is userspace, stacks are big but it's up to you.
>
> Stefan
>
>
>
> ------------------------------
>
> Message: 2
> Date: Mon, 23 Jul 2012 10:16:43 +0100
> From: "Daniel P. Berrange" <berra...@redhat.com>
> To: Bharata B Rao <bhar...@linux.vnet.ibm.com>
> Cc: Amar Tumballi <ama...@redhat.com>, Anand Avati
>         <aav...@redhat.com>,    qemu-devel@nongnu.org, Vijay Bellur
>         <vbel...@redhat.com>
> Subject: Re: [Qemu-devel] [RFC PATCH 0/2] GlusterFS support in QEMU -
>         v2
> Message-ID: <20120723091643.ga7...@redhat.com>
> Content-Type: text/plain; charset=utf-8
>
> On Sat, Jul 21, 2012 at 01:59:17PM +0530, Bharata B Rao wrote:
> > Hi,
> >
> > Here is the v2 patchset for supporting GlusterFS protocol from QEMU.
> >
> > This set of patches enables QEMU to boot VM images from gluster volumes.
> > This is achieved by adding gluster as a new block backend driver in QEMU.
> > Its already possible to boot from VM images on gluster volumes, but this
> > patchset provides the ability to boot VM images from gluster volumes by
> > by-passing the FUSE layer in gluster. In case the image is present on the
> > local system, it is possible to even bypass client and server translator
> and
> > hence the RPC overhead.
> >
> > The major change in this version is to not implement libglusterfs based
> > gluster backend within QEMU but instead use libgfapi. libgfapi library
> > from GlusterFS project provides APIs to access gluster volumes directly.
> > With the use of libgfapi, the specification of gluster backend from QEMU
> > matches more closely with the GlusterFS's way of specifying volumes. We
> now
> > specify the gluster backed image like this:
> >
> > -drive file=gluster:server@port:volname:image
> >
> > - Here 'gluster' is the protocol.
> > - 'server@port' specifies the server where the volume file
> specification for
> >   the given volume resides. 'port' is the port number on which gluster
> >   management daemon (glusterd) is listening. This is optional and if not
> >   specified, QEMU will send 0 which will make libgfapi to use the default
> >   port.
> > - 'volname' is the name of the gluster volume which contains the VM
> image.
> > - 'image' is the path to the actual VM image in the gluster volume.
>
> I don't think we should be using '@' as a field separator here, when ":"
> can do that job just fine. In addition we already have a precendent set
> with the sheepdog driver for using ':' for separating all fields:
>
>   -drive file=sheepdog:example.org:6000:imagename
>
> If you want to allow for port number to be omitted, this can be handled
> thus:
>
>   -drive file=sheepdog:example.org::imagename
>
> which is how -chardev deals with omitted port numbers
>
> Regards,
> Daniel
> --
> |: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/:|
> |: http://libvirt.org              -o-             http://virt-manager.org:|
> |: http://autobuild.org       -o-         http://search.cpan.org/~danberr/:|
> |: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc:|
>
>
>
> ------------------------------
>
> Message: 3
> Date: Mon, 23 Jul 2012 10:20:26 +0100
> From: Stefan Hajnoczi <stefa...@gmail.com>
> To: Kevin Wolf <kw...@redhat.com>, Markus Armbruster
>         <arm...@redhat.com>
> Cc: Amar Tumballi <ama...@redhat.com>, bhar...@linux.vnet.ibm.com,
>         Anand Avati <aav...@redhat.com>, qemu-devel@nongnu.org, Vijay
> Bellur
>         <vbel...@redhat.com>
> Subject: Re: [Qemu-devel] [RFC PATCH 0/2] GlusterFS support in QEMU -
>         v2
> Message-ID:
>         <CAJSP0QXdLCV8FDAMLesZS4Y2tYZYLADUFj3-=
> 5ayzvikjra...@mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
>
> On Mon, Jul 23, 2012 at 9:50 AM, Bharata B Rao
> <bhar...@linux.vnet.ibm.com> wrote:
> > On Sun, Jul 22, 2012 at 03:42:28PM +0100, Stefan Hajnoczi wrote:
> >> On Sat, Jul 21, 2012 at 9:29 AM, Bharata B Rao
> >> <bhar...@linux.vnet.ibm.com> wrote:
> >> > -drive file=gluster:server@port:volname:image
> >> >
> >> > - Here 'gluster' is the protocol.
> >> > - 'server@port' specifies the server where the volume file
> specification for
> >> >   the given volume resides. 'port' is the port number on which gluster
> >> >   management daemon (glusterd) is listening. This is optional and if
> not
> >> >   specified, QEMU will send 0 which will make libgfapi to use the
> default
> >> >   port.
> >>
> >> 'server@port' is weird notation.  Normally it is 'server:port' (e.g.
> >> URLs).  Can you change it?
> >
> > I don't like but, but settled for it since port was optional and : was
> > being used as separator here.
> >
> >>
> >> What about the other transports supported by libgfapi: UNIX domain
> >> sockets and RDMA?  My reading of glfs.h is that there are 3 connection
> >> options:
> >> 1. 'transport': 'socket' (default), 'unix', 'rdma'
> >> 2. 'host': server hostname for 'socket', path to UNIX domain socket
> >> for 'unix', or something else for 'rdma'
> >> 3. 'port': TCP port when 'socket' is used.  Ignored otherwise.
> >>
> >> Unfortunately QEMU block drivers cannot take custom options yet.  That
> >> would make it possible to cleanly map these connection options and
> >> save you from inventing syntax which doesn't expose all options.
> >>
> >> In the meantime it would be nice if the syntax exposed all options.
> >
> > So without the capability to pass custom options to block drivers, am I
> forced
> > to keep extending the file= with more and more options ?
> >
> > file=gluster:transport:server:port:volname:image ?
> >
> > Looks ugly and not easy to make any particular option optional. If
> needed I can
> > support this from GlusterFS backend.
>
> Kevin, Markus: Any thoughts on passing options to block drivers?
> Encoding GlusterFS options into a "filename" string is pretty
> cumbersome.
>
>
>
> ------------------------------
>
> Message: 4
> Date: Mon, 23 Jul 2012 19:28:53 +1000
> From: ronnie sahlberg <ronniesahlb...@gmail.com>
> To: "Daniel P. Berrange" <berra...@redhat.com>
> Cc: Anand Avati <aav...@redhat.com>, Vijay Bellur
>         <vbel...@redhat.com>,   Amar Tumballi <ama...@redhat.com>,
>         qemu-devel@nongnu.org,  Bharata B Rao <bhar...@linux.vnet.ibm.com>
> Subject: Re: [Qemu-devel] [RFC PATCH 0/2] GlusterFS support in QEMU -
>         v2
> Message-ID:
>         <CAN05THQ3Y4=dJD9Ycerv0Om4jkxbFJ=WS=_
> 1oriw04hqa6-...@mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
>
> Why not use
>
> -drive file=gluster://server[:port]/volname/image
>
> A great many protocols today use the form
>
> <protocol>://<server>:<port>]/<path>
>
> so this would make it consistent with a lot of other naming schemes
> out there, and imho make
> the url more intuitive.
>
>
> FTP looks like this :   ftp://user:password@host:port/path
> NFS looks like this :   nfs://<host>:<port><url-path>
> CIFS looks like this :
> smb://[[[authdomain;]user@]host[:port][/share[/path][/name]]][?context]
>
> For iSCSI we use  :   iscsi://<server>[:<port>]/<target>/<lun>
>
>
> (The iscsi syntax was picked explicitely to be consistent with the
> de-facto url naming scheme.)
>
>
> I would argue that this is the de-facto way to create a url for
> different protocols,   so it would imho be natural to specify a
> glusterfs url in a similar format.
>
>
> ronnie sahlberg
>
>
> On Mon, Jul 23, 2012 at 7:16 PM, Daniel P. Berrange <berra...@redhat.com>
> wrote:
> > On Sat, Jul 21, 2012 at 01:59:17PM +0530, Bharata B Rao wrote:
> >> Hi,
> >>
> >> Here is the v2 patchset for supporting GlusterFS protocol from QEMU.
> >>
> >> This set of patches enables QEMU to boot VM images from gluster volumes.
> >> This is achieved by adding gluster as a new block backend driver in
> QEMU.
> >> Its already possible to boot from VM images on gluster volumes, but this
> >> patchset provides the ability to boot VM images from gluster volumes by
> >> by-passing the FUSE layer in gluster. In case the image is present on
> the
> >> local system, it is possible to even bypass client and server
> translator and
> >> hence the RPC overhead.
> >>
> >> The major change in this version is to not implement libglusterfs based
> >> gluster backend within QEMU but instead use libgfapi. libgfapi library
> >> from GlusterFS project provides APIs to access gluster volumes directly.
> >> With the use of libgfapi, the specification of gluster backend from QEMU
> >> matches more closely with the GlusterFS's way of specifying volumes. We
> now
> >> specify the gluster backed image like this:
> >>
> >> -drive file=gluster:server@port:volname:image
> >>
> >> - Here 'gluster' is the protocol.
> >> - 'server@port' specifies the server where the volume file
> specification for
> >>   the given volume resides. 'port' is the port number on which gluster
> >>   management daemon (glusterd) is listening. This is optional and if not
> >>   specified, QEMU will send 0 which will make libgfapi to use the
> default
> >>   port.
> >> - 'volname' is the name of the gluster volume which contains the VM
> image.
> >> - 'image' is the path to the actual VM image in the gluster volume.
> >
> > I don't think we should be using '@' as a field separator here, when ":"
> > can do that job just fine. In addition we already have a precendent set
> > with the sheepdog driver for using ':' for separating all fields:
> >
> >   -drive file=sheepdog:example.org:6000:imagename
> >
> > If you want to allow for port number to be omitted, this can be handled
> > thus:
> >
> >   -drive file=sheepdog:example.org::imagename
> >
> > which is how -chardev deals with omitted port numbers
> >
> > Regards,
> > Daniel
> > --
> > |: http://berrange.com      -o-
> http://www.flickr.com/photos/dberrange/ :|
> > |: http://libvirt.org              -o-
> http://virt-manager.org :|
> > |: http://autobuild.org       -o-
> http://search.cpan.org/~danberr/ :|
> > |: http://entangle-photo.org       -o-
> http://live.gnome.org/gtk-vnc :|
> >
>
>
>
> ------------------------------
>
> Message: 5
> Date: Mon, 23 Jul 2012 19:34:20 +1000
> From: ronnie sahlberg <ronniesahlb...@gmail.com>
> To: Stefan Hajnoczi <stefa...@gmail.com>
> Cc: Kevin Wolf <kw...@redhat.com>, Anand Avati <aav...@redhat.com>,
>         Vijay Bellur <vbel...@redhat.com>,      Amar Tumballi <
> ama...@redhat.com>,
>         qemu-devel@nongnu.org,  Markus Armbruster <arm...@redhat.com>,
>         bhar...@linux.vnet.ibm.com
> Subject: Re: [Qemu-devel] [RFC PATCH 0/2] GlusterFS support in QEMU -
>         v2
> Message-ID:
>         <CAN05THQk4BcPoec4zsD=
> 2m6fuefuhrval3k3t5xevq_unhc...@mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
>
> Stefan,
>
> in iscsi,  i just specify those extra arguments that are required that
> are not part of the url itself as just command line options :
>
>
> qemu-system-i386 -iscsi initiator-name=iqn.qemu.test:my-initiator \
>     -boot d -drive file=iscsi://127.0.0.1/iqn.qemu.test/1 \
>     -cdrom iscsi://127.0.0.1/iqn.qemu.test/2
>
> Here  initiator-name is a custom option to the iscsi layer to tell it
> which name to use when identifying/logging in to the target.
>
> Similar concept could be used by glusterfs ?
>
> regards
> ronnie sahlberg
>
>
>
> On Mon, Jul 23, 2012 at 7:20 PM, Stefan Hajnoczi <stefa...@gmail.com>
> wrote:
> > On Mon, Jul 23, 2012 at 9:50 AM, Bharata B Rao
> > <bhar...@linux.vnet.ibm.com> wrote:
> >> On Sun, Jul 22, 2012 at 03:42:28PM +0100, Stefan Hajnoczi wrote:
> >>> On Sat, Jul 21, 2012 at 9:29 AM, Bharata B Rao
> >>> <bhar...@linux.vnet.ibm.com> wrote:
> >>> > -drive file=gluster:server@port:volname:image
> >>> >
> >>> > - Here 'gluster' is the protocol.
> >>> > - 'server@port' specifies the server where the volume file
> specification for
> >>> >   the given volume resides. 'port' is the port number on which
> gluster
> >>> >   management daemon (glusterd) is listening. This is optional and if
> not
> >>> >   specified, QEMU will send 0 which will make libgfapi to use the
> default
> >>> >   port.
> >>>
> >>> 'server@port' is weird notation.  Normally it is 'server:port' (e.g.
> >>> URLs).  Can you change it?
> >>
> >> I don't like but, but settled for it since port was optional and : was
> >> being used as separator here.
> >>
> >>>
> >>> What about the other transports supported by libgfapi: UNIX domain
> >>> sockets and RDMA?  My reading of glfs.h is that there are 3 connection
> >>> options:
> >>> 1. 'transport': 'socket' (default), 'unix', 'rdma'
> >>> 2. 'host': server hostname for 'socket', path to UNIX domain socket
> >>> for 'unix', or something else for 'rdma'
> >>> 3. 'port': TCP port when 'socket' is used.  Ignored otherwise.
> >>>
> >>> Unfortunately QEMU block drivers cannot take custom options yet.  That
> >>> would make it possible to cleanly map these connection options and
> >>> save you from inventing syntax which doesn't expose all options.
> >>>
> >>> In the meantime it would be nice if the syntax exposed all options.
> >>
> >> So without the capability to pass custom options to block drivers, am I
> forced
> >> to keep extending the file= with more and more options ?
> >>
> >> file=gluster:transport:server:port:volname:image ?
> >>
> >> Looks ugly and not easy to make any particular option optional. If
> needed I can
> >> support this from GlusterFS backend.
> >
> > Kevin, Markus: Any thoughts on passing options to block drivers?
> > Encoding GlusterFS options into a "filename" string is pretty
> > cumbersome.
> >
>
>
>
> ------------------------------
>
> Message: 6
> Date: Mon, 23 Jul 2012 10:35:50 +0100
> From: Stefan Hajnoczi <stefa...@gmail.com>
> To: ronnie sahlberg <ronniesahlb...@gmail.com>
> Cc: Kevin Wolf <kw...@redhat.com>, Anand Avati <aav...@redhat.com>,
>         Vijay Bellur <vbel...@redhat.com>,      Amar Tumballi <
> ama...@redhat.com>,
>         qemu-devel@nongnu.org,  Markus Armbruster <arm...@redhat.com>,
>         bhar...@linux.vnet.ibm.com
> Subject: Re: [Qemu-devel] [RFC PATCH 0/2] GlusterFS support in QEMU -
>         v2
> Message-ID:
>         <
> cajsp0qwbff097qghr7q4yaluccwtpkw7oh16s-ewzpjryhg...@mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
>
> On Mon, Jul 23, 2012 at 10:34 AM, ronnie sahlberg
> <ronniesahlb...@gmail.com> wrote:
> > in iscsi,  i just specify those extra arguments that are required that
> > are not part of the url itself as just command line options :
> >
> >
> > qemu-system-i386 -iscsi initiator-name=iqn.qemu.test:my-initiator \
> >     -boot d -drive file=iscsi://127.0.0.1/iqn.qemu.test/1 \
> >     -cdrom iscsi://127.0.0.1/iqn.qemu.test/2
> >
> > Here  initiator-name is a custom option to the iscsi layer to tell it
> > which name to use when identifying/logging in to the target.
> >
> > Similar concept could be used by glusterfs ?
>
> That works for global options only.  If it's per-drive then this
> approach can't be used because different drives might need different
> option values.
>
> Stefan
>
>
>
> ------------------------------
>
> _______________________________________________
> Qemu-devel mailing list
> Qemu-devel@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/qemu-devel
>
>
> End of Qemu-devel Digest, Vol 112, Issue 522
> ********************************************
>

Reply via email to