From deepak.jagtap at maxta.com Tue Jun 6 03:31:30 2017 Content-Type: multipart/mixed; boundary="===============7796544765067303654==" MIME-Version: 1.0 From: Deepak Jagtap To: devel at ovirt.org Subject: [ovirt-devel] Snapshots & clone support from datastore Date: Tue, 06 Jun 2017 02:57:36 +0000 Message-ID: --===============7796544765067303654== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable --_000_MWHPR11MB166305908F1E2918F9B3FE4AEDCB0MWHPR11MB1663namp_ Content-Type: text/plain; charset=3D"iso-8859-1" Content-Transfer-Encoding: quoted-printable Hey Guys, I am newbie to ovirt, and wanted to confirm whats the best way to leverage = =3D snapshot, clone features provided by the datastore filesystem. I have a btrfs datastore exported and wanted use btrfs snapshots for vm sna= =3D pshot & clones. Does ovirt offers any hooks/APIs so that image snapshots are created by the= =3D filesystem? Thanks & Regards, Deepak --_000_MWHPR11MB166305908F1E2918F9B3FE4AEDCB0MWHPR11MB1663namp_ Content-Type: text/html; charset=3D"iso-8859-1" Content-Transfer-Encoding: quoted-printable

Hey Guys,


I am newbie to ovirt, and wanted to confirm whats the best way to levera= =3D ge snapshot, clone features 

provided by the datastore filesystem.

I have a btrfs datastore exported and wanted use btrfs snapshots fo= =3D r vm snapshot & clones.

Does ovirt offers any hooks/APIs so that image snapshots are created by = =3D the filesystem?


Thanks & Regards,

Deepak

 

--_000_MWHPR11MB166305908F1E2918F9B3FE4AEDCB0MWHPR11MB1663namp_-- --===============7796544765067303654== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS1fMDAwX01XSFBSMTFNQjE2NjMwNTkwOEYxRTI5MThGOUIzRkU0QUVEQ0IwTVdIUFIxMU1CMTY2 M25hbXBfCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0iaXNvLTg4NTktMSIKQ29u dGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQoKSGV5IEd1eXMsCgoKSSBh bSBuZXdiaWUgdG8gb3ZpcnQsIGFuZCB3YW50ZWQgdG8gY29uZmlybSB3aGF0cyB0aGUgYmVzdCB3 YXkgdG8gbGV2ZXJhZ2UgPQpzbmFwc2hvdCwgY2xvbmUgZmVhdHVyZXMKCnByb3ZpZGVkIGJ5IHRo ZSBkYXRhc3RvcmUgZmlsZXN5c3RlbS4KCkkgaGF2ZSBhIGJ0cmZzIGRhdGFzdG9yZSBleHBvcnRl ZCBhbmQgd2FudGVkIHVzZSBidHJmcyBzbmFwc2hvdHMgZm9yIHZtIHNuYT0KcHNob3QgJiBjbG9u ZXMuCgpEb2VzIG92aXJ0IG9mZmVycyBhbnkgaG9va3MvQVBJcyBzbyB0aGF0IGltYWdlIHNuYXBz aG90cyBhcmUgY3JlYXRlZCBieSB0aGU9CiBmaWxlc3lzdGVtPwoKClRoYW5rcyAmIFJlZ2FyZHMs CgpEZWVwYWsKCgoKLS1fMDAwX01XSFBSMTFNQjE2NjMwNTkwOEYxRTI5MThGOUIzRkU0QUVEQ0Iw TVdIUFIxMU1CMTY2M25hbXBfCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PSJpc28t ODg1OS0xIgpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlCgo8aHRt bD4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9M0QiQ29udGVudC1UeXBlIiBjb250ZW50PTNEInRl eHQvaHRtbDsgY2hhcnNldD0zRGlzby04ODU5LT0KMSI+CjxzdHlsZSB0eXBlPTNEInRleHQvY3Nz IiBzdHlsZT0zRCJkaXNwbGF5Om5vbmU7Ij48IS0tIFAge21hcmdpbi10b3A6MDttYXJnaT0Kbi1i b3R0b206MDt9IC0tPjwvc3R5bGU+CjwvaGVhZD4KPGJvZHkgZGlyPTNEImx0ciI+CjxkaXYgaWQ9 M0QiZGl2dGFnZGVmYXVsdHdyYXBwZXIiIHN0eWxlPTNEImZvbnQtc2l6ZToxMnB0O2NvbG9yOiMw MDAwMDA7Zm9udD0KLWZhbWlseTpDYWxpYnJpLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmOyIg ZGlyPTNEImx0ciI+CjxwPkhleSBHdXlzLDwvcD4KPHA+PGJyPgo8L3A+CjxwPkkgYW0gbmV3Ymll IHRvIG92aXJ0LCBhbmQgd2FudGVkIHRvIGNvbmZpcm0gd2hhdHMgdGhlIGJlc3Qgd2F5IHRvIGxl dmVyYT0KZ2Ugc25hcHNob3QsIGNsb25lIGZlYXR1cmVzJm5ic3A7PC9wPgo8cD5wcm92aWRlZCBi eSB0aGUgZGF0YXN0b3JlIGZpbGVzeXN0ZW0uPC9wPgo8cD5JIGhhdmUgYSBidHJmcyBkYXRhc3Rv cmUgZXhwb3J0ZWQmbmJzcDthbmQgd2FudGVkIHVzZSBidHJmcyBzbmFwc2hvdHMgZm89CnIgdm0g c25hcHNob3QgJmFtcDsgY2xvbmVzLjwvcD4KPHA+RG9lcyBvdmlydCBvZmZlcnMgYW55IGhvb2tz L0FQSXMgc28gdGhhdCBpbWFnZSBzbmFwc2hvdHMgYXJlIGNyZWF0ZWQgYnkgPQp0aGUgZmlsZXN5 c3RlbT88L3A+CjxwPjxicj4KPC9wPgo8cD5UaGFua3MgJmFtcDsgUmVnYXJkcyw8L3A+CjxwPkRl ZXBhazwvcD4KPHA+Jm5ic3A7PC9wPgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+CgotLV8wMDBfTVdI UFIxMU1CMTY2MzA1OTA4RjFFMjkxOEY5QjNGRTRBRURDQjBNV0hQUjExTUIxNjYzbmFtcF8tLQo= --===============7796544765067303654==-- From amureini at redhat.com Tue Jun 6 21:43:18 2017 Content-Type: multipart/mixed; boundary="===============3766136035862255652==" MIME-Version: 1.0 From: Allon Mureinik To: devel at ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore Date: Wed, 07 Jun 2017 00:43:17 +0300 Message-ID: In-Reply-To: MWHPR11MB166305908F1E2918F9B3FE4AEDCB0@MWHPR11MB1663.namprd11.prod.outlook.com --===============3766136035862255652== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Unfortunately, there's no such integration point at the moment. On Tue, Jun 6, 2017 at 5:57 AM, Deepak Jagtap wrote: > Hey Guys, > > > I am newbie to ovirt, and wanted to confirm whats the best way to leverage > snapshot, clone features > > provided by the datastore filesystem. > > I have a btrfs datastore exported and wanted use btrfs snapshots for vm > snapshot & clones. > > Does ovirt offers any hooks/APIs so that image snapshots are created by > the filesystem? > > > Thanks & Regards, > > Deepak > > > > _______________________________________________ > Devel mailing list > Devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/devel > --===============3766136035862255652== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGRpdiBkaXI9Imx0ciI+PGRpdiBjbGFzcz0iZ21haWxfZGVmYXVsdCIgc3R5bGU9ImZvbnQtZmFt aWx5Om1vbm9zcGFjZSxtb25vc3BhY2UiPlVuZm9ydHVuYXRlbHksIHRoZXJlJiMzOTtzIG5vIHN1 Y2ggaW50ZWdyYXRpb24gcG9pbnQgYXQgdGhlIG1vbWVudC48L2Rpdj48L2Rpdj48ZGl2IGNsYXNz PSJnbWFpbF9leHRyYSI+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj5PbiBUdWUsIEp1biA2 LCAyMDE3IGF0IDU6NTcgQU0sIERlZXBhayBKYWd0YXAgPHNwYW4gZGlyPSJsdHIiPiZsdDs8YSBo cmVmPSJtYWlsdG86ZGVlcGFrLmphZ3RhcEBtYXh0YS5jb20iIHRhcmdldD0iX2JsYW5rIj5kZWVw YWsuamFndGFwQG1heHRhLmNvbTwvYT4mZ3Q7PC9zcGFuPiB3cm90ZTo8YnI+PGJsb2NrcXVvdGUg Y2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6 MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+CgoKCgo8ZGl2IGRpcj0ibHRyIj4KPGRp diBpZD0ibV8tNDg3MzI0NjA5NTE3Mzk2ODIyNGRpdnRhZ2RlZmF1bHR3cmFwcGVyIiBzdHlsZT0i Zm9udC1zaXplOjEycHQ7Y29sb3I6IzAwMDAwMDtmb250LWZhbWlseTpDYWxpYnJpLEFyaWFsLEhl bHZldGljYSxzYW5zLXNlcmlmIiBkaXI9Imx0ciI+CjxwPkhleSBHdXlzLDwvcD4KPHA+PGJyPgo8 L3A+CjxwPkkgYW0gbmV3YmllIHRvIG92aXJ0LCBhbmQgd2FudGVkIHRvIGNvbmZpcm0gd2hhdHMg dGhlIGJlc3Qgd2F5IHRvIGxldmVyYWdlIHNuYXBzaG90LCBjbG9uZSBmZWF0dXJlc8KgPC9wPgo8 cD5wcm92aWRlZCBieSB0aGUgZGF0YXN0b3JlIGZpbGVzeXN0ZW0uPC9wPgo8cD5JIGhhdmUgYSBi dHJmcyBkYXRhc3RvcmUgZXhwb3J0ZWTCoGFuZCB3YW50ZWQgdXNlIGJ0cmZzIHNuYXBzaG90cyBm b3Igdm0gc25hcHNob3QgJmFtcDsgY2xvbmVzLjwvcD4KPHA+RG9lcyBvdmlydCBvZmZlcnMgYW55 IGhvb2tzL0FQSXMgc28gdGhhdCBpbWFnZSBzbmFwc2hvdHMgYXJlIGNyZWF0ZWQgYnkgdGhlIGZp bGVzeXN0ZW0/PC9wPgo8cD48YnI+CjwvcD4KPHA+VGhhbmtzICZhbXA7IFJlZ2FyZHMsPC9wPgo8 cD5EZWVwYWs8L3A+CjxwPsKgPC9wPgo8L2Rpdj4KPC9kaXY+Cgo8YnI+X19fX19fX19fX19fX19f X19fX19fX19fX19fX19fPHdicj5fX19fX19fX19fX19fX19fXzxicj4KRGV2ZWwgbWFpbGluZyBs aXN0PGJyPgo8YSBocmVmPSJtYWlsdG86RGV2ZWxAb3ZpcnQub3JnIj5EZXZlbEBvdmlydC5vcmc8 L2E+PGJyPgo8YSBocmVmPSJodHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8v ZGV2ZWwiIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9saXN0cy5vdmly dC5vcmcvPHdicj5tYWlsbWFuL2xpc3RpbmZvL2RldmVsPC9hPjxicj48L2Jsb2NrcXVvdGU+PC9k aXY+PGJyPjwvZGl2Pgo= --===============3766136035862255652==-- From deepak.jagtap at maxta.com Tue Jun 6 22:37:06 2017 Content-Type: multipart/mixed; boundary="===============9217416582561519642==" MIME-Version: 1.0 From: Deepak Jagtap To: devel at ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore Date: Tue, 06 Jun 2017 22:37:03 +0000 Message-ID: In-Reply-To: CADgXf3yVV0LQya_V06mB1XuzwCnUnQR3cTq9mjbO_d====TcEQ@mail.gmail.com --===============9217416582561519642== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable --_000_DM5PR11MB1657164B114E44AEAF747A8EEDCB0DM5PR11MB1657namp_ Content-Type: text/plain; charset=3D"us-ascii" Content-Transfer-Encoding: quoted-printable Thanks Allon! Best Regards, Deepak ________________________________ From: Allon Mureinik Sent: Tuesday, June 6, 2017 2:43:17 PM To: Deepak Jagtap Cc: devel(a)ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore Unfortunately, there's no such integration point at the moment. On Tue, Jun 6, 2017 at 5:57 AM, Deepak Jagtap > wrote: Hey Guys, I am newbie to ovirt, and wanted to confirm whats the best way to leverage = =3D snapshot, clone features provided by the datastore filesystem. I have a btrfs datastore exported and wanted use btrfs snapshots for vm sna= =3D pshot & clones. Does ovirt offers any hooks/APIs so that image snapshots are created by the= =3D filesystem? Thanks & Regards, Deepak _______________________________________________ Devel mailing list Devel(a)ovirt.org http://lists.ovirt.org/mailman/listinfo/devel --_000_DM5PR11MB1657164B114E44AEAF747A8EEDCB0DM5PR11MB1657namp_ Content-Type: text/html; charset=3D"us-ascii" Content-Transfer-Encoding: quoted-printable

Thanks Allon!


Best Regards,

Deepak


From: Allon Mureinik &l= t;am=3D ureini(a)redhat.com>
Sent: Tuesday, June 6, 2017 2:43:17 PM
To: Deepak Jagtap
Cc: devel(a)ovirt.org
Subject: Re: [ovirt-devel] Snapshots & clone support from datast= =3D ore
 
= Unfo=3D rtunately, there's no such integration point at the moment.

On Tue, Jun 6, 2017 at 5:57 AM, Deepak Jagtap = <deep= ak.jag=3D tap(a)maxta.com> wrote:

Hey Guys,


I am newbie to ovirt, and wanted to confirm whats the best way to levera= =3D ge snapshot, clone features 

provided by the datastore filesystem.

I have a btrfs datastore exported and wanted use btrfs snapshots fo= =3D r vm snapshot & clones.

Does ovirt offers any hooks/APIs so that image snapshots are created by = =3D the filesystem?


Thanks & Regards,

Deepak

 


_______________________________________________
Devel mailing list
Devel(a)ovirt.org
http://lists.ovirt.org/mailman/listinfo/devel<=3D br>

--_000_DM5PR11MB1657164B114E44AEAF747A8EEDCB0DM5PR11MB1657namp_-- --===============9217416582561519642== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS1fMDAwX0RNNVBSMTFNQjE2NTcxNjRCMTE0RTQ0QUVBRjc0N0E4RUVEQ0IwRE01UFIxMU1CMTY1 N25hbXBfCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiCkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKClRoYW5rcyBBbGxvbiEKCgpC ZXN0IFJlZ2FyZHMsCgpEZWVwYWsKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZy b206IEFsbG9uIE11cmVpbmlrIDxhbXVyZWluaUByZWRoYXQuY29tPgpTZW50OiBUdWVzZGF5LCBK dW5lIDYsIDIwMTcgMjo0MzoxNyBQTQpUbzogRGVlcGFrIEphZ3RhcApDYzogZGV2ZWxAb3ZpcnQu b3JnClN1YmplY3Q6IFJlOiBbb3ZpcnQtZGV2ZWxdIFNuYXBzaG90cyAmIGNsb25lIHN1cHBvcnQg ZnJvbSBkYXRhc3RvcmUKClVuZm9ydHVuYXRlbHksIHRoZXJlJ3Mgbm8gc3VjaCBpbnRlZ3JhdGlv biBwb2ludCBhdCB0aGUgbW9tZW50LgoKT24gVHVlLCBKdW4gNiwgMjAxNyBhdCA1OjU3IEFNLCBE ZWVwYWsgSmFndGFwIDxkZWVwYWsuamFndGFwQG1heHRhLmNvbTxtYWlsPQp0bzpkZWVwYWsuamFn dGFwQG1heHRhLmNvbT4+IHdyb3RlOgoKSGV5IEd1eXMsCgoKSSBhbSBuZXdiaWUgdG8gb3ZpcnQs IGFuZCB3YW50ZWQgdG8gY29uZmlybSB3aGF0cyB0aGUgYmVzdCB3YXkgdG8gbGV2ZXJhZ2UgPQpz bmFwc2hvdCwgY2xvbmUgZmVhdHVyZXMKCnByb3ZpZGVkIGJ5IHRoZSBkYXRhc3RvcmUgZmlsZXN5 c3RlbS4KCkkgaGF2ZSBhIGJ0cmZzIGRhdGFzdG9yZSBleHBvcnRlZCBhbmQgd2FudGVkIHVzZSBi dHJmcyBzbmFwc2hvdHMgZm9yIHZtIHNuYT0KcHNob3QgJiBjbG9uZXMuCgpEb2VzIG92aXJ0IG9m ZmVycyBhbnkgaG9va3MvQVBJcyBzbyB0aGF0IGltYWdlIHNuYXBzaG90cyBhcmUgY3JlYXRlZCBi eSB0aGU9CiBmaWxlc3lzdGVtPwoKClRoYW5rcyAmIFJlZ2FyZHMsCgpEZWVwYWsKCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGV2ZWwgbWFpbGluZyBs aXN0CkRldmVsQG92aXJ0Lm9yZzxtYWlsdG86RGV2ZWxAb3ZpcnQub3JnPgpodHRwOi8vbGlzdHMu b3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vZGV2ZWwKCgotLV8wMDBfRE01UFIxMU1CMTY1NzE2 NEIxMTRFNDRBRUFGNzQ3QThFRURDQjBETTVQUjExTUIxNjU3bmFtcF8KQ29udGVudC1UeXBlOiB0 ZXh0L2h0bWw7IGNoYXJzZXQ9InVzLWFzY2lpIgpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBx dW90ZWQtcHJpbnRhYmxlCgo8aHRtbD4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9M0QiQ29udGVu dC1UeXBlIiBjb250ZW50PTNEInRleHQvaHRtbDsgY2hhcnNldD0zRHVzLWFzY2lpIj0KPgo8L2hl YWQ+Cjxib2R5Pgo8c3R5bGUgdHlwZT0zRCJ0ZXh0L2NzcyIgc3R5bGU9M0QiZGlzcGxheTpub25l OyI+PCEtLSBQIHttYXJnaW4tdG9wOjA7bWFyZ2k9Cm4tYm90dG9tOjA7fSAtLT48L3N0eWxlPgo8 ZGl2IGlkPTNEImRpdnRhZ2RlZmF1bHR3cmFwcGVyIiBzdHlsZT0zRCJmb250LXNpemU6MTJwdDtj b2xvcjojMDAwMDAwO2ZvbnQ9Ci1mYW1pbHk6Q2FsaWJyaSxBcmlhbCxIZWx2ZXRpY2Esc2Fucy1z ZXJpZjsiIGRpcj0zRCJsdHIiPgo8cD5UaGFua3MgQWxsb24hPC9wPgo8cD48YnI+CjwvcD4KPHA+ QmVzdCBSZWdhcmRzLDwvcD4KPHA+RGVlcGFrPC9wPgo8L2Rpdj4KPGhyIHN0eWxlPTNEImRpc3Bs YXk6aW5saW5lLWJsb2NrO3dpZHRoOjk4JSIgdGFiaW5kZXg9M0QiLTEiPgo8ZGl2IGlkPTNEImRp dlJwbHlGd2RNc2ciIGRpcj0zRCJsdHIiPjxmb250IGZhY2U9M0QiQ2FsaWJyaSwgc2Fucy1zZXJp ZiIgc3Q9CnlsZT0zRCJmb250LXNpemU6MTFwdCIgY29sb3I9M0QiIzAwMDAwMCI+PGI+RnJvbTo8 L2I+IEFsbG9uIE11cmVpbmlrICZsdDthbT0KdXJlaW5pQHJlZGhhdC5jb20mZ3Q7PGJyPgo8Yj5T ZW50OjwvYj4gVHVlc2RheSwgSnVuZSA2LCAyMDE3IDI6NDM6MTcgUE08YnI+CjxiPlRvOjwvYj4g RGVlcGFrIEphZ3RhcDxicj4KPGI+Q2M6PC9iPiBkZXZlbEBvdmlydC5vcmc8YnI+CjxiPlN1Ympl Y3Q6PC9iPiBSZTogW292aXJ0LWRldmVsXSBTbmFwc2hvdHMgJmFtcDsgY2xvbmUgc3VwcG9ydCBm cm9tIGRhdGFzdD0Kb3JlPC9mb250Pgo8ZGl2PiZuYnNwOzwvZGl2Pgo8L2Rpdj4KPGRpdj4KPGRp diBkaXI9M0QibHRyIj4KPGRpdiBjbGFzcz0zRCJnbWFpbF9kZWZhdWx0IiBzdHlsZT0zRCJmb250 LWZhbWlseTptb25vc3BhY2UsbW9ub3NwYWNlIj5VbmZvPQpydHVuYXRlbHksIHRoZXJlJ3Mgbm8g c3VjaCBpbnRlZ3JhdGlvbiBwb2ludCBhdCB0aGUgbW9tZW50LjwvZGl2Pgo8L2Rpdj4KPGRpdiBj bGFzcz0zRCJnbWFpbF9leHRyYSI+PGJyPgo8ZGl2IGNsYXNzPTNEImdtYWlsX3F1b3RlIj5PbiBU dWUsIEp1biA2LCAyMDE3IGF0IDU6NTcgQU0sIERlZXBhayBKYWd0YXAgPHM9CnBhbiBkaXI9M0Qi bHRyIj4KJmx0OzxhIGhyZWY9M0QibWFpbHRvOmRlZXBhay5qYWd0YXBAbWF4dGEuY29tIiB0YXJn ZXQ9M0QiX2JsYW5rIj5kZWVwYWsuamFnPQp0YXBAbWF4dGEuY29tPC9hPiZndDs8L3NwYW4+IHdy b3RlOjxicj4KPGJsb2NrcXVvdGUgY2xhc3M9M0QiZ21haWxfcXVvdGUiIHN0eWxlPTNEIm1hcmdp bjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFwPQp4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFl eCI+CjxkaXYgZGlyPTNEImx0ciI+CjxkaXYgaWQ9M0QibV8tNDg3MzI0NjA5NTE3Mzk2ODIyNGRp dnRhZ2RlZmF1bHR3cmFwcGVyIiBzdHlsZT0zRCJmb250LXNpemU6MT0KMnB0O2NvbG9yOiMwMDAw MDA7Zm9udC1mYW1pbHk6Q2FsaWJyaSxBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZiIgZGlyPTNE Imx0PQpyIj4KPHA+SGV5IEd1eXMsPC9wPgo8cD48YnI+CjwvcD4KPHA+SSBhbSBuZXdiaWUgdG8g b3ZpcnQsIGFuZCB3YW50ZWQgdG8gY29uZmlybSB3aGF0cyB0aGUgYmVzdCB3YXkgdG8gbGV2ZXJh PQpnZSBzbmFwc2hvdCwgY2xvbmUgZmVhdHVyZXMmbmJzcDs8L3A+CjxwPnByb3ZpZGVkIGJ5IHRo ZSBkYXRhc3RvcmUgZmlsZXN5c3RlbS48L3A+CjxwPkkgaGF2ZSBhIGJ0cmZzIGRhdGFzdG9yZSBl eHBvcnRlZCZuYnNwO2FuZCB3YW50ZWQgdXNlIGJ0cmZzIHNuYXBzaG90cyBmbz0KciB2bSBzbmFw c2hvdCAmYW1wOyBjbG9uZXMuPC9wPgo8cD5Eb2VzIG92aXJ0IG9mZmVycyBhbnkgaG9va3MvQVBJ cyBzbyB0aGF0IGltYWdlIHNuYXBzaG90cyBhcmUgY3JlYXRlZCBieSA9CnRoZSBmaWxlc3lzdGVt PzwvcD4KPHA+PGJyPgo8L3A+CjxwPlRoYW5rcyAmYW1wOyBSZWdhcmRzLDwvcD4KPHA+RGVlcGFr PC9wPgo8cD4mbmJzcDs8L3A+CjwvZGl2Pgo8L2Rpdj4KPGJyPgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX188d2JyPl9fX19fX19fX19fX19fX19fPGJyPgpEZXZlbCBtYWlsaW5nIGxpc3Q8 YnI+CjxhIGhyZWY9M0QibWFpbHRvOkRldmVsQG92aXJ0Lm9yZyI+RGV2ZWxAb3ZpcnQub3JnPC9h Pjxicj4KPGEgaHJlZj0zRCJodHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8v ZGV2ZWwiIHJlbD0zRCJub3JlZmVycmVyPQoiIHRhcmdldD0zRCJfYmxhbmsiPmh0dHA6Ly9saXN0 cy5vdmlydC5vcmcvPHdicj5tYWlsbWFuL2xpc3RpbmZvL2RldmVsPC9hPjw9CmJyPgo8L2Jsb2Nr cXVvdGU+CjwvZGl2Pgo8YnI+CjwvZGl2Pgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+CgotLV8wMDBf RE01UFIxMU1CMTY1NzE2NEIxMTRFNDRBRUFGNzQ3QThFRURDQjBETTVQUjExTUIxNjU3bmFtcF8t LQo= --===============9217416582561519642==-- From deepak.jagtap at maxta.com Tue Jun 20 20:34:34 2017 Content-Type: multipart/mixed; boundary="===============7275868301803294673==" MIME-Version: 1.0 From: Deepak Jagtap To: devel at ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore Date: Tue, 20 Jun 2017 19:01:21 +0000 Message-ID: In-Reply-To: DM5PR11MB1657164B114E44AEAF747A8EEDCB0@DM5PR11MB1657.namprd11.prod.outlook.com --===============7275868301803294673== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable --_000_MWHPR11MB1663F5706A4201A33C8C7759EDC50MWHPR11MB1663namp_ Content-Type: text/plain; charset=3D"us-ascii" Content-Transfer-Encoding: quoted-printable Hi Allon, After going through current vdsm code base, noticed that after taking a sna= =3D pshot vm starts referring the newly created qcow image/volume. For internal snapshots which are not qcow is it configurable somehow so th= =3D at vm continues doing writes to same base image? Thanks & Regards, Deepak ________________________________ From: Deepak Jagtap Sent: Tuesday, June 6, 2017 3:37:03 PM To: Allon Mureinik Cc: devel(a)ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore Thanks Allon! Best Regards, Deepak ________________________________ From: Allon Mureinik Sent: Tuesday, June 6, 2017 2:43:17 PM To: Deepak Jagtap Cc: devel(a)ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore Unfortunately, there's no such integration point at the moment. On Tue, Jun 6, 2017 at 5:57 AM, Deepak Jagtap > wrote: Hey Guys, I am newbie to ovirt, and wanted to confirm whats the best way to leverage = =3D snapshot, clone features provided by the datastore filesystem. I have a btrfs datastore exported and wanted use btrfs snapshots for vm sna= =3D pshot & clones. Does ovirt offers any hooks/APIs so that image snapshots are created by the= =3D filesystem? Thanks & Regards, Deepak _______________________________________________ Devel mailing list Devel(a)ovirt.org http://lists.ovirt.org/mailman/listinfo/devel --_000_MWHPR11MB1663F5706A4201A33C8C7759EDC50MWHPR11MB1663namp_ Content-Type: text/html; charset=3D"us-ascii" Content-Transfer-Encoding: quoted-printable

Hi Allon,


After going through current vdsm code base, noticed that after= =3D taking a snapshot vm starts referring the newly created qcow image/volume.= =3D

For internal snapshots which are not qcow  is it configurable = =3D somehow so that vm continues doing writes to same base image?


Thanks & Regards,

Deepak


From: Deepak Jagtap
Sent: Tuesday, June 6, 2017 3:37:03 PM
To: Allon Mureinik
Cc: devel(a)ovirt.org
Subject: Re: [ovirt-devel] Snapshots & clone support from datast= =3D ore
 

Thanks Allon!


Best Regards,

Deepak


From: Allon Mureinik &l= t;am=3D ureini(a)redhat.com>
Sent: Tuesday, June 6, 2017 2:43:17 PM
To: Deepak Jagtap
Cc: devel(a)ovirt.org
Subject: Re: [ovirt-devel] Snapshots & clone support from datast= =3D ore
 
= Unfo=3D rtunately, there's no such integration point at the moment.

On Tue, Jun 6, 2017 at 5:57 AM, Deepak Jagtap = <deep= ak.jag=3D tap(a)maxta.com> wrote:

Hey Guys,


I am newbie to ovirt, and wanted to confirm whats the best way to levera= =3D ge snapshot, clone features 

provided by the datastore filesystem.

I have a btrfs datastore exported and wanted use btrfs snapshots fo= =3D r vm snapshot & clones.

Does ovirt offers any hooks/APIs so that image snapshots are created by = =3D the filesystem?


Thanks & Regards,

Deepak

 


_______________________________________________
Devel mailing list
Devel(a)ovirt.org
http://lists.ovirt.org/mailman/listinfo/devel<=3D br>

