Re: [PATCH v2 5/7][next] printk: ringbuffer: add finalization/extension support

From: John Ogness
Date: Wed Aug 26 2020 - 04:39:08 EST


On 2020-08-24, John Ogness <john.ogness@xxxxxxxxxxxxx> wrote:
> @@ -1157,6 +1431,14 @@ bool prb_reserve(struct prb_reserved_entry *e, struct printk_ringbuffer *rb,
> goto fail;
> }
>
> + /*
> + * New data is about to be reserved. Once that happens, previous
> + * descriptors are no longer able to be extended. Finalize the
> + * previous descriptor now so that it can be made available to
> + * readers (when committed).
> + */
> + desc_finalize(desc_ring, DESC_ID(id - 1));
> +
> d = to_desc(desc_ring, id);
>
> /*

Apparently this is not enough to guarantee that past descriptors are
finalized. I am able to reproduce a scenario where the finalization of a
certain descriptor never happens. That leaves the descriptor permanently
in the reserved queried state, which prevents any new records from being
created. I am investigating.

John Ogness