On Thu, Feb 11 2021 at 9:22am -0500, Nikos Tsironis <ntsironis@xxxxxxxxxxx> wrote: > Metadata resize shouldn't happen in the ctr. The ctr loads a temporary > (inactive) table that will only become active upon resume. That is why > resize should always be done in terms of resume. Otherwise a load (ctr) > whose inactive table never becomes active will incorrectly resize the > metadata. > > Also, perform the resize directly in preresume, instead of using the > worker to do it. > > The worker might run other metadata operations, e.g., it could start > digestion, before resizing the metadata. These operations will end up > using the old size. > > This could lead to errors, like: > > device-mapper: era: metadata_digest_transcribe_writeset: dm_array_set_value failed > device-mapper: era: process_old_eras: digest step failed, stopping digestion > > The reason of the above error is that the worker started the digestion > of the archived writeset using the old, larger size. > > As a result, metadata_digest_transcribe_writeset tried to write beyond > the end of the era array. > > Fixes: eec40579d84873 ("dm: add era target") > Cc: stable@xxxxxxxxxxxxxxx # v3.15+ > Signed-off-by: Nikos Tsironis <ntsironis@xxxxxxxxxxx> > --- > drivers/md/dm-era-target.c | 21 ++++++++++----------- > 1 file changed, 10 insertions(+), 11 deletions(-) Thanks, I replaced the patch I created (that used a worker to resize from preresume) with this. Now staged for 5.12. Mike -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel