All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
To: lvm-devel@redhat.com
Subject: [PATCH 2/11] Add upward link from underlying LV to stacked seg
Date: Tue, 15 Jan 2008 14:54:40 -0500	[thread overview]
Message-ID: <478D0F80.6080207@ce.jp.nec.com> (raw)
In-Reply-To: <20080115165624.GO8075@agk.fab.redhat.com>

Alasdair G Kergon wrote:
> On Tue, Jan 15, 2008 at 11:39:13AM -0500, Jun'ichi Nomura wrote:
>>> +struct lv_segment *seg_using_lv(struct logical_volume *lv)
> 
>> Returning NULL is valid if the list is empty.
> 
> What I mean is: why would the list be empty if that function
> is being called?  If the list was known to be empty, you
> wouldn't be in a code path that called the function, surely?
> IOW it's a coding error if 'return NULL' is hit.

Ah, I understand now.
If it returns NULL, there should be internal error in LVM2 code.

> Or does the function have a secondary use to find out whether
> the LV is at the top of the stack?
> Is it better split into two?  First an is_ function to find out
> if the segment is the type expected with a single segment; then the function to
> give details of the one-and-only segment?

I don't think we need to split it.
If a code calls seg_using_lv(lv), it knows the lv should have
one-and-only user (upper-level) segment.
If the lv doesn't, it's a coding error.

Maybe it's handy to have a wrapper for !list_empty(&lv->segs_using_this_lv)
to check if the LV is top-level or not.
  int is_top_of_the_stack(lv) {
    return list_empty(lv->segs_using_this_lv);
  }

>>> Where is this new list validated?
>> Some validation were included in the tests using find_mirror_seg().
>> I'll add generic ones.
>  
> I mean the validation in the vg_write() path must have independent
> validity checks so we never write out the metadata if there's
> an internal inconsistency in it.  IOW it must be done somewhere under
> vg_validate().  IOW the pointers must be validated in both directions:
> all existing list elements are correct (and not duplicated), and no
> elements are missing from the list.

I'll add that type of validation check.

Duplication is currently allowed since 2 areas in a segment
can be on the same LV.

-- 
Jun'ichi Nomura, NEC Corporation of America



  reply	other threads:[~2008-01-15 19:54 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-11 23:22 [PATCH 0/11] updates to stacking and lvconvert Jun'ichi Nomura
2008-01-11 23:43 ` [PATCH 1/11] lvconvert takes '--wait' instead of '--background' Jun'ichi Nomura
2008-01-12  1:48   ` [PATCH 14/14] lvconvert help message wasn't fixed to '--wait' Jun'ichi Nomura
2008-01-14 14:29   ` [PATCH 1/11] lvconvert takes '--wait' instead of '--background' Alasdair G Kergon
2008-01-14 17:03     ` Jun'ichi Nomura
2008-01-11 23:44 ` [PATCH 2/11] Add upward link from underlying LV to stacked seg Jun'ichi Nomura
2008-01-12  1:48   ` [PATCH 12/14] Do not make extra call to lv_add_user_seg() Jun'ichi Nomura
2008-01-14 22:39   ` [PATCH 2/11] Add upward link from underlying LV to stacked seg Alasdair G Kergon
2008-01-14 22:53   ` Alasdair G Kergon
2008-01-15 16:39     ` Jun'ichi Nomura
2008-01-15 16:56       ` Alasdair G Kergon
2008-01-15 19:54         ` Jun'ichi Nomura [this message]
2008-01-15 22:42           ` Jun'ichi Nomura
2008-01-11 23:45 ` [PATCH 3/11] Move mirror log initialization functions Jun'ichi Nomura
2008-01-11 23:45 ` [PATCH 4/11] Move _find_tmp_mirror() Jun'ichi Nomura
2008-01-11 23:46 ` [PATCH 5/11] Move removable_pvs checking Jun'ichi Nomura
2008-01-11 23:46 ` [PATCH 6/11] Export find_tmp_mirror() Jun'ichi Nomura
2008-01-11 23:47 ` [PATCH 7/11] lvconvert adds/removes mirror log to/from the original LV Jun'ichi Nomura
2008-01-12  1:48   ` [PATCH 13/14] lvconvert should check first_seg(original_lv) Jun'ichi Nomura
2008-01-16 20:46     ` Jun'ichi Nomura
2008-01-11 23:48 ` [PATCH 8/11] Allow "mirror" segment with only 1 area Jun'ichi Nomura
2008-01-11 23:48 ` [PATCH 9/11] _init_mirror_log() to cope with activation status Jun'ichi Nomura
2008-01-11 23:49 ` [PATCH 10/11] Fix _remove_mirror_images() to cope with stacked mirror Jun'ichi Nomura
2008-01-11 23:49 ` [PATCH 11/11] Fix _remove_mirror_images() to skip AREA_LV Jun'ichi Nomura
2008-01-11 23:56 ` [Test case 1/2] Basic mirrored LV testing Jun'ichi Nomura
2008-01-11 23:56 ` [Test case 2/2] lvconvert mirror-addition testing Jun'ichi Nomura
2008-01-15 23:12   ` Jun'ichi Nomura

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=478D0F80.6080207@ce.jp.nec.com \
    --to=j-nomura@ce.jp.nec.com \
    --cc=lvm-devel@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.