Revision 1063abd1 lib/backend.py

b/lib/backend.py
1094 1094
  clist = []
1095 1095
  if disk.children:
1096 1096
    for child in disk.children:
1097
      crdev = _RecursiveAssembleBD(child, owner, on_primary)
1097
      try:
1098
        crdev = _RecursiveAssembleBD(child, owner, on_primary)
1099
      except errors.BlockDeviceError, err:
1100
        errmsg = "Can't assemble device %s: %s" % (child, err)
1101
        logging.error(errmsg)
1102
        return False, errmsg
1098 1103
      if on_primary or disk.AssembleOnSecondary():
1099 1104
        # we need the children open in case the device itself has to
1100 1105
        # be assembled
1101
        crdev.Open()
1106
        try:
1107
          crdev.Open()
1108
        except errors.BlockDeviceError, err:
1109
          errmsg = "Can't make child '%s' read-write: %s" (child, err)
1110
          logging.error(errmsg)
1111
          return False, errmsg
1102 1112
      clist.append(crdev)
1103 1113

  
1104 1114
  try:
1105 1115
    device = bdev.Create(disk.dev_type, disk.physical_id, clist, size)
1106
  except errors.GenericError, err:
1116
  except errors.BlockDeviceError, err:
1107 1117
    return False, "Can't create block device: %s" % str(err)
1108 1118

  
1109 1119
  if on_primary or disk.AssembleOnSecondary():
1110
    if not device.Assemble():
1111
      errorstring = "Can't assemble device after creation, very unusual event"
1112
      logging.error(errorstring)
1113
      return False, errorstring
1120
    try:
1121
      device.Assemble()
1122
    except errors.BlockDeviceError, err:
1123
      errmsg = ("Can't assemble device after creation, very"
1124
                " unusual event: %s" % str(err))
1125
      logging.error(errmsg)
1126
      return False, errmsg
1114 1127
    device.SetSyncSpeed(constants.SYNC_SPEED)
1115 1128
    if on_primary or disk.OpenOnSecondary():
1116
      device.Open(force=True)
1129
      try:
1130
        device.Open(force=True)
1131
      except errors.BlockDeviceError, err:
1132
        errmsg = ("Can't make device r/w after creation, very"
1133
                  " unusual event: %s" % str(err))
1134
        logging.error(errmsg)
1135
        return False, errmsg
1117 1136
    DevCacheManager.UpdateCache(device.dev_path, owner,
1118 1137
                                on_primary, disk.iv_name)
1119 1138

  
......
1198 1217
        if children.count(None) >= mcn:
1199 1218
          raise
1200 1219
        cdev = None
1201
        logging.error("Error in child activation: %s", str(err))
1220
        logging.error("Error in child activation (but continuing): %s",
1221
                      str(err))
1202 1222
      children.append(cdev)
1203 1223

  
1204 1224
  if as_primary or disk.AssembleOnSecondary():
......
1225 1245
      C{True} for secondary nodes
1226 1246

  
1227 1247
  """
1228
  status = False
1248
  status = True
1229 1249
  result = "no error information"
1230 1250
  try:
1231 1251
    result = _RecursiveAssembleBD(disk, owner, as_primary)
1232 1252
    if isinstance(result, bdev.BlockDev):
1233 1253
      result = result.dev_path
1234
      status = True
1235
    if result == True:
1236
      status = True
1237 1254
  except errors.BlockDeviceError, err:
1238 1255
    result = "Error while assembling disk: %s" % str(err)
1256
    status = False
1239 1257
  return (status, result)
1240 1258

  
1241 1259

  

Also available in: Unified diff