--_000_MWHPR11MB1663F5706A4201A33C8C7759EDC50MWHPR11MB1663namp_-- --===============7275868301803294673== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS1fMDAwX01XSFBSMTFNQjE2NjNGNTcwNkE0MjAxQTMzQzhDNzc1OUVEQzUwTVdIUFIxMU1CMTY2 M25hbXBfCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiCkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKCkhpIEFsbG9uLAoKCkFmdGVy IGdvaW5nIHRocm91Z2ggY3VycmVudCB2ZHNtIGNvZGUgYmFzZSwgbm90aWNlZCB0aGF0IGFmdGVy IHRha2luZyBhIHNuYT0KcHNob3Qgdm0gc3RhcnRzIHJlZmVycmluZyB0aGUgbmV3bHkgY3JlYXRl ZCBxY293IGltYWdlL3ZvbHVtZS4KCkZvciBpbnRlcm5hbCBzbmFwc2hvdHMgd2hpY2ggYXJlIG5v dCBxY293ICBpcyBpdCBjb25maWd1cmFibGUgc29tZWhvdyBzbyB0aD0KYXQgdm0gY29udGludWVz IGRvaW5nIHdyaXRlcyB0byBzYW1lIGJhc2UgaW1hZ2U/CgoKVGhhbmtzICYgUmVnYXJkcywKCkRl ZXBhawoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJvbTogRGVlcGFrIEphZ3Rh cApTZW50OiBUdWVzZGF5LCBKdW5lIDYsIDIwMTcgMzozNzowMyBQTQpUbzogQWxsb24gTXVyZWlu aWsKQ2M6IGRldmVsQG92aXJ0Lm9yZwpTdWJqZWN0OiBSZTogW292aXJ0LWRldmVsXSBTbmFwc2hv dHMgJiBjbG9uZSBzdXBwb3J0IGZyb20gZGF0YXN0b3JlCgoKVGhhbmtzIEFsbG9uIQoKCkJlc3Qg UmVnYXJkcywKCkRlZXBhawoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJvbTog QWxsb24gTXVyZWluaWsgPGFtdXJlaW5pQHJlZGhhdC5jb20+ClNlbnQ6IFR1ZXNkYXksIEp1bmUg NiwgMjAxNyAyOjQzOjE3IFBNClRvOiBEZWVwYWsgSmFndGFwCkNjOiBkZXZlbEBvdmlydC5vcmcK U3ViamVjdDogUmU6IFtvdmlydC1kZXZlbF0gU25hcHNob3RzICYgY2xvbmUgc3VwcG9ydCBmcm9t IGRhdGFzdG9yZQoKVW5mb3J0dW5hdGVseSwgdGhlcmUncyBubyBzdWNoIGludGVncmF0aW9uIHBv aW50IGF0IHRoZSBtb21lbnQuCgpPbiBUdWUsIEp1biA2LCAyMDE3IGF0IDU6NTcgQU0sIERlZXBh ayBKYWd0YXAgPGRlZXBhay5qYWd0YXBAbWF4dGEuY29tPG1haWw9CnRvOmRlZXBhay5qYWd0YXBA bWF4dGEuY29tPj4gd3JvdGU6CgpIZXkgR3V5cywKCgpJIGFtIG5ld2JpZSB0byBvdmlydCwgYW5k IHdhbnRlZCB0byBjb25maXJtIHdoYXRzIHRoZSBiZXN0IHdheSB0byBsZXZlcmFnZSA9CnNuYXBz aG90LCBjbG9uZSBmZWF0dXJlcwoKcHJvdmlkZWQgYnkgdGhlIGRhdGFzdG9yZSBmaWxlc3lzdGVt LgoKSSBoYXZlIGEgYnRyZnMgZGF0YXN0b3JlIGV4cG9ydGVkIGFuZCB3YW50ZWQgdXNlIGJ0cmZz IHNuYXBzaG90cyBmb3Igdm0gc25hPQpwc2hvdCAmIGNsb25lcy4KCkRvZXMgb3ZpcnQgb2ZmZXJz IGFueSBob29rcy9BUElzIHNvIHRoYXQgaW1hZ2Ugc25hcHNob3RzIGFyZSBjcmVhdGVkIGJ5IHRo ZT0KIGZpbGVzeXN0ZW0/CgoKVGhhbmtzICYgUmVnYXJkcywKCkRlZXBhawoKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZXZlbCBtYWlsaW5nIGxpc3QK RGV2ZWxAb3ZpcnQub3JnPG1haWx0bzpEZXZlbEBvdmlydC5vcmc+Cmh0dHA6Ly9saXN0cy5vdmly dC5vcmcvbWFpbG1hbi9saXN0aW5mby9kZXZlbAoKCi0tXzAwMF9NV0hQUjExTUIxNjYzRjU3MDZB NDIwMUEzM0M4Qzc3NTlFREM1ME1XSFBSMTFNQjE2NjNuYW1wXwpDb250ZW50LVR5cGU6IHRleHQv aHRtbDsgY2hhcnNldD0idXMtYXNjaWkiCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3Rl ZC1wcmludGFibGUKCjxodG1sPgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0zRCJDb250ZW50LVR5 cGUiIGNvbnRlbnQ9M0QidGV4dC9odG1sOyBjaGFyc2V0PTNEdXMtYXNjaWkiPQo+CjwvaGVhZD4K PGJvZHk+CjxzdHlsZSB0eXBlPTNEInRleHQvY3NzIiBzdHlsZT0zRCJkaXNwbGF5Om5vbmU7Ij48 IS0tIFAge21hcmdpbi10b3A6MDttYXJnaT0Kbi1ib3R0b206MDt9IC0tPjwvc3R5bGU+CjxkaXYg aWQ9M0QiZGl2dGFnZGVmYXVsdHdyYXBwZXIiIHN0eWxlPTNEImZvbnQtc2l6ZToxMnB0O2NvbG9y OiMwMDAwMDA7Zm9udD0KLWZhbWlseTpDYWxpYnJpLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlm OyIgZGlyPTNEImx0ciI+CjxwPkhpIEFsbG9uLDwvcD4KPHA+PGJyPgo8L3A+CjxwPkFmdGVyIGdv aW5nIHRocm91Z2gmbmJzcDtjdXJyZW50IHZkc20mbmJzcDtjb2RlIGJhc2UsIG5vdGljZWQgdGhh dCBhZnRlcj0KIHRha2luZyBhIHNuYXBzaG90IHZtIHN0YXJ0cyByZWZlcnJpbmcgdGhlIG5ld2x5 IGNyZWF0ZWQgcWNvdyBpbWFnZS92b2x1bWUuPQo8L3A+CjxwPkZvciBpbnRlcm5hbCBzbmFwc2hv dHMgd2hpY2ggYXJlIG5vdCBxY293ICZuYnNwO2lzIGl0Jm5ic3A7Y29uZmlndXJhYmxlID0Kc29t ZWhvdyZuYnNwO3NvIHRoYXQgdm0gY29udGludWVzIGRvaW5nIHdyaXRlcyB0byBzYW1lIGJhc2Ug aW1hZ2U/PC9wPgo8cD48YnI+CjwvcD4KPHA+VGhhbmtzICZhbXA7IFJlZ2FyZHMsPC9wPgo8cD5E ZWVwYWs8L3A+CjwvZGl2Pgo8aHIgc3R5bGU9M0QiZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6 OTglIiB0YWJpbmRleD0zRCItMSI+CjxkaXYgaWQ9M0QiZGl2UnBseUZ3ZE1zZyIgZGlyPTNEImx0 ciI+PGZvbnQgZmFjZT0zRCJDYWxpYnJpLCBzYW5zLXNlcmlmIiBzdD0KeWxlPTNEImZvbnQtc2l6 ZToxMXB0IiBjb2xvcj0zRCIjMDAwMDAwIj48Yj5Gcm9tOjwvYj4gRGVlcGFrIEphZ3RhcDxicj4K PGI+U2VudDo8L2I+IFR1ZXNkYXksIEp1bmUgNiwgMjAxNyAzOjM3OjAzIFBNPGJyPgo8Yj5Ubzo8 L2I+IEFsbG9uIE11cmVpbmlrPGJyPgo8Yj5DYzo8L2I+IGRldmVsQG92aXJ0Lm9yZzxicj4KPGI+ U3ViamVjdDo8L2I+IFJlOiBbb3ZpcnQtZGV2ZWxdIFNuYXBzaG90cyAmYW1wOyBjbG9uZSBzdXBw b3J0IGZyb20gZGF0YXN0PQpvcmU8L2ZvbnQ+CjxkaXY+Jm5ic3A7PC9kaXY+CjwvZGl2Pgo8ZGl2 PjxzdHlsZSB0eXBlPTNEInRleHQvY3NzIiBzdHlsZT0zRCJkaXNwbGF5Om5vbmU7Ij48IS0tIFAg e21hcmdpbi10b3A6MDs9Cm1hcmdpbi1ib3R0b206MDt9IC0tPjwvc3R5bGU+CjxkaXYgaWQ9M0Qi ZGl2dGFnZGVmYXVsdHdyYXBwZXIiIHN0eWxlPTNEImZvbnQtc2l6ZToxMnB0O2NvbG9yOiMwMDAw MDA7Zm9udD0KLWZhbWlseTpDYWxpYnJpLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmOyIgZGly PTNEImx0ciI+CjxwPlRoYW5rcyBBbGxvbiE8L3A+CjxwPjxicj4KPC9wPgo8cD5CZXN0IFJlZ2Fy ZHMsPC9wPgo8cD5EZWVwYWs8L3A+CjwvZGl2Pgo8aHIgc3R5bGU9M0QiZGlzcGxheTppbmxpbmUt YmxvY2s7d2lkdGg6OTglIiB0YWJpbmRleD0zRCItMSI+CjxkaXYgaWQ9M0QiZGl2UnBseUZ3ZE1z ZyIgZGlyPTNEImx0ciI+PGZvbnQgZmFjZT0zRCJDYWxpYnJpLCBzYW5zLXNlcmlmIiBzdD0KeWxl PTNEImZvbnQtc2l6ZToxMXB0IiBjb2xvcj0zRCIjMDAwMDAwIj48Yj5Gcm9tOjwvYj4gQWxsb24g TXVyZWluaWsgJmx0O2FtPQp1cmVpbmlAcmVkaGF0LmNvbSZndDs8YnI+CjxiPlNlbnQ6PC9iPiBU dWVzZGF5LCBKdW5lIDYsIDIwMTcgMjo0MzoxNyBQTTxicj4KPGI+VG86PC9iPiBEZWVwYWsgSmFn dGFwPGJyPgo8Yj5DYzo8L2I+IGRldmVsQG92aXJ0Lm9yZzxicj4KPGI+U3ViamVjdDo8L2I+IFJl OiBbb3ZpcnQtZGV2ZWxdIFNuYXBzaG90cyAmYW1wOyBjbG9uZSBzdXBwb3J0IGZyb20gZGF0YXN0 PQpvcmU8L2ZvbnQ+CjxkaXY+Jm5ic3A7PC9kaXY+CjwvZGl2Pgo8ZGl2Pgo8ZGl2IGRpcj0zRCJs dHIiPgo8ZGl2IGNsYXNzPTNEImdtYWlsX2RlZmF1bHQiIHN0eWxlPTNEImZvbnQtZmFtaWx5Om1v bm9zcGFjZSxtb25vc3BhY2UiPlVuZm89CnJ0dW5hdGVseSwgdGhlcmUncyBubyBzdWNoIGludGVn cmF0aW9uIHBvaW50IGF0IHRoZSBtb21lbnQuPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPTNEImdt YWlsX2V4dHJhIj48YnI+CjxkaXYgY2xhc3M9M0QiZ21haWxfcXVvdGUiPk9uIFR1ZSwgSnVuIDYs IDIwMTcgYXQgNTo1NyBBTSwgRGVlcGFrIEphZ3RhcCA8cz0KcGFuIGRpcj0zRCJsdHIiPgombHQ7 PGEgaHJlZj0zRCJtYWlsdG86ZGVlcGFrLmphZ3RhcEBtYXh0YS5jb20iIHRhcmdldD0zRCJfYmxh bmsiPmRlZXBhay5qYWc9CnRhcEBtYXh0YS5jb208L2E+Jmd0Ozwvc3Bhbj4gd3JvdGU6PGJyPgo8 YmxvY2txdW90ZSBjbGFzcz0zRCJnbWFpbF9xdW90ZSIgc3R5bGU9M0QibWFyZ2luOjAgMCAwIC44 ZXg7Ym9yZGVyLWxlZnQ6MXA9CnggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4KPGRpdiBk aXI9M0QibHRyIj4KPGRpdiBpZD0zRCJtXy00ODczMjQ2MDk1MTczOTY4MjI0ZGl2dGFnZGVmYXVs dHdyYXBwZXIiIHN0eWxlPTNEImZvbnQtc2l6ZToxPQoycHQ7Y29sb3I6IzAwMDAwMDtmb250LWZh bWlseTpDYWxpYnJpLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmIiBkaXI9M0QibHQ9CnIiPgo8 cD5IZXkgR3V5cyw8L3A+CjxwPjxicj4KPC9wPgo8cD5JIGFtIG5ld2JpZSB0byBvdmlydCwgYW5k IHdhbnRlZCB0byBjb25maXJtIHdoYXRzIHRoZSBiZXN0IHdheSB0byBsZXZlcmE9CmdlIHNuYXBz aG90LCBjbG9uZSBmZWF0dXJlcyZuYnNwOzwvcD4KPHA+cHJvdmlkZWQgYnkgdGhlIGRhdGFzdG9y ZSBmaWxlc3lzdGVtLjwvcD4KPHA+SSBoYXZlIGEgYnRyZnMgZGF0YXN0b3JlIGV4cG9ydGVkJm5i c3A7YW5kIHdhbnRlZCB1c2UgYnRyZnMgc25hcHNob3RzIGZvPQpyIHZtIHNuYXBzaG90ICZhbXA7 IGNsb25lcy48L3A+CjxwPkRvZXMgb3ZpcnQgb2ZmZXJzIGFueSBob29rcy9BUElzIHNvIHRoYXQg aW1hZ2Ugc25hcHNob3RzIGFyZSBjcmVhdGVkIGJ5ID0KdGhlIGZpbGVzeXN0ZW0/PC9wPgo8cD48 YnI+CjwvcD4KPHA+VGhhbmtzICZhbXA7IFJlZ2FyZHMsPC9wPgo8cD5EZWVwYWs8L3A+CjxwPiZu YnNwOzwvcD4KPC9kaXY+CjwvZGl2Pgo8YnI+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xzx3YnI+X19fX19fX19fX19fX19fX188YnI+CkRldmVsIG1haWxpbmcgbGlzdDxicj4KPGEgaHJl Zj0zRCJtYWlsdG86RGV2ZWxAb3ZpcnQub3JnIj5EZXZlbEBvdmlydC5vcmc8L2E+PGJyPgo8YSBo cmVmPTNEImh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby9kZXZlbCIgcmVs PTNEIm5vcmVmZXJyZXI9CiIgdGFyZ2V0PTNEIl9ibGFuayI+aHR0cDovL2xpc3RzLm92aXJ0Lm9y Zy88d2JyPm1haWxtYW4vbGlzdGluZm8vZGV2ZWw8L2E+PD0KYnI+CjwvYmxvY2txdW90ZT4KPC9k aXY+Cjxicj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+CgotLV8wMDBfTVdI UFIxMU1CMTY2M0Y1NzA2QTQyMDFBMzNDOEM3NzU5RURDNTBNV0hQUjExTUIxNjYzbmFtcF8tLQo= --===============7275868301803294673==-- From amureini at redhat.com Wed Jun 21 02:59:04 2017 Content-Type: multipart/mixed; boundary="===============4402631659953374590==" MIME-Version: 1.0 From: Allon Mureinik To: devel at ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore Date: Wed, 21 Jun 2017 05:59:03 +0300 Message-ID: In-Reply-To: MWHPR11MB1663F5706A4201A33C8C7759EDC50@MWHPR11MB1663.namprd11.prod.outlook.com --===============4402631659953374590== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Not sure I understand the question. Could you give an example of what you mean perhpas? On Tue, Jun 20, 2017 at 10:01 PM, Deepak Jagtap wrote: > Hi Allon, > > > After going through current vdsm code base, noticed that after taking a > snapshot vm starts referring the newly created qcow image/volume. > > For internal snapshots which are not qcow is it configurable somehow so > that vm continues doing writes to same base image? > > > Thanks & Regards, > > Deepak > ------------------------------ > *From:* Deepak Jagtap > *Sent:* Tuesday, June 6, 2017 3:37:03 PM > *To:* Allon Mureinik > *Cc:* devel(a)ovirt.org > *Subject:* Re: [ovirt-devel] Snapshots & clone support from datastore > > > Thanks Allon! > > > Best Regards, > > Deepak > ------------------------------ > *From:* Allon Mureinik > *Sent:* Tuesday, June 6, 2017 2:43:17 PM > *To:* Deepak Jagtap > *Cc:* devel(a)ovirt.org > *Subject:* Re: [ovirt-devel] Snapshots & clone support from datastore > > Unfortunately, there's no such integration point at the moment. > > On Tue, Jun 6, 2017 at 5:57 AM, Deepak Jagtap > wrote: > >> Hey Guys, >> >> >> I am newbie to ovirt, and wanted to confirm whats the best way to >> leverage snapshot, clone features >> >> provided by the datastore filesystem. >> >> I have a btrfs datastore exported and wanted use btrfs snapshots for vm >> snapshot & clones. >> >> Does ovirt offers any hooks/APIs so that image snapshots are created by >> the filesystem? >> >> >> Thanks & Regards, >> >> Deepak >> >> >> >> _______________________________________________ >> Devel mailing list >> Devel(a)ovirt.org >> http://lists.ovirt.org/mailman/listinfo/devel >> > > --===============4402631659953374590== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGRpdiBkaXI9Imx0ciI+PGRpdiBjbGFzcz0iZ21haWxfZGVmYXVsdCIgc3R5bGU9ImZvbnQtZmFt aWx5Om1vbm9zcGFjZSxtb25vc3BhY2UiPk5vdCBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcXVlc3Rp b24uIENvdWxkIHlvdSBnaXZlIGFuIGV4YW1wbGXCoG9mIHdoYXQgeW91IG1lYW4gcGVyaHBhcz88 L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJnbWFpbF9leHRyYSI+PGJyPjxkaXYgY2xhc3M9ImdtYWls X3F1b3RlIj5PbiBUdWUsIEp1biAyMCwgMjAxNyBhdCAxMDowMSBQTSwgRGVlcGFrIEphZ3RhcCA8 c3BhbiBkaXI9Imx0ciI+Jmx0OzxhIGhyZWY9Im1haWx0bzpkZWVwYWsuamFndGFwQG1heHRhLmNv bSIgdGFyZ2V0PSJfYmxhbmsiPmRlZXBhay5qYWd0YXBAbWF4dGEuY29tPC9hPiZndDs8L3NwYW4+ IHdyb3RlOjxicj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46 MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4K CgoKPGRpdj4KCjxkaXYgaWQ9Im1fNTg5MTkzODc0MDcyMzgzNzEyN2RpdnRhZ2RlZmF1bHR3cmFw cGVyIiBzdHlsZT0iZm9udC1zaXplOjEycHQ7Y29sb3I6IzAwMDAwMDtmb250LWZhbWlseTpDYWxp YnJpLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmIiBkaXI9Imx0ciI+CjxwPkhpIEFsbG9uLDwv cD4KPHA+PGJyPgo8L3A+CjxwPkFmdGVyIGdvaW5nIHRocm91Z2jCoGN1cnJlbnQgdmRzbcKgY29k ZSBiYXNlLCBub3RpY2VkIHRoYXQgYWZ0ZXIgdGFraW5nIGEgc25hcHNob3Qgdm0gc3RhcnRzIHJl ZmVycmluZyB0aGUgbmV3bHkgY3JlYXRlZCBxY293IGltYWdlL3ZvbHVtZS48L3A+CjxwPkZvciBp bnRlcm5hbCBzbmFwc2hvdHMgd2hpY2ggYXJlIG5vdCBxY293IMKgaXMgaXTCoGNvbmZpZ3VyYWJs ZSBzb21laG93wqBzbyB0aGF0IHZtIGNvbnRpbnVlcyBkb2luZyB3cml0ZXMgdG8gc2FtZSBiYXNl IGltYWdlPzwvcD4KPHA+PGJyPgo8L3A+CjxwPlRoYW5rcyAmYW1wOyBSZWdhcmRzLDwvcD4KPHA+ RGVlcGFrPC9wPgo8L2Rpdj4KPGhyIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo5 OCUiPgo8ZGl2IGlkPSJtXzU4OTE5Mzg3NDA3MjM4MzcxMjdkaXZScGx5RndkTXNnIiBkaXI9Imx0 ciI+PGZvbnQgZmFjZT0iQ2FsaWJyaSwgc2Fucy1zZXJpZiIgc3R5bGU9ImZvbnQtc2l6ZToxMXB0 IiBjb2xvcj0iIzAwMDAwMCI+PGI+RnJvbTo8L2I+IERlZXBhayBKYWd0YXA8YnI+CjxiPlNlbnQ6 PC9iPiBUdWVzZGF5LCBKdW5lIDYsIDIwMTcgMzozNzowMyBQTTxicj4KPGI+VG86PC9iPiBBbGxv biBNdXJlaW5pazxzcGFuIGNsYXNzPSIiPjxicj4KPGI+Q2M6PC9iPiA8YSBocmVmPSJtYWlsdG86 ZGV2ZWxAb3ZpcnQub3JnIiB0YXJnZXQ9Il9ibGFuayI+ZGV2ZWxAb3ZpcnQub3JnPC9hPjxicj4K PGI+U3ViamVjdDo8L2I+IFJlOiBbb3ZpcnQtZGV2ZWxdIFNuYXBzaG90cyAmYW1wOyBjbG9uZSBz dXBwb3J0IGZyb20gZGF0YXN0b3JlPC9zcGFuPjwvZm9udD4KPGRpdj7CoDwvZGl2Pgo8L2Rpdj48 c3BhbiBjbGFzcz0iIj4KPGRpdj4KPGRpdiBpZD0ibV81ODkxOTM4NzQwNzIzODM3MTI3ZGl2dGFn ZGVmYXVsdHdyYXBwZXIiIHN0eWxlPSJmb250LXNpemU6MTJwdDtjb2xvcjojMDAwMDAwO2ZvbnQt ZmFtaWx5OkNhbGlicmksQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYiIGRpcj0ibHRyIj4KPHA+ VGhhbmtzIEFsbG9uITwvcD4KPHA+PGJyPgo8L3A+CjxwPkJlc3QgUmVnYXJkcyw8L3A+CjxwPkRl ZXBhazwvcD4KPC9kaXY+CjxociBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6OTgl Ij4KPGRpdiBpZD0ibV81ODkxOTM4NzQwNzIzODM3MTI3ZGl2UnBseUZ3ZE1zZyIgZGlyPSJsdHIi Pjxmb250IGZhY2U9IkNhbGlicmksIHNhbnMtc2VyaWYiIHN0eWxlPSJmb250LXNpemU6MTFwdCIg Y29sb3I9IiMwMDAwMDAiPjxiPkZyb206PC9iPiBBbGxvbiBNdXJlaW5payAmbHQ7PGEgaHJlZj0i bWFpbHRvOmFtdXJlaW5pQHJlZGhhdC5jb20iIHRhcmdldD0iX2JsYW5rIj5hbXVyZWluaUByZWRo YXQuY29tPC9hPiZndDs8YnI+CjxiPlNlbnQ6PC9iPiBUdWVzZGF5LCBKdW5lIDYsIDIwMTcgMjo0 MzoxNyBQTTxicj4KPGI+VG86PC9iPiBEZWVwYWsgSmFndGFwPGJyPgo8Yj5DYzo8L2I+IDxhIGhy ZWY9Im1haWx0bzpkZXZlbEBvdmlydC5vcmciIHRhcmdldD0iX2JsYW5rIj5kZXZlbEBvdmlydC5v cmc8L2E+PGJyPgo8Yj5TdWJqZWN0OjwvYj4gUmU6IFtvdmlydC1kZXZlbF0gU25hcHNob3RzICZh bXA7IGNsb25lIHN1cHBvcnQgZnJvbSBkYXRhc3RvcmU8L2ZvbnQ+CjxkaXY+wqA8L2Rpdj4KPC9k aXY+CjxkaXY+CjxkaXYgZGlyPSJsdHIiPgo8ZGl2IGNsYXNzPSJnbWFpbF9kZWZhdWx0IiBzdHls ZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlLG1vbm9zcGFjZSI+VW5mb3J0dW5hdGVseSwgdGhlcmUm IzM5O3Mgbm8gc3VjaCBpbnRlZ3JhdGlvbiBwb2ludCBhdCB0aGUgbW9tZW50LjwvZGl2Pgo8L2Rp dj4KPGRpdiBjbGFzcz0iZ21haWxfZXh0cmEiPjxicj4KPGRpdiBjbGFzcz0iZ21haWxfcXVvdGUi Pk9uIFR1ZSwgSnVuIDYsIDIwMTcgYXQgNTo1NyBBTSwgRGVlcGFrIEphZ3RhcCA8c3BhbiBkaXI9 Imx0ciI+CiZsdDs8YSBocmVmPSJtYWlsdG86ZGVlcGFrLmphZ3RhcEBtYXh0YS5jb20iIHRhcmdl dD0iX2JsYW5rIj5kZWVwYWsuamFndGFwQG1heHRhLmNvbTwvYT4mZ3Q7PC9zcGFuPiB3cm90ZTo8 YnI+CjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAu OGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPgo8ZGl2IGRp cj0ibHRyIj4KPGRpdiBpZD0ibV81ODkxOTM4NzQwNzIzODM3MTI3bV8tNDg3MzI0NjA5NTE3Mzk2 ODIyNGRpdnRhZ2RlZmF1bHR3cmFwcGVyIiBzdHlsZT0iZm9udC1zaXplOjEycHQ7Y29sb3I6IzAw MDAwMDtmb250LWZhbWlseTpDYWxpYnJpLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmIiBkaXI9 Imx0ciI+CjxwPkhleSBHdXlzLDwvcD4KPHA+PGJyPgo8L3A+CjxwPkkgYW0gbmV3YmllIHRvIG92 aXJ0LCBhbmQgd2FudGVkIHRvIGNvbmZpcm0gd2hhdHMgdGhlIGJlc3Qgd2F5IHRvIGxldmVyYWdl IHNuYXBzaG90LCBjbG9uZSBmZWF0dXJlc8KgPC9wPgo8cD5wcm92aWRlZCBieSB0aGUgZGF0YXN0 b3JlIGZpbGVzeXN0ZW0uPC9wPgo8cD5JIGhhdmUgYSBidHJmcyBkYXRhc3RvcmUgZXhwb3J0ZWTC oGFuZCB3YW50ZWQgdXNlIGJ0cmZzIHNuYXBzaG90cyBmb3Igdm0gc25hcHNob3QgJmFtcDsgY2xv bmVzLjwvcD4KPHA+RG9lcyBvdmlydCBvZmZlcnMgYW55IGhvb2tzL0FQSXMgc28gdGhhdCBpbWFn ZSBzbmFwc2hvdHMgYXJlIGNyZWF0ZWQgYnkgdGhlIGZpbGVzeXN0ZW0/PC9wPgo8cD48YnI+Cjwv cD4KPHA+VGhhbmtzICZhbXA7IFJlZ2FyZHMsPC9wPgo8cD5EZWVwYWs8L3A+CjxwPsKgPC9wPgo8 L2Rpdj4KPC9kaXY+Cjxicj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPHdicj5fX19f X19fX19fX19fX19fXzxicj4KRGV2ZWwgbWFpbGluZyBsaXN0PGJyPgo8YSBocmVmPSJtYWlsdG86 RGV2ZWxAb3ZpcnQub3JnIiB0YXJnZXQ9Il9ibGFuayI+RGV2ZWxAb3ZpcnQub3JnPC9hPjxicj4K PGEgaHJlZj0iaHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RldmVsIiBy ZWw9Im5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vbGlzdHMub3ZpcnQub3JnL21h aWxtYW48d2JyPi9saXN0aW5mby9kZXZlbDwvYT48YnI+CjwvYmxvY2txdW90ZT4KPC9kaXY+Cjxi cj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9zcGFuPjwvZGl2PgoKPC9ibG9ja3F1b3RlPjwvZGl2 Pjxicj48L2Rpdj4K --===============4402631659953374590==-- From deepak.jagtap at maxta.com Wed Jun 21 20:02:39 2017 Content-Type: multipart/mixed; boundary="===============3496073040068719392==" MIME-Version: 1.0 From: Deepak Jagtap To: devel at ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore Date: Wed, 21 Jun 2017 19:28:44 +0000 Message-ID: In-Reply-To: CADgXf3z3bBmDuWWJUpOJTYZ_tdk+0DmGP15qPEq5O3e=7Y30TA@mail.gmail.com --===============3496073040068719392== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable --_000_MWHPR11MB1663D3BF9B01DB6E1142AB1DEDDA0MWHPR11MB1663namp_ Content-Type: text/plain; charset=3D"us-ascii" Content-Transfer-Encoding: quoted-printable Hi Allon, I am trying to leverage snapshot capability of underlying filesystem. As per my understanding current snapshot works like this: Base Image(raw)--->snap1(qcow)->snap2(qcow), i.e after each snapshot vm sta= =3D rts writing on newly created qcow image. So in this case vm is going to do all new writes on snap2(qcow) voulme and = =3D will redirect read IOs to snap1 & Base image as required. But in my case snapshots created by the filesystem are read only and it's i= =3D n raw format. As a result after creating snapshot vm disk configuration won't change afte= =3D r taking snapshot but will continue doing writes on same base image. So snapshots will look like this: Base Image(raw)--->snap1(raw)->snap2(raw) Base Image will always remain writable, while the snapshots will remain rea= =3D d only raw format. Just wanted to confirm is this configurable so that vm continues referring= =3D base image after the snapshot instead of newly created qcow image? Thanks & Regards, Deepak ________________________________ From: Allon Mureinik Sent: Tuesday, June 20, 2017 7:59:03 PM To: Deepak Jagtap Cc: devel(a)ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore Not sure I understand the question. Could you give an example of what you m= =3D ean perhpas? On Tue, Jun 20, 2017 at 10:01 PM, Deepak Jagtap > wrote: Hi Allon, After going through current vdsm code base, noticed that after taking a sna= =3D pshot vm starts referring the newly created qcow image/volume. For internal snapshots which are not qcow is it configurable somehow so th= =3D at vm continues doing writes to same base image? Thanks & Regards, Deepak ________________________________ From: Deepak Jagtap Sent: Tuesday, June 6, 2017 3:37:03 PM To: Allon Mureinik Cc: devel(a)ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore Thanks Allon! Best Regards, Deepak ________________________________ From: Allon Mureinik > Sent: Tuesday, June 6, 2017 2:43:17 PM To: Deepak Jagtap Cc: devel(a)ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore Unfortunately, there's no such integration point at the moment. On Tue, Jun 6, 2017 at 5:57 AM, Deepak Jagtap > wrote: Hey Guys, I am newbie to ovirt, and wanted to confirm whats the best way to leverage = =3D snapshot, clone features provided by the datastore filesystem. I have a btrfs datastore exported and wanted use btrfs snapshots for vm sna= =3D pshot & clones. Does ovirt offers any hooks/APIs so that image snapshots are created by the= =3D filesystem? Thanks & Regards, Deepak _______________________________________________ Devel mailing list Devel(a)ovirt.org http://lists.ovirt.org/mailman/listinfo/devel --_000_MWHPR11MB1663D3BF9B01DB6E1142AB1DEDDA0MWHPR11MB1663namp_ Content-Type: text/html; charset=3D"us-ascii" Content-Transfer-Encoding: quoted-printable

Hi Allon,


I am trying to leverage snapshot  capability of underlying fil= =3D esystem.

As per my understanding current snaps= ho=3D t works like this:

Base Image(raw)--->snap1(qcow)->snap2(qcow), i.e after each s= =3D napshot vm starts writing on newly created qcow image.

So in this case vm is going to do all new writes on snap2(qcow) voulme a= =3D nd will redirect read IOs to snap1 & Base image as required.


But in my case snapshots created by the filesystem are read only and it'= =3D s in raw format.

As a result after creating snapshot vm disk configuration won't change a= =3D fter taking snapshot but will continue doing writes on same base image.

So snapshots will look like this:

Base Image(raw)--->snap1(raw)->snap2(raw)

Base Image will always remain writable, while the s= =3D napshots will remain read only raw format.


Just wanted to confirm is this configurable so that vm continues  r= =3D eferring base image after the snapshot instead of newly created qcow image?= =3D


Thanks & Regards,

Deepak




 


From: Allon Mureinik &l= t;am=3D ureini(a)redhat.com>
Sent: Tuesday, June 20, 2017 7:59:03 PM
To: Deepak Jagtap
Cc: devel(a)ovirt.org
Subject: Re: [ovirt-devel] Snapshots & clone support from datast= =3D ore
 
= Not =3D sure I understand the question. Could you give an example of what you = =3D mean perhpas?

On Tue, Jun 20, 2017 at 10:01 PM, Deepak Jagta= p =3D <deep= ak.jag=3D tap(a)maxta.com> wrote:

Hi Allon,


After going through current vdsm code base, noticed that after= =3D taking a snapshot vm starts referring the newly created qcow image/volume.= =3D

For internal snapshots which are not qcow  is it configurable = =3D somehow so that vm continues doing writes to same base image?


Thanks & Regards,

Deepak


From:<= /b> =3D Deepak Jagtap
Sent: Tuesday, June 6, 2017 3:37:03 PM
To: Allon Mureinik
Cc: devel= (a)ovirt=3D .org
Subject: Re: [ovirt-devel] Snapshots & clone support from datast= =3D ore
 

Thanks Allon!


Best Regards,

Deepak


From:<= /b> =3D Allon Mureinik <amureini(a)redhat.com>
Sent: Tuesday, June 6, 2017 2:43:17 PM
To: Deepak Jagtap
Cc: devel= (a)ovirt=3D .org
Subject: Re: [ovirt-devel] Snapshots & clone support from datast= =3D ore
 
= Unfo=3D rtunately, there's no such integration point at the moment.

On Tue, Jun 6, 2017 at 5:57 AM, Deepak Jagtap = <deep= ak.jag=3D tap(a)maxta.com> wrote:

Hey Guys,


I am newbie to ovirt, and wanted to confirm whats the best way to levera= =3D ge snapshot, clone features 

provided by the datastore filesystem.

I have a btrfs datastore exported and wanted use btrfs snapshots fo= =3D r vm snapshot & clones.

Does ovirt offers any hooks/APIs so that image snapshots are created by = =3D the filesystem?


Thanks & Regards,

Deepak

 


_______________________________________________
Devel mailing list
Devel(a)ovirt.or= g http://lists.ovirt.org/mailman/listinfo/devel<=3D br>


