[systemd-devel] [PATCH] device: Add stub serialization methods to enable job serialization.

Michael Marineau michael.marineau at coreos.com
Thu May 15 19:13:50 PDT 2014


On Thu, May 15, 2014 at 4:24 PM, Lennart Poettering
<lennart at poettering.net> wrote:
> On Tue, 06.05.14 19:08, Michael Marineau (michael.marineau at coreos.com) wrote:
>
>> If a unit type doesn't provide its own serialization methods then
>> none of the generic serialization will happen either. For devices this
>> means jobs used for waiting on device dependencies are dropped during
>> reloads, breaking dependency state that was relying on those jobs.
>
> Oh yuck! This is quite some bug, which I figure is the source of quite a
> few bug reports we had where people were reloading the daemon during the
> boot process...
>
> I commited a different fix now which avoids installing stub callbacks,
> and simply fixes to the core always serialize the job regardless if the
> unit has anything else to serialize...
>
> Please test!

Looks good to me, thanks!

>
>> ---
>>  src/core/device.c | 22 ++++++++++++++++++++++
>>  1 file changed, 22 insertions(+)
>>
>> diff --git a/src/core/device.c b/src/core/device.c
>> index 444286e..07c0860 100644
>> --- a/src/core/device.c
>> +++ b/src/core/device.c
>> @@ -130,6 +130,25 @@ static void device_dump(Unit *u, FILE *f, const char *prefix) {
>>                  prefix, strna(d->sysfs));
>>  }
>>
>> +static int device_serialize(Unit *u, FILE *f, FDSet *fds) {
>> +        assert(u);
>> +        assert(f);
>> +        assert(fds);
>> +
>> +        return 0;
>> +}
>> +
>> +static int device_deserialize_item(Unit *u, const char *key, const char *value, FDSet *fds) {
>> +        assert(u);
>> +        assert(key);
>> +        assert(value);
>> +        assert(fds);
>> +
>> +        log_debug("Unknown serialization key '%s'", key);
>> +
>> +        return 0;
>> +}
>> +
>>  _pure_ static UnitActiveState device_active_state(Unit *u) {
>>          assert(u);
>>
>> @@ -693,6 +712,9 @@ const UnitVTable device_vtable = {
>>
>>          .dump = device_dump,
>>
>> +        .serialize = device_serialize,
>> +        .deserialize_item = device_deserialize_item,
>> +
>>          .active_state = device_active_state,
>>          .sub_state_to_string = device_sub_state_to_string,
>>
>
>
> Lennart
>
> --
> Lennart Poettering, Red Hat


More information about the systemd-devel mailing list