<div dir="ltr">Thanks Ben. So should I push the code to the upstream and get an approval?<div><br></div><div><br></div><div>Regards,</div><div>Tejaswini</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jun 30, 2015 at 12:50 AM, Benjamin Marzinski <span dir="ltr"><<a href="mailto:bmarzins@redhat.com" target="_blank">bmarzins@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Fri, Jun 26, 2015 at 12:21:48PM +0530, Tejaswini Poluri wrote:<br>
>    Yes I agree that having the same code in both cli_add_map() and ev_add_map<br>
>    is not necessary. Hence I would suggest removing get_refwwid() code from<br>
>    ev_add_map as it is not being used by anyone.<br>
><br>
>    ev_add_map(param, NULL, vecs) would create the multipath device by using<br>
>    the get_refwwid() code and but all the functions above it like<br>
>    (dm_get_minor, dm_get_major and dm_mapname) would fail and it wouldn't<br>
>    enter any of the other code in ev_add_map like<br>
>    1.dm_map_present,<br>
>    2.add_map_without_path<br>
>    3. sync_map_state<br>
>    which are responsible for registering the map and displaying it.<br>
><br>
>    So, I think moving the below code from ev_add_map to cli_add_map should be<br>
>    a good idea right.<br>
><br>
>    r = get_refwwid(dev, DEV_DEVMAP, vecs->pathvec,&refwwid);<br>
>    ><br>
>    >            if (refwwid) {<br>
>    >                    r = coalesce_paths(vecs, NULL, refwwid,0);<br>
>    >                    dm_lib_release();<br>
>    >            }<br>
>    What do u think?<br>
<br>
</span>I agree. We aren't using the code in ev_add_map, so it's presence there<br>
is simply confusing.<br>
<br>
-Ben<br>
<span class=""><br>
><br>
>    Regards,<br>
>    Tejaswini<br>
>    On Fri, Jun 26, 2015 at 4:32 AM, Benjamin Marzinski<br>
</span><div><div class="h5">>    <[1]<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a>> wrote:<br>
><br>
>      On Tue, Jun 23, 2015 at 03:48:26PM +0530, Tejaswini Poluri wrote:<br>
>      >    Hi Ben,<br>
>      ><br>
>      >    This is regarding the add map issue I have been discussing. Posting<br>
>      the<br>
>      >    issue again to remind.<br>
>      ><br>
>      >    Case 1 : remove and add map.<br>
>      >    root@x86-generic-64:~# multipathd -k'show maps'<br>
>      >    name    sysfs uuid<br>
>      >    dmpath0 dm-0  1IET_00010001<br>
>      >    root@x86-generic-64:~# multipathd -k'remove map dmpath0'<br>
>      >    ok<br>
>      >    root@x86-generic-64:~# multipathd -k'show maps'<br>
>      >    root@x86-generic-64:~# multipathd -k'add map dmpath0'<br>
>      >    ok<br>
>      >    root@x86-generic-64:~# multipathd -k'show maps'<br>
>      >    root@x86-generic-64:~#<br>
>      >    Once a map is removed, we are able to add it only using #multipath <br>
>      >    command and not using multipathd tools.<br>
>      ><br>
>      >    I have fixed the problem with two approaches. I would like you to<br>
>      review<br>
>      >    the same.<br>
>      >    Patch1 : By making 'remove map dmpath0' to remove only the map and<br>
>      not the<br>
>      >    device. I have added extra functions discard_map and dm_remove_map<br>
>      so as<br>
>      >    to not interfere with the existing code.<br>
>      ><br>
>      >    Patch 2: The approach you have suggested.By getting wwid from the<br>
>      mapname<br>
>      >    and doing coalesce_paths. I have just moved the following code in<br>
>      >    ev_add_map to cli_add_map.<br>
><br>
>      This is the general idea we'd like to go with.  However, looking at the<br>
>      latest upstream code, I don't think you should pull code in from<br>
>      ev_add_map() to cli_add_map() like your patch does. cli_add_map()<br>
>      already calls ev_add_map(), and ev_add_map() is certainly able to add<br>
>      the map if it doesn't already exist.<br>
><br>
>      You would just need to call it with<br>
><br>
>      ev_add_map(param, NULL, vecs);<br>
><br>
>      and ev_add_map() will happily create you a new multipath device.  All<br>
>      you need to do is make sure that all the functions that ev_add_map()<br>
>      calls with alias can accept a NULL value there.<br>
><br>
>      This might not be the best way to go about this, however.  It turns out<br>
>      that right now, even though ev_add_map() technically has the ability to<br>
>      create new maps, nothing currently uses it, and it really doesn't make<br>
>      sense for it to be there. Instead of just copying that code, you could<br>
>      pull the map creation code out of ev_add_map() and add it to<br>
>      cli_add_map(), for those situations where the requested device doesn't<br>
>      already exist.<br>
><br>
>      But having the code in both cli_add_map() and ev_add_map() when one<br>
>      already calls the other doesn't seem necessary.<br>
><br>
>      -Ben<br>
><br>
>      ><br>
>      >    r = get_refwwid(dev, DEV_DEVMAP, vecs->pathvec,&refwwid);<br>
>      ><br>
>      >            if (refwwid) {<br>
>      >                    r = coalesce_paths(vecs, NULL, refwwid,0);<br>
>      >                    dm_lib_release();<br>
>      >            }<br>
>      ><br>
>      >    changed dev to param.<br>
>      ><br>
>      >    I have tested the same in all 3 versions -0.4.8, 0.4.9 and 0.5.0.<br>
>      It would<br>
>      >    be great if you can review the same so that it doesn't cause any<br>
>      extra<br>
>      >    side effects.<br>
>      >    I guess Patch2 is the way u have suggested me in the previous mail.<br>
>      Please<br>
>      >    review it and share your views.<br>
>      >    Regards,<br>
>      >    Tejaswini<br>
>      >    On Fri, Jun 12, 2015 at 2:21 AM, Benjamin Marzinski<br>
</div></div><div><div class="h5">>      >    <[1][2]<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a>> wrote:<br>
>      ><br>
>      >      On Wed, Jun 10, 2015 at 11:46:51AM +0530, Tejaswini Poluri wrote:<br>
>      >      >       <br>
>      >      >    >    We are testing multipathd tools with all the possible<br>
>      options<br>
>      >      and the<br>
>      >      >    >    following fails.<br>
>      >      >    ><br>
>      >      >    >    Case 1 : remove and add map.<br>
>      >      >    >    root@x86-generic-64:~# multipathd -k'show maps'<br>
>      >      >    >    name    sysfs uuid<br>
>      >      >    >    dmpath0 dm-0  1IET_00010001<br>
>      >      >    >    root@x86-generic-64:~# multipathd -k'remove map<br>
>      dmpath0'<br>
>      >      >    >    ok<br>
>      >      >    >    root@x86-generic-64:~# multipathd -k'show maps'<br>
>      >      >    >    root@x86-generic-64:~# multipathd -k'add map dmpath0'<br>
>      >      >    >    ok<br>
>      >      >    >    root@x86-generic-64:~# multipathd -k'show maps'<br>
>      >      >    >    root@x86-generic-64:~#<br>
>      >      >    >    Once a map is removed, we are able to add it only using<br>
>      >      #multipath <br>
>      >      >    >    command and not using multipathd tools.<br>
>      >      ><br>
>      >      >    It is working the way it was designed, but possibly it would<br>
>      make<br>
>      >      sense<br>
>      >      >    to change the design.<br>
>      >      ><br>
>      >      >    You have mentioned that it would make sense to change the<br>
>      design to<br>
>      >      add<br>
>      >      >    map. Are there plans to change the design ?<br>
>      >      >    I am trying to understand the code flow to change the<br>
>      design. Can<br>
>      >      you<br>
>      >      >    guide me if we should stop removing the device from in the<br>
>      remove<br>
>      >      map code<br>
>      >      >    flow or start adding the device and the map in the add map<br>
>      code<br>
>      >      flow.<br>
>      >      ><br>
>      >      >     have tried to understand the remove map code flow of<br>
>      multipathd in<br>
>      >      0.4.8<br>
>      >      >    code.<br>
>      ><br>
>      >      I think that we want multipath to actually remove the map<br>
>      (instead of<br>
>      >      just not monitoring it) when you call "remove map <map>". We just<br>
>      want<br>
>      >      "add map <map>" to try to create the map if it doesn't exist.  To<br>
>      do<br>
>      >      that, you would need to first firgure out what WWID is associated<br>
>      with<br>
>      >      <map>. Presumably, <map> could either be an alias, wwid, or even<br>
>      the<br>
>      >      name of a path in the map. Once you found the map, you would have<br>
>      to<br>
>      >      call the code to create the map.<br>
>      ><br>
>      >      Also, to answer your IRC question, no the 0.4.8 code is not still<br>
>      being<br>
>      >      developed upstream.  All upstream patches only go against the<br>
>      current<br>
>      >      head. There are no other upstream branches.<br>
>      ><br>
>      >      -Ben<br>
>      >      ><br>
>      >      >    ev_remove_map (char * devname, struct vectors * vecs)<br>
>      >      ><br>
>      >      >              flush_map(mpp, vecs);<br>
>      >      ><br>
>      >      >                           dm_flush_map(mpp->alias,<br>
>      DEFAULT_TARGET);<br>
>      >      ><br>
>      >      >                                     if<br>
>      (!dm_map_present(mapname))<br>
>      >      ><br>
>      >      >                                            return 0;<br>
>      >      ><br>
>      >      >           if (dm_type(mapname, type) <= 0)<br>
>      >      ><br>
>      >      >                   return 1;<br>
>      >      ><br>
>      >      >           if (dm_remove_partmaps(mapname))<br>
>      >      ><br>
>      >      >                   return 1;<br>
>      >      ><br>
>      >      >           if (dm_get_opencount(mapname)) {<br>
>      >      ><br>
>      >      >                   condlog(2, "%s: map in use", mapname);<br>
>      >      ><br>
>      >      >                   return 1;<br>
>      >      ><br>
>      >      >           }      <br>
>      >      ><br>
>      >      >           r = dm_simplecmd(DM_DEVICE_REMOVE, mapname);<br>
>      >      ><br>
>      >      >           if (r) {<br>
>      >      ><br>
>      >      >                   condlog(4, "multipath map %s removed",<br>
>      mapname);<br>
>      >      ><br>
>      >      >                                                  return 0;<br>
>      >      ><br>
>      >      >                                           }<br>
>      >      ><br>
>      >      >     <br>
>      >      ><br>
>      >      >                            orphan_paths(vecs->pathvec, mpp);<br>
>      >      ><br>
>      >      >                            remove_map(mpp, vecs,<br>
>      stop_waiter_thread,<br>
>      >      1);<br>
>      >      ><br>
>      >      >    Is removing this below line, the right step to stop removing<br>
>      the<br>
>      >      device ?<br>
>      >      >    r = dm_simplecmd(DM_DEVICE_REMOVE, mapname);<br>
>      >      ><br>
>      >      >    Regards,<br>
>      >      ><br>
>      >      >    Tejaswini<br>
>      >      ><br>
>      >      >    On Mon, Jun 8, 2015 at 11:15 AM, Tejaswini Poluri<br>
</div></div><span class="">>      >      >    <[1][2][3]<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a>> wrote:<br>
>      >      ><br>
>      >      >      Thanks a lot Ben for the quick and detailed reply. I have<br>
>      been<br>
>      >      >      struggling to understand and conclude the issues with<br>
>      multipath<br>
>      >      as I am<br>
>      >      >      the only one working from my team. Your inputs help me a<br>
>      lot.<br>
>      >      Thanks<br>
>      >      >      again.<br>
>      >      >      Regards,<br>
>      >      >      Tejaswini<br>
>      >      >      On Sat, Jun 6, 2015 at 3:36 AM, Benjamin Marzinski<br>
</span><div><div class="h5">>      >      >      <[2][3][4]<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a>> wrote:<br>
>      >      ><br>
>      >      >        On Fri, Jun 05, 2015 at 02:31:20PM +0530, Tejaswini<br>
>      Poluri<br>
>      >      wrote:<br>
>      >      >        >    Hii Ben,<br>
>      >      >        ><br>
>      >      >        >    We are testing multipathd tools with all the<br>
>      possible<br>
>      >      options and<br>
>      >      >        the<br>
>      >      >        >    following fails.<br>
>      >      >        ><br>
>      >      >        >    Case 1 : remove and add map.<br>
>      >      >        >    root@x86-generic-64:~# multipathd -k'show maps'<br>
>      >      >        >    name    sysfs uuid<br>
>      >      >        >    dmpath0 dm-0  1IET_00010001<br>
>      >      >        >    root@x86-generic-64:~# multipathd -k'remove map<br>
>      dmpath0'<br>
>      >      >        >    ok<br>
>      >      >        >    root@x86-generic-64:~# multipathd -k'show maps'<br>
>      >      >        >    root@x86-generic-64:~# multipathd -k'add map<br>
>      dmpath0'<br>
>      >      >        >    ok<br>
>      >      >        >    root@x86-generic-64:~# multipathd -k'show maps'<br>
>      >      >        >    root@x86-generic-64:~#<br>
>      >      >        >    Once a map is removed, we are able to add it only<br>
>      using<br>
>      >      >        #multipath <br>
>      >      >        >    command and not using multipathd tools.<br>
>      >      ><br>
>      >      >        It is working the way it was designed, but possibly it<br>
>      would<br>
>      >      make<br>
>      >      >        sense<br>
>      >      >        to change the design.  The "remove map" command, not<br>
>      only stops<br>
>      >      >        multipathd from monitoring the multipath device, but it<br>
>      removes<br>
>      >      it<br>
>      >      >        from<br>
>      >      >        the system as well.  The "add map" command makes<br>
>      multipath<br>
>      >      monitor an<br>
>      >      >        already existing multipath device that in wasn't<br>
>      previously<br>
>      >      >        monitoring.<br>
>      >      >        These commands do this for historical reasons. <br>
>      multipathd<br>
>      >      wasn't<br>
>      >      >        originally in charge of creating multipath devices,<br>
>      multipath<br>
>      >      was. <br>
>      >      >        Once<br>
>      >      >        it had created the device, it ran<br>
>      >      ><br>
>      >      >        multipathd -k"add map <MAP>"<br>
>      >      ><br>
>      >      >        to make multipathd start monitoring it.  However things<br>
>      haven't<br>
>      >      worked<br>
>      >      >        this way since RHEL4, so possibly "add map" should<br>
>      actually<br>
>      >      create the<br>
>      >      >        device if it doesn't currently exist.<br>
>      >      >        >    Case 2 : Active paths  test case<br>
>      >      >        >    # while true ; do sleep 3 ; multipathd -k'remove<br>
>      path sdb'<br>
>      >      ;<br>
>      >      >        multipathd<br>
>      >      >        >    -k'add path sdb' ; multipathd -k'show maps status'<br>
>      ; done<br>
>      >      >        >    ok<br>
>      >      >        >    ok<br>
>      >      >        >    name failback queueing paths dm-st<br>
>      >      >        >    dmpath0 - - 1 active // It should be 2.<br>
>      >      ><br>
>      >      >        This is simply a timing issue.  What you are seeing it<br>
>      the<br>
>      >      number of<br>
>      >      >        active paths.  These are paths that the kernel can use.<br>
>      The<br>
>      >      "add path"<br>
>      >      >        command doesn't update the kernel state.  This happens<br>
>      later in<br>
>      >      >        response<br>
>      >      >        to the kernel reloading the device table. So, in a<br>
>      second or<br>
>      >      two, this<br>
>      >      >        will say 2, as expected.<br>
>      >      ><br>
>      >      >        >    We would like to know if the test cases are valid<br>
>      and if<br>
>      >      these<br>
>      >      >        are bugs or<br>
>      >      >        >    any design issues.<br>
>      >      >        ><br>
>      >      >        >    Case 3 : Fail path and reinstate path<br>
>      >      >        >    root@x86-generic-64:~# multipathd -k"fail path<br>
>      sdc";<br>
>      >      multipathd<br>
>      >      >        >    -k'reinstate path sdc'; multipathd -k"show paths";<br>
>      >      >        >    >    [ 3962.708523] device-mapper: multipath:<br>
>      Failing path<br>
>      >      8:32.<br>
>      >      >        >    >    ok<br>
>      >      >        >    >    ok<br>
>      >      >        >    >    hcil    dev dev_t pri dm_st   chk_st  <br>
>      next_check<br>
>      >      >        >    >    4:0:0:1 sdc 8:32  1   [active][faulty]<br>
>      ..........<br>
>      >      1/20  <br>
>      >      >        <==CHECK<br>
>      >      >        >    >    5:0:0:1 sdd 8:48  1   [active][ready] <br>
>      XX........<br>
>      >      4/20<br>
>      >      >        >    sdc path becomes [active][ready] only after the<br>
>      polling<br>
>      >      interval<br>
>      >      >        but not<br>
>      >      >        >    immediately after the reinstate path command.<br>
>      >      >        >    You have answered that this is a design issue. But<br>
>      we have<br>
>      >      heard<br>
>      >      >        from our<br>
>      >      >        >    test team that the same test case works in RHEL6.<br>
>      Did you<br>
>      >      observe<br>
>      >      >        it?<br>
>      >      >        >    I am also finding that the test cases fail because<br>
>      we are<br>
>      >      trying<br>
>      >      >        to do<br>
>      >      >        >    multiple commands at one shot.  Please share your<br>
>      thoughts<br>
>      >      so<br>
>      >      >        that it<br>
>      >      >        >    could help me in debugging the issues further.<br>
>      >      >        ><br>
>      >      ><br>
>      >      >        It's totally possible that the checker state is<br>
>      immediately<br>
>      >      updated in<br>
>      >      >        RHEL6.  Like I said before, what it currently does,<br>
>      although<br>
>      >      correct,<br>
>      >      >        is confusing, and perhaps we need a different checker<br>
>      state for<br>
>      >      paths<br>
>      >      >        where the "fail path" command has been used.<br>
>      >      ><br>
>      >      >        -Ben<br>
>      >      >        >    Regards,<br>
>      >      >        >    Tejaswini<br>
>      >      >        >    On Tue, May 19, 2015 at 5:37 PM, Tejaswini Poluri<br>
</div></div><span class="">>      >      >        >    <[1][3][4][5]<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a>> wrote:<br>
>      >      >        ><br>
>      >      >        >      Thanks a lot Ben. I will look into it more. <br>
>      >      >        >      On Mon, May 18, 2015 at 9:57 PM, Benjamin<br>
>      Marzinski<br>
</span><div><div class="h5">>      >      >        >      <[2][4][5][6]<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a>> wrote:<br>
>      >      >        ><br>
>      >      >        >        On Mon, May 18, 2015 at 02:09:27PM +0530,<br>
>      Tejaswini<br>
>      >      Poluri<br>
>      >      >        wrote:<br>
>      >      >        >        >    Hii,<br>
>      >      >        >        >    We are trying to test multipath setup in<br>
>      our<br>
>      >      target and<br>
>      >      >        tried the<br>
>      >      >        >        various<br>
>      >      >        >        >    commands of multipathd demaon and we find<br>
>      the<br>
>      >      following<br>
>      >      >        error:<br>
>      >      >        >        >    root@x86-generic-64:~# multipathd -k"fail<br>
>      path<br>
>      >      sdc";<br>
>      >      >        multipathd<br>
>      >      >        >        >    -k'reinstate path<br>
>      >      >        >        >    sdc'; multipathd -k"show paths";<br>
>      >      >        >        >    [ 3962.708523] device-mapper: multipath:<br>
>      Failing<br>
>      >      >        path 8:32.<br>
>      >      >        >        >    ok<br>
>      >      >        >        >    ok<br>
>      >      >        >        >    hcil    dev dev_t pri dm_st   chk_st <br>
>       next_check<br>
>      >      >        >        >    4:0:0:1 sdc 8:32  1   [active][faulty]<br>
>      ..........<br>
>      >      1/20 <br>
>      >      >          <<<===<br>
>      >      >        >        CHECK<br>
>      >      >        >        >    5:0:0:1 sdd 8:48  1   [active][ready] <br>
>      XX........<br>
>      >      4/20<br>
>      >      >        >        >    sdc path becomes [active][ready] only<br>
>      after the<br>
>      >      polling<br>
>      >      >        interval<br>
>      >      >        >        but not<br>
>      >      >        >        >    immediately after the reinstate path<br>
>      command. <br>
>      >      >        >        >    I am observing this in latest multipath<br>
>      tools in<br>
>      >      ubuntu<br>
>      >      >        machine<br>
>      >      >        >        as well.<br>
>      >      >        >        >    Please let me know if its a known issue or<br>
>      if I<br>
>      >      am doing<br>
>      >      >        >        something wrong.<br>
>      >      >        >        >    Regards.<br>
>      >      >        >        >    Tejaswini<br>
>      >      >        ><br>
>      >      >        >        the reinstate command is supposed to reinstate<br>
>      the<br>
>      >      device<br>
>      >      >        with the<br>
>      >      >        >        kernel, and it does that. The checker state<br>
>      doesn't<br>
>      >      change<br>
>      >      >        until the<br>
>      >      >        >        next time that the path is checked.  I agree<br>
>      that it's<br>
>      >      odd<br>
>      >      >        that the<br>
>      >      >        >        check state switches to faulty as soon as you<br>
>      fail the<br>
>      >      path,<br>
>      >      >        but it<br>
>      >      >        >        doesn't switch back until the next check after<br>
>      you<br>
>      >      reinistate<br>
>      >      >        it.<br>
>      >      >        ><br>
>      >      >        >        The issue is that multipathd needs to override<br>
>      the<br>
>      >      checker<br>
>      >      >        output,<br>
>      >      >        >        so that a failed path won't be immeditately<br>
>      >      reinstated.  Once<br>
>      >      >        the<br>
>      >      >        >        path comes back, multipathd wants to record the<br>
>      switch<br>
>      >      in the<br>
>      >      >        checker<br>
>      >      >        >        thread, so that it can refresh path information<br>
>      what<br>
>      >      wasn't<br>
>      >      >        >        automatically done when the path was<br>
>      reinstated. <br>
>      >      However, it<br>
>      >      >        may make<br>
>      >      >        >        more sense to have a different checker state<br>
>      for when<br>
>      >      the<br>
>      >      >        device is<br>
>      >      >        >        in the failed state, so that it's obvious that<br>
>      the<br>
>      >      checker<br>
>      >      >        state is<br>
>      >      >        >        being overruled.<br>
>      >      >        ><br>
>      >      >        >        -Ben<br>
>      >      >        ><br>
>      >      >        >        > --<br>
>      >      >        >        > dm-devel mailing list<br>
</div></div>>      >      >        >        > [3][5][6][7]<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>      >      >        >        ><br>
>      >      [4][6][7][8]<a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>      >      >        ><br>
>      >      >        >        --<br>
>      >      >        >        dm-devel mailing list<br>
>      >      >        >        [5][7][8][9]<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>      >      >        >       <br>
>      >      [6][8][9][10]<a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>      >      >        ><br>
>      >      >        > References<br>
>      >      >        ><br>
>      >      >        >    Visible links<br>
>      >      >        >    1. mailto:[9][10][11]<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>      >      >        >    2. mailto:[10][11][12]<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>      >      >        >    3. mailto:[11][12][13]<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>      >      >        >    4.<br>
>      >      [12][13][14]<a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>      >      >        >    5. mailto:[13][14][15]<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>      >      >        >    6.<br>
>      >      [14][15][16]<a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>      >      ><br>
>      >      > References<br>
>      >      ><br>
>      >      >    Visible links<br>
>      >      >    1. mailto:[16][17]<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>      >      >    2. mailto:[17][18]<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>      >      >    3. mailto:[18][19]<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>      >      >    4. mailto:[19][20]<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>      >      >    5. mailto:[20][21]<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>      >      >    6. [21][22]<a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>      >      >    7. mailto:[22][23]<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>      >      >    8. [23][24]<a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>      >      >    9. mailto:[24][25]<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>      >      >   10. mailto:[25][26]<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>      >      >   11. mailto:[26][27]<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>      >      >   12. [27][28]<a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>      >      >   13. mailto:[28][29]<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>      >      >   14. [29][30]<a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>      ><br>
>      > References<br>
>      ><br>
>      >    Visible links<br>
>      >    1. mailto:[31]<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>      >    2. mailto:[32]<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>      >    3. mailto:[33]<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>      >    4. mailto:[34]<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>      >    5. mailto:[35]<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>      >    6. mailto:[36]<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>      >    7. [37]<a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>      >    8. mailto:[38]<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>      >    9. [39]<a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>      >   10. mailto:[40]<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>      >   11. mailto:[41]<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>      >   12. mailto:[42]<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>      >   13. [43]<a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>      >   14. mailto:[44]<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>      >   15. [45]<a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>      >   16. mailto:[46]<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>      >   17. mailto:[47]<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>      >   18. mailto:[48]<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>      >   19. mailto:[49]<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>      >   20. mailto:[50]<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>      >   21. [51]<a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>      >   22. mailto:[52]<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>      >   23. [53]<a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>      >   24. mailto:[54]<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>      >   25. mailto:[55]<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>      >   26. mailto:[56]<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>      >   27. [57]<a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>      >   28. mailto:[58]<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>      >   29. [59]<a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
<span class="">><br>
> References<br>
><br>
>    Visible links<br>
>    1. mailto:<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
</span><span class="">>    2. mailto:<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>    3. mailto:<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>    4. mailto:<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
</span>>    5. mailto:<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>    6. mailto:<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
<span class="">>    7. mailto:<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>    8. <a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
</span>>    9. mailto:<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>   10. <a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>   11. mailto:<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>   12. mailto:<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
<span class="">>   13. mailto:<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>   14. <a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
</span>>   15. mailto:<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>   16. <a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>   17. mailto:<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>   18. mailto:<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>   19. mailto:<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>   20. mailto:<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>   21. mailto:<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>   22. <a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>   23. mailto:<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>   24. <a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>   25. mailto:<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>   26. mailto:<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>   27. mailto:<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>   28. <a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>   29. mailto:<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>   30. <a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>   31. mailto:<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>   32. mailto:<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>   33. mailto:<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>   34. mailto:<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>   35. mailto:<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>   36. mailto:<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>   37. <a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>   38. mailto:<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>   39. <a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>   40. mailto:<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>   41. mailto:<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>   42. mailto:<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>   43. <a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>   44. mailto:<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>   45. <a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>   46. mailto:<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>   47. mailto:<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>   48. mailto:<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>   49. mailto:<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>   50. mailto:<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>   51. <a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>   52. mailto:<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>   53. <a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>   54. mailto:<a href="mailto:tejaswinipoluri3@gmail.com">tejaswinipoluri3@gmail.com</a><br>
>   55. mailto:<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a><br>
>   56. mailto:<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>   57. <a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
>   58. mailto:<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
>   59. <a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/mailman/listinfo/dm-devel</a><br>
</blockquote></div><br></div>