<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bwlp/qemu.git/block/sheepdog.c, branch spice_video_codecs</title>
<subtitle>Experimental fork of QEMU with video encoding patches</subtitle>
<id>https://git.openslx.org/bwlp/qemu.git/atom/block/sheepdog.c?h=spice_video_codecs</id>
<link rel='self' href='https://git.openslx.org/bwlp/qemu.git/atom/block/sheepdog.c?h=spice_video_codecs'/>
<link rel='alternate' type='text/html' href='https://git.openslx.org/bwlp/qemu.git/'/>
<updated>2021-05-12T15:42:23+00:00</updated>
<entry>
<title>block: Drop the sheepdog block driver</title>
<updated>2021-05-12T15:42:23+00:00</updated>
<author>
<name>Markus Armbruster</name>
</author>
<published>2021-05-01T07:57:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/bwlp/qemu.git/commit/?id=09ec85176e4095be15f233ebc870d5680123f024'/>
<id>urn:sha1:09ec85176e4095be15f233ebc870d5680123f024</id>
<content type='text'>
It was deprecated in commit e1c4269763, v5.2.0.  See that commit
message for rationale.

Signed-off-by: Markus Armbruster &lt;armbru@redhat.com&gt;
Message-Id: &lt;20210501075747.3293186-1-armbru@redhat.com&gt;
ACKed-by: Peter Krempa &lt;pkrempa@redhat.com&gt;
</content>
</entry>
<entry>
<title>block: deprecate the sheepdog block driver</title>
<updated>2020-10-15T14:06:28+00:00</updated>
<author>
<name>Daniel P. Berrangé</name>
</author>
<published>2020-10-02T11:32:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/bwlp/qemu.git/commit/?id=e1c4269763999e3b359fff19ad170e0110d3b457'/>
<id>urn:sha1:e1c4269763999e3b359fff19ad170e0110d3b457</id>
<content type='text'>
This thread from a little over a year ago:

  http://lists.wpkg.org/pipermail/sheepdog/2019-March/thread.html

states that sheepdog is no longer actively developed. The only mentioned
users are some companies who are said to have it for legacy reasons with
plans to replace it by Ceph. There is talk about cutting out existing
features to turn it into a simple demo of how to write a distributed
block service. There is no evidence of anyone working on that idea:

  https://github.com/sheepdog/sheepdog/commits/master

No real commits to git since Jan 2018, and before then just some minor
technical debt cleanup.

There is essentially no activity on the mailing list aside from
patches to QEMU that get CC'd due to our MAINTAINERS entry.

Fedora packages for sheepdog failed to build from upstream source
because of the more strict linker that no longer merges duplicate
global symbols. Fedora patches it to add the missing "extern"
annotations and presumably other distros do to, but upstream source
remains broken.

There is only basic compile testing, no functional testing of the
driver.

Since there are no build pre-requisites the sheepdog driver is currently
enabled unconditionally. This would result in configure issuing a
deprecation warning by default for all users. Thus the configure default
is changed to disable it, requiring users to pass --enable-sheepdog to
build the driver.

Reviewed-by: Markus Armbruster &lt;armbru@redhat.com&gt;
Reviewed-by: Thomas Huth &lt;thuth@redhat.com&gt;
Reviewed-by: Vladimir Sementsov-Ogievskiy &lt;vsementsov@virtuozzo.com&gt;
Reviewed-by: Philippe Mathieu-Daudé &lt;philmd@redhat.com&gt;
Signed-off-by: Daniel P. Berrangé &lt;berrange@redhat.com&gt;
Message-Id: &lt;20201002113243.2347710-3-berrange@redhat.com&gt;
Reviewed-by: Neal Gompa &lt;ngompa13@gmail.com&gt;
Signed-off-by: Kevin Wolf &lt;kwolf@redhat.com&gt;
</content>
</entry>
<entry>
<title>block/sheepdog: Replace magic val by NANOSECONDS_PER_SECOND definition</title>
<updated>2020-10-02T13:46:40+00:00</updated>
<author>
<name>Philippe Mathieu-Daudé</name>
</author>
<published>2020-09-21T11:01:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/bwlp/qemu.git/commit/?id=74f2e027663902924a9bd4c88119f27debdb5533'/>
<id>urn:sha1:74f2e027663902924a9bd4c88119f27debdb5533</id>
<content type='text'>
Use self-explicit NANOSECONDS_PER_SECOND definition instead
of magic value.

