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