--_000_MWHPR11MB1663D3BF9B01DB6E1142AB1DEDDA0MWHPR11MB1663namp_-- --===============3496073040068719392== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS1fMDAwX01XSFBSMTFNQjE2NjNEM0JGOUIwMURCNkUxMTQyQUIxREVEREEwTVdIUFIxMU1CMTY2 M25hbXBfCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiCkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKCkhpIEFsbG9uLAoKCkkgYW0g dHJ5aW5nIHRvIGxldmVyYWdlIHNuYXBzaG90ICBjYXBhYmlsaXR5IG9mIHVuZGVybHlpbmcgZmls ZXN5c3RlbS4KCkFzIHBlciBteSB1bmRlcnN0YW5kaW5nIGN1cnJlbnQgc25hcHNob3Qgd29ya3Mg bGlrZSB0aGlzOgoKQmFzZSBJbWFnZShyYXcpLS0tPnNuYXAxKHFjb3cpLT5zbmFwMihxY293KSwg aS5lIGFmdGVyIGVhY2ggc25hcHNob3Qgdm0gc3RhPQpydHMgd3JpdGluZyBvbiBuZXdseSBjcmVh dGVkIHFjb3cgaW1hZ2UuCgpTbyBpbiB0aGlzIGNhc2Ugdm0gaXMgZ29pbmcgdG8gZG8gYWxsIG5l dyB3cml0ZXMgb24gc25hcDIocWNvdykgdm91bG1lIGFuZCA9CndpbGwgcmVkaXJlY3QgcmVhZCBJ T3MgdG8gc25hcDEgJiBCYXNlIGltYWdlIGFzIHJlcXVpcmVkLgoKCkJ1dCBpbiBteSBjYXNlIHNu YXBzaG90cyBjcmVhdGVkIGJ5IHRoZSBmaWxlc3lzdGVtIGFyZSByZWFkIG9ubHkgYW5kIGl0J3Mg aT0KbiByYXcgZm9ybWF0LgoKQXMgYSByZXN1bHQgYWZ0ZXIgY3JlYXRpbmcgc25hcHNob3Qgdm0g ZGlzayBjb25maWd1cmF0aW9uIHdvbid0IGNoYW5nZSBhZnRlPQpyIHRha2luZyBzbmFwc2hvdCBi dXQgd2lsbCBjb250aW51ZSBkb2luZyB3cml0ZXMgb24gc2FtZSBiYXNlIGltYWdlLgoKU28gc25h cHNob3RzIHdpbGwgbG9vayBsaWtlIHRoaXM6CgpCYXNlIEltYWdlKHJhdyktLS0+c25hcDEocmF3 KS0+c25hcDIocmF3KQoKQmFzZSBJbWFnZSB3aWxsIGFsd2F5cyByZW1haW4gd3JpdGFibGUsIHdo aWxlIHRoZSBzbmFwc2hvdHMgd2lsbCByZW1haW4gcmVhPQpkIG9ubHkgcmF3IGZvcm1hdC4KCgpK dXN0IHdhbnRlZCB0byBjb25maXJtIGlzIHRoaXMgY29uZmlndXJhYmxlIHNvIHRoYXQgdm0gY29u dGludWVzICByZWZlcnJpbmc9CiBiYXNlIGltYWdlIGFmdGVyIHRoZSBzbmFwc2hvdCBpbnN0ZWFk IG9mIG5ld2x5IGNyZWF0ZWQgcWNvdyBpbWFnZT8KCgpUaGFua3MgJiBSZWdhcmRzLAoKRGVlcGFr CgoKCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyb206IEFsbG9uIE11cmVp bmlrIDxhbXVyZWluaUByZWRoYXQuY29tPgpTZW50OiBUdWVzZGF5LCBKdW5lIDIwLCAyMDE3IDc6 NTk6MDMgUE0KVG86IERlZXBhayBKYWd0YXAKQ2M6IGRldmVsQG92aXJ0Lm9yZwpTdWJqZWN0OiBS ZTogW292aXJ0LWRldmVsXSBTbmFwc2hvdHMgJiBjbG9uZSBzdXBwb3J0IGZyb20gZGF0YXN0b3Jl CgpOb3Qgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHF1ZXN0aW9uLiBDb3VsZCB5b3UgZ2l2ZSBhbiBl eGFtcGxlIG9mIHdoYXQgeW91IG09CmVhbiBwZXJocGFzPwoKT24gVHVlLCBKdW4gMjAsIDIwMTcg YXQgMTA6MDEgUE0sIERlZXBhayBKYWd0YXAgPGRlZXBhay5qYWd0YXBAbWF4dGEuY29tPG1hPQpp bHRvOmRlZXBhay5qYWd0YXBAbWF4dGEuY29tPj4gd3JvdGU6CgpIaSBBbGxvbiwKCgpBZnRlciBn b2luZyB0aHJvdWdoIGN1cnJlbnQgdmRzbSBjb2RlIGJhc2UsIG5vdGljZWQgdGhhdCBhZnRlciB0 YWtpbmcgYSBzbmE9CnBzaG90IHZtIHN0YXJ0cyByZWZlcnJpbmcgdGhlIG5ld2x5IGNyZWF0ZWQg cWNvdyBpbWFnZS92b2x1bWUuCgpGb3IgaW50ZXJuYWwgc25hcHNob3RzIHdoaWNoIGFyZSBub3Qg cWNvdyAgaXMgaXQgY29uZmlndXJhYmxlIHNvbWVob3cgc28gdGg9CmF0IHZtIGNvbnRpbnVlcyBk b2luZyB3cml0ZXMgdG8gc2FtZSBiYXNlIGltYWdlPwoKClRoYW5rcyAmIFJlZ2FyZHMsCgpEZWVw YWsKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyb206IERlZXBhayBKYWd0YXAK U2VudDogVHVlc2RheSwgSnVuZSA2LCAyMDE3IDM6Mzc6MDMgUE0KVG86IEFsbG9uIE11cmVpbmlr CkNjOiBkZXZlbEBvdmlydC5vcmc8bWFpbHRvOmRldmVsQG92aXJ0Lm9yZz4KU3ViamVjdDogUmU6 IFtvdmlydC1kZXZlbF0gU25hcHNob3RzICYgY2xvbmUgc3VwcG9ydCBmcm9tIGRhdGFzdG9yZQoK ClRoYW5rcyBBbGxvbiEKCgpCZXN0IFJlZ2FyZHMsCgpEZWVwYWsKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkZyb206IEFsbG9uIE11cmVpbmlrIDxhbXVyZWluaUByZWRoYXQuY29t PG1haWx0bzphbXVyZWluaUByZWRoYXQuY29tPj4KU2VudDogVHVlc2RheSwgSnVuZSA2LCAyMDE3 IDI6NDM6MTcgUE0KVG86IERlZXBhayBKYWd0YXAKQ2M6IGRldmVsQG92aXJ0Lm9yZzxtYWlsdG86 ZGV2ZWxAb3ZpcnQub3JnPgpTdWJqZWN0OiBSZTogW292aXJ0LWRldmVsXSBTbmFwc2hvdHMgJiBj bG9uZSBzdXBwb3J0IGZyb20gZGF0YXN0b3JlCgpVbmZvcnR1bmF0ZWx5LCB0aGVyZSdzIG5vIHN1 Y2ggaW50ZWdyYXRpb24gcG9pbnQgYXQgdGhlIG1vbWVudC4KCk9uIFR1ZSwgSnVuIDYsIDIwMTcg YXQgNTo1NyBBTSwgRGVlcGFrIEphZ3RhcCA8ZGVlcGFrLmphZ3RhcEBtYXh0YS5jb208bWFpbD0K dG86ZGVlcGFrLmphZ3RhcEBtYXh0YS5jb20+PiB3cm90ZToKCkhleSBHdXlzLAoKCkkgYW0gbmV3 YmllIHRvIG92aXJ0LCBhbmQgd2FudGVkIHRvIGNvbmZpcm0gd2hhdHMgdGhlIGJlc3Qgd2F5IHRv IGxldmVyYWdlID0Kc25hcHNob3QsIGNsb25lIGZlYXR1cmVzCgpwcm92aWRlZCBieSB0aGUgZGF0 YXN0b3JlIGZpbGVzeXN0ZW0uCgpJIGhhdmUgYSBidHJmcyBkYXRhc3RvcmUgZXhwb3J0ZWQgYW5k IHdhbnRlZCB1c2UgYnRyZnMgc25hcHNob3RzIGZvciB2bSBzbmE9CnBzaG90ICYgY2xvbmVzLgoK RG9lcyBvdmlydCBvZmZlcnMgYW55IGhvb2tzL0FQSXMgc28gdGhhdCBpbWFnZSBzbmFwc2hvdHMg YXJlIGNyZWF0ZWQgYnkgdGhlPQogZmlsZXN5c3RlbT8KCgpUaGFua3MgJiBSZWdhcmRzLAoKRGVl cGFrCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRl dmVsIG1haWxpbmcgbGlzdApEZXZlbEBvdmlydC5vcmc8bWFpbHRvOkRldmVsQG92aXJ0Lm9yZz4K aHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RldmVsCgoKCi0tXzAwMF9N V0hQUjExTUIxNjYzRDNCRjlCMDFEQjZFMTE0MkFCMURFRERBME1XSFBSMTFNQjE2NjNuYW1wXwpD b250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD0idXMtYXNjaWkiCkNvbnRlbnQtVHJhbnNm ZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKCjxodG1sPgo8aGVhZD4KPG1ldGEgaHR0cC1l cXVpdj0zRCJDb250ZW50LVR5cGUiIGNvbnRlbnQ9M0QidGV4dC9odG1sOyBjaGFyc2V0PTNEdXMt YXNjaWkiPQo+CjwvaGVhZD4KPGJvZHk+CjxzdHlsZSB0eXBlPTNEInRleHQvY3NzIiBzdHlsZT0z RCJkaXNwbGF5Om5vbmU7Ij48IS0tIFAge21hcmdpbi10b3A6MDttYXJnaT0Kbi1ib3R0b206MDt9 IC0tPjwvc3R5bGU+CjxkaXYgaWQ9M0QiZGl2dGFnZGVmYXVsdHdyYXBwZXIiIHN0eWxlPTNEImZv bnQtc2l6ZToxMnB0O2NvbG9yOiMwMDAwMDA7Zm9udD0KLWZhbWlseTpDYWxpYnJpLEFyaWFsLEhl bHZldGljYSxzYW5zLXNlcmlmOyIgZGlyPTNEImx0ciI+CjxwPkhpIEFsbG9uLDwvcD4KPHA+PGJy Pgo8L3A+CjxwPkkgYW0mbmJzcDt0cnlpbmcgdG8gbGV2ZXJhZ2Ugc25hcHNob3QgJm5ic3A7Y2Fw YWJpbGl0eSBvZiB1bmRlcmx5aW5nIGZpbD0KZXN5c3RlbS48L3A+CjxwPjxzcGFuIHN0eWxlPTNE ImZvbnQtc2l6ZTogMTJwdDsiPkFzIHBlciBteSB1bmRlcnN0YW5kaW5nIGN1cnJlbnQgc25hcHNo bz0KdCZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0zRCJmb250LXNpemU6IDEycHQ7Ij48L3NwYW4+ PHNwYW4gc3R5bGU9M0QiZm9udC1zPQppemU6IDEycHQ7Ij53b3JrcyBsaWtlIHRoaXM6PC9zcGFu PjwvcD4KPHA+QmFzZSBJbWFnZShyYXcpLS0tJmd0O3NuYXAxKHFjb3cpLSZndDtzbmFwMihxY293 KSwgaS5lJm5ic3A7YWZ0ZXIgZWFjaCBzPQpuYXBzaG90IHZtIHN0YXJ0cyB3cml0aW5nIG9uIG5l d2x5IGNyZWF0ZWQgcWNvdyBpbWFnZS48L3A+CjxwPlNvIGluIHRoaXMgY2FzZSB2bSBpcyBnb2lu ZyB0byBkbyBhbGwgbmV3IHdyaXRlcyBvbiBzbmFwMihxY293KSB2b3VsbWUgYT0KbmQgd2lsbCBy ZWRpcmVjdCByZWFkJm5ic3A7SU9zIHRvIHNuYXAxICZhbXA7IEJhc2UgaW1hZ2UgYXMgcmVxdWly ZWQuPC9wPgo8cD48YnI+CjwvcD4KPHA+QnV0IGluIG15IGNhc2Ugc25hcHNob3RzIGNyZWF0ZWQg YnkgdGhlIGZpbGVzeXN0ZW0gYXJlIHJlYWQgb25seSBhbmQgaXQnPQpzIGluIHJhdyBmb3JtYXQu PC9wPgo8cD5BcyBhIHJlc3VsdCBhZnRlciBjcmVhdGluZyBzbmFwc2hvdCB2bSBkaXNrIGNvbmZp Z3VyYXRpb24gd29uJ3QgY2hhbmdlIGE9CmZ0ZXIgdGFraW5nIHNuYXBzaG90IGJ1dCB3aWxsIGNv bnRpbnVlIGRvaW5nIHdyaXRlcyBvbiBzYW1lIGJhc2UgaW1hZ2UuPC9wPgo8cD5TbyBzbmFwc2hv dHMgd2lsbCBsb29rIGxpa2UgdGhpczo8L3A+CjxwPjxzcGFuIHN0eWxlPTNEImZvbnQtZmFtaWx5 OiBDYWxpYnJpLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmLCBFbW9qaT0KRm9udCwgJnF1 b3Q7QXBwbGUgQ29sb3IgRW1vamkmcXVvdDssICZxdW90O1NlZ29lIFVJIEVtb2ppJnF1b3Q7LCBO b3RvQ29sb3JFPQptb2ppLCAmcXVvdDtTZWdvZSBVSSBTeW1ib2wmcXVvdDssICZxdW90O0FuZHJv aWQgRW1vamkmcXVvdDssIEVtb2ppU3ltYm9sczs9CiBmb250LXNpemU6IDE2cHg7Ij5CYXNlIElt YWdlKHJhdyktLS0mZ3Q7c25hcDEocmF3KS0mZ3Q7c25hcDIocmF3KTwvc3Bhbj48Yj0Kcj4KPC9w Pgo8cD48c3BhbiBzdHlsZT0zRCJmb250LWZhbWlseTogQ2FsaWJyaSwgQXJpYWwsIEhlbHZldGlj YSwgc2Fucy1zZXJpZiwgRW1vamk9CkZvbnQsICZxdW90O0FwcGxlIENvbG9yIEVtb2ppJnF1b3Q7 LCAmcXVvdDtTZWdvZSBVSSBFbW9qaSZxdW90OywgTm90b0NvbG9yRT0KbW9qaSwgJnF1b3Q7U2Vn b2UgVUkgU3ltYm9sJnF1b3Q7LCAmcXVvdDtBbmRyb2lkIEVtb2ppJnF1b3Q7LCBFbW9qaVN5bWJv bHM7PQogZm9udC1zaXplOiAxNnB4OyI+QmFzZSBJbWFnZSB3aWxsIGFsd2F5cyByZW1haW4gd3Jp dGFibGUsJm5ic3A7d2hpbGUgdGhlIHM9Cm5hcHNob3RzCiB3aWxsIHJlbWFpbiByZWFkIG9ubHkg cmF3IGZvcm1hdC48L3NwYW4+PC9wPgo8cD48YnI+CjwvcD4KPHA+SnVzdCB3YW50ZWQgdG8gY29u ZmlybSBpcyB0aGlzIGNvbmZpZ3VyYWJsZSBzbyB0aGF0IHZtIGNvbnRpbnVlcyAmbmJzcDtyPQpl ZmVycmluZyBiYXNlIGltYWdlIGFmdGVyIHRoZSBzbmFwc2hvdCBpbnN0ZWFkIG9mIG5ld2x5IGNy ZWF0ZWQgcWNvdyBpbWFnZT89CjwvcD4KPHA+PGJyPgo8L3A+CjxwPlRoYW5rcyAmYW1wOyBSZWdh cmRzLDwvcD4KPHA+RGVlcGFrPC9wPgo8cD48c3BhbiBzdHlsZT0zRCJmb250LWZhbWlseTogQ2Fs aWJyaSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiwgRW1vamk9CkZvbnQsICZxdW90O0Fw cGxlIENvbG9yIEVtb2ppJnF1b3Q7LCAmcXVvdDtTZWdvZSBVSSBFbW9qaSZxdW90OywgTm90b0Nv bG9yRT0KbW9qaSwgJnF1b3Q7U2Vnb2UgVUkgU3ltYm9sJnF1b3Q7LCAmcXVvdDtBbmRyb2lkIEVt b2ppJnF1b3Q7LCBFbW9qaVN5bWJvbHM7PQogZm9udC1zaXplOiAxNnB4OyI+PGJyPgo8L3NwYW4+ PC9wPgo8cD48c3BhbiBzdHlsZT0zRCJmb250LWZhbWlseTogQ2FsaWJyaSwgQXJpYWwsIEhlbHZl dGljYSwgc2Fucy1zZXJpZiwgRW1vamk9CkZvbnQsICZxdW90O0FwcGxlIENvbG9yIEVtb2ppJnF1 b3Q7LCAmcXVvdDtTZWdvZSBVSSBFbW9qaSZxdW90OywgTm90b0NvbG9yRT0KbW9qaSwgJnF1b3Q7 U2Vnb2UgVUkgU3ltYm9sJnF1b3Q7LCAmcXVvdDtBbmRyb2lkIEVtb2ppJnF1b3Q7LCBFbW9qaVN5 bWJvbHM7PQogZm9udC1zaXplOiAxNnB4OyI+PGJyPgo8L3NwYW4+PC9wPgo8cD48YnI+CjwvcD4K PHA+Jm5ic3A7PC9wPgo8L2Rpdj4KPGhyIHN0eWxlPTNEImRpc3BsYXk6aW5saW5lLWJsb2NrO3dp ZHRoOjk4JSIgdGFiaW5kZXg9M0QiLTEiPgo8ZGl2IGlkPTNEImRpdlJwbHlGd2RNc2ciIGRpcj0z RCJsdHIiPjxmb250IGZhY2U9M0QiQ2FsaWJyaSwgc2Fucy1zZXJpZiIgc3Q9CnlsZT0zRCJmb250 LXNpemU6MTFwdCIgY29sb3I9M0QiIzAwMDAwMCI+PGI+RnJvbTo8L2I+IEFsbG9uIE11cmVpbmlr ICZsdDthbT0KdXJlaW5pQHJlZGhhdC5jb20mZ3Q7PGJyPgo8Yj5TZW50OjwvYj4gVHVlc2RheSwg SnVuZSAyMCwgMjAxNyA3OjU5OjAzIFBNPGJyPgo8Yj5Ubzo8L2I+IERlZXBhayBKYWd0YXA8YnI+ CjxiPkNjOjwvYj4gZGV2ZWxAb3ZpcnQub3JnPGJyPgo8Yj5TdWJqZWN0OjwvYj4gUmU6IFtvdmly dC1kZXZlbF0gU25hcHNob3RzICZhbXA7IGNsb25lIHN1cHBvcnQgZnJvbSBkYXRhc3Q9Cm9yZTwv Zm9udD4KPGRpdj4mbmJzcDs8L2Rpdj4KPC9kaXY+CjxkaXY+CjxkaXYgZGlyPTNEImx0ciI+Cjxk aXYgY2xhc3M9M0QiZ21haWxfZGVmYXVsdCIgc3R5bGU9M0QiZm9udC1mYW1pbHk6bW9ub3NwYWNl LG1vbm9zcGFjZSI+Tm90ID0Kc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHF1ZXN0aW9uLiBDb3VsZCB5 b3UgZ2l2ZSBhbiBleGFtcGxlJm5ic3A7b2Ygd2hhdCB5b3UgPQptZWFuIHBlcmhwYXM/PC9kaXY+ CjwvZGl2Pgo8ZGl2IGNsYXNzPTNEImdtYWlsX2V4dHJhIj48YnI+CjxkaXYgY2xhc3M9M0QiZ21h aWxfcXVvdGUiPk9uIFR1ZSwgSnVuIDIwLCAyMDE3IGF0IDEwOjAxIFBNLCBEZWVwYWsgSmFndGFw ID0KPHNwYW4gZGlyPTNEImx0ciI+CiZsdDs8YSBocmVmPTNEIm1haWx0bzpkZWVwYWsuamFndGFw QG1heHRhLmNvbSIgdGFyZ2V0PTNEIl9ibGFuayI+ZGVlcGFrLmphZz0KdGFwQG1heHRhLmNvbTwv YT4mZ3Q7PC9zcGFuPiB3cm90ZTo8YnI+CjxibG9ja3F1b3RlIGNsYXNzPTNEImdtYWlsX3F1b3Rl IiBzdHlsZT0zRCJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcD0KeCAjY2NjIHNvbGlk O3BhZGRpbmctbGVmdDoxZXgiPgo8ZGl2Pgo8ZGl2IGlkPTNEIm1fNTg5MTkzODc0MDcyMzgzNzEy N2RpdnRhZ2RlZmF1bHR3cmFwcGVyIiBzdHlsZT0zRCJmb250LXNpemU6MTI9CnB0O2NvbG9yOiMw MDAwMDA7Zm9udC1mYW1pbHk6Q2FsaWJyaSxBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZiIgZGly PTNEImx0cj0KIj4KPHA+SGkgQWxsb24sPC9wPgo8cD48YnI+CjwvcD4KPHA+QWZ0ZXIgZ29pbmcg dGhyb3VnaCZuYnNwO2N1cnJlbnQgdmRzbSZuYnNwO2NvZGUgYmFzZSwgbm90aWNlZCB0aGF0IGFm dGVyPQogdGFraW5nIGEgc25hcHNob3Qgdm0gc3RhcnRzIHJlZmVycmluZyB0aGUgbmV3bHkgY3Jl YXRlZCBxY293IGltYWdlL3ZvbHVtZS49CjwvcD4KPHA+Rm9yIGludGVybmFsIHNuYXBzaG90cyB3 aGljaCBhcmUgbm90IHFjb3cgJm5ic3A7aXMgaXQmbmJzcDtjb25maWd1cmFibGUgPQpzb21laG93 Jm5ic3A7c28gdGhhdCB2bSBjb250aW51ZXMgZG9pbmcgd3JpdGVzIHRvIHNhbWUgYmFzZSBpbWFn ZT88L3A+CjxwPjxicj4KPC9wPgo8cD5UaGFua3MgJmFtcDsgUmVnYXJkcyw8L3A+CjxwPkRlZXBh azwvcD4KPC9kaXY+CjxociBzdHlsZT0zRCJkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo5OCUi Pgo8ZGl2IGlkPTNEIm1fNTg5MTkzODc0MDcyMzgzNzEyN2RpdlJwbHlGd2RNc2ciIGRpcj0zRCJs dHIiPjxmb250IGZhY2U9M0QiQ2E9CmxpYnJpLCBzYW5zLXNlcmlmIiBzdHlsZT0zRCJmb250LXNp emU6MTFwdCIgY29sb3I9M0QiIzAwMDAwMCI+PGI+RnJvbTo8L2I+ID0KRGVlcGFrIEphZ3RhcDxi cj4KPGI+U2VudDo8L2I+IFR1ZXNkYXksIEp1bmUgNiwgMjAxNyAzOjM3OjAzIFBNPGJyPgo8Yj5U bzo8L2I+IEFsbG9uIE11cmVpbmlrPHNwYW4gY2xhc3M9M0QiIj48YnI+CjxiPkNjOjwvYj4gPGEg aHJlZj0zRCJtYWlsdG86ZGV2ZWxAb3ZpcnQub3JnIiB0YXJnZXQ9M0QiX2JsYW5rIj5kZXZlbEBv dmlydD0KLm9yZzwvYT48YnI+CjxiPlN1YmplY3Q6PC9iPiBSZTogW292aXJ0LWRldmVsXSBTbmFw c2hvdHMgJmFtcDsgY2xvbmUgc3VwcG9ydCBmcm9tIGRhdGFzdD0Kb3JlPC9zcGFuPjwvZm9udD4K PGRpdj4mbmJzcDs8L2Rpdj4KPC9kaXY+CjxzcGFuIGNsYXNzPTNEIiI+CjxkaXY+CjxkaXYgaWQ9 M0QibV81ODkxOTM4NzQwNzIzODM3MTI3ZGl2dGFnZGVmYXVsdHdyYXBwZXIiIHN0eWxlPTNEImZv bnQtc2l6ZToxMj0KcHQ7Y29sb3I6IzAwMDAwMDtmb250LWZhbWlseTpDYWxpYnJpLEFyaWFsLEhl bHZldGljYSxzYW5zLXNlcmlmIiBkaXI9M0QibHRyPQoiPgo8cD5UaGFua3MgQWxsb24hPC9wPgo8 cD48YnI+CjwvcD4KPHA+QmVzdCBSZWdhcmRzLDwvcD4KPHA+RGVlcGFrPC9wPgo8L2Rpdj4KPGhy IHN0eWxlPTNEImRpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjk4JSI+CjxkaXYgaWQ9M0QibV81 ODkxOTM4NzQwNzIzODM3MTI3ZGl2UnBseUZ3ZE1zZyIgZGlyPTNEImx0ciI+PGZvbnQgZmFjZT0z RCJDYT0KbGlicmksIHNhbnMtc2VyaWYiIHN0eWxlPTNEImZvbnQtc2l6ZToxMXB0IiBjb2xvcj0z RCIjMDAwMDAwIj48Yj5Gcm9tOjwvYj4gPQpBbGxvbiBNdXJlaW5payAmbHQ7PGEgaHJlZj0zRCJt YWlsdG86YW11cmVpbmlAcmVkaGF0LmNvbSIgdGFyZ2V0PTNEIl9ibGFuayI9Cj5hbXVyZWluaUBy ZWRoYXQuY29tPC9hPiZndDs8YnI+CjxiPlNlbnQ6PC9iPiBUdWVzZGF5LCBKdW5lIDYsIDIwMTcg Mjo0MzoxNyBQTTxicj4KPGI+VG86PC9iPiBEZWVwYWsgSmFndGFwPGJyPgo8Yj5DYzo8L2I+IDxh IGhyZWY9M0QibWFpbHRvOmRldmVsQG92aXJ0Lm9yZyIgdGFyZ2V0PTNEIl9ibGFuayI+ZGV2ZWxA b3ZpcnQ9Ci5vcmc8L2E+PGJyPgo8Yj5TdWJqZWN0OjwvYj4gUmU6IFtvdmlydC1kZXZlbF0gU25h cHNob3RzICZhbXA7IGNsb25lIHN1cHBvcnQgZnJvbSBkYXRhc3Q9Cm9yZTwvZm9udD4KPGRpdj4m bmJzcDs8L2Rpdj4KPC9kaXY+CjxkaXY+CjxkaXYgZGlyPTNEImx0ciI+CjxkaXYgY2xhc3M9M0Qi Z21haWxfZGVmYXVsdCIgc3R5bGU9M0QiZm9udC1mYW1pbHk6bW9ub3NwYWNlLG1vbm9zcGFjZSI+ VW5mbz0KcnR1bmF0ZWx5LCB0aGVyZSdzIG5vIHN1Y2ggaW50ZWdyYXRpb24gcG9pbnQgYXQgdGhl IG1vbWVudC48L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9M0QiZ21haWxfZXh0cmEiPjxicj4KPGRp diBjbGFzcz0zRCJnbWFpbF9xdW90ZSI+T24gVHVlLCBKdW4gNiwgMjAxNyBhdCA1OjU3IEFNLCBE ZWVwYWsgSmFndGFwIDxzPQpwYW4gZGlyPTNEImx0ciI+CiZsdDs8YSBocmVmPTNEIm1haWx0bzpk ZWVwYWsuamFndGFwQG1heHRhLmNvbSIgdGFyZ2V0PTNEIl9ibGFuayI+ZGVlcGFrLmphZz0KdGFw QG1heHRhLmNvbTwvYT4mZ3Q7PC9zcGFuPiB3cm90ZTo8YnI+CjxibG9ja3F1b3RlIGNsYXNzPTNE ImdtYWlsX3F1b3RlIiBzdHlsZT0zRCJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcD0K eCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPgo8ZGl2IGRpcj0zRCJsdHIiPgo8ZGl2IGlk PTNEIm1fNTg5MTkzODc0MDcyMzgzNzEyN21fLTQ4NzMyNDYwOTUxNzM5NjgyMjRkaXZ0YWdkZWZh dWx0d3JhcHBlciI9CiBzdHlsZT0zRCJmb250LXNpemU6MTJwdDtjb2xvcjojMDAwMDAwO2ZvbnQt ZmFtaWx5OkNhbGlicmksQXJpYWwsSGVsdmV0aWNhLD0Kc2Fucy1zZXJpZiIgZGlyPTNEImx0ciI+ CjxwPkhleSBHdXlzLDwvcD4KPHA+PGJyPgo8L3A+CjxwPkkgYW0gbmV3YmllIHRvIG92aXJ0LCBh bmQgd2FudGVkIHRvIGNvbmZpcm0gd2hhdHMgdGhlIGJlc3Qgd2F5IHRvIGxldmVyYT0KZ2Ugc25h cHNob3QsIGNsb25lIGZlYXR1cmVzJm5ic3A7PC9wPgo8cD5wcm92aWRlZCBieSB0aGUgZGF0YXN0 b3JlIGZpbGVzeXN0ZW0uPC9wPgo8cD5JIGhhdmUgYSBidHJmcyBkYXRhc3RvcmUgZXhwb3J0ZWQm bmJzcDthbmQgd2FudGVkIHVzZSBidHJmcyBzbmFwc2hvdHMgZm89CnIgdm0gc25hcHNob3QgJmFt cDsgY2xvbmVzLjwvcD4KPHA+RG9lcyBvdmlydCBvZmZlcnMgYW55IGhvb2tzL0FQSXMgc28gdGhh dCBpbWFnZSBzbmFwc2hvdHMgYXJlIGNyZWF0ZWQgYnkgPQp0aGUgZmlsZXN5c3RlbT88L3A+Cjxw Pjxicj4KPC9wPgo8cD5UaGFua3MgJmFtcDsgUmVnYXJkcyw8L3A+CjxwPkRlZXBhazwvcD4KPHA+ Jm5ic3A7PC9wPgo8L2Rpdj4KPC9kaXY+Cjxicj4KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fPHdicj5fX19fX19fX19fX19fX19fXzxicj4KRGV2ZWwgbWFpbGluZyBsaXN0PGJyPgo8YSBo cmVmPTNEIm1haWx0bzpEZXZlbEBvdmlydC5vcmciIHRhcmdldD0zRCJfYmxhbmsiPkRldmVsQG92 aXJ0Lm9yZzwvYT48YnI9Cj4KPGEgaHJlZj0zRCJodHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxt YW4vbGlzdGluZm8vZGV2ZWwiIHJlbD0zRCJub3JlZmVycmVyPQoiIHRhcmdldD0zRCJfYmxhbmsi Pmh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbjx3YnI+L2xpc3RpbmZvL2RldmVsPC9hPjw9 CmJyPgo8L2Jsb2NrcXVvdGU+CjwvZGl2Pgo8YnI+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+Cjwvc3Bh bj48L2Rpdj4KPC9ibG9ja3F1b3RlPgo8L2Rpdj4KPGJyPgo8L2Rpdj4KPC9kaXY+CjwvYm9keT4K PC9odG1sPgoKLS1fMDAwX01XSFBSMTFNQjE2NjNEM0JGOUIwMURCNkUxMTQyQUIxREVEREEwTVdI UFIxMU1CMTY2M25hbXBfLS0K --===============3496073040068719392==-- From ykaul at redhat.com Wed Jun 21 20:48:08 2017 Content-Type: multipart/mixed; boundary="===============4333150082228740033==" MIME-Version: 1.0 From: Yaniv Kaul To: devel at ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore Date: Wed, 21 Jun 2017 23:47:26 +0300 Message-ID: In-Reply-To: MWHPR11MB1663D3BF9B01DB6E1142AB1DEDDA0@MWHPR11MB1663.namprd11.prod.outlook.com --===============4333150082228740033== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On Wed, Jun 21, 2017 at 10:28 PM, Deepak Jagtap wrote: > Hi Allon, > > > I am trying to leverage snapshot capability of underlying filesystem. > > As per my understanding current snapshot works like this: > > Base Image(raw)--->snap1(qcow)->snap2(qcow), i.e after each snapshot vm > starts writing on newly created qcow image. > > So in this case vm is going to do all new writes on snap2(qcow) voulme and > will redirect read IOs to snap1 & Base image as required. > > > But in my case snapshots created by the filesystem are read only and it's > in raw format. > > As a result after creating snapshot vm disk configuration won't change > after taking snapshot but will continue doing writes on same base image. > > So snapshots will look like this: > > Base Image(raw)--->snap1(raw)->snap2(raw) > > Base Image will always remain writable, while the snapshots will remain > read only raw format. > > > Just wanted to confirm is this configurable so that vm continues > referring base image after the snapshot instead of newly created qcow > image? > It is not. It'll need code modification to allow externally taking snapshots of VM disks. Y. > > Thanks & Regards, > > Deepak > > > > > > ------------------------------ > *From:* Allon Mureinik > *Sent:* Tuesday, June 20, 2017 7:59:03 PM > > *To:* Deepak Jagtap > *Cc:* devel(a)ovirt.org > *Subject:* Re: [ovirt-devel] Snapshots & clone support from datastore > > Not sure I understand the question. Could you give an example of what you > mean perhpas? > > On Tue, Jun 20, 2017 at 10:01 PM, Deepak Jagtap > wrote: > >> Hi Allon, >> >> >> After going through current vdsm code base, noticed that after taking a >> snapshot vm starts referring the newly created qcow image/volume. >> >> For internal snapshots which are not qcow is it configurable somehow so >> that vm continues doing writes to same base image? >> >> >> Thanks & Regards, >> >> Deepak >> ------------------------------ >> *From:* Deepak Jagtap >> *Sent:* Tuesday, June 6, 2017 3:37:03 PM >> *To:* Allon Mureinik >> *Cc:* devel(a)ovirt.org >> *Subject:* Re: [ovirt-devel] Snapshots & clone support from datastore >> >> >> Thanks Allon! >> >> >> Best Regards, >> >> Deepak >> ------------------------------ >> *From:* Allon Mureinik >> *Sent:* Tuesday, June 6, 2017 2:43:17 PM >> *To:* Deepak Jagtap >> *Cc:* devel(a)ovirt.org >> *Subject:* Re: [ovirt-devel] Snapshots & clone support from datastore >> >> Unfortunately, there's no such integration point at the moment. >> >> On Tue, Jun 6, 2017 at 5:57 AM, Deepak Jagtap >> wrote: >> >>> Hey Guys, >>> >>> >>> I am newbie to ovirt, and wanted to confirm whats the best way to >>> leverage snapshot, clone features >>> >>> provided by the datastore filesystem. >>> >>> I have a btrfs datastore exported and wanted use btrfs snapshots for vm >>> snapshot & clones. >>> >>> Does ovirt offers any hooks/APIs so that image snapshots are created by >>> the filesystem? >>> >>> >>> Thanks & Regards, >>> >>> Deepak >>> >>> >>> >>> _______________________________________________ >>> Devel mailing list >>> Devel(a)ovirt.org >>> http://lists.ovirt.org/mailman/listinfo/devel >>> >> >> > > _______________________________________________ > Devel mailing list > Devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/devel > --===============4333150082228740033== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGRpdiBkaXI9Imx0ciI+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX2V4dHJhIj48YnI+PGRpdiBjbGFz cz0iZ21haWxfcXVvdGUiPk9uIFdlZCwgSnVuIDIxLCAyMDE3IGF0IDEwOjI4IFBNLCBEZWVwYWsg SmFndGFwIDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEgaHJlZj0ibWFpbHRvOmRlZXBhay5qYWd0YXBA bWF4dGEuY29tIiB0YXJnZXQ9Il9ibGFuayI+ZGVlcGFrLmphZ3RhcEBtYXh0YS5jb208L2E+Jmd0 Ozwvc3Bhbj4gd3JvdGU6PGJyPjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9 Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVm dDoxZXgiPgoKCgo8ZGl2PgoKPGRpdiBpZD0ibV8tOTA3MjEzNTkwMjE3ODc0OTgxMGRpdnRhZ2Rl ZmF1bHR3cmFwcGVyIiBzdHlsZT0iZm9udC1zaXplOjEycHQ7Y29sb3I6IzAwMDAwMDtmb250LWZh bWlseTpDYWxpYnJpLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmIiBkaXI9Imx0ciI+CjxwPkhp IEFsbG9uLDwvcD4KPHA+PGJyPgo8L3A+CjxwPkkgYW3CoHRyeWluZyB0byBsZXZlcmFnZSBzbmFw c2hvdCDCoGNhcGFiaWxpdHkgb2YgdW5kZXJseWluZyBmaWxlc3lzdGVtLjwvcD4KPHA+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZToxMnB0Ij5BcyBwZXIgbXkgdW5kZXJzdGFuZGluZyBjdXJyZW50IHNu YXBzaG90wqA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMnB0Ij48L3NwYW4+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZToxMnB0Ij53b3JrcyBsaWtlIHRoaXM6PC9zcGFuPjwvcD4KPHA+QmFz ZSBJbWFnZShyYXcpLS0tJmd0O3NuYXAxKHFjb3cpLSZndDs8d2JyPnNuYXAyKHFjb3cpLCBpLmXC oGFmdGVyIGVhY2ggc25hcHNob3Qgdm0gc3RhcnRzIHdyaXRpbmcgb24gbmV3bHkgY3JlYXRlZCBx Y293IGltYWdlLjwvcD4KPHA+U28gaW4gdGhpcyBjYXNlIHZtIGlzIGdvaW5nIHRvIGRvIGFsbCBu ZXcgd3JpdGVzIG9uIHNuYXAyKHFjb3cpIHZvdWxtZSBhbmQgd2lsbCByZWRpcmVjdCByZWFkwqBJ T3MgdG8gc25hcDEgJmFtcDsgQmFzZSBpbWFnZSBhcyByZXF1aXJlZC48L3A+CjxwPjxicj4KPC9w Pgo8cD5CdXQgaW4gbXkgY2FzZSBzbmFwc2hvdHMgY3JlYXRlZCBieSB0aGUgZmlsZXN5c3RlbSBh cmUgcmVhZCBvbmx5IGFuZCBpdCYjMzk7cyBpbiByYXcgZm9ybWF0LjwvcD4KPHA+QXMgYSByZXN1 bHQgYWZ0ZXIgY3JlYXRpbmcgc25hcHNob3Qgdm0gZGlzayBjb25maWd1cmF0aW9uIHdvbiYjMzk7 dCBjaGFuZ2UgYWZ0ZXIgdGFraW5nIHNuYXBzaG90IGJ1dCB3aWxsIGNvbnRpbnVlIGRvaW5nIHdy aXRlcyBvbiBzYW1lIGJhc2UgaW1hZ2UuPC9wPgo8cD5TbyBzbmFwc2hvdHMgd2lsbCBsb29rIGxp a2UgdGhpczo8L3A+CjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDYWxpYnJpLEFyaWFsLEhl bHZldGljYSxzYW5zLXNlcmlmLEVtb2ppRm9udCwmcXVvdDtBcHBsZSBDb2xvciBFbW9qaSZxdW90 OywmcXVvdDtTZWdvZSBVSSBFbW9qaSZxdW90OyxOb3RvQ29sb3JFbW9qaSwmcXVvdDtTZWdvZSBV SSBTeW1ib2wmcXVvdDssJnF1b3Q7QW5kcm9pZCBFbW9qaSZxdW90OyxFbW9qaVN5bWJvbHM7Zm9u dC1zaXplOjE2cHgiPkJhc2UgSW1hZ2UocmF3KS0tLSZndDtzbmFwMShyYXcpLSZndDs8d2JyPnNu YXAyKHJhdyk8L3NwYW4+PGJyPgo8L3A+CjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDYWxp YnJpLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmLEVtb2ppRm9udCwmcXVvdDtBcHBsZSBDb2xv ciBFbW9qaSZxdW90OywmcXVvdDtTZWdvZSBVSSBFbW9qaSZxdW90OyxOb3RvQ29sb3JFbW9qaSwm cXVvdDtTZWdvZSBVSSBTeW1ib2wmcXVvdDssJnF1b3Q7QW5kcm9pZCBFbW9qaSZxdW90OyxFbW9q aVN5bWJvbHM7Zm9udC1zaXplOjE2cHgiPkJhc2UgSW1hZ2Ugd2lsbCBhbHdheXMgcmVtYWluIHdy aXRhYmxlLMKgd2hpbGUgdGhlIHNuYXBzaG90cwogd2lsbCByZW1haW4gcmVhZCBvbmx5IHJhdyBm b3JtYXQuPC9zcGFuPjwvcD4KPHA+PGJyPgo8L3A+CjxwPkp1c3Qgd2FudGVkIHRvIGNvbmZpcm0g aXMgdGhpcyBjb25maWd1cmFibGUgc28gdGhhdCB2bSBjb250aW51ZXMgwqByZWZlcnJpbmcgYmFz ZSBpbWFnZSBhZnRlciB0aGUgc25hcHNob3QgaW5zdGVhZCBvZiBuZXdseSBjcmVhdGVkIHFjb3cg aW1hZ2U/PC9wPjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48ZGl2Pkl0 IGlzIG5vdC4gSXQmIzM5O2xsIG5lZWQgY29kZSBtb2RpZmljYXRpb24gdG8gYWxsb3cgZXh0ZXJu YWxseSB0YWtpbmcgc25hcHNob3RzIG9mIFZNIGRpc2tzLjwvZGl2PjxkaXY+WS48L2Rpdj48ZGl2 PsKgPC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAg MCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+PGRp dj48ZGl2IGlkPSJtXy05MDcyMTM1OTAyMTc4NzQ5ODEwZGl2dGFnZGVmYXVsdHdyYXBwZXIiIHN0 eWxlPSJmb250LXNpemU6MTJwdDtjb2xvcjojMDAwMDAwO2ZvbnQtZmFtaWx5OkNhbGlicmksQXJp YWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYiIGRpcj0ibHRyIj4KPHA+PGJyPgo8L3A+CjxwPlRoYW5r cyAmYW1wOyBSZWdhcmRzLDwvcD4KPHA+RGVlcGFrPC9wPgo8cD48c3BhbiBzdHlsZT0iZm9udC1m YW1pbHk6Q2FsaWJyaSxBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZixFbW9qaUZvbnQsJnF1b3Q7 QXBwbGUgQ29sb3IgRW1vamkmcXVvdDssJnF1b3Q7U2Vnb2UgVUkgRW1vamkmcXVvdDssTm90b0Nv bG9yRW1vamksJnF1b3Q7U2Vnb2UgVUkgU3ltYm9sJnF1b3Q7LCZxdW90O0FuZHJvaWQgRW1vamkm cXVvdDssRW1vamlTeW1ib2xzO2ZvbnQtc2l6ZToxNnB4Ij48YnI+Cjwvc3Bhbj48L3A+CjxwPjxz cGFuIHN0eWxlPSJmb250LWZhbWlseTpDYWxpYnJpLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlm LEVtb2ppRm9udCwmcXVvdDtBcHBsZSBDb2xvciBFbW9qaSZxdW90OywmcXVvdDtTZWdvZSBVSSBF bW9qaSZxdW90OyxOb3RvQ29sb3JFbW9qaSwmcXVvdDtTZWdvZSBVSSBTeW1ib2wmcXVvdDssJnF1 b3Q7QW5kcm9pZCBFbW9qaSZxdW90OyxFbW9qaVN5bWJvbHM7Zm9udC1zaXplOjE2cHgiPjxicj4K PC9zcGFuPjwvcD4KPHA+PGJyPgo8L3A+CjxwPsKgPC9wPgo8L2Rpdj4KPGhyIHN0eWxlPSJkaXNw bGF5OmlubGluZS1ibG9jazt3aWR0aDo5OCUiPgo8ZGl2IGlkPSJtXy05MDcyMTM1OTAyMTc4NzQ5 ODEwZGl2UnBseUZ3ZE1zZyIgZGlyPSJsdHIiPjxmb250IGZhY2U9IkNhbGlicmksIHNhbnMtc2Vy aWYiIHN0eWxlPSJmb250LXNpemU6MTFwdCIgY29sb3I9IiMwMDAwMDAiPjxiPkZyb206PC9iPiBB bGxvbiBNdXJlaW5payAmbHQ7PGEgaHJlZj0ibWFpbHRvOmFtdXJlaW5pQHJlZGhhdC5jb20iIHRh cmdldD0iX2JsYW5rIj5hbXVyZWluaUByZWRoYXQuY29tPC9hPiZndDs8YnI+CjxiPlNlbnQ6PC9i PiBUdWVzZGF5LCBKdW5lIDIwLCAyMDE3IDc6NTk6MDMgUE08ZGl2PjxkaXYgY2xhc3M9Img1Ij48 YnI+CjxiPlRvOjwvYj4gRGVlcGFrIEphZ3RhcDxicj4KPGI+Q2M6PC9iPiA8YSBocmVmPSJtYWls dG86ZGV2ZWxAb3ZpcnQub3JnIiB0YXJnZXQ9Il9ibGFuayI+ZGV2ZWxAb3ZpcnQub3JnPC9hPjxi cj4KPGI+U3ViamVjdDo8L2I+IFJlOiBbb3ZpcnQtZGV2ZWxdIFNuYXBzaG90cyAmYW1wOyBjbG9u ZSBzdXBwb3J0IGZyb20gZGF0YXN0b3JlPC9kaXY+PC9kaXY+PC9mb250Pgo8ZGl2PsKgPC9kaXY+ CjwvZGl2PjxkaXY+PGRpdiBjbGFzcz0iaDUiPgo8ZGl2Pgo8ZGl2IGRpcj0ibHRyIj4KPGRpdiBz dHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlLG1vbm9zcGFjZSI+Tm90IHN1cmUgSSB1bmRlcnN0 YW5kIHRoZSBxdWVzdGlvbi4gQ291bGQgeW91IGdpdmUgYW4gZXhhbXBsZcKgb2Ygd2hhdCB5b3Ug bWVhbiBwZXJocGFzPzwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iZ21haWxfZXh0cmEiPjxicj4K PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPk9uIFR1ZSwgSnVuIDIwLCAyMDE3IGF0IDEwOjAxIFBN LCBEZWVwYWsgSmFndGFwIDxzcGFuIGRpcj0ibHRyIj4KJmx0OzxhIGhyZWY9Im1haWx0bzpkZWVw YWsuamFndGFwQG1heHRhLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmRlZXBhay5qYWd0YXBAbWF4dGEu Y29tPC9hPiZndDs8L3NwYW4+IHdyb3RlOjxicj4KPGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1 b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7 cGFkZGluZy1sZWZ0OjFleCI+CjxkaXY+CjxkaXYgaWQ9Im1fLTkwNzIxMzU5MDIxNzg3NDk4MTBt XzU4OTE5Mzg3NDA3MjM4MzcxMjdkaXZ0YWdkZWZhdWx0d3JhcHBlciIgc3R5bGU9ImZvbnQtc2l6 ZToxMnB0O2NvbG9yOiMwMDAwMDA7Zm9udC1mYW1pbHk6Q2FsaWJyaSxBcmlhbCxIZWx2ZXRpY2Es c2Fucy1zZXJpZiIgZGlyPSJsdHIiPgo8cD5IaSBBbGxvbiw8L3A+CjxwPjxicj4KPC9wPgo8cD5B ZnRlciBnb2luZyB0aHJvdWdowqBjdXJyZW50IHZkc23CoGNvZGUgYmFzZSwgbm90aWNlZCB0aGF0 IGFmdGVyIHRha2luZyBhIHNuYXBzaG90IHZtIHN0YXJ0cyByZWZlcnJpbmcgdGhlIG5ld2x5IGNy ZWF0ZWQgcWNvdyBpbWFnZS92b2x1bWUuPC9wPgo8cD5Gb3IgaW50ZXJuYWwgc25hcHNob3RzIHdo aWNoIGFyZSBub3QgcWNvdyDCoGlzIGl0wqBjb25maWd1cmFibGUgc29tZWhvd8Kgc28gdGhhdCB2 bSBjb250aW51ZXMgZG9pbmcgd3JpdGVzIHRvIHNhbWUgYmFzZSBpbWFnZT88L3A+CjxwPjxicj4K PC9wPgo8cD5UaGFua3MgJmFtcDsgUmVnYXJkcyw8L3A+CjxwPkRlZXBhazwvcD4KPC9kaXY+Cjxo ciBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6OTglIj4KPGRpdiBpZD0ibV8tOTA3 MjEzNTkwMjE3ODc0OTgxMG1fNTg5MTkzODc0MDcyMzgzNzEyN2RpdlJwbHlGd2RNc2ciIGRpcj0i bHRyIj48Zm9udCBmYWNlPSJDYWxpYnJpLCBzYW5zLXNlcmlmIiBzdHlsZT0iZm9udC1zaXplOjEx cHQiIGNvbG9yPSIjMDAwMDAwIj48Yj5Gcm9tOjwvYj4gRGVlcGFrIEphZ3RhcDxicj4KPGI+U2Vu dDo8L2I+IFR1ZXNkYXksIEp1bmUgNiwgMjAxNyAzOjM3OjAzIFBNPGJyPgo8Yj5Ubzo8L2I+IEFs bG9uIE11cmVpbmlrPHNwYW4+PGJyPgo8Yj5DYzo8L2I+IDxhIGhyZWY9Im1haWx0bzpkZXZlbEBv dmlydC5vcmciIHRhcmdldD0iX2JsYW5rIj5kZXZlbEBvdmlydC5vcmc8L2E+PGJyPgo8Yj5TdWJq ZWN0OjwvYj4gUmU6IFtvdmlydC1kZXZlbF0gU25hcHNob3RzICZhbXA7IGNsb25lIHN1cHBvcnQg ZnJvbSBkYXRhc3RvcmU8L3NwYW4+PC9mb250Pgo8ZGl2PsKgPC9kaXY+CjwvZGl2Pgo8c3Bhbj4K PGRpdj4KPGRpdiBpZD0ibV8tOTA3MjEzNTkwMjE3ODc0OTgxMG1fNTg5MTkzODc0MDcyMzgzNzEy N2RpdnRhZ2RlZmF1bHR3cmFwcGVyIiBzdHlsZT0iZm9udC1zaXplOjEycHQ7Y29sb3I6IzAwMDAw MDtmb250LWZhbWlseTpDYWxpYnJpLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmIiBkaXI9Imx0 ciI+CjxwPlRoYW5rcyBBbGxvbiE8L3A+CjxwPjxicj4KPC9wPgo8cD5CZXN0IFJlZ2FyZHMsPC9w Pgo8cD5EZWVwYWs8L3A+CjwvZGl2Pgo8aHIgc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO3dp ZHRoOjk4JSI+CjxkaXYgaWQ9Im1fLTkwNzIxMzU5MDIxNzg3NDk4MTBtXzU4OTE5Mzg3NDA3MjM4 MzcxMjdkaXZScGx5RndkTXNnIiBkaXI9Imx0ciI+PGZvbnQgZmFjZT0iQ2FsaWJyaSwgc2Fucy1z ZXJpZiIgc3R5bGU9ImZvbnQtc2l6ZToxMXB0IiBjb2xvcj0iIzAwMDAwMCI+PGI+RnJvbTo8L2I+ IEFsbG9uIE11cmVpbmlrICZsdDs8YSBocmVmPSJtYWlsdG86YW11cmVpbmlAcmVkaGF0LmNvbSIg dGFyZ2V0PSJfYmxhbmsiPmFtdXJlaW5pQHJlZGhhdC5jb208L2E+Jmd0Ozxicj4KPGI+U2VudDo8 L2I+IFR1ZXNkYXksIEp1bmUgNiwgMjAxNyAyOjQzOjE3IFBNPGJyPgo8Yj5Ubzo8L2I+IERlZXBh ayBKYWd0YXA8YnI+CjxiPkNjOjwvYj4gPGEgaHJlZj0ibWFpbHRvOmRldmVsQG92aXJ0Lm9yZyIg dGFyZ2V0PSJfYmxhbmsiPmRldmVsQG92aXJ0Lm9yZzwvYT48YnI+CjxiPlN1YmplY3Q6PC9iPiBS ZTogW292aXJ0LWRldmVsXSBTbmFwc2hvdHMgJmFtcDsgY2xvbmUgc3VwcG9ydCBmcm9tIGRhdGFz dG9yZTwvZm9udD4KPGRpdj7CoDwvZGl2Pgo8L2Rpdj4KPGRpdj4KPGRpdiBkaXI9Imx0ciI+Cjxk aXYgc3R5bGU9ImZvbnQtZmFtaWx5Om1vbm9zcGFjZSxtb25vc3BhY2UiPlVuZm9ydHVuYXRlbHks IHRoZXJlJiMzOTtzIG5vIHN1Y2ggaW50ZWdyYXRpb24gcG9pbnQgYXQgdGhlIG1vbWVudC48L2Rp dj4KPC9kaXY+CjxkaXYgY2xhc3M9ImdtYWlsX2V4dHJhIj48YnI+CjxkaXYgY2xhc3M9ImdtYWls X3F1b3RlIj5PbiBUdWUsIEp1biA2LCAyMDE3IGF0IDU6NTcgQU0sIERlZXBhayBKYWd0YXAgPHNw YW4gZGlyPSJsdHIiPgombHQ7PGEgaHJlZj0ibWFpbHRvOmRlZXBhay5qYWd0YXBAbWF4dGEuY29t IiB0YXJnZXQ9Il9ibGFuayI+ZGVlcGFrLmphZ3RhcEBtYXh0YS5jb208L2E+Jmd0Ozwvc3Bhbj4g d3JvdGU6PGJyPgo8YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46 MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4K PGRpdiBkaXI9Imx0ciI+CjxkaXYgaWQ9Im1fLTkwNzIxMzU5MDIxNzg3NDk4MTBtXzU4OTE5Mzg3 NDA3MjM4MzcxMjdtXy00ODczMjQ2MDk1MTczOTY4MjI0ZGl2dGFnZGVmYXVsdHdyYXBwZXIiIHN0 eWxlPSJmb250LXNpemU6MTJwdDtjb2xvcjojMDAwMDAwO2ZvbnQtZmFtaWx5OkNhbGlicmksQXJp YWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYiIGRpcj0ibHRyIj4KPHA+SGV5IEd1eXMsPC9wPgo8cD48 YnI+CjwvcD4KPHA+SSBhbSBuZXdiaWUgdG8gb3ZpcnQsIGFuZCB3YW50ZWQgdG8gY29uZmlybSB3 aGF0cyB0aGUgYmVzdCB3YXkgdG8gbGV2ZXJhZ2Ugc25hcHNob3QsIGNsb25lIGZlYXR1cmVzwqA8 L3A+CjxwPnByb3ZpZGVkIGJ5IHRoZSBkYXRhc3RvcmUgZmlsZXN5c3RlbS48L3A+CjxwPkkgaGF2 ZSBhIGJ0cmZzIGRhdGFzdG9yZSBleHBvcnRlZMKgYW5kIHdhbnRlZCB1c2UgYnRyZnMgc25hcHNo b3RzIGZvciB2bSBzbmFwc2hvdCAmYW1wOyBjbG9uZXMuPC9wPgo8cD5Eb2VzIG92aXJ0IG9mZmVy cyBhbnkgaG9va3MvQVBJcyBzbyB0aGF0IGltYWdlIHNuYXBzaG90cyBhcmUgY3JlYXRlZCBieSB0 aGUgZmlsZXN5c3RlbT88L3A+CjxwPjxicj4KPC9wPgo8cD5UaGFua3MgJmFtcDsgUmVnYXJkcyw8 L3A+CjxwPkRlZXBhazwvcD4KPHA+wqA8L3A+CjwvZGl2Pgo8L2Rpdj4KPGJyPgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX188d2JyPl9fX19fX19fX19fX19fX19fPGJyPgpEZXZlbCBtYWls aW5nIGxpc3Q8YnI+CjxhIGhyZWY9Im1haWx0bzpEZXZlbEBvdmlydC5vcmciIHRhcmdldD0iX2Js YW5rIj5EZXZlbEBvdmlydC5vcmc8L2E+PGJyPgo8YSBocmVmPSJodHRwOi8vbGlzdHMub3ZpcnQu b3JnL21haWxtYW4vbGlzdGluZm8vZGV2ZWwiIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxh bmsiPmh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbjx3YnI+L2xpc3RpbmZvL2RldmVsPC9h Pjxicj4KPC9ibG9ja3F1b3RlPgo8L2Rpdj4KPGJyPgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L3Nw YW4+PC9kaXY+CjwvYmxvY2txdW90ZT4KPC9kaXY+Cjxicj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj48 L2Rpdj48L2Rpdj4KCjxicj5fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188d2JyPl9fX19f X19fX19fX19fX19fPGJyPgpEZXZlbCBtYWlsaW5nIGxpc3Q8YnI+CjxhIGhyZWY9Im1haWx0bzpE ZXZlbEBvdmlydC5vcmciPkRldmVsQG92aXJ0Lm9yZzwvYT48YnI+CjxhIGhyZWY9Imh0dHA6Ly9s aXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby9kZXZlbCIgcmVsPSJub3JlZmVycmVyIiB0 YXJnZXQ9Il9ibGFuayI+aHR0cDovL2xpc3RzLm92aXJ0Lm9yZy88d2JyPm1haWxtYW4vbGlzdGlu Zm8vZGV2ZWw8L2E+PGJyPjwvYmxvY2txdW90ZT48L2Rpdj48YnI+PC9kaXY+PC9kaXY+Cg== --===============4333150082228740033==-- From deepak.jagtap at maxta.com Wed Jun 21 20:57:07 2017 Content-Type: multipart/mixed; boundary="===============2804472995247618556==" MIME-Version: 1.0 From: Deepak Jagtap To: devel at ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore Date: Wed, 21 Jun 2017 20:57:04 +0000 Message-ID: In-Reply-To: CAJgorsbxeG8uoVwVSVCkjuKB6ij_zVwgNTvFR81H6UK8p7xu3w@mail.gmail.com --===============2804472995247618556== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable --_000_MWHPR11MB1663B80CFB0DAD1AD0B0C09CEDDA0MWHPR11MB1663namp_ Content-Type: text/plain; charset=3D"us-ascii" Content-Transfer-Encoding: quoted-printable Thanks Yaniv! ________________________________ From: Yaniv Kaul Sent: Wednesday, June 21, 2017 1:47:26 PM To: Deepak Jagtap Cc: Allon Mureinik; devel(a)ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore On Wed, Jun 21, 2017 at 10:28 PM, Deepak Jagtap > wrote: Hi Allon, I am trying to leverage snapshot capability of underlying filesystem. As per my understanding current snapshot works like this: Base Image(raw)--->snap1(qcow)->snap2(qcow), i.e after each snapshot vm sta= =3D rts writing on newly created qcow image. So in this case vm is going to do all new writes on snap2(qcow) voulme and = =3D will redirect read IOs to snap1 & Base image as required. But in my case snapshots created by the filesystem are read only and it's i= =3D n raw format. As a result after creating snapshot vm disk configuration won't change afte= =3D r taking snapshot but will continue doing writes on same base image. So snapshots will look like this: Base Image(raw)--->snap1(raw)->snap2(raw) Base Image will always remain writable, while the snapshots will remain rea= =3D d only raw format. Just wanted to confirm is this configurable so that vm continues referring= =3D base image after the snapshot instead of newly created qcow image? It is not. It'll need code modification to allow externally taking snapshot= =3D s of VM disks. Y. Thanks & Regards, Deepak ________________________________ From: Allon Mureinik > Sent: Tuesday, June 20, 2017 7:59:03 PM To: Deepak Jagtap Cc: devel(a)ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore Not sure I understand the question. Could you give an example of what you m= =3D ean perhpas? On Tue, Jun 20, 2017 at 10:01 PM, Deepak Jagtap > wrote: Hi Allon, After going through current vdsm code base, noticed that after taking a sna= =3D pshot vm starts referring the newly created qcow image/volume. For internal snapshots which are not qcow is it configurable somehow so th= =3D at vm continues doing writes to same base image? Thanks & Regards, Deepak ________________________________ From: Deepak Jagtap Sent: Tuesday, June 6, 2017 3:37:03 PM To: Allon Mureinik Cc: devel(a)ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore Thanks Allon! Best Regards, Deepak ________________________________ From: Allon Mureinik > Sent: Tuesday, June 6, 2017 2:43:17 PM To: Deepak Jagtap Cc: devel(a)ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore Unfortunately, there's no such integration point at the moment. On Tue, Jun 6, 2017 at 5:57 AM, Deepak Jagtap > wrote: Hey Guys, I am newbie to ovirt, and wanted to confirm whats the best way to leverage = =3D snapshot, clone features provided by the datastore filesystem. I have a btrfs datastore exported and wanted use btrfs snapshots for vm sna= =3D pshot & clones. Does ovirt offers any hooks/APIs so that image snapshots are created by the= =3D filesystem? Thanks & Regards, Deepak _______________________________________________ Devel mailing list Devel(a)ovirt.org http://lists.ovirt.org/mailman/listinfo/devel _______________________________________________ Devel mailing list Devel(a)ovirt.org http://lists.ovirt.org/mailman/listinfo/devel --_000_MWHPR11MB1663B80CFB0DAD1AD0B0C09CEDDA0MWHPR11MB1663namp_ Content-Type: text/html; charset=3D"us-ascii" Content-Transfer-Encoding: quoted-printable

