[lvm-devel] false error messages when merging
Mike Snitzer
snitzer at redhat.com
Mon Feb 8 22:43:14 UTC 2010
On Mon, Feb 08 2010 at 5:03pm -0500,
Mike Snitzer <snitzer at redhat.com> wrote:
> On Mon, Feb 08 2010 at 4:29pm -0500,
> Mike Snitzer <snitzer at redhat.com> wrote:
>
> > On Mon, Feb 08 2010 at 3:49pm -0500,
> > Mikulas Patocka <mpatocka at redhat.com> wrote:
> >
> > > Hi
> > >
> > > LVM2.2.02.60 writes false error messages about tree node not found when
> > > activating delayed merging. But it starts merging anyway.
> > >
> > > [slunicko:~]# lvs
> > > LV VG Attr LSize Origin Snap% Move Log Copy% Convert
> > > m vg1 -wi-a- 16.00m
> > > [slunicko:~]# lvcreate -s -n s -c 4k -L 24M vg1/m
> > > Logical volume "s" created
> > > [slunicko:~]# mount -t ext2 /dev/vg1/s /mnt/test
> > > [slunicko:~]# lvconvert --merge /dev/vg1/s
> > > Can't merge when snapshot is open
> > > Merging of snapshot s will start next activation.
> > > [slunicko:~]# umount /mnt/test
> > > [slunicko:~]# lvchange -an vg1/m
> > > [slunicko:~]# lvchange -ay vg1/m
> > > failed to find tree node for m
> > > failed to find tree node for s
> > > [slunicko:~]#
> > > ... the merging starts on backgound fine
> >
> > I can reproduce your "failed to find tree node for" scenario using
> > the steps you provided.
> ...
> > All this being said, I'm not sure what's going on with your scenario but
> > I'll get to the bottom of it.
>
> So this "failed to find tree node for" message was introduced with my
> optimization for not issuing more ioctls than is needed for checking
> open_count: http://sources.redhat.com/git/?p=lvm2.git;a=commit;h=1199b48c
>
> I'll dig deeper to see what I can do about the noise.
The following patch eliminates the false error entirely. I'm leaning
toward removing the message (rather than switch to log_debug()) because
it is valid (and expected) to not have a node in the tree (for both the
merging origin and the merging snapshot) in the case of when we're
activating a merging origin.
diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c
index 6023574..6fbc392 100644
--- a/lib/activate/dev_manager.c
+++ b/lib/activate/dev_manager.c
@@ -264,10 +264,9 @@ static const struct dm_info *_cached_info(struct dm_pool *mem,
return NULL;
}
- if (!(dnode = dm_tree_find_node_by_uuid(dtree, dlid))) {
- log_error("failed to find tree node for %s", lv->name);
+ /* An activating merging origin won't have a node in the tree yet */
+ if (!(dnode = dm_tree_find_node_by_uuid(dtree, dlid)))
return NULL;
- }
if (!(dinfo = dm_tree_node_get_info(dnode))) {
log_error("failed to get info from tree node for %s", lv->name);
More information about the lvm-devel
mailing list