Re: KVM Block Device Driver

2013-08-18 Thread Paolo Bonzini
Il 14/08/2013 20:44, Spensky, Chad - 0559 - MITLL ha scritto: Wolfgang, Thanks so much for the response. It turns out that wasn't handling the QEMUIOVector properly. When I first implemented it, I saw that the iovec was a pointer and assumed that there would only ever be one. Given the

Re: KVM Block Device Driver

2013-08-18 Thread Wolfgang Richter
Also there are utility functions within the QEMU code base that help deal with QEMUIOVectors (as far as I remember) which would help maybe so you don't have to directly code using them. -- Wolf On Aug 18, 2013, at 10:04 AM, Paolo Bonzini pbonz...@redhat.com wrote: Il 14/08/2013 20:44,

Re: KVM Block Device Driver

2013-08-14 Thread Stefan Hajnoczi
On Wed, Aug 14, 2013 at 10:40:06AM +0800, Fam Zheng wrote: On Tue, 08/13 16:13, Spensky, Chad - 0559 - MITLL wrote: Hi All, I'm working with some disk introspection on KVM, and we trying to create a shadow image of the disk. We've hooked the functions in block.c, in particular

Re: KVM Block Device Driver

2013-08-14 Thread Spensky, Chad - 0559 - MITLL
Stefan, Fam, We are trying to keep an active shadow copy while the system is running without any need for pausing. More precisely we want to log every individual access to the drive into a database so that the entire stream of accesses could be replayed at a later time. - Chad -- Chad S.

Re: KVM Block Device Driver

2013-08-14 Thread Fam Zheng
On Wed, 08/14 07:29, Spensky, Chad - 0559 - MITLL wrote: Stefan, Fam, We are trying to keep an active shadow copy while the system is running without any need for pausing. More precisely we want to log every individual access to the drive into a database so that the entire stream of

Re: KVM Block Device Driver

2013-08-14 Thread Spensky, Chad - 0559 - MITLL
Fam, That's correct, we modified block.c to hook the appropriate functions and output the information through a unix socket. One of the functions that we hooked is bdrv_aio_writev, however it seems like the data that we are seeing at that point in the callstack is not what actually makes it to

Re: KVM Block Device Driver

2013-08-14 Thread Fam Zheng
On Wed, 08/14 08:19, Spensky, Chad - 0559 - MITLL wrote: Fam, That's correct, we modified block.c to hook the appropriate functions and output the information through a unix socket. One of the functions that we hooked is bdrv_aio_writev, however it seems like the data that we are seeing

Re: KVM Block Device Driver

2013-08-14 Thread Stefan Hajnoczi
On Wed, Aug 14, 2013 at 07:29:53AM -0400, Spensky, Chad - 0559 - MITLL wrote: We are trying to keep an active shadow copy while the system is running without any need for pausing. More precisely we want to log every individual access to the drive into a database so that the entire stream of

Re: KVM Block Device Driver

2013-08-14 Thread Spensky, Chad - 0559 - MITLL
Wolf, We're able to get all of the meta data just fine. However it seems that the actual content of the read/write seems to be wrong some of the time. The first 2 sectors seem to always be correct, however on some writes, the data that we traced does not match up with the data we are actually

Re: KVM Block Device Driver

2013-08-14 Thread Wolfgang Richter
Still interested and back to working on this. I taught a couple classes this summer which killed my time in June - July. So Chad, are you already logging all accesses? Or do you need something quick to log them? I have a patch to QEMU mainline (very small) to add block I/O tracing, but it works

Re: KVM Block Device Driver

2013-08-14 Thread Wolfgang Richter
On Wed, Aug 14, 2013 at 10:43 AM, Spensky, Chad - 0559 - MITLL chad.spen...@ll.mit.edu wrote: Wolf, We're able to get all of the meta data just fine. I assume by meta-data you mean (essentially) function call parameters within QEMU as to the (1) location of the write on disk, and (2) the

Re: KVM Block Device Driver

2013-08-14 Thread Wolfgang Richter
Read through the kvm thread (I'm not on that mailing just just for reference; thanks for the CC). I saw you're hooking a different function than me (not sure it matters). I hook bdrv_co_writev and I operate on the passed in iovector datastructure there writing out its contents and a short header

Re: KVM Block Device Driver

2013-08-14 Thread Spensky, Chad - 0559 - MITLL
Wolfgang, Thanks so much for the response. It turns out that wasn't handling the QEMUIOVector properly. When I first implemented it, I saw that the iovec was a pointer and assumed that there would only ever be one. Given the lack of documentation and my lack of understanding this went

Re: KVM Block Device Driver

2013-08-14 Thread Wolfgang Richter
I'd expect it would be something with QEMUIOvector :-) Glad you found it! On Wed, Aug 14, 2013 at 2:44 PM, Spensky, Chad - 0559 - MITLL chad.spen...@ll.mit.edu wrote: Wolfgang, Thanks so much for the response. It turns out that wasn't handling the QEMUIOVector properly. When I first

KVM Block Device Driver

2013-08-13 Thread Spensky, Chad - 0559 - MITLL
Hi All, I'm working with some disk introspection on KVM, and we trying to create a shadow image of the disk. We've hooked the functions in block.c, in particular bdrv_aio_writev. However we are seeing writes go through, pausing the VM, and the comparing our shadow image with the actual VM

Re: KVM Block Device Driver

2013-08-13 Thread Fam Zheng
On Tue, 08/13 16:13, Spensky, Chad - 0559 - MITLL wrote: Hi All, I'm working with some disk introspection on KVM, and we trying to create a shadow image of the disk. We've hooked the functions in block.c, in particular bdrv_aio_writev. However we are seeing writes go through, pausing