Signed-off-by: Philippe Mathieu-Daudé &lt;philmd@redhat.com&gt;
Message-Id: &lt;20200921110145.520944-1-philmd@redhat.com&gt;
Reviewed-by: Alberto Garcia &lt;berto@igalia.com&gt;
Signed-off-by: Kevin Wolf &lt;kwolf@redhat.com&gt;
</content>
</entry>
<entry>
<title>qemu/atomic.h: rename atomic_ to qatomic_</title>
<updated>2020-09-23T15:07:44+00:00</updated>
<author>
<name>Stefan Hajnoczi</name>
</author>
<published>2020-09-23T10:56:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/bwlp/qemu.git/commit/?id=d73415a315471ac0b127ed3fad45c8ec5d711de1'/>
<id>urn:sha1:d73415a315471ac0b127ed3fad45c8ec5d711de1</id>
<content type='text'>
clang's C11 atomic_fetch_*() functions only take a C11 atomic type
pointer argument. QEMU uses direct types (int, etc) and this causes a
compiler error when a QEMU code calls these functions in a source file
that also included &lt;stdatomic.h&gt; via a system header file:

  $ CC=clang CXX=clang++ ./configure ... &amp;&amp; make
  ../util/async.c:79:17: error: address argument to atomic operation must be a pointer to _Atomic type ('unsigned int *' invalid)

Avoid using atomic_*() names in QEMU's atomic.h since that namespace is
used by &lt;stdatomic.h&gt;. Prefix QEMU's APIs with 'q' so that atomic.h
and &lt;stdatomic.h&gt; can co-exist. I checked /usr/include on my machine and
searched GitHub for existing "qatomic_" users but there seem to be none.

This patch was generated using:

  $ git grep -h -o '\&lt;atomic\(64\)\?_[a-z0-9_]\+' include/qemu/atomic.h | \
    sort -u &gt;/tmp/changed_identifiers
  $ for identifier in $(&lt;/tmp/changed_identifiers); do
        sed -i "s%\&lt;$identifier\&gt;%q$identifier%g" \
            $(git grep -I -l "\&lt;$identifier\&gt;")
    done

I manually fixed line-wrap issues and misaligned rST tables.

Signed-off-by: Stefan Hajnoczi &lt;stefanha@redhat.com&gt;
Reviewed-by: Philippe Mathieu-Daudé &lt;philmd@redhat.com&gt;
Acked-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
Message-Id: &lt;20200923105646.47864-1-stefanha@redhat.com&gt;
</content>
</entry>
<entry>
<title>sheepdog: Add trivial backing_fmt support</title>
<updated>2020-07-14T13:18:59+00:00</updated>
<author>
<name>Eric Blake</name>
</author>
<published>2020-07-06T20:39:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/bwlp/qemu.git/commit/?id=80fa43e7df5d68d60a2662036b7d3d95ca8b68f3'/>
<id>urn:sha1:80fa43e7df5d68d60a2662036b7d3d95ca8b68f3</id>
<content type='text'>
Sheepdog already requires that if backing_file is present, that it be
another sheepdog image (see sd_co_create).  Meanwhile, we want to move
towards always being explicit about the backing format for other
drivers where it matters.  So for convenience, make qemu-img create -F
sheepdog work, while rejecting all other explicit formats (note that
this is only for QemuOpts usage; there is no change to the QAPI to
allow a format through -blockdev).

Signed-off-by: Eric Blake &lt;eblake@redhat.com&gt;
Message-Id: &lt;20200706203954.341758-4-eblake@redhat.com&gt;
Signed-off-by: Kevin Wolf &lt;kwolf@redhat.com&gt;
</content>
</entry>
<entry>
<title>qapi: Smooth another visitor error checking pattern</title>
<updated>2020-07-10T13:18:08+00:00</updated>
<author>
<name>Markus Armbruster</name>
</author>
<published>2020-07-07T16:06:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/bwlp/qemu.git/commit/?id=b11a093c6025635b4504d79d30daa334a01279a5'/>
<id>urn:sha1:b11a093c6025635b4504d79d30daa334a01279a5</id>
<content type='text'>
Convert

    visit_type_FOO(v, ..., &amp;ptr, &amp;err);
    ...
    if (err) {
        ...
    }

