From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58271) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aIy3Z-0005ai-Bv for qemu-devel@nongnu.org; Tue, 12 Jan 2016 07:28:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aIy3V-0007V2-SR for qemu-devel@nongnu.org; Tue, 12 Jan 2016 07:28:13 -0500 Received: from mx1.redhat.com ([209.132.183.28]:60488) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aIy3V-0007Uj-OE for qemu-devel@nongnu.org; Tue, 12 Jan 2016 07:28:09 -0500 Date: Tue, 12 Jan 2016 13:28:06 +0100 From: Kevin Wolf Message-ID: <20160112122806.GC4841@noname.redhat.com> References: <567A4EB0.1040807@parallels.com> <1450856816-9816-1-git-send-email-den@openvz.org> <1450856816-9816-2-git-send-email-den@openvz.org> <20160111173106.GL9454@noname.redhat.com> <56949140.1010800@openvz.org> <20160112101031.GB4841@noname.redhat.com> <20160112113331.GA16191@ad.usersys.redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160112113331.GA16191@ad.usersys.redhat.com> Subject: Re: [Qemu-devel] [PATCH 1/5] block: added lock image option and callback List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fam Zheng Cc: qemu-devel@nongnu.org, Max Reitz , Olga Krishtal , "Denis V. Lunev" Am 12.01.2016 um 12:33 hat Fam Zheng geschrieben: > On Tue, 01/12 11:10, Kevin Wolf wrote: > > > > The problem is that libvirt already takes a lock, as Dan mentioned in > > another reply in this thread, so we can't enable locking in qemu by > > default. It would always fail when run under libvirt. > > > > Unless I'm seriously mistaken, this means that flock() inside qemu is > > dead. > > Yes, I see the problem with libvirt, but can we instead do these? > > 1) Do a soft flock() in QEMU invocation. If it fails, sliently ignore. > 2) Do a hard flock() in qemu-img invocation. If it fails, report and exit. > > This way, if libvirt is holding flock, we can assume libvirt is actually > "using" the image: 1) just works as before, but 2) will not break the qcow2. > That is still a slight improvement, and does solve the reckless "qemu-img > snapshot create" user's problem. This makes two assumptions: 1. qemu is only ever invoked by libvirt 2. qemu-img is only ever invoked by human users Both of them are wrong. 1. just means that manually started QEMUs are unprotected (which is already bad), but 2. means that qemu-img called by libvirt fails (which is obviously not acceptable). Kevin