From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:56923) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SqgUU-0008Bx-NK for qemu-devel@nongnu.org; Mon, 16 Jul 2012 04:17:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SqgUO-0006dm-FL for qemu-devel@nongnu.org; Mon, 16 Jul 2012 04:17:14 -0400 Received: from e23smtp05.au.ibm.com ([202.81.31.147]:54497) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SqgUN-0006di-Tc for qemu-devel@nongnu.org; Mon, 16 Jul 2012 04:17:08 -0400 Received: from /spool/local by e23smtp05.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 16 Jul 2012 08:10:51 +1000 Received: from d23av04.au.ibm.com (d23av04.au.ibm.com [9.190.235.139]) by d23relay03.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q6G8GFSa8847780 for ; Mon, 16 Jul 2012 18:16:16 +1000 Received: from d23av04.au.ibm.com (loopback [127.0.0.1]) by d23av04.au.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q6G8GDdp029722 for ; Mon, 16 Jul 2012 18:16:15 +1000 Message-ID: <5003CDC6.2040103@linux.vnet.ibm.com> Date: Mon, 16 Jul 2012 16:16:06 +0800 From: Wenchao Xia MIME-Version: 1.0 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> In-Reply-To: <50000793.2020401@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit 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 , qemu-devel@nongnu.org, =?UTF-8?B?TGx1w61z?= , Blue Swirl , Stefan Weil , Hannes Reinecke 于 2012-7-13 19:33, Paolo Bonzini 写道: > 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: > Really thanks for the investigation, I paid quite sometime to dig out which license is compatible to LGPL, this have sorted it out. The coroutine and structure inside is quite a challenge. What about provide the library first in nbd + sync access, and waiting for the library employer response? If it is good to use, then replace implement code to native qemu block layer code, change code's license, while keep API unchanged. > 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+). > > 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 > -- Best Regards Wenchao Xia