to

    visit_type_FOO(v, ..., &amp;ptr, errp);
    ...
    if (!ptr) {
        ...
    }

for functions that set @ptr to non-null / null on success / error.

Eliminate error_propagate() that are now unnecessary.  Delete @err
that are now unused.

Signed-off-by: Markus Armbruster &lt;armbru@redhat.com&gt;
Reviewed-by: Eric Blake &lt;eblake@redhat.com&gt;
Message-Id: &lt;20200707160613.848843-40-armbru@redhat.com&gt;
</content>
</entry>
<entry>
<title>error: Eliminate error_propagate() with Coccinelle, part 2</title>
<updated>2020-07-10T13:18:08+00:00</updated>
<author>
<name>Markus Armbruster</name>
</author>
<published>2020-07-07T16:06:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/bwlp/qemu.git/commit/?id=af175e85f92c870386ad74f466e29537b79611d3'/>
<id>urn:sha1:af175e85f92c870386ad74f466e29537b79611d3</id>
<content type='text'>
When all we do with an Error we receive into a local variable is
propagating to somewhere else, we can just as well receive it there
right away.  The previous commit did that with a Coccinelle script I
consider fairly trustworthy.  This commit uses the same script with
the matching of return taken out, i.e. we convert

    if (!foo(..., &amp;err)) {
        ...
        error_propagate(errp, err);
        ...
    }

to

    if (!foo(..., errp)) {
        ...
        ...
    }

This is unsound: @err could still be read between afterwards.  I don't
know how to express "no read of @err without an intervening write" in
Coccinelle.  Instead, I manually double-checked for uses of @err.

Suboptimal line breaks tweaked manually.  qdev_realize() simplified
further to placate scripts/checkpatch.pl.

Signed-off-by: Markus Armbruster &lt;armbru@redhat.com&gt;
Reviewed-by: Eric Blake &lt;eblake@redhat.com&gt;
Message-Id: &lt;20200707160613.848843-36-armbru@redhat.com&gt;
</content>
</entry>
<entry>
<title>qapi: Use returned bool to check for failure, Coccinelle part</title>
<updated>2020-07-10T13:18:08+00:00</updated>
<author>
<name>Markus Armbruster</name>
</author>
<published>2020-07-07T16:05:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/bwlp/qemu.git/commit/?id=62a35aaa310807fa161ca041ddb0f308faeb582b'/>
<id>urn:sha1:62a35aaa310807fa161ca041ddb0f308faeb582b</id>
<content type='text'>
The previous commit enables conversion of

    visit_foo(..., &amp;err);
    if (err) {
        ...
    }

to

    if (!visit_foo(..., errp)) {
        ...
    }

for visitor functions that now return true / false on success / error.
Coccinelle script:

    @@
    identifier fun =~ "check_list|input_type_enum|lv_start_struct|lv_type_bool|lv_type_int64|lv_type_str|lv_type_uint64|output_type_enum|parse_type_bool|parse_type_int64|parse_type_null|parse_type_number|parse_type_size|parse_type_str|parse_type_uint64|print_type_bool|print_type_int64|print_type_null|print_type_number|print_type_size|print_type_str|print_type_uint64|qapi_clone_start_alternate|qapi_clone_start_list|qapi_clone_start_struct|qapi_clone_type_bool|qapi_clone_type_int64|qapi_clone_type_null|qapi_clone_type_number|qapi_clone_type_str|qapi_clone_type_uint64|qapi_dealloc_start_list|qapi_dealloc_start_struct|qapi_dealloc_type_anything|qapi_dealloc_type_bool|qapi_dealloc_type_int64|qapi_dealloc_type_null|qapi_dealloc_type_number|qapi_dealloc_type_str|qapi_dealloc_type_uint64|qobject_input_check_list|qobject_input_check_struct|qobject_input_start_alternate|qobject_input_start_list|qobject_input_start_struct|qobject_input_type_any|qobject_input_type_bool|qobject_input_type_bool_keyval|qobject_input_type_int64|qobject_input_type_int64_keyval|qobject_input_type_null|qobject_input_type_number|qobject_input_type_number_keyval|qobject_input_type_size_keyval|qobject_input_type_str|qobject_input_type_str_keyval|qobject_input_type_uint64|qobject_input_type_uint64_keyval|qobject_output_start_list|qobject_output_start_struct|qobject_output_type_any|qobject_output_type_bool|qobject_output_type_int64|qobject_output_type_null|qobject_output_type_number|qobject_output_type_str|qobject_output_type_uint64|start_list|visit_check_list|visit_check_struct|visit_start_alternate|visit_start_list|visit_start_struct|visit_type_.*";
    expression list args;
    typedef Error;
    Error *err;
    @@
    -    fun(args, &amp;err);
    -    if (err)
    +    if (!fun(args, &amp;err))
         {
             ...
         }