Thanks Yaniv!


From: Yaniv Kaul <yk= aul@=3D redhat.com>
Sent: Wednesday, June 21, 2017 1:47:26 PM
To: Deepak Jagtap
Cc: Allon Mureinik; devel(a)ovirt.org
Subject: Re: [ovirt-devel] Snapshots & clone support from datast= =3D ore
 


On Wed, Jun 21, 2017 at 10:28 PM, Deepak Jagta= p =3D <deep= ak.jag=3D tap(a)maxta.com> wrote:

Hi Allon,


I am trying to leverage snapshot  capability of underlying fil= =3D esystem.

As per my understanding current snapsho= t&=3D nbsp;works like this:

Base Image(raw)--->snap1(qcow)->snap2(qcow), i.e after e= =3D ach snapshot vm starts writing on newly created qcow image.

So in this case vm is going to do all new writes on snap2(qcow) voulme a= =3D nd will redirect read IOs to snap1 & Base image as required.


But in my case snapshots created by the filesystem are read only and it'= =3D s in raw format.

As a result after creating snapshot vm disk configuration won't change a= =3D fter taking snapshot but will continue doing writes on same base image.

So snapshots will look like this:

Base Image(raw)--->snap1(raw)->snap2(raw)

Base Image will always remain writable, while the snapshots will = =3D remain read only raw format.


Just wanted to confirm is this configurable so that vm continues  r= =3D eferring base image after the snapshot instead of newly created qcow image?= =3D


It is not. It'll need code modification to allow externally taking sna= =3D pshots of VM disks.
Y.
 


Thanks & Regards,

Deepak




 


From:= =3D Allon Mureinik <amureini(a)redhat.com>
Sent: Tuesday, June 20, 2017 7:59:03 PM

To: Deepak Jagtap
Cc: devel= (a)ovirt=3D .org
Subject: Re: [ovirt-devel] Snapshots & clone support from datast= =3D ore
 
Not sure I understand the = qu=3D estion. Could you give an example of what you mean perhpas?

On Tue, Jun 20, 2017 at 10:01 PM, Deepak Jagta= p =3D <deep= ak.jag=3D tap(a)maxta.com> wrote:

Hi Allon,


After going through current vdsm code base, noticed that after= =3D taking a snapshot vm starts referring the newly created qcow image/volume.= =3D

For internal snapshots which are not qcow  is it configurable = =3D somehow so that vm continues doing writes to same base image?


Thanks & Regards,

Deepak


From: Deepak Jagtap
Sent: Tuesday, June 6, 2017 3:37:03 PM
To: Allon Mureinik
Cc: devel= (a)ovirt=3D .org
Subject: Re: [ovirt-devel] Snapshots & clone support from datast= =3D ore
 

Thanks Allon!


Best Regards,

Deepak


From: Allon Mureinik <amureini(a)redhat.com>
Sent: Tuesday, June 6, 2017 2:43:17 PM
To: Deepak Jagtap
Cc: devel= (a)ovirt=3D .org
Subject: Re: [ovirt-devel] Snapshots & clone support from datast= =3D ore
 
Unfortunately, there's no = su=3D ch integration point at the moment.

On Tue, Jun 6, 2017 at 5:57 AM, Deepak Jagtap = <deep= ak.jag=3D tap(a)maxta.com> wrote:

Hey Guys,


I am newbie to ovirt, and wanted to confirm whats the best way to levera= =3D ge snapshot, clone features 

provided by the datastore filesystem.

I have a btrfs datastore exported and wanted use btrfs snapshots fo= =3D r vm snapshot & clones.

Does ovirt offers any hooks/APIs so that image snapshots are created by = =3D the filesystem?


Thanks & Regards,

Deepak

 


_______________________________________________
Devel mailing list
Devel(a)ovirt.or= g http://lists.ovirt.org/mailman/listinfo/devel<=3D br>



_______________________________________________
Devel mailing list
Devel(a)ovirt.org
http://lists.ovirt.org/mailman/listinfo/devel<=3D br>

