[lvm-devel] false error messages when merging
Mikulas Patocka
mpatocka at redhat.com
Tue Feb 9 23:59:45 UTC 2010
On Mon, 8 Feb 2010, Mike Snitzer wrote:
> 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);
>
OK.
Reviewed-by: Mikulas Patocka <mpatocka at redhat.com>
Mikulas
More information about the lvm-devel
mailing list