From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:54686) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SphdN-0001o4-FS for qemu-devel@nongnu.org; Fri, 13 Jul 2012 11:18:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SphdI-0005Un-Fs for qemu-devel@nongnu.org; Fri, 13 Jul 2012 11:18:21 -0400 Received: from mail-gh0-f173.google.com ([209.85.160.173]:45030) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SphdI-0005TK-9x for qemu-devel@nongnu.org; Fri, 13 Jul 2012 11:18:16 -0400 Received: by ghrr14 with SMTP id r14so4030458ghr.4 for ; Fri, 13 Jul 2012 08:18:16 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <50000793.2020401@redhat.com> References: <4FFA9C30.2070201@linux.vnet.ibm.com> <4FFAA0C3.3080703@redhat.com> <4FFBB7FB.3070303@linux.vnet.ibm.com> <4FFBD6F1.90403@redhat.com> <20120713091611.GC15503@stefanha-thinkpad.localdomain> <4FFFEF8E.5080705@redhat.com> <50000793.2020401@redhat.com> From: Blue Swirl Date: Fri, 13 Jul 2012 15:17:55 +0000 Message-ID: Content-Type: text/plain; charset=UTF-8 Subject: Re: [Qemu-devel] [RFC] introduce a dynamic library to expose qemu block API List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: Anthony Liguori , Stefan Hajnoczi , Michael Tokarev , =?UTF-8?B?TGx1w61z?= , qemu-devel@nongnu.org, Stefan Weil , Hannes Reinecke , Wenchao Xia On Fri, Jul 13, 2012 at 11:33 AM, Paolo Bonzini wrote: > Il 13/07/2012 11:51, Paolo Bonzini ha scritto: >> Il 13/07/2012 11:16, Stefan Hajnoczi ha scritto: >>>> "Working around the QEMU block layer license" is not a goal per se, >>>> especially because you haven't a) assessed _what_ is the GPL code that >>>> the library would use; b) told us why the library should not be under >>>> the GPL. >>>> >>>> Please design first according to the functionality you want to >>>> implement, then think about the implementation. >>> >>> Licensing is one headache but the real challenge is that the QEMU block >>> layer relies on the QEMU main loop and a bunch of other architecture. >> >> It doesn't really, not on Windows which has no AIO for example. That's >> why I suggested: >> >> - assessing what code is GPL and what are the dependencies on it > > So I tried trimming down the list of files needed to compile > qemu tools, and here is a list: > > Easy to relicense to LGPLv2+: > block/raw.c none (GPLv2+: Red Hat, IBM) > error.c LGPLv2 (Red Hat, IBM, Stefan Weil) > iov.c GPLv2 (Red Hat, SuSE/Hannes Reinecke, Michael Tokarev) > module.c GPLv2 (Red Hat, IBM, Blue Swirl) > qemu-error.c GPLv2+ (Red Hat, Blue Swirl, IBM) > trace/control.c GPLv2 (Lluis Vilanova) > trace/default.c GPLv2 (Lluis Vilanova) > > (I added some people to Cc. Lluis and Michael, can you also look at > http://wiki.qemu.org/Relicensing if you're willing to relicense > your past contributions from GPLv2 to GPLv2+?. Blue Swirl said > he'd accept any other GPLv2 or GPLv3 compatible license, which > should include LGPLv2+). I'm fine with LGPLv2+ too. I have some reservations to supporting a block device library API/ABI by external users, but if this is OK with block maintainer and we allow some decent API/ABI changes in the future if needed, this should be OK. > > Harder to relicense to LGPLv2+: > block/vdi.c GPLv2+ > > "Good" license: > aes.c BSD > async.c BSD > block.c BSD > block/bochs.c BSD > block/cloop.c BSD > block/cow.c BSD > block/dmg.c BSD > block/parallels.c BSD > block/qcow.c BSD > block/qcow2-cache.c BSD > block/qcow2-cluster.c BSD > block/qcow2-refcount.c BSD > block/qcow2-snapshot.c BSD > block/qcow2.c BSD > block/qed-check.c BSD > block/qed-cluster.c BSD > block/qed-gencb.c BSD > block/qed-l2-cache.c BSD > block/qed-table.c BSD > block/qed.c BSD > block/vmdk.c BSD > block/vpc.c BSD > block/vvfat.c BSD > cutils.c BSD > osdep.c BSD > oslib-posix.c BSD > qemu-coroutine-io.c BSD > qemu-coroutine-lock.c BSD > qemu-option.c BSD > qemu-progress.c BSD > coroutine-ucontext.c LGPLv2+ > json-lexer.c LGPLv2+ > json-parser.c LGPLv2+ > json-streamer.c LGPLv2+ > qbool.c LGPLv2+ > qdict.c LGPLv2+ > qemu-coroutine.c LGPLv2+ > qerror.c LGPLv2+ > qfloat.c LGPLv2+ > qint.c LGPLv2+ > qjson.c LGPLv2+ > qlist.c LGPLv2+ > qstring.c LGPLv2+ > > Doesn't need to be included in a library: > qemu-tool.c GPLv2 > > Autogenerated: > trace.c > > Remaining undefined symbols: > qemu_aio_flush > qemu_aio_wait > qemu_free_timer > qemu_new_timer > qemu_mod_timer > qemu_del_timer > qemu_get_clock_ns > vm_clock > + those defined in qemu-tool.c > > Paolo