A few line breaks tidied up manually.

Signed-off-by: Markus Armbruster &lt;armbru@redhat.com&gt;
Reviewed-by: Eric Blake &lt;eblake@redhat.com&gt;
Reviewed-by: Vladimir Sementsov-Ogievskiy &lt;vsementsov@virtuozzo.com&gt;
Message-Id: &lt;20200707160613.848843-19-armbru@redhat.com&gt;
</content>
</entry>
<entry>
<title>qemu-option: Use returned bool to check for failure</title>
<updated>2020-07-10T13:17:35+00:00</updated>
<author>
<name>Markus Armbruster</name>
</author>
<published>2020-07-07T16:05:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/bwlp/qemu.git/commit/?id=235e59cf03ed75d0ce96c97343194ed11c146231'/>
<id>urn:sha1:235e59cf03ed75d0ce96c97343194ed11c146231</id>
<content type='text'>
The previous commit enables conversion of

    foo(..., &amp;err);
    if (err) {
        ...
    }

to

    if (!foo(..., &amp;err)) {
        ...
    }

for QemuOpts functions that now return true / false on success /
error.  Coccinelle script:

    @@
    identifier fun = {
        opts_do_parse, parse_option_bool, parse_option_number,
        parse_option_size, qemu_opt_parse, qemu_opt_rename, qemu_opt_set,
        qemu_opt_set_bool, qemu_opt_set_number, qemu_opts_absorb_qdict,
        qemu_opts_do_parse, qemu_opts_from_qdict_entry, qemu_opts_set,
        qemu_opts_validate
    };
    expression list args, args2;
    typedef Error;
    Error *err;
    @@
    -    fun(args, &amp;err, args2);
    -    if (err)
    +    if (!fun(args, &amp;err, args2))
         {
             ...
         }

A few line breaks tidied up manually.

Signed-off-by: Markus Armbruster &lt;armbru@redhat.com&gt;
Reviewed-by: Eric Blake &lt;eblake@redhat.com&gt;
Reviewed-by: Vladimir Sementsov-Ogievskiy &lt;vsementsov@virtuozzo.com&gt;
Message-Id: &lt;20200707160613.848843-15-armbru@redhat.com&gt;
[Conflict with commit 0b6786a9c1 "block/amend: refactor qcow2 amend
options" resolved by rerunning Coccinelle on master's version]
</content>
</entry>
<entry>
<title>block: Drop unused .bdrv_has_zero_init_truncate</title>
<updated>2020-05-08T11:26:35+00:00</updated>
<author>
<name>Eric Blake</name>
</author>
<published>2020-04-28T20:29:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.openslx.org/bwlp/qemu.git/commit/?id=47e0b38a13935cb666f88964c3096654092f42d6'/>
<id>urn:sha1:47e0b38a13935cb666f88964c3096654092f42d6</id>
<content type='text'>
Now that there are no clients of bdrv_has_zero_init_truncate, none of
the drivers need to worry about providing it.

What's more, this eliminates a source of some confusion: a literal
reading of the documentation as written in ceaca56f and implemented in
commit 1dcaf527 claims that a driver which returns 0 for
bdrv_has_zero_init_truncate() must not return 1 for
bdrv_has_zero_init(); this condition was violated for parallels, qcow,
and sometimes for vdi, although in practice it did not matter since
those drivers also lacked .bdrv_co_truncate.

Signed-off-by: Eric Blake &lt;eblake@redhat.com&gt;
Message-Id: &lt;20200428202905.770727-10-eblake@redhat.com&gt;
Acked-by: Richard W.M. Jones &lt;rjones@redhat.com&gt;
Signed-off-by: Kevin Wolf &lt;kwolf@redhat.com&gt;
</content>
</entry>
</feed>
