Reviewed-by: Pavel Tikhomirov <[email protected]> On 6/4/26 11:25, Konstantin Khorenko wrote: > The read-only guard added to ploop_ctr() also accidentally negated the > existing nr_deltas clause: > > - if (ploop->nr_deltas > 0) > + if (!ploop_is_ro(ploop) && !(ploop->nr_deltas > 0)) > ploop_should_prealloc(ploop); > > At this point ploop->nr_deltas is always >= 1 (ploop_add_deltas_stack() > just above returns -EINVAL for argc < 1 and otherwise sets nr_deltas = > argc, and ploop_ctr() rejects argc <= 0 earlier), so "nr_deltas > 0" is > always true and "!(nr_deltas > 0)" is always false. The whole condition > is therefore always false and ploop_should_prealloc() is never called - > for writable devices too, contrary to the commit's intent ("skip prealloc > for read-only, keep it for RW"). > > Drop the spurious inner negation so prealloc is enabled for RW devices > with deltas and skipped only for read-only ones. (Runtime allocation-path > prealloc was unaffected; this only restores eager construction-time > preallocation.) > > Fixes: f268061806e5 ("dm-ploop: dont preallocate clusters for read only > table") > https://virtuozzo.atlassian.net/browse/VSTOR-132310 > Signed-off-by: Konstantin Khorenko <[email protected]> > --- > drivers/md/dm-ploop-target.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/md/dm-ploop-target.c b/drivers/md/dm-ploop-target.c > index af0925712194..0de0e84d440d 100644 > --- a/drivers/md/dm-ploop-target.c > +++ b/drivers/md/dm-ploop-target.c > @@ -635,7 +635,7 @@ static int ploop_ctr(struct dm_target *ti, unsigned int > argc, char **argv) > ti->num_discard_bios = 1; > ti->discards_supported = true; > > - if (!ploop_is_ro(ploop) && !(ploop->nr_deltas > 0)) > + if (!ploop_is_ro(ploop) && ploop->nr_deltas > 0) > ploop_should_prealloc(ploop); > > return 0;
-- Best regards, Pavel Tikhomirov Senior Software Developer, Virtuozzo. _______________________________________________ Devel mailing list [email protected] https://lists.openvz.org/mailman/listinfo/devel
