[lvm-devel] Re: [PATCH]: unify logical volume structure initialization

Mikulas Patocka mpatocka at redhat.com
Mon Sep 28 17:59:17 UTC 2009



On Mon, 28 Sep 2009, Alasdair G Kergon wrote:

> >  		} else {
> >  			lv->minor = -1;
> >  		}
> > -		lv->snapshot = NULL;
> > -		dm_list_init(&lv->snapshot_segs);
> > -		dm_list_init(&lv->segments);
> > -		dm_list_init(&lv->tags);
> > +		lv_init(lv);
> 
> Already initialised AFAICT.

No, it isn't ... if you look up at this function (import_pool_lvs), 
there's: lv = dm_pool_zalloc(mem, sizeof(*lv)

> > -	lv->snapshot = NULL;
> > -	dm_list_init(&lv->snapshot_segs);
> > -	dm_list_init(&lv->segments);
> > -	dm_list_init(&lv->tags);
> > -	dm_list_init(&lv->segs_using_this_lv);
> > +	lv_init(lv);
>   
> I prefer including these with the allocation in an alloc_lv().

If you want to make a single function that allocates lv and initializes 
it, do it (and don't use dm_pool_zalloc then).

The requirement is this: there must be a central point where the lv 
entries are initialized. So that if someone adds new entries, he writes 
the initialization only in one place. If you want to unify allocation and 
initialization, it is possible, just do it (but it requires somehow bigger 
code change than this patch).

Mikulas

> Alasdair
> 




More information about the lvm-devel mailing list