Revision 770fe0f9

b/lib/bdev.py
917 917
  """
918 918
  _VERSION_RE = re.compile(r"^version: (\d+)\.(\d+)\.(\d+)"
919 919
                           r" \(api:(\d+)/proto:(\d+)\)")
920
  _DRBD_KVER = 0
920
  _DRBD_MAJOR = 147
921
  _ST_UNCONFIGURED = "Unconfigured"
922
  _ST_WFCONNECTION = "WFConnection"
923
  _ST_CONNECTED = "Connected"
921 924

  
922 925
  @staticmethod
923 926
  def _GetProcData():
......
948 951
                                    first_line)
949 952
    return [int(val) for val in version.groups()]
950 953

  
954
  @staticmethod
955
  def _DevPath(minor):
956
    """Return the path to a drbd device for a given minor.
957

  
958
    """
959
    return "/dev/drbd%d" % minor
960

  
961
  @classmethod
962
  def _GetUsedDevs(cls):
963
    """Compute the list of used DRBD devices.
964

  
965
    """
966
    data = cls._GetProcData()
967

  
968
    used_devs = {}
969
    valid_line = re.compile("^ *([0-9]+): cs:([^ ]+).*$")
970
    for line in data:
971
      match = valid_line.match(line)
972
      if not match:
973
        continue
974
      minor = int(match.group(1))
975
      state = match.group(2)
976
      if state == cls._ST_UNCONFIGURED:
977
        continue
978
      used_devs[minor] = state, line
979

  
980
    return used_devs
981

  
951 982

  
952 983
class DRBDev(BaseDRBD):
953 984
  """DRBD block device.
......
962 993
  valid size and is zeroed on create.
963 994

  
964 995
  """
965
  _DRBD_MAJOR = 147
966
  _ST_UNCONFIGURED = "Unconfigured"
967
  _ST_WFCONNECTION = "WFConnection"
968
  _ST_CONNECTED = "Connected"
969

  
970 996
  def __init__(self, unique_id, children):
971 997
    super(DRBDev, self).__init__(unique_id, children)
972 998
    self.major = self._DRBD_MAJOR
......
983 1009
    self._lhost, self._lport, self._rhost, self._rport = unique_id
984 1010
    self.Attach()
985 1011

  
986
  @staticmethod
987
  def _DevPath(minor):
988
    """Return the path to a drbd device for a given minor.
989

  
990
    """
991
    return "/dev/drbd%d" % minor
992

  
993
  @classmethod
994
  def _GetUsedDevs(cls):
995
    """Compute the list of used DRBD devices.
996

  
997
    """
998
    data = cls._GetProcData()
999

  
1000
    used_devs = {}
1001
    valid_line = re.compile("^ *([0-9]+): cs:([^ ]+).*$")
1002
    for line in data:
1003
      match = valid_line.match(line)
1004
      if not match:
1005
        continue
1006
      minor = int(match.group(1))
1007
      state = match.group(2)
1008
      if state == cls._ST_UNCONFIGURED:
1009
        continue
1010
      used_devs[minor] = state, line
1011

  
1012
    return used_devs
1013

  
1014

  
1015 1012
  @classmethod
1016 1013
  def _FindUnusedMinor(cls):
1017 1014
    """Find an unused DRBD device.

Also available in: Unified diff