archive mirror
 help / color / mirror / Atom feed
From: "" <>
To: Zdenek Kabelac <>,
	LVM general discussion and development <>
Subject: Re: [linux-lvm] [PATCH 1/2] metadata: check pv->dev null when setting PARTIAL_LV
Date: Fri, 11 Sep 2020 21:59:24 +0800	[thread overview]
Message-ID: <> (raw)
In-Reply-To: <>

On 9/11/20 8:17 PM, Zdenek Kabelac wrote:
> Dne 10. 09. 20 v 17:37 Zhao Heming napsal(a):
>> The code in vg_read():
>> ```
>> if (missing_pv_dev || missing_pv_flag)
>> ���� vg_mark_partial_lvs(vg, 1);
>> ```
>> the missing_pv_dev not zero when pv->dev is null.
>> the missing_pv_flag not zero when pv->dev is not null but status MISSING_PV is true.
>> any above condition will trigger code to set PARTIAL_LV.
>> So in _lv_mark_if_partial_single(), there should add� '|| (!pv->dev)' case.
>> Below comment by David:
>> And the MISSING_PV flag was not used consistently, so there were cases
>> where pv->dev was null but the flag was not set. So to check for null dev
>> until it's more confidence in how that flag is used.
> Hi
> While the .gitignore patch is no problem, this one is somewhat puzzling.
> Do you have an reproducible test case where you can exercise this code path?
> It seems more logical if we move flag correctly marked for PV
> so is_missing_pv() works - as if it does not - we would have to spread test for� pv->dev!=NULL� check everywhere, which is not really wanted.
> So what we need to check here is all assings of pv->dev needs to handle
> MISSING_PV flag properly.
> Zdenek

I don't have test case. 
There are some code or comments about not consistent issue.
1> in _check_devs_used_correspond_with_vg()
         * FIXME: It's not clear if the meaning
         * of "missing" should always include the
         * !pv->dev case, or if "missing" is the
         * more narrow case where VG metadata has
         * been written with the MISSING flag.

2> in vg_read()
     * The PV's device may be present while the PV for the device has the
     * MISSING_PV flag set in the metadata.  This happened because the VG
     * was written while this dev was missing, so the MISSING flag was
     * written in the metadata for PV.  Now the device has reappeared.
     * However, the VG has changed since the device was last present, and
     * if the device has outdated data it may not be safe to just start
     * using it again.

3> in _check_pv_ext(), after calling is_missing_pv(), the function
still access (!pvl->pv->dev).

    dm_list_iterate_items(pvl, &vg->pvs) {
        if (is_missing_pv(pvl->pv))

        /* is_missing_pv doesn't catch NULL dev */
        if (!pvl->pv->dev)

  reply	other threads:[~2020-09-11 13:59 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-10 15:37 Zhao Heming
2020-09-11 12:17 ` Zdenek Kabelac
2020-09-11 13:59   ` heming.zhao [this message]
2020-09-11 14:32     ` Zdenek Kabelac

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:

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

  git send-email \ \ \ \ \ \
    --subject='Re: [linux-lvm] [PATCH 1/2] metadata: check pv->dev null when setting PARTIAL_LV' \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).