Revision 153d9724 lib/backend.py

b/lib/backend.py
768 768
  return result
769 769

  
770 770

  
771
def MirrorAddChild(md_cdev, new_cdev):
772
  """Extend an MD raid1 array.
771
def MirrorAddChildren(parent_cdev, new_cdevs):
772
  """Extend a mirrored block device.
773 773

  
774 774
  """
775
  md_bdev = _RecursiveFindBD(md_cdev, allow_partial=True)
776
  if md_bdev is None:
777
    logger.Error("Can't find md device")
775
  parent_bdev = _RecursiveFindBD(parent_cdev, allow_partial=True)
776
  if parent_bdev is None:
777
    logger.Error("Can't find parent device")
778 778
    return False
779
  new_bdev = _RecursiveFindBD(new_cdev)
780
  if new_bdev is None:
781
    logger.Error("Can't find new device to add")
779
  new_bdevs = [_RecursiveFindBD(disk) for disk in new_cdevs]
780
  if new_bdevs.count(None) > 0:
781
    logger.Error("Can't find new device(s) to add")
782 782
    return False
783
  new_bdev.Open()
784
  md_bdev.AddChild(new_bdev)
783
  parent_bdev.AddChildren(new_bdevs)
785 784
  return True
786 785

  
787 786

  
788
def MirrorRemoveChild(md_cdev, new_cdev):
789
  """Reduce an MD raid1 array.
787
def MirrorRemoveChildren(parent_cdev, new_cdevs):
788
  """Shrink a mirrored block device.
790 789

  
791 790
  """
792
  md_bdev = _RecursiveFindBD(md_cdev)
793
  if md_bdev is None:
791
  parent_bdev = _RecursiveFindBD(parent_cdev)
792
  if parent_bdev is None:
794 793
    return False
795
  new_bdev = _RecursiveFindBD(new_cdev)
796
  if new_bdev is None:
794
  new_bdevs = [_RecursiveFindBD(disk) for disk in new_cdevs]
795
  if new_bdevs.count(None) > 0:
797 796
    return False
798
  new_bdev.Open()
799
  md_bdev.RemoveChild(new_bdev.dev_path)
797
  parent_bdev.RemoveChildren(new_bdevs)
800 798
  return True
801 799

  
802 800

  

Also available in: Unified diff