<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>9673</bug_id>
          
          <creation_ts>2006-06-05 10:23:17 +0400</creation_ts>
          <short_desc>pvmove is unworkable</short_desc>
          <delta_ts>2007-02-20 15:53:41 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>5</classification_id>
          <classification>Archive</classification>
          <product>ALT Linux 2.4</product>
          <component>lvm</component>
          <version>2.4</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Volkov">vaa</reporter>
          <assigned_to name="Egor S. Orlov">oes</assigned_to>
          <cc>vsu</cc>
          
          <qa_contact name="Andrey Cherepanov">cas</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>38533</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Volkov">vaa</who>
    <bug_when>2006-06-05 10:23:17 +0400</bug_when>
    <thetext>pvmove --version
pvmove: Logical Volume Manager 1.0.8
Не работает pvmove:
pvmove -v /dev/sdb14 /dev/hda7
pvmove -- checking name of source physical volume &quot;/dev/sdb14&quot;
pvmove -- locking logical volume manager
pvmove -- reading data of source physical volume from &quot;/dev/sdb14&quot;
pvmove -- checking volume group existence
pvmove -- reading data of volume group &quot;dvarc&quot; from lvmtab
pvmove -- checking volume group consistency of &quot;dvarc&quot;
pvmove -- searching for source physical volume &quot;/dev/sdb14&quot; in volume group 
&quot;dvarc&quot;
pvmove -- building list of possible destination physical volumes
pvmove -- checking destination physical volume names in command line
pvmove -- checking volume group activity
pvmove -- moving physical extents in active volume group &quot;dvarc&quot;
pvmove -- WARNING: if you lose power during the move you may need
        to restore your LVM metadata from backup!
pvmove -- do you want to continue? [y/n] y
pvmove -- starting to move extents away from physical volume &quot;/dev/sdb14&quot;
pvmove -- checking for enough free physical extents in &quot;dvarc&quot;
pvmove -- /dev/sdb14 [PE 0 [video [LE 7253]]] -&gt; /dev/hda7 [PE 0] [1/1785]
/dev/dvarc/group::/dev/dvarc/video: 081e 65920, 0307 65920
pvmove -- ERROR &quot;Inappropriate ioctl for device&quot; copying extent from &quot;/dev/
sdb14&quot;

pvmove -- ERROR &quot;Inappropriate ioctl for device&quot; moving physical extents

Возможная причина тут?
http://www.redhat.com/archives/linux-lvm/2003-July/msg00115.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38534</commentid>
    <comment_count>1</comment_count>
    <who name="Alexander Volkov">vaa</who>
    <bug_when>2006-06-05 10:24:44 +0400</bug_when>
    <thetext>да, чуть на забыл - 2.4.26-std-smp-alt13</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38535</commentid>
    <comment_count>2</comment_count>
    <who name="Alexander Volkov">vaa</who>
    <bug_when>2006-06-05 10:31:53 +0400</bug_when>
    <thetext>вот ещё костыль предлагается:
http://www.netadmintools.com/art369.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38536</commentid>
    <comment_count>3</comment_count>
    <who name="Alexander Volkov">vaa</who>
    <bug_when>2006-06-05 10:42:07 +0400</bug_when>
    <thetext>(In reply to comment #2)
&gt; вот ещё костыль предлагается:
&gt; http://www.netadmintools.com/art369.html
там предлагается собирать/ставить device-mapper, у меня libdevmapper оказался не 
установлен. Поставил - пока не помогло...
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38540</commentid>
    <comment_count>4</comment_count>
    <who name="Alexander Volkov">vaa</who>
    <bug_when>2006-06-05 10:55:57 +0400</bug_when>
    <thetext>(In reply to comment #0)
&gt; pvmove --version
&gt; pvmove: Logical Volume Manager 1.0.8
&gt; Не работает pvmove:
&gt; pvmove -v /dev/sdb14 /dev/hda7
&gt; pvmove -- checking name of source physical volume &quot;/dev/sdb14&quot;
&gt; pvmove -- locking logical volume manager
&gt; pvmove -- reading data of source physical volume from &quot;/dev/sdb14&quot;
&gt; pvmove -- checking volume group existence
&gt; pvmove -- reading data of volume group &quot;dvarc&quot; from lvmtab
&gt; pvmove -- checking volume group consistency of &quot;dvarc&quot;
&gt; pvmove -- searching for source physical volume &quot;/dev/sdb14&quot; in volume group 
&gt; &quot;dvarc&quot;
&gt; pvmove -- building list of possible destination physical volumes
&gt; pvmove -- checking destination physical volume names in command line
&gt; pvmove -- checking volume group activity
&gt; pvmove -- moving physical extents in active volume group &quot;dvarc&quot;
&gt; pvmove -- WARNING: if you lose power during the move you may need
&gt;         to restore your LVM metadata from backup!
&gt; pvmove -- do you want to continue? [y/n] y
&gt; pvmove -- starting to move extents away from physical volume &quot;/dev/sdb14&quot;
&gt; pvmove -- checking for enough free physical extents in &quot;dvarc&quot;
&gt; pvmove -- /dev/sdb14 [PE 0 [video [LE 7253]]] -&gt; /dev/hda7 [PE 0] [1/1785]
&gt; /dev/dvarc/group::/dev/dvarc/video: 081e 65920, 0307 65920
&gt; pvmove -- ERROR &quot;Inappropriate ioctl for device&quot; copying extent from &quot;/dev/
&gt; sdb14&quot;
&gt; 
&gt; pvmove -- ERROR &quot;Inappropriate ioctl for device&quot; moving physical extents
&gt; 
&gt; Возможная причина тут?
&gt; http://www.redhat.com/archives/linux-lvm/2003-July/msg00115.html
в логах при этом 
Jun  5 10:40:04 xeon kernel: lvm -- lvm_chr_ioctl: unknown command 0x4004fe51
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38547</commentid>
    <comment_count>5</comment_count>
    <who name="Alexander Volkov">vaa</who>
    <bug_when>2006-06-05 15:04:34 +0400</bug_when>
    <thetext>раскопки привели к неприложенному ядерному патчу;
возможно заработает после приложения kernel-feat-dm, а может, помимо этого,  
понадобиться обновить lvm до версии 2...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38553</commentid>
    <comment_count>6</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2006-06-05 18:22:12 +0400</bug_when>
    <thetext>Ситуация следующая:

1) В пакете lvm-1.0.8-alt1 прикладывается патч lvm-1.0.3-pvmove.patch, который
добавляет в lvm поддержку нового ioctl - PE_LOCKED_COPY. Однако соответствующий
патч к ядру в Master 2.4 не попал.

2) Теоретически в lvm-1.0.3-pvmove.patch была предусмотрена возможность работы и
с ядрами, не поддерживающими PE_LOCKED_COPY, однако это сломано:

+       ret = ioctl(group, PE_LOCKED_COPY, &amp;pe_copy_req);                      
                                                                    
+       if (ret &lt; 0)                                                           
                                                                    
+               ret = -errno;                                                  
                                                                    
+       if (ret == -EINVAL)                                                    
                                                                    
+               ret = -LVM_EPV_LOCKED_COPY_EINVAL;                             
                                                                    

На самом деле при вызове нереализованного ioctl возвращается код ошибки ENOTTY,
а не EINVAL, в результате функция pv_locked_copy_pe() не возвращает
-LVM_EPV_LOCKED_COPY_EINVAL, и не происходит переход к старому способу
выполнения pvmove.

Необходимо либо исправить проверку (например, на ((ret == -EINVAL) || (ret ==
-ENOTTY))), либо просто убрать из пакета патчи lvm-1.0.3-pvmove.patch и
lvm-1.0.3-cookie.patch (этот патч правит только то, что добавил предыдущий).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>38554</commentid>
    <comment_count>7</comment_count>
    <who name="Alexander Volkov">vaa</who>
    <bug_when>2006-06-05 19:24:25 +0400</bug_when>
    <thetext>оторвал патчи - работает.
И чтоб мы без Сергея делали ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45588</commentid>
    <comment_count>8</comment_count>
    <who name="Alexander Volkov">vaa</who>
    <bug_when>2007-02-20 15:53:13 +0300</bug_when>
    <thetext>все, видимо, уже переехали на lvm2, me too</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>