--_000_MWHPR11MB1663B80CFB0DAD1AD0B0C09CEDDA0MWHPR11MB1663namp_-- --===============2804472995247618556== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS1fMDAwX01XSFBSMTFNQjE2NjNCODBDRkIwREFEMUFEMEIwQzA5Q0VEREEwTVdIUFIxMU1CMTY2 M25hbXBfCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiCkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKClRoYW5rcyBZYW5pdiEKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyb206IFlhbml2IEthdWwgPHlrYXVsQHJl ZGhhdC5jb20+ClNlbnQ6IFdlZG5lc2RheSwgSnVuZSAyMSwgMjAxNyAxOjQ3OjI2IFBNClRvOiBE ZWVwYWsgSmFndGFwCkNjOiBBbGxvbiBNdXJlaW5pazsgZGV2ZWxAb3ZpcnQub3JnClN1YmplY3Q6 IFJlOiBbb3ZpcnQtZGV2ZWxdIFNuYXBzaG90cyAmIGNsb25lIHN1cHBvcnQgZnJvbSBkYXRhc3Rv cmUKCgoKT24gV2VkLCBKdW4gMjEsIDIwMTcgYXQgMTA6MjggUE0sIERlZXBhayBKYWd0YXAgPGRl ZXBhay5qYWd0YXBAbWF4dGEuY29tPG1hPQppbHRvOmRlZXBhay5qYWd0YXBAbWF4dGEuY29tPj4g d3JvdGU6CgpIaSBBbGxvbiwKCgpJIGFtIHRyeWluZyB0byBsZXZlcmFnZSBzbmFwc2hvdCAgY2Fw YWJpbGl0eSBvZiB1bmRlcmx5aW5nIGZpbGVzeXN0ZW0uCgpBcyBwZXIgbXkgdW5kZXJzdGFuZGlu ZyBjdXJyZW50IHNuYXBzaG90IHdvcmtzIGxpa2UgdGhpczoKCkJhc2UgSW1hZ2UocmF3KS0tLT5z bmFwMShxY293KS0+c25hcDIocWNvdyksIGkuZSBhZnRlciBlYWNoIHNuYXBzaG90IHZtIHN0YT0K cnRzIHdyaXRpbmcgb24gbmV3bHkgY3JlYXRlZCBxY293IGltYWdlLgoKU28gaW4gdGhpcyBjYXNl IHZtIGlzIGdvaW5nIHRvIGRvIGFsbCBuZXcgd3JpdGVzIG9uIHNuYXAyKHFjb3cpIHZvdWxtZSBh bmQgPQp3aWxsIHJlZGlyZWN0IHJlYWQgSU9zIHRvIHNuYXAxICYgQmFzZSBpbWFnZSBhcyByZXF1 aXJlZC4KCgpCdXQgaW4gbXkgY2FzZSBzbmFwc2hvdHMgY3JlYXRlZCBieSB0aGUgZmlsZXN5c3Rl bSBhcmUgcmVhZCBvbmx5IGFuZCBpdCdzIGk9Cm4gcmF3IGZvcm1hdC4KCkFzIGEgcmVzdWx0IGFm dGVyIGNyZWF0aW5nIHNuYXBzaG90IHZtIGRpc2sgY29uZmlndXJhdGlvbiB3b24ndCBjaGFuZ2Ug YWZ0ZT0KciB0YWtpbmcgc25hcHNob3QgYnV0IHdpbGwgY29udGludWUgZG9pbmcgd3JpdGVzIG9u IHNhbWUgYmFzZSBpbWFnZS4KClNvIHNuYXBzaG90cyB3aWxsIGxvb2sgbGlrZSB0aGlzOgoKQmFz ZSBJbWFnZShyYXcpLS0tPnNuYXAxKHJhdyktPnNuYXAyKHJhdykKCkJhc2UgSW1hZ2Ugd2lsbCBh bHdheXMgcmVtYWluIHdyaXRhYmxlLCB3aGlsZSB0aGUgc25hcHNob3RzIHdpbGwgcmVtYWluIHJl YT0KZCBvbmx5IHJhdyBmb3JtYXQuCgoKSnVzdCB3YW50ZWQgdG8gY29uZmlybSBpcyB0aGlzIGNv bmZpZ3VyYWJsZSBzbyB0aGF0IHZtIGNvbnRpbnVlcyAgcmVmZXJyaW5nPQogYmFzZSBpbWFnZSBh ZnRlciB0aGUgc25hcHNob3QgaW5zdGVhZCBvZiBuZXdseSBjcmVhdGVkIHFjb3cgaW1hZ2U/CgpJ dCBpcyBub3QuIEl0J2xsIG5lZWQgY29kZSBtb2RpZmljYXRpb24gdG8gYWxsb3cgZXh0ZXJuYWxs eSB0YWtpbmcgc25hcHNob3Q9CnMgb2YgVk0gZGlza3MuClkuCgoKClRoYW5rcyAmIFJlZ2FyZHMs CgpEZWVwYWsKCgoKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJvbTogQWxs b24gTXVyZWluaWsgPGFtdXJlaW5pQHJlZGhhdC5jb208bWFpbHRvOmFtdXJlaW5pQHJlZGhhdC5j b20+PgpTZW50OiBUdWVzZGF5LCBKdW5lIDIwLCAyMDE3IDc6NTk6MDMgUE0KClRvOiBEZWVwYWsg SmFndGFwCkNjOiBkZXZlbEBvdmlydC5vcmc8bWFpbHRvOmRldmVsQG92aXJ0Lm9yZz4KU3ViamVj dDogUmU6IFtvdmlydC1kZXZlbF0gU25hcHNob3RzICYgY2xvbmUgc3VwcG9ydCBmcm9tIGRhdGFz dG9yZQoKTm90IHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBxdWVzdGlvbi4gQ291bGQgeW91IGdpdmUg YW4gZXhhbXBsZSBvZiB3aGF0IHlvdSBtPQplYW4gcGVyaHBhcz8KCk9uIFR1ZSwgSnVuIDIwLCAy MDE3IGF0IDEwOjAxIFBNLCBEZWVwYWsgSmFndGFwIDxkZWVwYWsuamFndGFwQG1heHRhLmNvbTxt YT0KaWx0bzpkZWVwYWsuamFndGFwQG1heHRhLmNvbT4+IHdyb3RlOgoKSGkgQWxsb24sCgoKQWZ0 ZXIgZ29pbmcgdGhyb3VnaCBjdXJyZW50IHZkc20gY29kZSBiYXNlLCBub3RpY2VkIHRoYXQgYWZ0 ZXIgdGFraW5nIGEgc25hPQpwc2hvdCB2bSBzdGFydHMgcmVmZXJyaW5nIHRoZSBuZXdseSBjcmVh dGVkIHFjb3cgaW1hZ2Uvdm9sdW1lLgoKRm9yIGludGVybmFsIHNuYXBzaG90cyB3aGljaCBhcmUg bm90IHFjb3cgIGlzIGl0IGNvbmZpZ3VyYWJsZSBzb21laG93IHNvIHRoPQphdCB2bSBjb250aW51 ZXMgZG9pbmcgd3JpdGVzIHRvIHNhbWUgYmFzZSBpbWFnZT8KCgpUaGFua3MgJiBSZWdhcmRzLAoK RGVlcGFrCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcm9tOiBEZWVwYWsgSmFn dGFwClNlbnQ6IFR1ZXNkYXksIEp1bmUgNiwgMjAxNyAzOjM3OjAzIFBNClRvOiBBbGxvbiBNdXJl aW5pawpDYzogZGV2ZWxAb3ZpcnQub3JnPG1haWx0bzpkZXZlbEBvdmlydC5vcmc+ClN1YmplY3Q6 IFJlOiBbb3ZpcnQtZGV2ZWxdIFNuYXBzaG90cyAmIGNsb25lIHN1cHBvcnQgZnJvbSBkYXRhc3Rv cmUKCgpUaGFua3MgQWxsb24hCgoKQmVzdCBSZWdhcmRzLAoKRGVlcGFrCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpGcm9tOiBBbGxvbiBNdXJlaW5payA8YW11cmVpbmlAcmVkaGF0 LmNvbTxtYWlsdG86YW11cmVpbmlAcmVkaGF0LmNvbT4+ClNlbnQ6IFR1ZXNkYXksIEp1bmUgNiwg MjAxNyAyOjQzOjE3IFBNClRvOiBEZWVwYWsgSmFndGFwCkNjOiBkZXZlbEBvdmlydC5vcmc8bWFp bHRvOmRldmVsQG92aXJ0Lm9yZz4KU3ViamVjdDogUmU6IFtvdmlydC1kZXZlbF0gU25hcHNob3Rz ICYgY2xvbmUgc3VwcG9ydCBmcm9tIGRhdGFzdG9yZQoKVW5mb3J0dW5hdGVseSwgdGhlcmUncyBu byBzdWNoIGludGVncmF0aW9uIHBvaW50IGF0IHRoZSBtb21lbnQuCgpPbiBUdWUsIEp1biA2LCAy MDE3IGF0IDU6NTcgQU0sIERlZXBhayBKYWd0YXAgPGRlZXBhay5qYWd0YXBAbWF4dGEuY29tPG1h aWw9CnRvOmRlZXBhay5qYWd0YXBAbWF4dGEuY29tPj4gd3JvdGU6CgpIZXkgR3V5cywKCgpJIGFt IG5ld2JpZSB0byBvdmlydCwgYW5kIHdhbnRlZCB0byBjb25maXJtIHdoYXRzIHRoZSBiZXN0IHdh eSB0byBsZXZlcmFnZSA9CnNuYXBzaG90LCBjbG9uZSBmZWF0dXJlcwoKcHJvdmlkZWQgYnkgdGhl IGRhdGFzdG9yZSBmaWxlc3lzdGVtLgoKSSBoYXZlIGEgYnRyZnMgZGF0YXN0b3JlIGV4cG9ydGVk IGFuZCB3YW50ZWQgdXNlIGJ0cmZzIHNuYXBzaG90cyBmb3Igdm0gc25hPQpwc2hvdCAmIGNsb25l cy4KCkRvZXMgb3ZpcnQgb2ZmZXJzIGFueSBob29rcy9BUElzIHNvIHRoYXQgaW1hZ2Ugc25hcHNo b3RzIGFyZSBjcmVhdGVkIGJ5IHRoZT0KIGZpbGVzeXN0ZW0/CgoKVGhhbmtzICYgUmVnYXJkcywK CkRlZXBhawoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpEZXZlbCBtYWlsaW5nIGxpc3QKRGV2ZWxAb3ZpcnQub3JnPG1haWx0bzpEZXZlbEBvdmlydC5v cmc+Cmh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby9kZXZlbAoKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZXZlbCBtYWlsaW5n IGxpc3QKRGV2ZWxAb3ZpcnQub3JnPG1haWx0bzpEZXZlbEBvdmlydC5vcmc+Cmh0dHA6Ly9saXN0 cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby9kZXZlbAoKCi0tXzAwMF9NV0hQUjExTUIxNjYz QjgwQ0ZCMERBRDFBRDBCMEMwOUNFRERBME1XSFBSMTFNQjE2NjNuYW1wXwpDb250ZW50LVR5cGU6 IHRleHQvaHRtbDsgY2hhcnNldD0idXMtYXNjaWkiCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6 IHF1b3RlZC1wcmludGFibGUKCjxodG1sPgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0zRCJDb250 ZW50LVR5cGUiIGNvbnRlbnQ9M0QidGV4dC9odG1sOyBjaGFyc2V0PTNEdXMtYXNjaWkiPQo+Cjwv aGVhZD4KPGJvZHk+CjxzdHlsZSB0eXBlPTNEInRleHQvY3NzIiBzdHlsZT0zRCJkaXNwbGF5Om5v bmU7Ij48IS0tIFAge21hcmdpbi10b3A6MDttYXJnaT0Kbi1ib3R0b206MDt9IC0tPjwvc3R5bGU+ CjxkaXYgaWQ9M0QiZGl2dGFnZGVmYXVsdHdyYXBwZXIiIHN0eWxlPTNEImZvbnQtc2l6ZToxMnB0 O2NvbG9yOiMwMDAwMDA7Zm9udD0KLWZhbWlseTpDYWxpYnJpLEFyaWFsLEhlbHZldGljYSxzYW5z LXNlcmlmOyIgZGlyPTNEImx0ciI+CjxwPlRoYW5rcyBZYW5pdiE8L3A+CjwvZGl2Pgo8aHIgc3R5 bGU9M0QiZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6OTglIiB0YWJpbmRleD0zRCItMSI+Cjxk aXYgaWQ9M0QiZGl2UnBseUZ3ZE1zZyIgZGlyPTNEImx0ciI+PGZvbnQgZmFjZT0zRCJDYWxpYnJp LCBzYW5zLXNlcmlmIiBzdD0KeWxlPTNEImZvbnQtc2l6ZToxMXB0IiBjb2xvcj0zRCIjMDAwMDAw Ij48Yj5Gcm9tOjwvYj4gWWFuaXYgS2F1bCAmbHQ7eWthdWxAPQpyZWRoYXQuY29tJmd0Ozxicj4K PGI+U2VudDo8L2I+IFdlZG5lc2RheSwgSnVuZSAyMSwgMjAxNyAxOjQ3OjI2IFBNPGJyPgo8Yj5U bzo8L2I+IERlZXBhayBKYWd0YXA8YnI+CjxiPkNjOjwvYj4gQWxsb24gTXVyZWluaWs7IGRldmVs QG92aXJ0Lm9yZzxicj4KPGI+U3ViamVjdDo8L2I+IFJlOiBbb3ZpcnQtZGV2ZWxdIFNuYXBzaG90 cyAmYW1wOyBjbG9uZSBzdXBwb3J0IGZyb20gZGF0YXN0PQpvcmU8L2ZvbnQ+CjxkaXY+Jm5ic3A7 PC9kaXY+CjwvZGl2Pgo8ZGl2Pgo8ZGl2IGRpcj0zRCJsdHIiPjxicj4KPGRpdiBjbGFzcz0zRCJn bWFpbF9leHRyYSI+PGJyPgo8ZGl2IGNsYXNzPTNEImdtYWlsX3F1b3RlIj5PbiBXZWQsIEp1biAy MSwgMjAxNyBhdCAxMDoyOCBQTSwgRGVlcGFrIEphZ3RhcCA9CjxzcGFuIGRpcj0zRCJsdHIiPgom bHQ7PGEgaHJlZj0zRCJtYWlsdG86ZGVlcGFrLmphZ3RhcEBtYXh0YS5jb20iIHRhcmdldD0zRCJf YmxhbmsiPmRlZXBhay5qYWc9CnRhcEBtYXh0YS5jb208L2E+Jmd0Ozwvc3Bhbj4gd3JvdGU6PGJy Pgo8YmxvY2txdW90ZSBjbGFzcz0zRCJnbWFpbF9xdW90ZSIgc3R5bGU9M0QibWFyZ2luOjAgMCAw IC44ZXg7Ym9yZGVyLWxlZnQ6MXA9CnggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4KPGRp dj4KPGRpdiBpZD0zRCJtXy05MDcyMTM1OTAyMTc4NzQ5ODEwZGl2dGFnZGVmYXVsdHdyYXBwZXIi IHN0eWxlPTNEImZvbnQtc2l6ZToxPQoycHQ7Y29sb3I6IzAwMDAwMDtmb250LWZhbWlseTpDYWxp YnJpLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmIiBkaXI9M0QibHQ9CnIiPgo8cD5IaSBBbGxv biw8L3A+CjxwPjxicj4KPC9wPgo8cD5JIGFtJm5ic3A7dHJ5aW5nIHRvIGxldmVyYWdlIHNuYXBz aG90ICZuYnNwO2NhcGFiaWxpdHkgb2YgdW5kZXJseWluZyBmaWw9CmVzeXN0ZW0uPC9wPgo8cD48 c3BhbiBzdHlsZT0zRCJmb250LXNpemU6MTJwdCI+QXMgcGVyIG15IHVuZGVyc3RhbmRpbmcgY3Vy cmVudCBzbmFwc2hvdCY9Cm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPTNEImZvbnQtc2l6ZToxMnB0 Ij48L3NwYW4+PHNwYW4gc3R5bGU9M0QiZm9udC1zaXplOj0KMTJwdCI+d29ya3MgbGlrZSB0aGlz Ojwvc3Bhbj48L3A+CjxwPkJhc2UgSW1hZ2UocmF3KS0tLSZndDtzbmFwMShxY293KS0mZ3Q7PHdi cj5zbmFwMihxY293KSwgaS5lJm5ic3A7YWZ0ZXIgZT0KYWNoIHNuYXBzaG90IHZtIHN0YXJ0cyB3 cml0aW5nIG9uIG5ld2x5IGNyZWF0ZWQgcWNvdyBpbWFnZS48L3A+CjxwPlNvIGluIHRoaXMgY2Fz ZSB2bSBpcyBnb2luZyB0byBkbyBhbGwgbmV3IHdyaXRlcyBvbiBzbmFwMihxY293KSB2b3VsbWUg YT0KbmQgd2lsbCByZWRpcmVjdCByZWFkJm5ic3A7SU9zIHRvIHNuYXAxICZhbXA7IEJhc2UgaW1h Z2UgYXMgcmVxdWlyZWQuPC9wPgo8cD48YnI+CjwvcD4KPHA+QnV0IGluIG15IGNhc2Ugc25hcHNo b3RzIGNyZWF0ZWQgYnkgdGhlIGZpbGVzeXN0ZW0gYXJlIHJlYWQgb25seSBhbmQgaXQnPQpzIGlu IHJhdyBmb3JtYXQuPC9wPgo8cD5BcyBhIHJlc3VsdCBhZnRlciBjcmVhdGluZyBzbmFwc2hvdCB2 bSBkaXNrIGNvbmZpZ3VyYXRpb24gd29uJ3QgY2hhbmdlIGE9CmZ0ZXIgdGFraW5nIHNuYXBzaG90 IGJ1dCB3aWxsIGNvbnRpbnVlIGRvaW5nIHdyaXRlcyBvbiBzYW1lIGJhc2UgaW1hZ2UuPC9wPgo8 cD5TbyBzbmFwc2hvdHMgd2lsbCBsb29rIGxpa2UgdGhpczo8L3A+CjxwPjxzcGFuIHN0eWxlPTNE ImZvbnQtZmFtaWx5OkNhbGlicmksQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYsRW1vamlGb250 LD0KJnF1b3Q7QXBwbGUgQ29sb3IgRW1vamkmcXVvdDssJnF1b3Q7U2Vnb2UgVUkgRW1vamkmcXVv dDssTm90b0NvbG9yRW1vamksJnF1PQpvdDtTZWdvZSBVSSBTeW1ib2wmcXVvdDssJnF1b3Q7QW5k cm9pZCBFbW9qaSZxdW90OyxFbW9qaVN5bWJvbHM7Zm9udC1zaXplOjE9CjZweCI+QmFzZSBJbWFn ZShyYXcpLS0tJmd0O3NuYXAxKHJhdyktJmd0Ozx3YnI+c25hcDIocmF3KTwvc3Bhbj48YnI+Cjwv cD4KPHA+PHNwYW4gc3R5bGU9M0QiZm9udC1mYW1pbHk6Q2FsaWJyaSxBcmlhbCxIZWx2ZXRpY2Es c2Fucy1zZXJpZixFbW9qaUZvbnQsPQomcXVvdDtBcHBsZSBDb2xvciBFbW9qaSZxdW90OywmcXVv dDtTZWdvZSBVSSBFbW9qaSZxdW90OyxOb3RvQ29sb3JFbW9qaSwmcXU9Cm90O1NlZ29lIFVJIFN5 bWJvbCZxdW90OywmcXVvdDtBbmRyb2lkIEVtb2ppJnF1b3Q7LEVtb2ppU3ltYm9scztmb250LXNp emU6MT0KNnB4Ij5CYXNlIEltYWdlIHdpbGwgYWx3YXlzIHJlbWFpbiB3cml0YWJsZSwmbmJzcDt3 aGlsZSB0aGUgc25hcHNob3RzIHdpbGwgPQpyZW1haW4KIHJlYWQgb25seSByYXcgZm9ybWF0Ljwv c3Bhbj48L3A+CjxwPjxicj4KPC9wPgo8cD5KdXN0IHdhbnRlZCB0byBjb25maXJtIGlzIHRoaXMg Y29uZmlndXJhYmxlIHNvIHRoYXQgdm0gY29udGludWVzICZuYnNwO3I9CmVmZXJyaW5nIGJhc2Ug aW1hZ2UgYWZ0ZXIgdGhlIHNuYXBzaG90IGluc3RlYWQgb2YgbmV3bHkgY3JlYXRlZCBxY293IGlt YWdlPz0KPC9wPgo8L2Rpdj4KPC9kaXY+CjwvYmxvY2txdW90ZT4KPGRpdj48YnI+CjwvZGl2Pgo8 ZGl2Pkl0IGlzIG5vdC4gSXQnbGwgbmVlZCBjb2RlIG1vZGlmaWNhdGlvbiB0byBhbGxvdyBleHRl cm5hbGx5IHRha2luZyBzbmE9CnBzaG90cyBvZiBWTSBkaXNrcy48L2Rpdj4KPGRpdj5ZLjwvZGl2 Pgo8ZGl2PiZuYnNwOzwvZGl2Pgo8YmxvY2txdW90ZSBjbGFzcz0zRCJnbWFpbF9xdW90ZSIgc3R5 bGU9M0QibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXA9CnggI2NjYyBzb2xpZDtwYWRk aW5nLWxlZnQ6MWV4Ij4KPGRpdj4KPGRpdiBpZD0zRCJtXy05MDcyMTM1OTAyMTc4NzQ5ODEwZGl2 dGFnZGVmYXVsdHdyYXBwZXIiIHN0eWxlPTNEImZvbnQtc2l6ZToxPQoycHQ7Y29sb3I6IzAwMDAw MDtmb250LWZhbWlseTpDYWxpYnJpLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmIiBkaXI9M0Qi bHQ9CnIiPgo8cD48YnI+CjwvcD4KPHA+VGhhbmtzICZhbXA7IFJlZ2FyZHMsPC9wPgo8cD5EZWVw YWs8L3A+CjxwPjxzcGFuIHN0eWxlPTNEImZvbnQtZmFtaWx5OkNhbGlicmksQXJpYWwsSGVsdmV0 aWNhLHNhbnMtc2VyaWYsRW1vamlGb250LD0KJnF1b3Q7QXBwbGUgQ29sb3IgRW1vamkmcXVvdDss JnF1b3Q7U2Vnb2UgVUkgRW1vamkmcXVvdDssTm90b0NvbG9yRW1vamksJnF1PQpvdDtTZWdvZSBV SSBTeW1ib2wmcXVvdDssJnF1b3Q7QW5kcm9pZCBFbW9qaSZxdW90OyxFbW9qaVN5bWJvbHM7Zm9u dC1zaXplOjE9CjZweCI+PGJyPgo8L3NwYW4+PC9wPgo8cD48c3BhbiBzdHlsZT0zRCJmb250LWZh bWlseTpDYWxpYnJpLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmLEVtb2ppRm9udCw9CiZxdW90 O0FwcGxlIENvbG9yIEVtb2ppJnF1b3Q7LCZxdW90O1NlZ29lIFVJIEVtb2ppJnF1b3Q7LE5vdG9D b2xvckVtb2ppLCZxdT0Kb3Q7U2Vnb2UgVUkgU3ltYm9sJnF1b3Q7LCZxdW90O0FuZHJvaWQgRW1v amkmcXVvdDssRW1vamlTeW1ib2xzO2ZvbnQtc2l6ZToxPQo2cHgiPjxicj4KPC9zcGFuPjwvcD4K PHA+PGJyPgo8L3A+CjxwPiZuYnNwOzwvcD4KPC9kaXY+CjxociBzdHlsZT0zRCJkaXNwbGF5Omlu bGluZS1ibG9jazt3aWR0aDo5OCUiPgo8ZGl2IGlkPTNEIm1fLTkwNzIxMzU5MDIxNzg3NDk4MTBk aXZScGx5RndkTXNnIiBkaXI9M0QibHRyIj48Zm9udCBmYWNlPTNEIkM9CmFsaWJyaSwgc2Fucy1z ZXJpZiIgc3R5bGU9M0QiZm9udC1zaXplOjExcHQiIGNvbG9yPTNEIiMwMDAwMDAiPjxiPkZyb206 PC9iPj0KIEFsbG9uIE11cmVpbmlrICZsdDs8YSBocmVmPTNEIm1haWx0bzphbXVyZWluaUByZWRo YXQuY29tIiB0YXJnZXQ9M0QiX2JsYW5rPQoiPmFtdXJlaW5pQHJlZGhhdC5jb208L2E+Jmd0Ozxi cj4KPGI+U2VudDo8L2I+IFR1ZXNkYXksIEp1bmUgMjAsIDIwMTcgNzo1OTowMyBQTQo8ZGl2Pgo8 ZGl2IGNsYXNzPTNEImg1Ij48YnI+CjxiPlRvOjwvYj4gRGVlcGFrIEphZ3RhcDxicj4KPGI+Q2M6 PC9iPiA8YSBocmVmPTNEIm1haWx0bzpkZXZlbEBvdmlydC5vcmciIHRhcmdldD0zRCJfYmxhbmsi PmRldmVsQG92aXJ0PQoub3JnPC9hPjxicj4KPGI+U3ViamVjdDo8L2I+IFJlOiBbb3ZpcnQtZGV2 ZWxdIFNuYXBzaG90cyAmYW1wOyBjbG9uZSBzdXBwb3J0IGZyb20gZGF0YXN0PQpvcmU8L2Rpdj4K PC9kaXY+CjwvZm9udD4KPGRpdj4mbmJzcDs8L2Rpdj4KPC9kaXY+CjxkaXY+CjxkaXYgY2xhc3M9 M0QiaDUiPgo8ZGl2Pgo8ZGl2IGRpcj0zRCJsdHIiPgo8ZGl2IHN0eWxlPTNEImZvbnQtZmFtaWx5 Om1vbm9zcGFjZSxtb25vc3BhY2UiPk5vdCBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcXU9CmVzdGlv bi4gQ291bGQgeW91IGdpdmUgYW4gZXhhbXBsZSZuYnNwO29mIHdoYXQgeW91IG1lYW4gcGVyaHBh cz88L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9M0QiZ21haWxfZXh0cmEiPjxicj4KPGRpdiBjbGFz cz0zRCJnbWFpbF9xdW90ZSI+T24gVHVlLCBKdW4gMjAsIDIwMTcgYXQgMTA6MDEgUE0sIERlZXBh ayBKYWd0YXAgPQo8c3BhbiBkaXI9M0QibHRyIj4KJmx0OzxhIGhyZWY9M0QibWFpbHRvOmRlZXBh ay5qYWd0YXBAbWF4dGEuY29tIiB0YXJnZXQ9M0QiX2JsYW5rIj5kZWVwYWsuamFnPQp0YXBAbWF4 dGEuY29tPC9hPiZndDs8L3NwYW4+IHdyb3RlOjxicj4KPGJsb2NrcXVvdGUgY2xhc3M9M0QiZ21h aWxfcXVvdGUiIHN0eWxlPTNEIm1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFwPQp4ICNj Y2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+CjxkaXY+CjxkaXYgaWQ9M0QibV8tOTA3MjEzNTkw MjE3ODc0OTgxMG1fNTg5MTkzODc0MDcyMzgzNzEyN2RpdnRhZ2RlZmF1bHR3cmFwcGVyIj0KIHN0 eWxlPTNEImZvbnQtc2l6ZToxMnB0O2NvbG9yOiMwMDAwMDA7Zm9udC1mYW1pbHk6Q2FsaWJyaSxB cmlhbCxIZWx2ZXRpY2EsPQpzYW5zLXNlcmlmIiBkaXI9M0QibHRyIj4KPHA+SGkgQWxsb24sPC9w Pgo8cD48YnI+CjwvcD4KPHA+QWZ0ZXIgZ29pbmcgdGhyb3VnaCZuYnNwO2N1cnJlbnQgdmRzbSZu YnNwO2NvZGUgYmFzZSwgbm90aWNlZCB0aGF0IGFmdGVyPQogdGFraW5nIGEgc25hcHNob3Qgdm0g c3RhcnRzIHJlZmVycmluZyB0aGUgbmV3bHkgY3JlYXRlZCBxY293IGltYWdlL3ZvbHVtZS49Cjwv cD4KPHA+Rm9yIGludGVybmFsIHNuYXBzaG90cyB3aGljaCBhcmUgbm90IHFjb3cgJm5ic3A7aXMg aXQmbmJzcDtjb25maWd1cmFibGUgPQpzb21laG93Jm5ic3A7c28gdGhhdCB2bSBjb250aW51ZXMg ZG9pbmcgd3JpdGVzIHRvIHNhbWUgYmFzZSBpbWFnZT88L3A+CjxwPjxicj4KPC9wPgo8cD5UaGFu a3MgJmFtcDsgUmVnYXJkcyw8L3A+CjxwPkRlZXBhazwvcD4KPC9kaXY+CjxociBzdHlsZT0zRCJk aXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo5OCUiPgo8ZGl2IGlkPTNEIm1fLTkwNzIxMzU5MDIx Nzg3NDk4MTBtXzU4OTE5Mzg3NDA3MjM4MzcxMjdkaXZScGx5RndkTXNnIiBkaXI9M0Q9CiJsdHIi Pjxmb250IGZhY2U9M0QiQ2FsaWJyaSwgc2Fucy1zZXJpZiIgc3R5bGU9M0QiZm9udC1zaXplOjEx cHQiIGNvbG9yPTNEIj0KIzAwMDAwMCI+PGI+RnJvbTo8L2I+IERlZXBhayBKYWd0YXA8YnI+Cjxi PlNlbnQ6PC9iPiBUdWVzZGF5LCBKdW5lIDYsIDIwMTcgMzozNzowMyBQTTxicj4KPGI+VG86PC9i PiBBbGxvbiBNdXJlaW5pazxzcGFuPjxicj4KPGI+Q2M6PC9iPiA8YSBocmVmPTNEIm1haWx0bzpk ZXZlbEBvdmlydC5vcmciIHRhcmdldD0zRCJfYmxhbmsiPmRldmVsQG92aXJ0PQoub3JnPC9hPjxi cj4KPGI+U3ViamVjdDo8L2I+IFJlOiBbb3ZpcnQtZGV2ZWxdIFNuYXBzaG90cyAmYW1wOyBjbG9u ZSBzdXBwb3J0IGZyb20gZGF0YXN0PQpvcmU8L3NwYW4+PC9mb250Pgo8ZGl2PiZuYnNwOzwvZGl2 Pgo8L2Rpdj4KPHNwYW4+CjxkaXY+CjxkaXYgaWQ9M0QibV8tOTA3MjEzNTkwMjE3ODc0OTgxMG1f NTg5MTkzODc0MDcyMzgzNzEyN2RpdnRhZ2RlZmF1bHR3cmFwcGVyIj0KIHN0eWxlPTNEImZvbnQt c2l6ZToxMnB0O2NvbG9yOiMwMDAwMDA7Zm9udC1mYW1pbHk6Q2FsaWJyaSxBcmlhbCxIZWx2ZXRp Y2EsPQpzYW5zLXNlcmlmIiBkaXI9M0QibHRyIj4KPHA+VGhhbmtzIEFsbG9uITwvcD4KPHA+PGJy Pgo8L3A+CjxwPkJlc3QgUmVnYXJkcyw8L3A+CjxwPkRlZXBhazwvcD4KPC9kaXY+CjxociBzdHls ZT0zRCJkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo5OCUiPgo8ZGl2IGlkPTNEIm1fLTkwNzIx MzU5MDIxNzg3NDk4MTBtXzU4OTE5Mzg3NDA3MjM4MzcxMjdkaXZScGx5RndkTXNnIiBkaXI9M0Q9 CiJsdHIiPjxmb250IGZhY2U9M0QiQ2FsaWJyaSwgc2Fucy1zZXJpZiIgc3R5bGU9M0QiZm9udC1z aXplOjExcHQiIGNvbG9yPTNEIj0KIzAwMDAwMCI+PGI+RnJvbTo8L2I+IEFsbG9uIE11cmVpbmlr ICZsdDs8YSBocmVmPTNEIm1haWx0bzphbXVyZWluaUByZWRoYXQuPQpjb20iIHRhcmdldD0zRCJf YmxhbmsiPmFtdXJlaW5pQHJlZGhhdC5jb208L2E+Jmd0Ozxicj4KPGI+U2VudDo8L2I+IFR1ZXNk YXksIEp1bmUgNiwgMjAxNyAyOjQzOjE3IFBNPGJyPgo8Yj5Ubzo8L2I+IERlZXBhayBKYWd0YXA8 YnI+CjxiPkNjOjwvYj4gPGEgaHJlZj0zRCJtYWlsdG86ZGV2ZWxAb3ZpcnQub3JnIiB0YXJnZXQ9 M0QiX2JsYW5rIj5kZXZlbEBvdmlydD0KLm9yZzwvYT48YnI+CjxiPlN1YmplY3Q6PC9iPiBSZTog W292aXJ0LWRldmVsXSBTbmFwc2hvdHMgJmFtcDsgY2xvbmUgc3VwcG9ydCBmcm9tIGRhdGFzdD0K b3JlPC9mb250Pgo8ZGl2PiZuYnNwOzwvZGl2Pgo8L2Rpdj4KPGRpdj4KPGRpdiBkaXI9M0QibHRy Ij4KPGRpdiBzdHlsZT0zRCJmb250LWZhbWlseTptb25vc3BhY2UsbW9ub3NwYWNlIj5VbmZvcnR1 bmF0ZWx5LCB0aGVyZSdzIG5vIHN1PQpjaCBpbnRlZ3JhdGlvbiBwb2ludCBhdCB0aGUgbW9tZW50 LjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0zRCJnbWFpbF9leHRyYSI+PGJyPgo8ZGl2IGNsYXNz PTNEImdtYWlsX3F1b3RlIj5PbiBUdWUsIEp1biA2LCAyMDE3IGF0IDU6NTcgQU0sIERlZXBhayBK YWd0YXAgPHM9CnBhbiBkaXI9M0QibHRyIj4KJmx0OzxhIGhyZWY9M0QibWFpbHRvOmRlZXBhay5q YWd0YXBAbWF4dGEuY29tIiB0YXJnZXQ9M0QiX2JsYW5rIj5kZWVwYWsuamFnPQp0YXBAbWF4dGEu Y29tPC9hPiZndDs8L3NwYW4+IHdyb3RlOjxicj4KPGJsb2NrcXVvdGUgY2xhc3M9M0QiZ21haWxf cXVvdGUiIHN0eWxlPTNEIm1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFwPQp4ICNjY2Mg c29saWQ7cGFkZGluZy1sZWZ0OjFleCI+CjxkaXYgZGlyPTNEImx0ciI+CjxkaXYgaWQ9M0QibV8t OTA3MjEzNTkwMjE3ODc0OTgxMG1fNTg5MTkzODc0MDcyMzgzNzEyN21fLTQ4NzMyNDYwOTUxNzM5 NjgyMj0KNGRpdnRhZ2RlZmF1bHR3cmFwcGVyIiBzdHlsZT0zRCJmb250LXNpemU6MTJwdDtjb2xv cjojMDAwMDAwO2ZvbnQtZmFtaWx5OkNhPQpsaWJyaSxBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJp ZiIgZGlyPTNEImx0ciI+CjxwPkhleSBHdXlzLDwvcD4KPHA+PGJyPgo8L3A+CjxwPkkgYW0gbmV3 YmllIHRvIG92aXJ0LCBhbmQgd2FudGVkIHRvIGNvbmZpcm0gd2hhdHMgdGhlIGJlc3Qgd2F5IHRv IGxldmVyYT0KZ2Ugc25hcHNob3QsIGNsb25lIGZlYXR1cmVzJm5ic3A7PC9wPgo8cD5wcm92aWRl ZCBieSB0aGUgZGF0YXN0b3JlIGZpbGVzeXN0ZW0uPC9wPgo8cD5JIGhhdmUgYSBidHJmcyBkYXRh c3RvcmUgZXhwb3J0ZWQmbmJzcDthbmQgd2FudGVkIHVzZSBidHJmcyBzbmFwc2hvdHMgZm89CnIg dm0gc25hcHNob3QgJmFtcDsgY2xvbmVzLjwvcD4KPHA+RG9lcyBvdmlydCBvZmZlcnMgYW55IGhv b2tzL0FQSXMgc28gdGhhdCBpbWFnZSBzbmFwc2hvdHMgYXJlIGNyZWF0ZWQgYnkgPQp0aGUgZmls ZXN5c3RlbT88L3A+CjxwPjxicj4KPC9wPgo8cD5UaGFua3MgJmFtcDsgUmVnYXJkcyw8L3A+Cjxw PkRlZXBhazwvcD4KPHA+Jm5ic3A7PC9wPgo8L2Rpdj4KPC9kaXY+Cjxicj4KX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fPHdicj5fX19fX19fX19fX19fX19fXzxicj4KRGV2ZWwgbWFpbGlu ZyBsaXN0PGJyPgo8YSBocmVmPTNEIm1haWx0bzpEZXZlbEBvdmlydC5vcmciIHRhcmdldD0zRCJf YmxhbmsiPkRldmVsQG92aXJ0Lm9yZzwvYT48YnI9Cj4KPGEgaHJlZj0zRCJodHRwOi8vbGlzdHMu b3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vZGV2ZWwiIHJlbD0zRCJub3JlZmVycmVyPQoiIHRh cmdldD0zRCJfYmxhbmsiPmh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbjx3YnI+L2xpc3Rp bmZvL2RldmVsPC9hPjw9CmJyPgo8L2Jsb2NrcXVvdGU+CjwvZGl2Pgo8YnI+CjwvZGl2Pgo8L2Rp dj4KPC9kaXY+Cjwvc3Bhbj48L2Rpdj4KPC9ibG9ja3F1b3RlPgo8L2Rpdj4KPGJyPgo8L2Rpdj4K PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+Cjxicj4KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fPHdicj5fX19fX19fX19fX19fX19fXzxicj4KRGV2ZWwgbWFpbGluZyBsaXN0PGJyPgo8 YSBocmVmPTNEIm1haWx0bzpEZXZlbEBvdmlydC5vcmciPkRldmVsQG92aXJ0Lm9yZzwvYT48YnI+ CjxhIGhyZWY9M0QiaHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RldmVs IiByZWw9M0Qibm9yZWZlcnJlcj0KIiB0YXJnZXQ9M0QiX2JsYW5rIj5odHRwOi8vbGlzdHMub3Zp cnQub3JnLzx3YnI+bWFpbG1hbi9saXN0aW5mby9kZXZlbDwvYT48PQpicj4KPC9ibG9ja3F1b3Rl Pgo8L2Rpdj4KPGJyPgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4KCi0tXzAw MF9NV0hQUjExTUIxNjYzQjgwQ0ZCMERBRDFBRDBCMEMwOUNFRERBME1XSFBSMTFNQjE2NjNuYW1w Xy0tCg== --===============2804472995247618556==-- From ylavi at redhat.com Thu Jun 22 12:38:50 2017 Content-Type: multipart/mixed; boundary="===============2144260902353092174==" MIME-Version: 1.0 From: Yaniv Lavi (Dary) To: devel at ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore Date: Thu, 22 Jun 2017 15:38:08 +0300 Message-ID: In-Reply-To: MWHPR11MB1663B80CFB0DAD1AD0B0C09CEDDA0@MWHPR11MB1663.namprd11.prod.outlook.com --===============2144260902353092174== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, You can have a look at the libfgapi patches as the are the first to externalize the snapshot process to separate implementation. Thanks, YANIV LAVI (YANIV DARY) SENIOR TECHNICAL PRODUCT MANAGER Red Hat Israel Ltd. 34 Jerusalem Road, Building A, 1st floor Ra'anana, Israel 4350109 ylavi(a)redhat.com T: +972-9-7692306/8272306 F: +972-9-7692223 IM= : ylavi TRIED. TESTED. TRUSTED. @redhatnews Red Hat Red Hat On Wed, Jun 21, 2017 at 11:57 PM, Deepak Jagtap wrote: > Thanks Yaniv! > ------------------------------ > *From:* Yaniv Kaul > *Sent:* Wednesday, June 21, 2017 1:47:26 PM > *To:* Deepak Jagtap > *Cc:* Allon Mureinik; devel(a)ovirt.org > > *Subject:* Re: [ovirt-devel] Snapshots & clone support from datastore > > > > On Wed, Jun 21, 2017 at 10:28 PM, Deepak Jagtap > wrote: > >> Hi Allon, >> >> >> I am trying to leverage snapshot capability of underlying filesystem. >> >> As per my understanding current snapshot works like this: >> >> Base Image(raw)--->snap1(qcow)->snap2(qcow), i.e after each snapshot vm >> starts writing on newly created qcow image. >> >> So in this case vm is going to do all new writes on snap2(qcow) voulme >> and will redirect read IOs to snap1 & Base image as required. >> >> >> But in my case snapshots created by the filesystem are read only and it's >> in raw format. >> >> As a result after creating snapshot vm disk configuration won't change >> after taking snapshot but will continue doing writes on same base image. >> >> So snapshots will look like this: >> >> Base Image(raw)--->snap1(raw)->snap2(raw) >> >> Base Image will always remain writable, while the snapshots will remain >> read only raw format. >> >> >> Just wanted to confirm is this configurable so that vm continues >> referring base image after the snapshot instead of newly created qcow >> image? >> > > It is not. It'll need code modification to allow externally taking > snapshots of VM disks. > Y. > > >> >> Thanks & Regards, >> >> Deepak >> >> >> >> >> >> ------------------------------ >> *From:* Allon Mureinik >> *Sent:* Tuesday, June 20, 2017 7:59:03 PM >> >> *To:* Deepak Jagtap >> *Cc:* devel(a)ovirt.org >> *Subject:* Re: [ovirt-devel] Snapshots & clone support from datastore >> >> Not sure I understand the question. Could you give an example of what you >> mean perhpas? >> >> On Tue, Jun 20, 2017 at 10:01 PM, Deepak Jagtap >> wrote: >> >>> Hi Allon, >>> >>> >>> After going through current vdsm code base, noticed that after taking a >>> snapshot vm starts referring the newly created qcow image/volume. >>> >>> For internal snapshots which are not qcow is it configurable somehow so >>> that vm continues doing writes to same base image? >>> >>> >>> Thanks & Regards, >>> >>> Deepak >>> ------------------------------ >>> *From:* Deepak Jagtap >>> *Sent:* Tuesday, June 6, 2017 3:37:03 PM >>> *To:* Allon Mureinik >>> *Cc:* devel(a)ovirt.org >>> *Subject:* Re: [ovirt-devel] Snapshots & clone support from datastore >>> >>> >>> Thanks Allon! >>> >>> >>> Best Regards, >>> >>> Deepak >>> ------------------------------ >>> *From:* Allon Mureinik >>> *Sent:* Tuesday, June 6, 2017 2:43:17 PM >>> *To:* Deepak Jagtap >>> *Cc:* devel(a)ovirt.org >>> *Subject:* Re: [ovirt-devel] Snapshots & clone support from datastore >>> >>> Unfortunately, there's no such integration point at the moment. >>> >>> On Tue, Jun 6, 2017 at 5:57 AM, Deepak Jagtap >>> wrote: >>> >>>> Hey Guys, >>>> >>>> >>>> I am newbie to ovirt, and wanted to confirm whats the best way to >>>> leverage snapshot, clone features >>>> >>>> provided by the datastore filesystem. >>>> >>>> I have a btrfs datastore exported and wanted use btrfs snapshots for vm >>>> snapshot & clones. >>>> >>>> Does ovirt offers any hooks/APIs so that image snapshots are created by >>>> the filesystem? >>>> >>>> >>>> Thanks & Regards, >>>> >>>> Deepak >>>> >>>> >>>> >>>> _______________________________________________ >>>> Devel mailing list >>>> Devel(a)ovirt.org >>>> http://lists.ovirt.org/mailman/listinfo/devel >>>> >>> >>> >> >> _______________________________________________ >> Devel mailing list >> Devel(a)ovirt.org >> http://lists.ovirt.org/mailman/listinfo/devel >> > > > _______________________________________________ > Devel mailing list > Devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/devel > --===============2144260902353092174== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGRpdiBkaXI9Imx0ciI+SGksPGRpdj5Zb3UgY2FuIGhhdmUgYSBsb29rIGF0IHRoZSBsaWJmZ2Fw acKgcGF0Y2hlcyBhcyB0aGUgYXJlIHRoZSBmaXJzdCB0byBleHRlcm5hbGl6ZSB0aGUgc25hcHNo b3QgcHJvY2VzcyB0byBzZXBhcmF0ZSBpbXBsZW1lbnRhdGlvbi48ZGl2Pjxicj48L2Rpdj48ZGl2 Pjxicj48L2Rpdj48ZGl2PlRoYW5rcyw8L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJnbWFp bF9leHRyYSI+PGJyIGNsZWFyPSJhbGwiPjxkaXY+PGRpdiBjbGFzcz0iZ21haWxfc2lnbmF0dXJl IiBkYXRhLXNtYXJ0bWFpbD0iZ21haWxfc2lnbmF0dXJlIj48ZGl2IGRpcj0ibHRyIj48ZGl2Pjxk aXYgZGlyPSJsdHIiPjxkaXY+PGRpdiBkaXI9Imx0ciI+PHByZSBjb2xzPSI3MiI+PHAgc3R5bGU9 ImNvbG9yOnJnYigwLDAsMCk7Zm9udC1mYW1pbHk6b3ZlcnBhc3Msc2Fucy1zZXJpZjt3aGl0ZS1z cGFjZTpub3JtYWw7Zm9udC13ZWlnaHQ6Ym9sZDttYXJnaW46MHB4O3BhZGRpbmc6MHB4O2ZvbnQt c2l6ZToxNHB4O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZSI+WUFOSVbCoExBVkkgKFlBTklWwqBE QVJZKTwvcD48cCBzdHlsZT0iY29sb3I6cmdiKDAsMCwwKTtmb250LWZhbWlseTpvdmVycGFzcyxz YW5zLXNlcmlmO3doaXRlLXNwYWNlOm5vcm1hbDtmb250LXNpemU6MTBweDttYXJnaW46MHB4IDBw eCA0cHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlIj5TRU5JT1IgVEVDSE5JQ0FMIFBST0RVQ1Qg TUFOQUdFUjwvcD48cCBzdHlsZT0iZm9udC1mYW1pbHk6b3ZlcnBhc3Msc2Fucy1zZXJpZjt3aGl0 ZS1zcGFjZTpub3JtYWw7bWFyZ2luOjBweDtmb250LXNpemU6MTBweDtjb2xvcjpyZ2IoMTUzLDE1 MywxNTMpIj48YSBocmVmPSJodHRwczovL3d3dy5yZWRoYXQuY29tLyIgc3R5bGU9ImNvbG9yOnJn YigwLDEzNiwyMDYpO21hcmdpbjowcHgiIHRhcmdldD0iX2JsYW5rIj5SZWQgSGF0wqBJc3JhZWwg THRkLjwvYT48L3A+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Om92ZXJwYXNzLHNhbnMtc2VyaWY7 d2hpdGUtc3BhY2U6bm9ybWFsO2ZvbnQtc2l6ZToxMHB4O21hcmdpbjowcHg7Y29sb3I6cmdiKDE1 MywxNTMsMTUzKSI+PHAgc3R5bGU9Im1hcmdpbjowcHgiPjM0IEplcnVzYWxlbSBSb2FkLCBCdWls ZGluZyBBLCAxc3QgZmxvb3I8L3A+PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjpyZ2IoMCwwLDAp O2ZvbnQtZmFtaWx5Om92ZXJwYXNzLHNhbnMtc2VyaWY7Zm9udC1zaXplOm1lZGl1bTt3aGl0ZS1z cGFjZTpub3JtYWwiPjwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6cmdiKDAsMCwwKTtmb250LWZh bWlseTpvdmVycGFzcyxzYW5zLXNlcmlmO2ZvbnQtc2l6ZTptZWRpdW07d2hpdGUtc3BhY2U6bm9y bWFsIj48cCBzdHlsZT0iZm9udC1zaXplOjEwcHg7bWFyZ2luOjBweDtjb2xvcjpyZ2IoMTUzLDE1 MywxNTMpIj5SYSYjMzk7YW5hbmEsIElzcmFlbCA0MzUwMTA5PC9wPjwvc3Bhbj48c3BhbiBzdHls ZT0iY29sb3I6cmdiKDAsMCwwKTtmb250LWZhbWlseTpvdmVycGFzcyxzYW5zLXNlcmlmO2ZvbnQt c2l6ZTptZWRpdW07d2hpdGUtc3BhY2U6bm9ybWFsIj48L3NwYW4+PHAgc3R5bGU9ImZvbnQtZmFt aWx5Om92ZXJwYXNzLHNhbnMtc2VyaWY7d2hpdGUtc3BhY2U6bm9ybWFsO21hcmdpbjowcHggMHB4 IDZweDtmb250LXNpemU6MTBweCI+PHNwYW4gc3R5bGU9ImNvbG9yOnJnYigxNTMsMTUzLDE1Myk7 bWFyZ2luOjBweDtwYWRkaW5nOjBweCI+PGEgaHJlZj0ibWFpbHRvOnlsYXZpQHJlZGhhdC5jb20i IHN0eWxlPSJjb2xvcjpyZ2IoMCwxMzYsMjA2KTttYXJnaW46MHB4IiB0YXJnZXQ9Il9ibGFuayI+ eWxhdmlAcmVkaGF0LmNvbTwvYT7CoCDCoDwvc3Bhbj48Zm9udCBjb2xvcj0iIzk5OTk5OSI+wqBU OsKgPC9mb250PjxhIGhyZWY9InRlbDorOTcyLTktNzY5MjMwNiIgc3R5bGU9ImNvbG9yOnJnYigw LDEzNiwyMDYpO21hcmdpbjowcHgiIHRhcmdldD0iX2JsYW5rIj4rOTcyLTktNzY5MjMwNjwvYT48 Zm9udCBjb2xvcj0iIzk5OTk5OSI+LzwvZm9udD48YSBocmVmPSJ0ZWw6ODI3MjMwNiIgc3R5bGU9 ImNvbG9yOnJnYigwLDEzNiwyMDYpO21hcmdpbjowcHgiIHRhcmdldD0iX2JsYW5rIj44MjcyMzA2 PC9hPjxmb250IGNvbG9yPSIjOTk5OTk5Ij7CoCDCoMKgwqBGOsKgPC9mb250PjxhIGhyZWY9InRl bDorOTcyLTktNzY5MjIyMyIgc3R5bGU9ImNvbG9yOnJnYigwLDEzNiwyMDYpO21hcmdpbjowcHgi IHRhcmdldD0iX2JsYW5rIj4rOTcyLTktNzY5MjIyMzwvYT48Zm9udCBjb2xvcj0iIzk5OTk5OSI+ wqDCoCDCoElNOsKgPC9mb250PjxzcGFuIHN0eWxlPSJjb2xvcjpyZ2IoMTUzLDE1MywxNTMpIj55 bGF2aTwvc3Bhbj48L3A+PHRhYmxlIGJvcmRlcj0iMCIgc3R5bGU9ImNvbG9yOnJnYigwLDAsMCk7 Zm9udC1mYW1pbHk6b3ZlcnBhc3Msc2Fucy1zZXJpZjtmb250LXNpemU6bWVkaXVtO3doaXRlLXNw YWNlOm5vcm1hbCI+PHRib2R5Pjx0cj48dGQgd2lkdGg9IjEwMHB4Ij48YSBocmVmPSJodHRwczov L3JlZC5odC9zaWciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly93d3cucmVkaGF0 LmNvbS9maWxlcy9icmFuZC9lbWFpbC9zaWctcmVkaGF0LnBuZyIgd2lkdGg9IjkwIiBoZWlnaHQ9 ImF1dG8iPjwvYT48L3RkPjx0ZCBzdHlsZT0iZm9udC1zaXplOjEwcHgiPjxhIGhyZWY9Imh0dHBz Oi8vcmVkaGF0LmNvbS90cnVzdGVkIiBzdHlsZT0iY29sb3I6cmdiKDIwNCwwLDApO2ZvbnQtd2Vp Z2h0OmJvbGQiIHRhcmdldD0iX2JsYW5rIj5UUklFRC4gVEVTVEVELiBUUlVTVEVELjwvYT48L3Rk PjwvdHI+PC90Ym9keT48L3RhYmxlPjxkaXYgc3R5bGU9ImNvbG9yOnJnYigwLDAsMCk7Zm9udC1m YW1pbHk6b3ZlcnBhc3Msc2Fucy1zZXJpZjt3aGl0ZS1zcGFjZTpub3JtYWw7Zm9udC1zaXplOjEw cHgiPjxkaXYgc3R5bGU9ImNvbG9yOnJnYigxNTMsMTUzLDE1MykiPjxhIGhyZWY9Imh0dHBzOi8v dHdpdHRlci5jb20vcmVkaGF0bmV3cyIgdGl0bGU9InR3aXR0ZXIiIHN0eWxlPSJiYWNrZ3JvdW5k OnVybCgmcXVvdDtodHRwczovL3d3dy5yZWRoYXQuY29tL2ZpbGVzL2JyYW5kL2VtYWlsL3NtLXR3 aXR0ZXIucG5nJnF1b3Q7KSAwcHggNTAlLzE2cHggbm8tcmVwZWF0IHRyYW5zcGFyZW50O2hlaWdo dDoyMHB4O2NvbG9yOnJnYigxMTksMTE5LDExOSk7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGluZS1o ZWlnaHQ6MjBweDtwYWRkaW5nLWxlZnQ6MTZweCIgdGFyZ2V0PSJfYmxhbmsiPkByZWRoYXRuZXdz PC9hPsKgwqDCoDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21wYW55L3JlZC1o YXQiIHRpdGxlPSJMaW5rZWRJbiIgc3R5bGU9ImJhY2tncm91bmQ6dXJsKCZxdW90O2h0dHBzOi8v d3d3LnJlZGhhdC5jb20vZmlsZXMvYnJhbmQvZW1haWwvc20tbGlua2VkaW4ucG5nJnF1b3Q7KSAw cHggNTAlLzE2cHggbm8tcmVwZWF0IHRyYW5zcGFyZW50O2hlaWdodDoyMHB4O2NvbG9yOnJnYigx MTksMTE5LDExOSk7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGluZS1oZWlnaHQ6MjBweDtwYWRkaW5n LWxlZnQ6MTZweCIgdGFyZ2V0PSJfYmxhbmsiPlJlZCBIYXQ8L2E+wqDCoMKgPGEgaHJlZj0iaHR0 cHM6Ly93d3cuZmFjZWJvb2suY29tL1JlZEhhdEluYyIgdGl0bGU9IkZhY2Vib29rIiBzdHlsZT0i YmFja2dyb3VuZDp1cmwoJnF1b3Q7aHR0cHM6Ly93d3cucmVkaGF0LmNvbS9maWxlcy9icmFuZC9l bWFpbC9zbS1mYWNlYm9vay5wbmcmcXVvdDspIDBweCA1MCUvMTZweCBuby1yZXBlYXQgdHJhbnNw YXJlbnQ7aGVpZ2h0OjIwcHg7Y29sb3I6cmdiKDExOSwxMTksMTE5KTtkaXNwbGF5OmlubGluZS1i bG9jaztsaW5lLWhlaWdodDoyMHB4O3BhZGRpbmctbGVmdDoxNnB4IiB0YXJnZXQ9Il9ibGFuayI+ UmVkIEhhdDwvYT48L2Rpdj48L2Rpdj48L3ByZT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rp dj48L2Rpdj48L2Rpdj4KPGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj5PbiBXZWQsIEp1biAy MSwgMjAxNyBhdCAxMTo1NyBQTSwgRGVlcGFrIEphZ3RhcCA8c3BhbiBkaXI9Imx0ciI+Jmx0Ozxh IGhyZWY9Im1haWx0bzpkZWVwYWsuamFndGFwQG1heHRhLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmRl ZXBhay5qYWd0YXBAbWF4dGEuY29tPC9hPiZndDs8L3NwYW4+IHdyb3RlOjxicj48YmxvY2txdW90 ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVm dDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4KCgoKPGRpdj4KCjxkaXYgaWQ9Im1f LTM4ODg1ODgzMzI3MDA0MjUyMTlkaXZ0YWdkZWZhdWx0d3JhcHBlciIgc3R5bGU9ImZvbnQtc2l6 ZToxMnB0O2NvbG9yOiMwMDAwMDA7Zm9udC1mYW1pbHk6Q2FsaWJyaSxBcmlhbCxIZWx2ZXRpY2Es c2Fucy1zZXJpZiIgZGlyPSJsdHIiPgo8cD5UaGFua3MgWWFuaXYhPC9wPgo8L2Rpdj4KPGhyIHN0 eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo5OCUiPgo8ZGl2IGlkPSJtXy0zODg4NTg4 MzMyNzAwNDI1MjE5ZGl2UnBseUZ3ZE1zZyIgZGlyPSJsdHIiPjxmb250IGZhY2U9IkNhbGlicmks IHNhbnMtc2VyaWYiIHN0eWxlPSJmb250LXNpemU6MTFwdCIgY29sb3I9IiMwMDAwMDAiPjxiPkZy b206PC9iPiBZYW5pdiBLYXVsICZsdDs8YSBocmVmPSJtYWlsdG86eWthdWxAcmVkaGF0LmNvbSIg dGFyZ2V0PSJfYmxhbmsiPnlrYXVsQHJlZGhhdC5jb208L2E+Jmd0Ozxicj4KPGI+U2VudDo8L2I+ IFdlZG5lc2RheSwgSnVuZSAyMSwgMjAxNyAxOjQ3OjI2IFBNPGJyPgo8Yj5Ubzo8L2I+IERlZXBh ayBKYWd0YXA8YnI+CjxiPkNjOjwvYj4gQWxsb24gTXVyZWluaWs7IDxhIGhyZWY9Im1haWx0bzpk ZXZlbEBvdmlydC5vcmciIHRhcmdldD0iX2JsYW5rIj5kZXZlbEBvdmlydC5vcmc8L2E+PGRpdj48 ZGl2IGNsYXNzPSJoNSI+PGJyPgo8Yj5TdWJqZWN0OjwvYj4gUmU6IFtvdmlydC1kZXZlbF0gU25h cHNob3RzICZhbXA7IGNsb25lIHN1cHBvcnQgZnJvbSBkYXRhc3RvcmU8L2Rpdj48L2Rpdj48L2Zv bnQ+CjxkaXY+wqA8L2Rpdj4KPC9kaXY+PGRpdj48ZGl2IGNsYXNzPSJoNSI+CjxkaXY+CjxkaXYg ZGlyPSJsdHIiPjxicj4KPGRpdiBjbGFzcz0iZ21haWxfZXh0cmEiPjxicj4KPGRpdiBjbGFzcz0i Z21haWxfcXVvdGUiPk9uIFdlZCwgSnVuIDIxLCAyMDE3IGF0IDEwOjI4IFBNLCBEZWVwYWsgSmFn dGFwIDxzcGFuIGRpcj0ibHRyIj4KJmx0OzxhIGhyZWY9Im1haWx0bzpkZWVwYWsuamFndGFwQG1h eHRhLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmRlZXBhay5qYWd0YXBAbWF4dGEuY29tPC9hPiZndDs8 L3NwYW4+IHdyb3RlOjxicj4KPGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0i bWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0 OjFleCI+CjxkaXY+CjxkaXYgaWQ9Im1fLTM4ODg1ODgzMzI3MDA0MjUyMTltXy05MDcyMTM1OTAy MTc4NzQ5ODEwZGl2dGFnZGVmYXVsdHdyYXBwZXIiIHN0eWxlPSJmb250LXNpemU6MTJwdDtjb2xv cjojMDAwMDAwO2ZvbnQtZmFtaWx5OkNhbGlicmksQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYi IGRpcj0ibHRyIj4KPHA+SGkgQWxsb24sPC9wPgo8cD48YnI+CjwvcD4KPHA+SSBhbcKgdHJ5aW5n IHRvIGxldmVyYWdlIHNuYXBzaG90IMKgY2FwYWJpbGl0eSBvZiB1bmRlcmx5aW5nIGZpbGVzeXN0 ZW0uPC9wPgo8cD48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHQiPkFzIHBlciBteSB1bmRlcnN0 YW5kaW5nIGN1cnJlbnQgc25hcHNob3TCoDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEy cHQiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHQiPndvcmtzIGxpa2UgdGhpczo8 L3NwYW4+PC9wPgo8cD5CYXNlIEltYWdlKHJhdyktLS0mZ3Q7c25hcDEocWNvdyktJmd0O3NuYTx3 YnI+cDIocWNvdyksIGkuZcKgYWZ0ZXIgZWFjaCBzbmFwc2hvdCB2bSBzdGFydHMgd3JpdGluZyBv biBuZXdseSBjcmVhdGVkIHFjb3cgaW1hZ2UuPC9wPgo8cD5TbyBpbiB0aGlzIGNhc2Ugdm0gaXMg Z29pbmcgdG8gZG8gYWxsIG5ldyB3cml0ZXMgb24gc25hcDIocWNvdykgdm91bG1lIGFuZCB3aWxs IHJlZGlyZWN0IHJlYWTCoElPcyB0byBzbmFwMSAmYW1wOyBCYXNlIGltYWdlIGFzIHJlcXVpcmVk LjwvcD4KPHA+PGJyPgo8L3A+CjxwPkJ1dCBpbiBteSBjYXNlIHNuYXBzaG90cyBjcmVhdGVkIGJ5 IHRoZSBmaWxlc3lzdGVtIGFyZSByZWFkIG9ubHkgYW5kIGl0JiMzOTtzIGluIHJhdyBmb3JtYXQu PC9wPgo8cD5BcyBhIHJlc3VsdCBhZnRlciBjcmVhdGluZyBzbmFwc2hvdCB2bSBkaXNrIGNvbmZp Z3VyYXRpb24gd29uJiMzOTt0IGNoYW5nZSBhZnRlciB0YWtpbmcgc25hcHNob3QgYnV0IHdpbGwg Y29udGludWUgZG9pbmcgd3JpdGVzIG9uIHNhbWUgYmFzZSBpbWFnZS48L3A+CjxwPlNvIHNuYXBz aG90cyB3aWxsIGxvb2sgbGlrZSB0aGlzOjwvcD4KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5 OkNhbGlicmksQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYsRW1vamlGb250LCZxdW90O0FwcGxl IENvbG9yIEVtb2ppJnF1b3Q7LCZxdW90O1NlZ29lIFVJIEVtb2ppJnF1b3Q7LE5vdG9Db2xvckVt b2ppLCZxdW90O1NlZ29lIFVJIFN5bWJvbCZxdW90OywmcXVvdDtBbmRyb2lkIEVtb2ppJnF1b3Q7 LEVtb2ppU3ltYm9scztmb250LXNpemU6MTZweCI+QmFzZSBJbWFnZShyYXcpLS0tJmd0O3NuYXAx KHJhdyktJmd0O3NuYXA8d2JyPjIocmF3KTwvc3Bhbj48YnI+CjwvcD4KPHA+PHNwYW4gc3R5bGU9 ImZvbnQtZmFtaWx5OkNhbGlicmksQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYsRW1vamlGb250 LCZxdW90O0FwcGxlIENvbG9yIEVtb2ppJnF1b3Q7LCZxdW90O1NlZ29lIFVJIEVtb2ppJnF1b3Q7 LE5vdG9Db2xvckVtb2ppLCZxdW90O1NlZ29lIFVJIFN5bWJvbCZxdW90OywmcXVvdDtBbmRyb2lk IEVtb2ppJnF1b3Q7LEVtb2ppU3ltYm9scztmb250LXNpemU6MTZweCI+QmFzZSBJbWFnZSB3aWxs IGFsd2F5cyByZW1haW4gd3JpdGFibGUswqB3aGlsZSB0aGUgc25hcHNob3RzIHdpbGwgcmVtYWlu CiByZWFkIG9ubHkgcmF3IGZvcm1hdC48L3NwYW4+PC9wPgo8cD48YnI+CjwvcD4KPHA+SnVzdCB3 YW50ZWQgdG8gY29uZmlybSBpcyB0aGlzIGNvbmZpZ3VyYWJsZSBzbyB0aGF0IHZtIGNvbnRpbnVl cyDCoHJlZmVycmluZyBiYXNlIGltYWdlIGFmdGVyIHRoZSBzbmFwc2hvdCBpbnN0ZWFkIG9mIG5l d2x5IGNyZWF0ZWQgcWNvdyBpbWFnZT88L3A+CjwvZGl2Pgo8L2Rpdj4KPC9ibG9ja3F1b3RlPgo8 ZGl2Pjxicj4KPC9kaXY+CjxkaXY+SXQgaXMgbm90LiBJdCYjMzk7bGwgbmVlZCBjb2RlIG1vZGlm aWNhdGlvbiB0byBhbGxvdyBleHRlcm5hbGx5IHRha2luZyBzbmFwc2hvdHMgb2YgVk0gZGlza3Mu PC9kaXY+CjxkaXY+WS48L2Rpdj4KPGRpdj7CoDwvZGl2Pgo8YmxvY2txdW90ZSBjbGFzcz0iZ21h aWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBz b2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4KPGRpdj4KPGRpdiBpZD0ibV8tMzg4ODU4ODMzMjcwMDQy NTIxOW1fLTkwNzIxMzU5MDIxNzg3NDk4MTBkaXZ0YWdkZWZhdWx0d3JhcHBlciIgc3R5bGU9ImZv bnQtc2l6ZToxMnB0O2NvbG9yOiMwMDAwMDA7Zm9udC1mYW1pbHk6Q2FsaWJyaSxBcmlhbCxIZWx2 ZXRpY2Esc2Fucy1zZXJpZiIgZGlyPSJsdHIiPgo8cD48YnI+CjwvcD4KPHA+VGhhbmtzICZhbXA7 IFJlZ2FyZHMsPC9wPgo8cD5EZWVwYWs8L3A+CjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpD YWxpYnJpLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmLEVtb2ppRm9udCwmcXVvdDtBcHBsZSBD b2xvciBFbW9qaSZxdW90OywmcXVvdDtTZWdvZSBVSSBFbW9qaSZxdW90OyxOb3RvQ29sb3JFbW9q aSwmcXVvdDtTZWdvZSBVSSBTeW1ib2wmcXVvdDssJnF1b3Q7QW5kcm9pZCBFbW9qaSZxdW90OyxF bW9qaVN5bWJvbHM7Zm9udC1zaXplOjE2cHgiPjxicj4KPC9zcGFuPjwvcD4KPHA+PHNwYW4gc3R5 bGU9ImZvbnQtZmFtaWx5OkNhbGlicmksQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYsRW1vamlG b250LCZxdW90O0FwcGxlIENvbG9yIEVtb2ppJnF1b3Q7LCZxdW90O1NlZ29lIFVJIEVtb2ppJnF1 b3Q7LE5vdG9Db2xvckVtb2ppLCZxdW90O1NlZ29lIFVJIFN5bWJvbCZxdW90OywmcXVvdDtBbmRy b2lkIEVtb2ppJnF1b3Q7LEVtb2ppU3ltYm9scztmb250LXNpemU6MTZweCI+PGJyPgo8L3NwYW4+ PC9wPgo8cD48YnI+CjwvcD4KPHA+wqA8L3A+CjwvZGl2Pgo8aHIgc3R5bGU9ImRpc3BsYXk6aW5s aW5lLWJsb2NrO3dpZHRoOjk4JSI+CjxkaXYgaWQ9Im1fLTM4ODg1ODgzMzI3MDA0MjUyMTltXy05 MDcyMTM1OTAyMTc4NzQ5ODEwZGl2UnBseUZ3ZE1zZyIgZGlyPSJsdHIiPjxmb250IGZhY2U9IkNh bGlicmksIHNhbnMtc2VyaWYiIHN0eWxlPSJmb250LXNpemU6MTFwdCIgY29sb3I9IiMwMDAwMDAi PjxiPkZyb206PC9iPiBBbGxvbiBNdXJlaW5payAmbHQ7PGEgaHJlZj0ibWFpbHRvOmFtdXJlaW5p QHJlZGhhdC5jb20iIHRhcmdldD0iX2JsYW5rIj5hbXVyZWluaUByZWRoYXQuY29tPC9hPiZndDs8 YnI+CjxiPlNlbnQ6PC9iPiBUdWVzZGF5LCBKdW5lIDIwLCAyMDE3IDc6NTk6MDMgUE0KPGRpdj4K PGRpdiBjbGFzcz0ibV8tMzg4ODU4ODMzMjcwMDQyNTIxOWg1Ij48YnI+CjxiPlRvOjwvYj4gRGVl cGFrIEphZ3RhcDxicj4KPGI+Q2M6PC9iPiA8YSBocmVmPSJtYWlsdG86ZGV2ZWxAb3ZpcnQub3Jn IiB0YXJnZXQ9Il9ibGFuayI+ZGV2ZWxAb3ZpcnQub3JnPC9hPjxicj4KPGI+U3ViamVjdDo8L2I+ IFJlOiBbb3ZpcnQtZGV2ZWxdIFNuYXBzaG90cyAmYW1wOyBjbG9uZSBzdXBwb3J0IGZyb20gZGF0 YXN0b3JlPC9kaXY+CjwvZGl2Pgo8L2ZvbnQ+CjxkaXY+wqA8L2Rpdj4KPC9kaXY+CjxkaXY+Cjxk aXYgY2xhc3M9Im1fLTM4ODg1ODgzMzI3MDA0MjUyMTloNSI+CjxkaXY+CjxkaXYgZGlyPSJsdHIi Pgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTptb25vc3BhY2UsbW9ub3NwYWNlIj5Ob3Qgc3VyZSBJ IHVuZGVyc3RhbmQgdGhlIHF1ZXN0aW9uLiBDb3VsZCB5b3UgZ2l2ZSBhbiBleGFtcGxlwqBvZiB3 aGF0IHlvdSBtZWFuIHBlcmhwYXM/PC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJnbWFpbF9leHRy YSI+PGJyPgo8ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+T24gVHVlLCBKdW4gMjAsIDIwMTcgYXQg MTA6MDEgUE0sIERlZXBhayBKYWd0YXAgPHNwYW4gZGlyPSJsdHIiPgombHQ7PGEgaHJlZj0ibWFp bHRvOmRlZXBhay5qYWd0YXBAbWF4dGEuY29tIiB0YXJnZXQ9Il9ibGFuayI+ZGVlcGFrLmphZ3Rh cEBtYXh0YS5jb208L2E+Jmd0Ozwvc3Bhbj4gd3JvdGU6PGJyPgo8YmxvY2txdW90ZSBjbGFzcz0i Z21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2Nj YyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4KPGRpdj4KPGRpdiBpZD0ibV8tMzg4ODU4ODMzMjcw MDQyNTIxOW1fLTkwNzIxMzU5MDIxNzg3NDk4MTBtXzU4OTE5Mzg3NDA3MjM4MzcxMjdkaXZ0YWdk ZWZhdWx0d3JhcHBlciIgc3R5bGU9ImZvbnQtc2l6ZToxMnB0O2NvbG9yOiMwMDAwMDA7Zm9udC1m YW1pbHk6Q2FsaWJyaSxBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZiIgZGlyPSJsdHIiPgo8cD5I aSBBbGxvbiw8L3A+CjxwPjxicj4KPC9wPgo8cD5BZnRlciBnb2luZyB0aHJvdWdowqBjdXJyZW50 IHZkc23CoGNvZGUgYmFzZSwgbm90aWNlZCB0aGF0IGFmdGVyIHRha2luZyBhIHNuYXBzaG90IHZt IHN0YXJ0cyByZWZlcnJpbmcgdGhlIG5ld2x5IGNyZWF0ZWQgcWNvdyBpbWFnZS92b2x1bWUuPC9w Pgo8cD5Gb3IgaW50ZXJuYWwgc25hcHNob3RzIHdoaWNoIGFyZSBub3QgcWNvdyDCoGlzIGl0wqBj b25maWd1cmFibGUgc29tZWhvd8Kgc28gdGhhdCB2bSBjb250aW51ZXMgZG9pbmcgd3JpdGVzIHRv IHNhbWUgYmFzZSBpbWFnZT88L3A+CjxwPjxicj4KPC9wPgo8cD5UaGFua3MgJmFtcDsgUmVnYXJk cyw8L3A+CjxwPkRlZXBhazwvcD4KPC9kaXY+CjxociBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxv Y2s7d2lkdGg6OTglIj4KPGRpdiBpZD0ibV8tMzg4ODU4ODMzMjcwMDQyNTIxOW1fLTkwNzIxMzU5 MDIxNzg3NDk4MTBtXzU4OTE5Mzg3NDA3MjM4MzcxMjdkaXZScGx5RndkTXNnIiBkaXI9Imx0ciI+ PGZvbnQgZmFjZT0iQ2FsaWJyaSwgc2Fucy1zZXJpZiIgc3R5bGU9ImZvbnQtc2l6ZToxMXB0IiBj b2xvcj0iIzAwMDAwMCI+PGI+RnJvbTo8L2I+IERlZXBhayBKYWd0YXA8YnI+CjxiPlNlbnQ6PC9i PiBUdWVzZGF5LCBKdW5lIDYsIDIwMTcgMzozNzowMyBQTTxicj4KPGI+VG86PC9iPiBBbGxvbiBN dXJlaW5pazxzcGFuPjxicj4KPGI+Q2M6PC9iPiA8YSBocmVmPSJtYWlsdG86ZGV2ZWxAb3ZpcnQu b3JnIiB0YXJnZXQ9Il9ibGFuayI+ZGV2ZWxAb3ZpcnQub3JnPC9hPjxicj4KPGI+U3ViamVjdDo8 L2I+IFJlOiBbb3ZpcnQtZGV2ZWxdIFNuYXBzaG90cyAmYW1wOyBjbG9uZSBzdXBwb3J0IGZyb20g ZGF0YXN0b3JlPC9zcGFuPjwvZm9udD4KPGRpdj7CoDwvZGl2Pgo8L2Rpdj4KPHNwYW4+CjxkaXY+ CjxkaXYgaWQ9Im1fLTM4ODg1ODgzMzI3MDA0MjUyMTltXy05MDcyMTM1OTAyMTc4NzQ5ODEwbV81 ODkxOTM4NzQwNzIzODM3MTI3ZGl2dGFnZGVmYXVsdHdyYXBwZXIiIHN0eWxlPSJmb250LXNpemU6 MTJwdDtjb2xvcjojMDAwMDAwO2ZvbnQtZmFtaWx5OkNhbGlicmksQXJpYWwsSGVsdmV0aWNhLHNh bnMtc2VyaWYiIGRpcj0ibHRyIj4KPHA+VGhhbmtzIEFsbG9uITwvcD4KPHA+PGJyPgo8L3A+Cjxw PkJlc3QgUmVnYXJkcyw8L3A+CjxwPkRlZXBhazwvcD4KPC9kaXY+CjxociBzdHlsZT0iZGlzcGxh eTppbmxpbmUtYmxvY2s7d2lkdGg6OTglIj4KPGRpdiBpZD0ibV8tMzg4ODU4ODMzMjcwMDQyNTIx OW1fLTkwNzIxMzU5MDIxNzg3NDk4MTBtXzU4OTE5Mzg3NDA3MjM4MzcxMjdkaXZScGx5RndkTXNn IiBkaXI9Imx0ciI+PGZvbnQgZmFjZT0iQ2FsaWJyaSwgc2Fucy1zZXJpZiIgc3R5bGU9ImZvbnQt c2l6ZToxMXB0IiBjb2xvcj0iIzAwMDAwMCI+PGI+RnJvbTo8L2I+IEFsbG9uIE11cmVpbmlrICZs dDs8YSBocmVmPSJtYWlsdG86YW11cmVpbmlAcmVkaGF0LmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmFt dXJlaW5pQHJlZGhhdC5jb208L2E+Jmd0Ozxicj4KPGI+U2VudDo8L2I+IFR1ZXNkYXksIEp1bmUg NiwgMjAxNyAyOjQzOjE3IFBNPGJyPgo8Yj5Ubzo8L2I+IERlZXBhayBKYWd0YXA8YnI+CjxiPkNj OjwvYj4gPGEgaHJlZj0ibWFpbHRvOmRldmVsQG92aXJ0Lm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmRl dmVsQG92aXJ0Lm9yZzwvYT48YnI+CjxiPlN1YmplY3Q6PC9iPiBSZTogW292aXJ0LWRldmVsXSBT bmFwc2hvdHMgJmFtcDsgY2xvbmUgc3VwcG9ydCBmcm9tIGRhdGFzdG9yZTwvZm9udD4KPGRpdj7C oDwvZGl2Pgo8L2Rpdj4KPGRpdj4KPGRpdiBkaXI9Imx0ciI+CjxkaXYgc3R5bGU9ImZvbnQtZmFt aWx5Om1vbm9zcGFjZSxtb25vc3BhY2UiPlVuZm9ydHVuYXRlbHksIHRoZXJlJiMzOTtzIG5vIHN1 Y2ggaW50ZWdyYXRpb24gcG9pbnQgYXQgdGhlIG1vbWVudC48L2Rpdj4KPC9kaXY+CjxkaXYgY2xh c3M9ImdtYWlsX2V4dHJhIj48YnI+CjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj5PbiBUdWUsIEp1 biA2LCAyMDE3IGF0IDU6NTcgQU0sIERlZXBhayBKYWd0YXAgPHNwYW4gZGlyPSJsdHIiPgombHQ7 PGEgaHJlZj0ibWFpbHRvOmRlZXBhay5qYWd0YXBAbWF4dGEuY29tIiB0YXJnZXQ9Il9ibGFuayI+ ZGVlcGFrLmphZ3RhcEBtYXh0YS5jb208L2E+Jmd0Ozwvc3Bhbj4gd3JvdGU6PGJyPgo8YmxvY2tx dW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXIt bGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4KPGRpdiBkaXI9Imx0ciI+Cjxk aXYgaWQ9Im1fLTM4ODg1ODgzMzI3MDA0MjUyMTltXy05MDcyMTM1OTAyMTc4NzQ5ODEwbV81ODkx OTM4NzQwNzIzODM3MTI3bV8tNDg3MzI0NjA5NTE3Mzk2ODIyNGRpdnRhZ2RlZmF1bHR3cmFwcGVy IiBzdHlsZT0iZm9udC1zaXplOjEycHQ7Y29sb3I6IzAwMDAwMDtmb250LWZhbWlseTpDYWxpYnJp LEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmIiBkaXI9Imx0ciI+CjxwPkhleSBHdXlzLDwvcD4K PHA+PGJyPgo8L3A+CjxwPkkgYW0gbmV3YmllIHRvIG92aXJ0LCBhbmQgd2FudGVkIHRvIGNvbmZp cm0gd2hhdHMgdGhlIGJlc3Qgd2F5IHRvIGxldmVyYWdlIHNuYXBzaG90LCBjbG9uZSBmZWF0dXJl c8KgPC9wPgo8cD5wcm92aWRlZCBieSB0aGUgZGF0YXN0b3JlIGZpbGVzeXN0ZW0uPC9wPgo8cD5J IGhhdmUgYSBidHJmcyBkYXRhc3RvcmUgZXhwb3J0ZWTCoGFuZCB3YW50ZWQgdXNlIGJ0cmZzIHNu YXBzaG90cyBmb3Igdm0gc25hcHNob3QgJmFtcDsgY2xvbmVzLjwvcD4KPHA+RG9lcyBvdmlydCBv ZmZlcnMgYW55IGhvb2tzL0FQSXMgc28gdGhhdCBpbWFnZSBzbmFwc2hvdHMgYXJlIGNyZWF0ZWQg YnkgdGhlIGZpbGVzeXN0ZW0/PC9wPgo8cD48YnI+CjwvcD4KPHA+VGhhbmtzICZhbXA7IFJlZ2Fy ZHMsPC9wPgo8cD5EZWVwYWs8L3A+CjxwPsKgPC9wPgo8L2Rpdj4KPC9kaXY+Cjxicj4KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fPHdicj5fX19fX19fX19fX19fX19fXzxicj4KRGV2ZWwg bWFpbGluZyBsaXN0PGJyPgo8YSBocmVmPSJtYWlsdG86RGV2ZWxAb3ZpcnQub3JnIiB0YXJnZXQ9 Il9ibGFuayI+RGV2ZWxAb3ZpcnQub3JnPC9hPjxicj4KPGEgaHJlZj0iaHR0cDovL2xpc3RzLm92 aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RldmVsIiByZWw9Im5vcmVmZXJyZXIiIHRhcmdldD0i X2JsYW5rIj5odHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW48d2JyPi9saXN0aW5mby9kZXZl bDwvYT48YnI+CjwvYmxvY2txdW90ZT4KPC9kaXY+Cjxicj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4K PC9zcGFuPjwvZGl2Pgo8L2Jsb2NrcXVvdGU+CjwvZGl2Pgo8YnI+CjwvZGl2Pgo8L2Rpdj4KPC9k aXY+CjwvZGl2Pgo8L2Rpdj4KPGJyPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX188d2Jy Pl9fX19fX19fX19fX19fX19fPGJyPgpEZXZlbCBtYWlsaW5nIGxpc3Q8YnI+CjxhIGhyZWY9Im1h aWx0bzpEZXZlbEBvdmlydC5vcmciIHRhcmdldD0iX2JsYW5rIj5EZXZlbEBvdmlydC5vcmc8L2E+ PGJyPgo8YSBocmVmPSJodHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vZGV2 ZWwiIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9saXN0cy5vdmlydC5v cmcvbWFpbG1hbjx3YnI+L2xpc3RpbmZvL2RldmVsPC9hPjxicj4KPC9ibG9ja3F1b3RlPgo8L2Rp dj4KPGJyPgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj48L2Rpdj48L2Rpdj4KCjxicj5fX19f X19fX19fX19fX19fX19fX19fX19fX19fX188d2JyPl9fX19fX19fX19fX19fX19fPGJyPgpEZXZl bCBtYWlsaW5nIGxpc3Q8YnI+CjxhIGhyZWY9Im1haWx0bzpEZXZlbEBvdmlydC5vcmciPkRldmVs QG92aXJ0Lm9yZzwvYT48YnI+CjxhIGhyZWY9Imh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1h bi9saXN0aW5mby9kZXZlbCIgcmVsPSJub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDov L2xpc3RzLm92aXJ0Lm9yZy88d2JyPm1haWxtYW4vbGlzdGluZm8vZGV2ZWw8L2E+PGJyPjwvYmxv Y2txdW90ZT48L2Rpdj48YnI+PC9kaXY+Cg== --===============2144260902353092174==-- From nsoffer at redhat.com Thu Jun 22 13:20:24 2017 Content-Type: multipart/mixed; boundary="===============1588635176259760506==" MIME-Version: 1.0 From: Nir Soffer To: devel at ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore Date: Thu, 22 Jun 2017 13:20:13 +0000 Message-ID: In-Reply-To: CACKMAy-B_CG=XLVYpQ2fCWs11st_jkJuxTdgMAFx4_OOT=7GJg@mail.gmail.com --===============1588635176259760506== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On Thu, Jun 22, 2017 at 3:39 PM Yaniv Lavi (Dary) wrot= e: > Hi, > You can have a look at the libfgapi patches as the are the first to > externalize the snapshot process to separate implementation. > Snapshots in libgfapi are not using any external process. The only difference is modifying the volume from file path (/rhev/data-center/mnt/server:path/sd_id/images/img_id/vol_id) to gluster path (volume/sd_id/images/img_id/vol_id). This modification is done when we prepare a volume. This is basically a hack since gluster connections are not managed properly in engine like other types of storage. Nir > > > Thanks, > > YANIV LAVI (YANIV DARY) > > SENIOR TECHNICAL PRODUCT MANAGER > > Red Hat Israel Ltd. > > 34 Jerusalem Road, Building A, 1st floor > > Ra'anana, Israel 4350109 > > ylavi(a)redhat.com T: +972-9-7692306/8272306 F: +972-9-7692223 = IM: ylavi > TRIED. TESTED. TRUSTED. > @redhatnews Red Hat Red Hat > > > On Wed, Jun 21, 2017 at 11:57 PM, Deepak Jagtap > wrote: > >> Thanks Yaniv! >> ------------------------------ >> *From:* Yaniv Kaul >> *Sent:* Wednesday, June 21, 2017 1:47:26 PM >> *To:* Deepak Jagtap >> *Cc:* Allon Mureinik; devel(a)ovirt.org >> >> *Subject:* Re: [ovirt-devel] Snapshots & clone support from datastore >> >> >> >> On Wed, Jun 21, 2017 at 10:28 PM, Deepak Jagtap >> wrote: >> >>> Hi Allon, >>> >>> >>> I am trying to leverage snapshot capability of underlying filesystem. >>> >>> As per my understanding current snapshot works like this: >>> >>> Base Image(raw)--->snap1(qcow)->snap2(qcow), i.e after each snapshot vm >>> starts writing on newly created qcow image. >>> >>> So in this case vm is going to do all new writes on snap2(qcow) voulme >>> and will redirect read IOs to snap1 & Base image as required. >>> >>> >>> But in my case snapshots created by the filesystem are read only and >>> it's in raw format. >>> >>> As a result after creating snapshot vm disk configuration won't change >>> after taking snapshot but will continue doing writes on same base image. >>> >>> So snapshots will look like this: >>> >>> Base Image(raw)--->snap1(raw)->snap2(raw) >>> >>> Base Image will always remain writable, while the snapshots will remain >>> read only raw format. >>> >>> >>> Just wanted to confirm is this configurable so that vm continues >>> referring base image after the snapshot instead of newly created qcow >>> image? >>> >> >> It is not. It'll need code modification to allow externally taking >> snapshots of VM disks. >> Y. >> >> >>> >>> Thanks & Regards, >>> >>> Deepak >>> >>> >>> >>> >>> >>> ------------------------------ >>> *From:* Allon Mureinik >>> *Sent:* Tuesday, June 20, 2017 7:59:03 PM >>> >>> *To:* Deepak Jagtap >>> *Cc:* devel(a)ovirt.org >>> *Subject:* Re: [ovirt-devel] Snapshots & clone support from datastore >>> >>> Not sure I understand the question. Could you give an example of what >>> you mean perhpas? >>> >>> On Tue, Jun 20, 2017 at 10:01 PM, Deepak Jagtap >> > wrote: >>> >>>> Hi Allon, >>>> >>>> >>>> After going through current vdsm code base, noticed that after taking a >>>> snapshot vm starts referring the newly created qcow image/volume. >>>> >>>> For internal snapshots which are not qcow is it configurable >>>> somehow so that vm continues doing writes to same base image? >>>> >>>> >>>> Thanks & Regards, >>>> >>>> Deepak >>>> ------------------------------ >>>> *From:* Deepak Jagtap >>>> *Sent:* Tuesday, June 6, 2017 3:37:03 PM >>>> *To:* Allon Mureinik >>>> *Cc:* devel(a)ovirt.org >>>> *Subject:* Re: [ovirt-devel] Snapshots & clone support from datastore >>>> >>>> >>>> Thanks Allon! >>>> >>>> >>>> Best Regards, >>>> >>>> Deepak >>>> ------------------------------ >>>> *From:* Allon Mureinik >>>> *Sent:* Tuesday, June 6, 2017 2:43:17 PM >>>> *To:* Deepak Jagtap >>>> *Cc:* devel(a)ovirt.org >>>> *Subject:* Re: [ovirt-devel] Snapshots & clone support from datastore >>>> >>>> Unfortunately, there's no such integration point at the moment. >>>> >>>> On Tue, Jun 6, 2017 at 5:57 AM, Deepak Jagtap >>>> wrote: >>>> >>>>> Hey Guys, >>>>> >>>>> >>>>> I am newbie to ovirt, and wanted to confirm whats the best way to >>>>> leverage snapshot, clone features >>>>> >>>>> provided by the datastore filesystem. >>>>> >>>>> I have a btrfs datastore exported and wanted use btrfs snapshots for >>>>> vm snapshot & clones. >>>>> >>>>> Does ovirt offers any hooks/APIs so that image snapshots are created >>>>> by the filesystem? >>>>> >>>>> >>>>> Thanks & Regards, >>>>> >>>>> Deepak >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> Devel mailing list >>>>> Devel(a)ovirt.org >>>>> http://lists.ovirt.org/mailman/listinfo/devel >>>>> >>>> >>>> >>> >>> _______________________________________________ >>> Devel mailing list >>> Devel(a)ovirt.org >>> http://lists.ovirt.org/mailman/listinfo/devel >>> >> >> >> _______________________________________________ >> Devel mailing list >> Devel(a)ovirt.org >> http://lists.ovirt.org/mailman/listinfo/devel >> > > _______________________________________________ > Devel mailing list > Devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/devel --===============1588635176259760506== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGRpdiBkaXI9Imx0ciI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiPk9u IFRodSwgSnVuIDIyLCAyMDE3IGF0IDM6MzkgUE0gWWFuaXYgTGF2aSAoRGFyeSkgJmx0OzxhIGhy ZWY9Im1haWx0bzp5bGF2aUByZWRoYXQuY29tIj55bGF2aUByZWRoYXQuY29tPC9hPiZndDsgd3Jv dGU6PGJyPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdp bjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgi PjxkaXYgZGlyPSJsdHIiPkhpLDxkaXY+WW91IGNhbiBoYXZlIGEgbG9vayBhdCB0aGUgbGliZmdh cGnCoHBhdGNoZXMgYXMgdGhlIGFyZSB0aGUgZmlyc3QgdG8gZXh0ZXJuYWxpemUgdGhlIHNuYXBz aG90IHByb2Nlc3MgdG8gc2VwYXJhdGUgaW1wbGVtZW50YXRpb24uPC9kaXY+PC9kaXY+PC9ibG9j a3F1b3RlPjxkaXY+PGJyPjwvZGl2PjxkaXY+U25hcHNob3RzIGluIGxpYmdmYXBpIGFyZSBub3Qg dXNpbmcgYW55IGV4dGVybmFsIHByb2Nlc3MuIFRoZSBvbmx5IGRpZmZlcmVuY2U8L2Rpdj48ZGl2 PmlzIG1vZGlmeWluZyB0aGUgdm9sdW1lIGZyb20gZmlsZSBwYXRowqA8L2Rpdj48ZGl2Pigvcmhl di9kYXRhLWNlbnRlci9tbnQvc2VydmVyOnBhdGgvc2RfaWQvaW1hZ2VzL2ltZ19pZC92b2xfaWQp IHRvIGdsdXN0ZXIgcGF0aDwvZGl2PjxkaXY+KHZvbHVtZS9zZF9pZC9pbWFnZXMvaW1nX2lkL3Zv bF9pZCkuPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5UaGlzIG1vZGlmaWNhdGlvbiBpcyBkb25l IHdoZW4gd2UgcHJlcGFyZSBhIHZvbHVtZS4gVGhpcyBpcyBiYXNpY2FsbHkgYSBoYWNrPC9kaXY+ PGRpdj5zaW5jZSBnbHVzdGVyIGNvbm5lY3Rpb25zIGFyZSBub3QgbWFuYWdlZCBwcm9wZXJseSBp biBlbmdpbmUgbGlrZSBvdGhlciB0eXBlczwvZGl2PjxkaXY+b2Ygc3RvcmFnZS48L2Rpdj48ZGl2 Pjxicj48L2Rpdj48ZGl2Pk5pcjwvZGl2PjxkaXY+wqA8L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0i Z21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2Nj YyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij48ZGl2IGRpcj0ibHRyIj48ZGl2PjxkaXY+PGJyPjwv ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+VGhhbmtzLDwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xh c3M9ImdtYWlsX2V4dHJhIj48YnIgY2xlYXI9ImFsbCI+PGRpdj48ZGl2IGNsYXNzPSJtXzEyNzUw MzAzOTEyNDM5ODMxMTFnbWFpbF9zaWduYXR1cmUiIGRhdGEtc21hcnRtYWlsPSJnbWFpbF9zaWdu YXR1cmUiPjxkaXYgZGlyPSJsdHIiPjxkaXY+PGRpdiBkaXI9Imx0ciI+PGRpdj48ZGl2IGRpcj0i bHRyIj48cHJlIGNvbHM9IjcyIj48cCBzdHlsZT0iY29sb3I6cmdiKDAsMCwwKTtmb250LWZhbWls eTpvdmVycGFzcyxzYW5zLXNlcmlmO3doaXRlLXNwYWNlOm5vcm1hbDtmb250LXdlaWdodDpib2xk O21hcmdpbjowcHg7cGFkZGluZzowcHg7Zm9udC1zaXplOjE0cHg7dGV4dC10cmFuc2Zvcm06dXBw ZXJjYXNlIj5ZQU5JVsKgTEFWSSAoWUFOSVbCoERBUlkpPC9wPjxwIHN0eWxlPSJjb2xvcjpyZ2Io MCwwLDApO2ZvbnQtZmFtaWx5Om92ZXJwYXNzLHNhbnMtc2VyaWY7d2hpdGUtc3BhY2U6bm9ybWFs O2ZvbnQtc2l6ZToxMHB4O21hcmdpbjowcHggMHB4IDRweDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNh c2UiPlNFTklPUiBURUNITklDQUwgUFJPRFVDVCBNQU5BR0VSPC9wPjxwIHN0eWxlPSJmb250LWZh bWlseTpvdmVycGFzcyxzYW5zLXNlcmlmO3doaXRlLXNwYWNlOm5vcm1hbDttYXJnaW46MHB4O2Zv bnQtc2l6ZToxMHB4O2NvbG9yOnJnYigxNTMsMTUzLDE1MykiPjxhIGhyZWY9Imh0dHBzOi8vd3d3 LnJlZGhhdC5jb20vIiBzdHlsZT0iY29sb3I6cmdiKDAsMTM2LDIwNik7bWFyZ2luOjBweCIgdGFy Z2V0PSJfYmxhbmsiPlJlZCBIYXTCoElzcmFlbCBMdGQuPC9hPjwvcD48c3BhbiBzdHlsZT0iZm9u dC1mYW1pbHk6b3ZlcnBhc3Msc2Fucy1zZXJpZjt3aGl0ZS1zcGFjZTpub3JtYWw7Zm9udC1zaXpl OjEwcHg7bWFyZ2luOjBweDtjb2xvcjpyZ2IoMTUzLDE1MywxNTMpIj48cCBzdHlsZT0ibWFyZ2lu OjBweCI+MzQgSmVydXNhbGVtIFJvYWQsIEJ1aWxkaW5nIEEsIDFzdCBmbG9vcjwvcD48L3NwYW4+ PHNwYW4gc3R5bGU9ImNvbG9yOnJnYigwLDAsMCk7Zm9udC1mYW1pbHk6b3ZlcnBhc3Msc2Fucy1z ZXJpZjtmb250LXNpemU6bWVkaXVtO3doaXRlLXNwYWNlOm5vcm1hbCI+PC9zcGFuPjxzcGFuIHN0 eWxlPSJjb2xvcjpyZ2IoMCwwLDApO2ZvbnQtZmFtaWx5Om92ZXJwYXNzLHNhbnMtc2VyaWY7Zm9u dC1zaXplOm1lZGl1bTt3aGl0ZS1zcGFjZTpub3JtYWwiPjxwIHN0eWxlPSJmb250LXNpemU6MTBw eDttYXJnaW46MHB4O2NvbG9yOnJnYigxNTMsMTUzLDE1MykiPlJhJiMzOTthbmFuYSwgSXNyYWVs IDQzNTAxMDk8L3A+PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjpyZ2IoMCwwLDApO2ZvbnQtZmFt aWx5Om92ZXJwYXNzLHNhbnMtc2VyaWY7Zm9udC1zaXplOm1lZGl1bTt3aGl0ZS1zcGFjZTpub3Jt YWwiPjwvc3Bhbj48cCBzdHlsZT0iZm9udC1mYW1pbHk6b3ZlcnBhc3Msc2Fucy1zZXJpZjt3aGl0 ZS1zcGFjZTpub3JtYWw7bWFyZ2luOjBweCAwcHggNnB4O2ZvbnQtc2l6ZToxMHB4Ij48c3BhbiBz dHlsZT0iY29sb3I6cmdiKDE1MywxNTMsMTUzKTttYXJnaW46MHB4O3BhZGRpbmc6MHB4Ij48YSBo cmVmPSJtYWlsdG86eWxhdmlAcmVkaGF0LmNvbSIgc3R5bGU9ImNvbG9yOnJnYigwLDEzNiwyMDYp O21hcmdpbjowcHgiIHRhcmdldD0iX2JsYW5rIj55bGF2aUByZWRoYXQuY29tPC9hPsKgIMKgPC9z cGFuPjxmb250IGNvbG9yPSIjOTk5OTk5Ij7CoFQ6wqA8L2ZvbnQ+PGEgaHJlZj0idGVsOis5NzIt OS03NjkyMzA2IiBzdHlsZT0iY29sb3I6cmdiKDAsMTM2LDIwNik7bWFyZ2luOjBweCIgdGFyZ2V0 PSJfYmxhbmsiPis5NzItOS03NjkyMzA2PC9hPjxmb250IGNvbG9yPSIjOTk5OTk5Ij4vPC9mb250 PjxhIGhyZWY9InRlbDo4MjcyMzA2IiBzdHlsZT0iY29sb3I6cmdiKDAsMTM2LDIwNik7bWFyZ2lu OjBweCIgdGFyZ2V0PSJfYmxhbmsiPjgyNzIzMDY8L2E+PGZvbnQgY29sb3I9IiM5OTk5OTkiPsKg IMKgwqDCoEY6wqA8L2ZvbnQ+PGEgaHJlZj0idGVsOis5NzItOS03NjkyMjIzIiBzdHlsZT0iY29s b3I6cmdiKDAsMTM2LDIwNik7bWFyZ2luOjBweCIgdGFyZ2V0PSJfYmxhbmsiPis5NzItOS03Njky MjIzPC9hPjxmb250IGNvbG9yPSIjOTk5OTk5Ij7CoMKgIMKgSU06wqA8L2ZvbnQ+PHNwYW4gc3R5 bGU9ImNvbG9yOnJnYigxNTMsMTUzLDE1MykiPnlsYXZpPC9zcGFuPjwvcD48dGFibGUgYm9yZGVy PSIwIiBzdHlsZT0iY29sb3I6cmdiKDAsMCwwKTtmb250LWZhbWlseTpvdmVycGFzcyxzYW5zLXNl cmlmO2ZvbnQtc2l6ZTptZWRpdW07d2hpdGUtc3BhY2U6bm9ybWFsIj48dGJvZHk+PHRyPjx0ZCB3 aWR0aD0iMTAwcHgiPjxhIGhyZWY9Imh0dHBzOi8vcmVkLmh0L3NpZyIgdGFyZ2V0PSJfYmxhbmsi PjxpbWcgc3JjPSJodHRwczovL3d3dy5yZWRoYXQuY29tL2ZpbGVzL2JyYW5kL2VtYWlsL3NpZy1y ZWRoYXQucG5nIiB3aWR0aD0iOTAiIGhlaWdodD0iYXV0byI+PC9hPjwvdGQ+PHRkIHN0eWxlPSJm b250LXNpemU6MTBweCI+PGEgaHJlZj0iaHR0cHM6Ly9yZWRoYXQuY29tL3RydXN0ZWQiIHN0eWxl PSJjb2xvcjpyZ2IoMjA0LDAsMCk7Zm9udC13ZWlnaHQ6Ym9sZCIgdGFyZ2V0PSJfYmxhbmsiPlRS SUVELiBURVNURUQuIFRSVVNURUQuPC9hPjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PGRpdiBz dHlsZT0iY29sb3I6cmdiKDAsMCwwKTtmb250LWZhbWlseTpvdmVycGFzcyxzYW5zLXNlcmlmO3do aXRlLXNwYWNlOm5vcm1hbDtmb250LXNpemU6MTBweCI+PGRpdiBzdHlsZT0iY29sb3I6cmdiKDE1 MywxNTMsMTUzKSI+PGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9yZWRoYXRuZXdzIiB0aXRs ZT0idHdpdHRlciIgc3R5bGU9ImJhY2tncm91bmQ6dXJsKCZxdW90O2h0dHBzOi8vd3d3LnJlZGhh dC5jb20vZmlsZXMvYnJhbmQvZW1haWwvc20tdHdpdHRlci5wbmcmcXVvdDspIDBweCA1MCUvMTZw eCBuby1yZXBlYXQgdHJhbnNwYXJlbnQ7aGVpZ2h0OjIwcHg7Y29sb3I6cmdiKDExOSwxMTksMTE5 KTtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDoyMHB4O3BhZGRpbmctbGVmdDoxNnB4 IiB0YXJnZXQ9Il9ibGFuayI+QHJlZGhhdG5ld3M8L2E+wqDCoMKgPGEgaHJlZj0iaHR0cHM6Ly93 d3cubGlua2VkaW4uY29tL2NvbXBhbnkvcmVkLWhhdCIgdGl0bGU9IkxpbmtlZEluIiBzdHlsZT0i YmFja2dyb3VuZDp1cmwoJnF1b3Q7aHR0cHM6Ly93d3cucmVkaGF0LmNvbS9maWxlcy9icmFuZC9l bWFpbC9zbS1saW5rZWRpbi5wbmcmcXVvdDspIDBweCA1MCUvMTZweCBuby1yZXBlYXQgdHJhbnNw YXJlbnQ7aGVpZ2h0OjIwcHg7Y29sb3I6cmdiKDExOSwxMTksMTE5KTtkaXNwbGF5OmlubGluZS1i bG9jaztsaW5lLWhlaWdodDoyMHB4O3BhZGRpbmctbGVmdDoxNnB4IiB0YXJnZXQ9Il9ibGFuayI+ UmVkIEhhdDwvYT7CoMKgwqA8YSBocmVmPSJodHRwczovL3d3dy5mYWNlYm9vay5jb20vUmVkSGF0 SW5jIiB0aXRsZT0iRmFjZWJvb2siIHN0eWxlPSJiYWNrZ3JvdW5kOnVybCgmcXVvdDtodHRwczov L3d3dy5yZWRoYXQuY29tL2ZpbGVzL2JyYW5kL2VtYWlsL3NtLWZhY2Vib29rLnBuZyZxdW90Oykg MHB4IDUwJS8xNnB4IG5vLXJlcGVhdCB0cmFuc3BhcmVudDtoZWlnaHQ6MjBweDtjb2xvcjpyZ2Io MTE5LDExOSwxMTkpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjIwcHg7cGFkZGlu Zy1sZWZ0OjE2cHgiIHRhcmdldD0iX2JsYW5rIj5SZWQgSGF0PC9hPjwvZGl2PjwvZGl2PjwvcHJl PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xh c3M9ImdtYWlsX2V4dHJhIj4KPGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj5PbiBXZWQsIEp1 biAyMSwgMjAxNyBhdCAxMTo1NyBQTSwgRGVlcGFrIEphZ3RhcCA8c3BhbiBkaXI9Imx0ciI+Jmx0 OzxhIGhyZWY9Im1haWx0bzpkZWVwYWsuamFndGFwQG1heHRhLmNvbSIgdGFyZ2V0PSJfYmxhbmsi PmRlZXBhay5qYWd0YXBAbWF4dGEuY29tPC9hPiZndDs8L3NwYW4+IHdyb3RlOjxicj48YmxvY2tx dW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXIt bGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4KCgoKPGRpdj4KCjxkaXYgaWQ9 Im1fMTI3NTAzMDM5MTI0Mzk4MzExMW1fLTM4ODg1ODgzMzI3MDA0MjUyMTlkaXZ0YWdkZWZhdWx0 d3JhcHBlciIgc3R5bGU9ImZvbnQtc2l6ZToxMnB0O2NvbG9yOiMwMDAwMDA7Zm9udC1mYW1pbHk6 Q2FsaWJyaSxBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZiIgZGlyPSJsdHIiPgo8cD5UaGFua3Mg WWFuaXYhPC9wPgo8L2Rpdj4KPGhyIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo5 OCUiPgo8ZGl2IGlkPSJtXzEyNzUwMzAzOTEyNDM5ODMxMTFtXy0zODg4NTg4MzMyNzAwNDI1MjE5 ZGl2UnBseUZ3ZE1zZyIgZGlyPSJsdHIiPjxmb250IGZhY2U9IkNhbGlicmksIHNhbnMtc2VyaWYi IHN0eWxlPSJmb250LXNpemU6MTFwdCIgY29sb3I9IiMwMDAwMDAiPjxiPkZyb206PC9iPiBZYW5p diBLYXVsICZsdDs8YSBocmVmPSJtYWlsdG86eWthdWxAcmVkaGF0LmNvbSIgdGFyZ2V0PSJfYmxh bmsiPnlrYXVsQHJlZGhhdC5jb208L2E+Jmd0Ozxicj4KPGI+U2VudDo8L2I+IFdlZG5lc2RheSwg SnVuZSAyMSwgMjAxNyAxOjQ3OjI2IFBNPGJyPgo8Yj5Ubzo8L2I+IERlZXBhayBKYWd0YXA8YnI+ CjxiPkNjOjwvYj4gQWxsb24gTXVyZWluaWs7IDxhIGhyZWY9Im1haWx0bzpkZXZlbEBvdmlydC5v cmciIHRhcmdldD0iX2JsYW5rIj5kZXZlbEBvdmlydC5vcmc8L2E+PGRpdj48ZGl2IGNsYXNzPSJt XzEyNzUwMzAzOTEyNDM5ODMxMTFoNSI+PGJyPgo8Yj5TdWJqZWN0OjwvYj4gUmU6IFtvdmlydC1k ZXZlbF0gU25hcHNob3RzICZhbXA7IGNsb25lIHN1cHBvcnQgZnJvbSBkYXRhc3RvcmU8L2Rpdj48 L2Rpdj48L2ZvbnQ+CjxkaXY+wqA8L2Rpdj4KPC9kaXY+PGRpdj48ZGl2IGNsYXNzPSJtXzEyNzUw MzAzOTEyNDM5ODMxMTFoNSI+CjxkaXY+CjxkaXYgZGlyPSJsdHIiPjxicj4KPGRpdiBjbGFzcz0i Z21haWxfZXh0cmEiPjxicj4KPGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPk9uIFdlZCwgSnVuIDIx LCAyMDE3IGF0IDEwOjI4IFBNLCBEZWVwYWsgSmFndGFwIDxzcGFuIGRpcj0ibHRyIj4KJmx0Ozxh IGhyZWY9Im1haWx0bzpkZWVwYWsuamFndGFwQG1heHRhLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmRl ZXBhay5qYWd0YXBAbWF4dGEuY29tPC9hPiZndDs8L3NwYW4+IHdyb3RlOjxicj4KPGJsb2NrcXVv dGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxl ZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+CjxkaXY+CjxkaXYgaWQ9Im1fMTI3 NTAzMDM5MTI0Mzk4MzExMW1fLTM4ODg1ODgzMzI3MDA0MjUyMTltXy05MDcyMTM1OTAyMTc4NzQ5 ODEwZGl2dGFnZGVmYXVsdHdyYXBwZXIiIHN0eWxlPSJmb250LXNpemU6MTJwdDtjb2xvcjojMDAw MDAwO2ZvbnQtZmFtaWx5OkNhbGlicmksQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYiIGRpcj0i bHRyIj4KPHA+SGkgQWxsb24sPC9wPgo8cD48YnI+CjwvcD4KPHA+SSBhbcKgdHJ5aW5nIHRvIGxl dmVyYWdlIHNuYXBzaG90IMKgY2FwYWJpbGl0eSBvZiB1bmRlcmx5aW5nIGZpbGVzeXN0ZW0uPC9w Pgo8cD48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHQiPkFzIHBlciBteSB1bmRlcnN0YW5kaW5n IGN1cnJlbnQgc25hcHNob3TCoDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHQiPjwv c3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHQiPndvcmtzIGxpa2UgdGhpczo8L3NwYW4+ PC9wPgo8cD5CYXNlIEltYWdlKHJhdyktLS0mZ3Q7c25hcDEocWNvdyktJmd0O3NuYXAyKHFjb3cp LCBpLmXCoGFmdGVyIGVhY2ggc25hcHNob3Qgdm0gc3RhcnRzIHdyaXRpbmcgb24gbmV3bHkgY3Jl YXRlZCBxY293IGltYWdlLjwvcD4KPHA+U28gaW4gdGhpcyBjYXNlIHZtIGlzIGdvaW5nIHRvIGRv IGFsbCBuZXcgd3JpdGVzIG9uIHNuYXAyKHFjb3cpIHZvdWxtZSBhbmQgd2lsbCByZWRpcmVjdCBy ZWFkwqBJT3MgdG8gc25hcDEgJmFtcDsgQmFzZSBpbWFnZSBhcyByZXF1aXJlZC48L3A+CjxwPjxi cj4KPC9wPgo8cD5CdXQgaW4gbXkgY2FzZSBzbmFwc2hvdHMgY3JlYXRlZCBieSB0aGUgZmlsZXN5 c3RlbSBhcmUgcmVhZCBvbmx5IGFuZCBpdCYjMzk7cyBpbiByYXcgZm9ybWF0LjwvcD4KPHA+QXMg YSByZXN1bHQgYWZ0ZXIgY3JlYXRpbmcgc25hcHNob3Qgdm0gZGlzayBjb25maWd1cmF0aW9uIHdv biYjMzk7dCBjaGFuZ2UgYWZ0ZXIgdGFraW5nIHNuYXBzaG90IGJ1dCB3aWxsIGNvbnRpbnVlIGRv aW5nIHdyaXRlcyBvbiBzYW1lIGJhc2UgaW1hZ2UuPC9wPgo8cD5TbyBzbmFwc2hvdHMgd2lsbCBs b29rIGxpa2UgdGhpczo8L3A+CjxwPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpDYWxpYnJpLEFy aWFsLEhlbHZldGljYSxzYW5zLXNlcmlmLEVtb2ppRm9udCwmcXVvdDtBcHBsZSBDb2xvciBFbW9q aSZxdW90OywmcXVvdDtTZWdvZSBVSSBFbW9qaSZxdW90OyxOb3RvQ29sb3JFbW9qaSwmcXVvdDtT ZWdvZSBVSSBTeW1ib2wmcXVvdDssJnF1b3Q7QW5kcm9pZCBFbW9qaSZxdW90OyxFbW9qaVN5bWJv bHM7Zm9udC1zaXplOjE2cHgiPkJhc2UgSW1hZ2UocmF3KS0tLSZndDtzbmFwMShyYXcpLSZndDtz bmFwMihyYXcpPC9zcGFuPjxicj4KPC9wPgo8cD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q2Fs aWJyaSxBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZixFbW9qaUZvbnQsJnF1b3Q7QXBwbGUgQ29s b3IgRW1vamkmcXVvdDssJnF1b3Q7U2Vnb2UgVUkgRW1vamkmcXVvdDssTm90b0NvbG9yRW1vamks JnF1b3Q7U2Vnb2UgVUkgU3ltYm9sJnF1b3Q7LCZxdW90O0FuZHJvaWQgRW1vamkmcXVvdDssRW1v amlTeW1ib2xzO2ZvbnQtc2l6ZToxNnB4Ij5CYXNlIEltYWdlIHdpbGwgYWx3YXlzIHJlbWFpbiB3 cml0YWJsZSzCoHdoaWxlIHRoZSBzbmFwc2hvdHMgd2lsbCByZW1haW4KIHJlYWQgb25seSByYXcg Zm9ybWF0Ljwvc3Bhbj48L3A+CjxwPjxicj4KPC9wPgo8cD5KdXN0IHdhbnRlZCB0byBjb25maXJt IGlzIHRoaXMgY29uZmlndXJhYmxlIHNvIHRoYXQgdm0gY29udGludWVzIMKgcmVmZXJyaW5nIGJh c2UgaW1hZ2UgYWZ0ZXIgdGhlIHNuYXBzaG90IGluc3RlYWQgb2YgbmV3bHkgY3JlYXRlZCBxY293 IGltYWdlPzwvcD4KPC9kaXY+CjwvZGl2Pgo8L2Jsb2NrcXVvdGU+CjxkaXY+PGJyPgo8L2Rpdj4K PGRpdj5JdCBpcyBub3QuIEl0JiMzOTtsbCBuZWVkIGNvZGUgbW9kaWZpY2F0aW9uIHRvIGFsbG93 IGV4dGVybmFsbHkgdGFraW5nIHNuYXBzaG90cyBvZiBWTSBkaXNrcy48L2Rpdj4KPGRpdj5ZLjwv ZGl2Pgo8ZGl2PsKgPC9kaXY+CjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9 Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVm dDoxZXgiPgo8ZGl2Pgo8ZGl2IGlkPSJtXzEyNzUwMzAzOTEyNDM5ODMxMTFtXy0zODg4NTg4MzMy NzAwNDI1MjE5bV8tOTA3MjEzNTkwMjE3ODc0OTgxMGRpdnRhZ2RlZmF1bHR3cmFwcGVyIiBzdHls ZT0iZm9udC1zaXplOjEycHQ7Y29sb3I6IzAwMDAwMDtmb250LWZhbWlseTpDYWxpYnJpLEFyaWFs LEhlbHZldGljYSxzYW5zLXNlcmlmIiBkaXI9Imx0ciI+CjxwPjxicj4KPC9wPgo8cD5UaGFua3Mg JmFtcDsgUmVnYXJkcyw8L3A+CjxwPkRlZXBhazwvcD4KPHA+PHNwYW4gc3R5bGU9ImZvbnQtZmFt aWx5OkNhbGlicmksQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYsRW1vamlGb250LCZxdW90O0Fw cGxlIENvbG9yIEVtb2ppJnF1b3Q7LCZxdW90O1NlZ29lIFVJIEVtb2ppJnF1b3Q7LE5vdG9Db2xv ckVtb2ppLCZxdW90O1NlZ29lIFVJIFN5bWJvbCZxdW90OywmcXVvdDtBbmRyb2lkIEVtb2ppJnF1 b3Q7LEVtb2ppU3ltYm9scztmb250LXNpemU6MTZweCI+PGJyPgo8L3NwYW4+PC9wPgo8cD48c3Bh biBzdHlsZT0iZm9udC1mYW1pbHk6Q2FsaWJyaSxBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZixF bW9qaUZvbnQsJnF1b3Q7QXBwbGUgQ29sb3IgRW1vamkmcXVvdDssJnF1b3Q7U2Vnb2UgVUkgRW1v amkmcXVvdDssTm90b0NvbG9yRW1vamksJnF1b3Q7U2Vnb2UgVUkgU3ltYm9sJnF1b3Q7LCZxdW90 O0FuZHJvaWQgRW1vamkmcXVvdDssRW1vamlTeW1ib2xzO2ZvbnQtc2l6ZToxNnB4Ij48YnI+Cjwv c3Bhbj48L3A+CjxwPjxicj4KPC9wPgo8cD7CoDwvcD4KPC9kaXY+CjxociBzdHlsZT0iZGlzcGxh eTppbmxpbmUtYmxvY2s7d2lkdGg6OTglIj4KPGRpdiBpZD0ibV8xMjc1MDMwMzkxMjQzOTgzMTEx bV8tMzg4ODU4ODMzMjcwMDQyNTIxOW1fLTkwNzIxMzU5MDIxNzg3NDk4MTBkaXZScGx5RndkTXNn IiBkaXI9Imx0ciI+PGZvbnQgZmFjZT0iQ2FsaWJyaSwgc2Fucy1zZXJpZiIgc3R5bGU9ImZvbnQt c2l6ZToxMXB0IiBjb2xvcj0iIzAwMDAwMCI+PGI+RnJvbTo8L2I+IEFsbG9uIE11cmVpbmlrICZs dDs8YSBocmVmPSJtYWlsdG86YW11cmVpbmlAcmVkaGF0LmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmFt dXJlaW5pQHJlZGhhdC5jb208L2E+Jmd0Ozxicj4KPGI+U2VudDo8L2I+IFR1ZXNkYXksIEp1bmUg MjAsIDIwMTcgNzo1OTowMyBQTQo8ZGl2Pgo8ZGl2IGNsYXNzPSJtXzEyNzUwMzAzOTEyNDM5ODMx MTFtXy0zODg4NTg4MzMyNzAwNDI1MjE5aDUiPjxicj4KPGI+VG86PC9iPiBEZWVwYWsgSmFndGFw PGJyPgo8Yj5DYzo8L2I+IDxhIGhyZWY9Im1haWx0bzpkZXZlbEBvdmlydC5vcmciIHRhcmdldD0i X2JsYW5rIj5kZXZlbEBvdmlydC5vcmc8L2E+PGJyPgo8Yj5TdWJqZWN0OjwvYj4gUmU6IFtvdmly dC1kZXZlbF0gU25hcHNob3RzICZhbXA7IGNsb25lIHN1cHBvcnQgZnJvbSBkYXRhc3RvcmU8L2Rp dj4KPC9kaXY+CjwvZm9udD4KPGRpdj7CoDwvZGl2Pgo8L2Rpdj4KPGRpdj4KPGRpdiBjbGFzcz0i bV8xMjc1MDMwMzkxMjQzOTgzMTExbV8tMzg4ODU4ODMzMjcwMDQyNTIxOWg1Ij4KPGRpdj4KPGRp diBkaXI9Imx0ciI+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5Om1vbm9zcGFjZSxtb25vc3BhY2Ui Pk5vdCBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcXVlc3Rpb24uIENvdWxkIHlvdSBnaXZlIGFuIGV4 YW1wbGXCoG9mIHdoYXQgeW91IG1lYW4gcGVyaHBhcz88L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9 ImdtYWlsX2V4dHJhIj48YnI+CjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj5PbiBUdWUsIEp1biAy MCwgMjAxNyBhdCAxMDowMSBQTSwgRGVlcGFrIEphZ3RhcCA8c3BhbiBkaXI9Imx0ciI+CiZsdDs8 YSBocmVmPSJtYWlsdG86ZGVlcGFrLmphZ3RhcEBtYXh0YS5jb20iIHRhcmdldD0iX2JsYW5rIj5k ZWVwYWsuamFndGFwQG1heHRhLmNvbTwvYT4mZ3Q7PC9zcGFuPiB3cm90ZTo8YnI+CjxibG9ja3F1 b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1s ZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPgo8ZGl2Pgo8ZGl2IGlkPSJtXzEy NzUwMzAzOTEyNDM5ODMxMTFtXy0zODg4NTg4MzMyNzAwNDI1MjE5bV8tOTA3MjEzNTkwMjE3ODc0 OTgxMG1fNTg5MTkzODc0MDcyMzgzNzEyN2RpdnRhZ2RlZmF1bHR3cmFwcGVyIiBzdHlsZT0iZm9u dC1zaXplOjEycHQ7Y29sb3I6IzAwMDAwMDtmb250LWZhbWlseTpDYWxpYnJpLEFyaWFsLEhlbHZl dGljYSxzYW5zLXNlcmlmIiBkaXI9Imx0ciI+CjxwPkhpIEFsbG9uLDwvcD4KPHA+PGJyPgo8L3A+ CjxwPkFmdGVyIGdvaW5nIHRocm91Z2jCoGN1cnJlbnQgdmRzbcKgY29kZSBiYXNlLCBub3RpY2Vk IHRoYXQgYWZ0ZXIgdGFraW5nIGEgc25hcHNob3Qgdm0gc3RhcnRzIHJlZmVycmluZyB0aGUgbmV3 bHkgY3JlYXRlZCBxY293IGltYWdlL3ZvbHVtZS48L3A+CjxwPkZvciBpbnRlcm5hbCBzbmFwc2hv dHMgd2hpY2ggYXJlIG5vdCBxY293IMKgaXMgaXTCoGNvbmZpZ3VyYWJsZSBzb21laG93wqBzbyB0 aGF0IHZtIGNvbnRpbnVlcyBkb2luZyB3cml0ZXMgdG8gc2FtZSBiYXNlIGltYWdlPzwvcD4KPHA+ PGJyPgo8L3A+CjxwPlRoYW5rcyAmYW1wOyBSZWdhcmRzLDwvcD4KPHA+RGVlcGFrPC9wPgo8L2Rp dj4KPGhyIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo5OCUiPgo8ZGl2IGlkPSJt XzEyNzUwMzAzOTEyNDM5ODMxMTFtXy0zODg4NTg4MzMyNzAwNDI1MjE5bV8tOTA3MjEzNTkwMjE3 ODc0OTgxMG1fNTg5MTkzODc0MDcyMzgzNzEyN2RpdlJwbHlGd2RNc2ciIGRpcj0ibHRyIj48Zm9u dCBmYWNlPSJDYWxpYnJpLCBzYW5zLXNlcmlmIiBzdHlsZT0iZm9udC1zaXplOjExcHQiIGNvbG9y PSIjMDAwMDAwIj48Yj5Gcm9tOjwvYj4gRGVlcGFrIEphZ3RhcDxicj4KPGI+U2VudDo8L2I+IFR1 ZXNkYXksIEp1bmUgNiwgMjAxNyAzOjM3OjAzIFBNPGJyPgo8Yj5Ubzo8L2I+IEFsbG9uIE11cmVp bmlrPHNwYW4+PGJyPgo8Yj5DYzo8L2I+IDxhIGhyZWY9Im1haWx0bzpkZXZlbEBvdmlydC5vcmci IHRhcmdldD0iX2JsYW5rIj5kZXZlbEBvdmlydC5vcmc8L2E+PGJyPgo8Yj5TdWJqZWN0OjwvYj4g UmU6IFtvdmlydC1kZXZlbF0gU25hcHNob3RzICZhbXA7IGNsb25lIHN1cHBvcnQgZnJvbSBkYXRh c3RvcmU8L3NwYW4+PC9mb250Pgo8ZGl2PsKgPC9kaXY+CjwvZGl2Pgo8c3Bhbj4KPGRpdj4KPGRp diBpZD0ibV8xMjc1MDMwMzkxMjQzOTgzMTExbV8tMzg4ODU4ODMzMjcwMDQyNTIxOW1fLTkwNzIx MzU5MDIxNzg3NDk4MTBtXzU4OTE5Mzg3NDA3MjM4MzcxMjdkaXZ0YWdkZWZhdWx0d3JhcHBlciIg c3R5bGU9ImZvbnQtc2l6ZToxMnB0O2NvbG9yOiMwMDAwMDA7Zm9udC1mYW1pbHk6Q2FsaWJyaSxB cmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZiIgZGlyPSJsdHIiPgo8cD5UaGFua3MgQWxsb24hPC9w Pgo8cD48YnI+CjwvcD4KPHA+QmVzdCBSZWdhcmRzLDwvcD4KPHA+RGVlcGFrPC9wPgo8L2Rpdj4K PGhyIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo5OCUiPgo8ZGl2IGlkPSJtXzEy NzUwMzAzOTEyNDM5ODMxMTFtXy0zODg4NTg4MzMyNzAwNDI1MjE5bV8tOTA3MjEzNTkwMjE3ODc0 OTgxMG1fNTg5MTkzODc0MDcyMzgzNzEyN2RpdlJwbHlGd2RNc2ciIGRpcj0ibHRyIj48Zm9udCBm YWNlPSJDYWxpYnJpLCBzYW5zLXNlcmlmIiBzdHlsZT0iZm9udC1zaXplOjExcHQiIGNvbG9yPSIj MDAwMDAwIj48Yj5Gcm9tOjwvYj4gQWxsb24gTXVyZWluaWsgJmx0OzxhIGhyZWY9Im1haWx0bzph bXVyZWluaUByZWRoYXQuY29tIiB0YXJnZXQ9Il9ibGFuayI+YW11cmVpbmlAcmVkaGF0LmNvbTwv YT4mZ3Q7PGJyPgo8Yj5TZW50OjwvYj4gVHVlc2RheSwgSnVuZSA2LCAyMDE3IDI6NDM6MTcgUE08 YnI+CjxiPlRvOjwvYj4gRGVlcGFrIEphZ3RhcDxicj4KPGI+Q2M6PC9iPiA8YSBocmVmPSJtYWls dG86ZGV2ZWxAb3ZpcnQub3JnIiB0YXJnZXQ9Il9ibGFuayI+ZGV2ZWxAb3ZpcnQub3JnPC9hPjxi cj4KPGI+U3ViamVjdDo8L2I+IFJlOiBbb3ZpcnQtZGV2ZWxdIFNuYXBzaG90cyAmYW1wOyBjbG9u ZSBzdXBwb3J0IGZyb20gZGF0YXN0b3JlPC9mb250Pgo8ZGl2PsKgPC9kaXY+CjwvZGl2Pgo8ZGl2 Pgo8ZGl2IGRpcj0ibHRyIj4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlLG1vbm9z cGFjZSI+VW5mb3J0dW5hdGVseSwgdGhlcmUmIzM5O3Mgbm8gc3VjaCBpbnRlZ3JhdGlvbiBwb2lu dCBhdCB0aGUgbW9tZW50LjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iZ21haWxfZXh0cmEiPjxi cj4KPGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPk9uIFR1ZSwgSnVuIDYsIDIwMTcgYXQgNTo1NyBB TSwgRGVlcGFrIEphZ3RhcCA8c3BhbiBkaXI9Imx0ciI+CiZsdDs8YSBocmVmPSJtYWlsdG86ZGVl cGFrLmphZ3RhcEBtYXh0YS5jb20iIHRhcmdldD0iX2JsYW5rIj5kZWVwYWsuamFndGFwQG1heHRh LmNvbTwvYT4mZ3Q7PC9zcGFuPiB3cm90ZTo8YnI+CjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9x dW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlk O3BhZGRpbmctbGVmdDoxZXgiPgo8ZGl2IGRpcj0ibHRyIj4KPGRpdiBpZD0ibV8xMjc1MDMwMzkx MjQzOTgzMTExbV8tMzg4ODU4ODMzMjcwMDQyNTIxOW1fLTkwNzIxMzU5MDIxNzg3NDk4MTBtXzU4 OTE5Mzg3NDA3MjM4MzcxMjdtXy00ODczMjQ2MDk1MTczOTY4MjI0ZGl2dGFnZGVmYXVsdHdyYXBw ZXIiIHN0eWxlPSJmb250LXNpemU6MTJwdDtjb2xvcjojMDAwMDAwO2ZvbnQtZmFtaWx5OkNhbGli cmksQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYiIGRpcj0ibHRyIj4KPHA+SGV5IEd1eXMsPC9w Pgo8cD48YnI+CjwvcD4KPHA+SSBhbSBuZXdiaWUgdG8gb3ZpcnQsIGFuZCB3YW50ZWQgdG8gY29u ZmlybSB3aGF0cyB0aGUgYmVzdCB3YXkgdG8gbGV2ZXJhZ2Ugc25hcHNob3QsIGNsb25lIGZlYXR1 cmVzwqA8L3A+CjxwPnByb3ZpZGVkIGJ5IHRoZSBkYXRhc3RvcmUgZmlsZXN5c3RlbS48L3A+Cjxw PkkgaGF2ZSBhIGJ0cmZzIGRhdGFzdG9yZSBleHBvcnRlZMKgYW5kIHdhbnRlZCB1c2UgYnRyZnMg c25hcHNob3RzIGZvciB2bSBzbmFwc2hvdCAmYW1wOyBjbG9uZXMuPC9wPgo8cD5Eb2VzIG92aXJ0 IG9mZmVycyBhbnkgaG9va3MvQVBJcyBzbyB0aGF0IGltYWdlIHNuYXBzaG90cyBhcmUgY3JlYXRl ZCBieSB0aGUgZmlsZXN5c3RlbT88L3A+CjxwPjxicj4KPC9wPgo8cD5UaGFua3MgJmFtcDsgUmVn YXJkcyw8L3A+CjxwPkRlZXBhazwvcD4KPHA+wqA8L3A+CjwvZGl2Pgo8L2Rpdj4KPGJyPgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxicj4KRGV2ZWwgbWFp bGluZyBsaXN0PGJyPgo8YSBocmVmPSJtYWlsdG86RGV2ZWxAb3ZpcnQub3JnIiB0YXJnZXQ9Il9i bGFuayI+RGV2ZWxAb3ZpcnQub3JnPC9hPjxicj4KPGEgaHJlZj0iaHR0cDovL2xpc3RzLm92aXJ0 Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RldmVsIiByZWw9Im5vcmVmZXJyZXIiIHRhcmdldD0iX2Js YW5rIj5odHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vZGV2ZWw8L2E+PGJy Pgo8L2Jsb2NrcXVvdGU+CjwvZGl2Pgo8YnI+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+Cjwvc3Bhbj48 L2Rpdj4KPC9ibG9ja3F1b3RlPgo8L2Rpdj4KPGJyPgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rp dj4KPC9kaXY+Cjxicj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX188YnI+CkRldmVsIG1haWxpbmcgbGlzdDxicj4KPGEgaHJlZj0ibWFpbHRvOkRldmVsQG92 aXJ0Lm9yZyIgdGFyZ2V0PSJfYmxhbmsiPkRldmVsQG92aXJ0Lm9yZzwvYT48YnI+CjxhIGhyZWY9 Imh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby9kZXZlbCIgcmVsPSJub3Jl ZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RldmVsPC9hPjxicj4KPC9ibG9ja3F1b3RlPgo8L2Rpdj4KPGJyPgo8L2Rpdj4KPC9k aXY+CjwvZGl2Pgo8L2Rpdj48L2Rpdj48L2Rpdj4KCjxicj5fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXzxicj4KRGV2ZWwgbWFpbGluZyBsaXN0PGJyPgo8YSBo cmVmPSJtYWlsdG86RGV2ZWxAb3ZpcnQub3JnIiB0YXJnZXQ9Il9ibGFuayI+RGV2ZWxAb3ZpcnQu b3JnPC9hPjxicj4KPGEgaHJlZj0iaHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RldmVsIiByZWw9Im5vcmVmZXJyZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vbGlzdHMu b3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vZGV2ZWw8L2E+PGJyPjwvYmxvY2txdW90ZT48L2Rp dj48YnI+PC9kaXY+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fPGJyPgpEZXZlbCBtYWlsaW5nIGxpc3Q8YnI+CjxhIGhyZWY9Im1haWx0bzpEZXZlbEBvdmly dC5vcmciIHRhcmdldD0iX2JsYW5rIj5EZXZlbEBvdmlydC5vcmc8L2E+PGJyPgo8YSBocmVmPSJo dHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vZGV2ZWwiIHJlbD0ibm9yZWZl cnJlciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kZXZlbDwvYT48L2Jsb2NrcXVvdGU+PC9kaXY+PC9kaXY+Cg== --===============1588635176259760506==-- From nsoffer at redhat.com Thu Jun 22 13:43:51 2017 Content-Type: multipart/mixed; boundary="===============7696491202009991005==" MIME-Version: 1.0 From: Nir Soffer To: devel at ovirt.org Subject: Re: [ovirt-devel] Snapshots & clone support from datastore Date: Thu, 22 Jun 2017 13:43:39 +0000 Message-ID: In-Reply-To: MWHPR11MB1663D3BF9B01DB6E1142AB1DEDDA0@MWHPR11MB1663.namprd11.prod.outlook.com --===============7696491202009991005== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On Wed, Jun 21, 2017 at 11:03 PM Deepak Jagtap wrote: > Hi Allon, > > > I am trying to leverage snapshot capability of underlying filesystem. > > As per my understanding current snapshot works like this: > > Base Image(raw)--->snap1(qcow)->snap2(qcow), i.e after each snapshot vm > starts writing on newly created qcow image. > > So in this case vm is going to do all new writes on snap2(qcow) voulme and > will redirect read IOs to snap1 & Base image as required. > Right But in my case snapshots created by the filesystem are read only and it's > in raw format. > > As a result after creating snapshot vm disk configuration won't change > after taking snapshot but will continue doing writes on same base image. > > So snapshots will look like this: > > Base Image(raw)--->snap1(raw)->snap2(raw) > Not sure what is snap1 and snap2 - how do you create and use them with your file system? what is the underlying file system? > Base Image will always remain writable, while the snapshots will remain > read only raw format. > This works like ceph volumes. Our flow for ceph is: 1. engine invokes VM.freeze vdsm api to ensure that guest file systems are consistent 2. engine create new snapshot via cinder api 3. engine may invokes VM.snapshot vdsm api (without the ceph disk) if memory snapshot is needed. memory snapshot is stored in a new disk created by engine before this flow 4. engine invokes VM.thaw to unfreeze guest file systems > Just wanted to confirm is this configurable so that vm continues > referring base image after the snapshot instead of newly created qcow > image? > No, it will use new image, this is not possible with snapshot. Vdsm has the basic building blocks to do what you need, except creating and deleting snapshots. To implement such feature you need to add a new type of storage in engine that will call the right vdsm apis when creating and deleting snapshots, and new vdsm apis to create and delete snapshots. Nir --===============7696491202009991005== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGRpdiBkaXI9Imx0ciI+PGJyPjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+PGRpdiBkaXI9 Imx0ciI+T24gV2VkLCBKdW4gMjEsIDIwMTcgYXQgMTE6MDMgUE0gRGVlcGFrIEphZ3RhcCAmbHQ7 PGEgaHJlZj0ibWFpbHRvOmRlZXBhay5qYWd0YXBAbWF4dGEuY29tIj5kZWVwYWsuamFndGFwQG1h eHRhLmNvbTwvYT4mZ3Q7IHdyb3RlOjxicj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxf cXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xp ZDtwYWRkaW5nLWxlZnQ6MWV4Ij4KCgoKPGRpdj4KCjxkaXYgaWQ9Im1fLTQ0MzE3NjI4ODM5MzYx NjM3MjNkaXZ0YWdkZWZhdWx0d3JhcHBlciIgc3R5bGU9ImZvbnQtc2l6ZToxMnB0O2NvbG9yOiMw MDAwMDA7Zm9udC1mYW1pbHk6Q2FsaWJyaSxBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZiIgZGly PSJsdHIiPgo8cD5IaSBBbGxvbiw8L3A+CjxwPjxicj4KPC9wPgo8cD5JIGFtwqB0cnlpbmcgdG8g bGV2ZXJhZ2Ugc25hcHNob3QgwqBjYXBhYmlsaXR5IG9mIHVuZGVybHlpbmcgZmlsZXN5c3RlbS48 L3A+CjxwPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJwdCI+QXMgcGVyIG15IHVuZGVyc3RhbmRp bmcgY3VycmVudCBzbmFwc2hvdMKgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJwdCI+ PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJwdCI+d29ya3MgbGlrZSB0aGlzOjwvc3Bh bj48L3A+CjxwPkJhc2UgSW1hZ2UocmF3KS0tLSZndDtzbmFwMShxY293KS0mZ3Q7c25hcDIocWNv dyksIGkuZcKgYWZ0ZXIgZWFjaCBzbmFwc2hvdCB2bSBzdGFydHMgd3JpdGluZyBvbiBuZXdseSBj cmVhdGVkIHFjb3cgaW1hZ2UuPC9wPgo8cD5TbyBpbiB0aGlzIGNhc2Ugdm0gaXMgZ29pbmcgdG8g ZG8gYWxsIG5ldyB3cml0ZXMgb24gc25hcDIocWNvdykgdm91bG1lIGFuZCB3aWxsIHJlZGlyZWN0 IHJlYWTCoElPcyB0byBzbmFwMSAmYW1wOyBCYXNlIGltYWdlIGFzIHJlcXVpcmVkLjwvcD48L2Rp dj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj48YnI+PC9kaXY+PGRpdj5SaWdodDwvZGl2PjxkaXY+ PGJyPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjow IDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPjxk aXY+PGRpdiBpZD0ibV8tNDQzMTc2Mjg4MzkzNjE2MzcyM2RpdnRhZ2RlZmF1bHR3cmFwcGVyIiBz dHlsZT0iZm9udC1zaXplOjEycHQ7Y29sb3I6IzAwMDAwMDtmb250LWZhbWlseTpDYWxpYnJpLEFy aWFsLEhlbHZldGljYSxzYW5zLXNlcmlmIiBkaXI9Imx0ciI+CjxwPkJ1dCBpbiBteSBjYXNlIHNu YXBzaG90cyBjcmVhdGVkIGJ5IHRoZSBmaWxlc3lzdGVtIGFyZSByZWFkIG9ubHkgYW5kIGl0JiMz OTtzIGluIHJhdyBmb3JtYXQuPC9wPgo8cD5BcyBhIHJlc3VsdCBhZnRlciBjcmVhdGluZyBzbmFw c2hvdCB2bSBkaXNrIGNvbmZpZ3VyYXRpb24gd29uJiMzOTt0IGNoYW5nZSBhZnRlciB0YWtpbmcg c25hcHNob3QgYnV0IHdpbGwgY29udGludWUgZG9pbmcgd3JpdGVzIG9uIHNhbWUgYmFzZSBpbWFn ZS48L3A+CjxwPlNvIHNuYXBzaG90cyB3aWxsIGxvb2sgbGlrZSB0aGlzOjwvcD4KPHA+PHNwYW4g c3R5bGU9ImZvbnQtZmFtaWx5OkNhbGlicmksQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYsRW1v amlGb250LCZxdW90O0FwcGxlIENvbG9yIEVtb2ppJnF1b3Q7LCZxdW90O1NlZ29lIFVJIEVtb2pp JnF1b3Q7LE5vdG9Db2xvckVtb2ppLCZxdW90O1NlZ29lIFVJIFN5bWJvbCZxdW90OywmcXVvdDtB bmRyb2lkIEVtb2ppJnF1b3Q7LEVtb2ppU3ltYm9scztmb250LXNpemU6MTZweCI+QmFzZSBJbWFn ZShyYXcpLS0tJmd0O3NuYXAxKHJhdyktJmd0O3NuYXAyKHJhdyk8L3NwYW4+PC9wPjwvZGl2Pjwv ZGl2PjwvYmxvY2txdW90ZT48ZGl2Pk5vdCBzdXJlIHdoYXQgaXMgc25hcDEgYW5kIHNuYXAyIC0g aG93IGRvIHlvdSBjcmVhdGUgYW5kIHVzZSB0aGVtPC9kaXY+PGRpdj53aXRoIHlvdXIgZmlsZSBz eXN0ZW0/IHdoYXQgaXMgdGhlIHVuZGVybHlpbmcgZmlsZSBzeXN0ZW0/wqA8L2Rpdj48YmxvY2tx dW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXIt bGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij48ZGl2PjxkaXYgaWQ9Im1fLTQ0 MzE3NjI4ODM5MzYxNjM3MjNkaXZ0YWdkZWZhdWx0d3JhcHBlciIgc3R5bGU9ImZvbnQtc2l6ZTox MnB0O2NvbG9yOiMwMDAwMDA7Zm9udC1mYW1pbHk6Q2FsaWJyaSxBcmlhbCxIZWx2ZXRpY2Esc2Fu cy1zZXJpZiIgZGlyPSJsdHIiPgo8cD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6Q2FsaWJyaSxB cmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZixFbW9qaUZvbnQsJnF1b3Q7QXBwbGUgQ29sb3IgRW1v amkmcXVvdDssJnF1b3Q7U2Vnb2UgVUkgRW1vamkmcXVvdDssTm90b0NvbG9yRW1vamksJnF1b3Q7 U2Vnb2UgVUkgU3ltYm9sJnF1b3Q7LCZxdW90O0FuZHJvaWQgRW1vamkmcXVvdDssRW1vamlTeW1i b2xzO2ZvbnQtc2l6ZToxNnB4Ij5CYXNlIEltYWdlIHdpbGwgYWx3YXlzIHJlbWFpbiB3cml0YWJs ZSzCoHdoaWxlIHRoZSBzbmFwc2hvdHMKIHdpbGwgcmVtYWluIHJlYWQgb25seSByYXcgZm9ybWF0 Ljwvc3Bhbj48L3A+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+PGJyPjwvZGl2PjxkaXY+ VGhpcyB3b3JrcyBsaWtlIGNlcGggdm9sdW1lcy48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pk91 ciBmbG93IGZvciBjZXBoIGlzOjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+MS4gZW5naW5lIGlu dm9rZXMgVk0uZnJlZXplIHZkc20gYXBpIHRvIGVuc3VyZSB0aGF0IGd1ZXN0IGZpbGUgc3lzdGVt cyBhcmUgY29uc2lzdGVudDwvZGl2PjxkaXY+Mi4gZW5naW5lIGNyZWF0ZSBuZXcgc25hcHNob3Qg dmlhIGNpbmRlciBhcGk8L2Rpdj48ZGl2PjMuIGVuZ2luZSBtYXkgaW52b2tlcyBWTS5zbmFwc2hv dCB2ZHNtIGFwaSAod2l0aG91dCB0aGUgY2VwaCBkaXNrKSBpZiBtZW1vcnkgc25hcHNob3QgaXMg bmVlZGVkLjwvZGl2PjxkaXY+wqAgwqAgbWVtb3J5IHNuYXBzaG90IGlzIHN0b3JlZCBpbiBhIG5l dyBkaXNrIGNyZWF0ZWQgYnkgZW5naW5lIGJlZm9yZSB0aGlzIGZsb3fCoDwvZGl2PjxkaXY+NC4g ZW5naW5lIGludm9rZXMgVk0udGhhdyB0byDCoHVuZnJlZXplIGd1ZXN0IGZpbGUgc3lzdGVtczwv ZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAu OGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXgiPjxkaXY+PGRp diBpZD0ibV8tNDQzMTc2Mjg4MzkzNjE2MzcyM2RpdnRhZ2RlZmF1bHR3cmFwcGVyIiBzdHlsZT0i Zm9udC1zaXplOjEycHQ7Y29sb3I6IzAwMDAwMDtmb250LWZhbWlseTpDYWxpYnJpLEFyaWFsLEhl bHZldGljYSxzYW5zLXNlcmlmIiBkaXI9Imx0ciI+CjxwPkp1c3Qgd2FudGVkIHRvIGNvbmZpcm0g aXMgdGhpcyBjb25maWd1cmFibGUgc28gdGhhdCB2bSBjb250aW51ZXMgwqByZWZlcnJpbmcgYmFz ZSBpbWFnZSBhZnRlciB0aGUgc25hcHNob3QgaW5zdGVhZCBvZiBuZXdseSBjcmVhdGVkIHFjb3cg aW1hZ2U/PC9wPjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48ZGl2Pk5vLCBpdCB3aWxsIHVzZSBu ZXcgaW1hZ2UsIHRoaXMgaXMgbm90IHBvc3NpYmxlIHdpdGggc25hcHNob3QuwqA8YnI+PC9kaXY+ PGRpdj48YnI+PC9kaXY+PGRpdj5WZHNtIGhhcyB0aGUgYmFzaWMgYnVpbGRpbmcgYmxvY2tzIHRv IGRvIHdoYXQgeW91IG5lZWQsIGV4Y2VwdCBjcmVhdGluZzwvZGl2PjxkaXY+YW5kIGRlbGV0aW5n IHNuYXBzaG90cy4gVG8gaW1wbGVtZW50IHN1Y2ggZmVhdHVyZSB5b3UgbmVlZCB0byBhZGQgYSBu ZXc8L2Rpdj48ZGl2PnR5cGUgb2Ygc3RvcmFnZSBpbiBlbmdpbmUgdGhhdCB3aWxsIGNhbGwgdGhl IHJpZ2h0IHZkc20gYXBpcyB3aGVuIGNyZWF0aW5nPC9kaXY+PGRpdj5hbmQgZGVsZXRpbmcgc25h cHNob3RzLCBhbmQgbmV3IHZkc20gYXBpcyB0byBjcmVhdGUgYW5kIGRlbGV0ZSBzbmFwc2hvdHMu PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5OaXI8L2Rpdj48L2Rpdj48L2Rpdj4K --===============7696491202009991005==--