_lvm_physicalvolumes() only gets PVs that belong to a VG. In some
cases like pvremove we can use all PVs including those not included
in any VGs.

So we add a new function _lvm_physicalvolumes_all() to get all PVs,
and fix all the commands that need to use _lvm_physicalvolumes_all()
instead of _lvm_physicalvolumes().

Signed-off-by: Liuhua Wang <lw...@suse.com>
Reviewed-by: Lidong Zhong <lzh...@suse.com>
---
 completions/lvm | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/completions/lvm b/completions/lvm
index d04a549..1535c5c 100644
--- a/completions/lvm
+++ b/completions/lvm
@@ -6,6 +6,12 @@ _lvm_volumegroups()
         sed -n -e 's|.*Found.*"\(.*\)".*$|\1|p' )" -- "$cur" ) )
 }
 
+_lvm_physicalvolumes_all()
+{
+    COMPREPLY=( $(compgen -W "$( pvscan 2>/dev/null | \ 
+        sed -n -e 's|^.*PV \([^ ]*\) .*|\1|p' )" -- "$cur" ) ) 
+}
+
 _lvm_physicalvolumes()
 {
     COMPREPLY=( $(compgen -W "$( pvscan 2>/dev/null | \
@@ -96,7 +102,7 @@ _pvs()
     if [[ "$cur" == -* ]]; then
         COMPREPLY=( $( compgen -W '$( _parse_usage "$1" --help )' -- "$cur" ) )
     else
-        _lvm_physicalvolumes
+        _lvm_physicalvolumes_all
     fi
 } &&
 complete -F _pvs pvs
@@ -116,7 +122,7 @@ _pvdisplay()
     if [[ "$cur" == -* ]]; then
         COMPREPLY=( $( compgen -W '$( _parse_usage "$1" --help )' -- "$cur" ) )
     else
-        _lvm_physicalvolumes
+        _lvm_physicalvolumes_all
     fi
 } &&
 complete -F _pvdisplay pvdisplay
@@ -136,7 +142,7 @@ _pvchange()
     if [[ "$cur" == -* ]]; then
         COMPREPLY=( $( compgen -W '$( _parse_usage "$1" --help )' -- "$cur" ) )
     else
-        _lvm_physicalvolumes
+        _lvm_physicalvolumes_all
     fi
 } &&
 complete -F _pvchange pvchange
@@ -206,7 +212,7 @@ _pvremove()
     if [[ "$cur" == -* ]]; then
         COMPREPLY=( $( compgen -W '$( _parse_usage "$1" --help )' -- "$cur" ) )
     else
-        _lvm_physicalvolumes
+        _lvm_physicalvolumes_all
     fi
 } &&
 complete -F _pvremove pvremove
@@ -322,7 +328,7 @@ _vgcreate()
         if [[ $args -eq 0 ]]; then
             _lvm_volumegroups
         else
-            _lvm_physicalvolumes
+            _lvm_physicalvolumes_all
         fi
     fi
 } &&
@@ -412,7 +418,7 @@ _vgextend()
         if [[ $args -eq 0 ]]; then
             _lvm_volumegroups
         else
-            _lvm_physicalvolumes
+            _lvm_physicalvolumes_all
         fi
     fi
 } &&
-- 
1.8.4.5


_______________________________________________
Bash-completion-devel mailing list
Bash-completion-devel@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/bash-completion-devel

Reply via email to