Revision f208978a lib/bdev.py
b/lib/bdev.py | ||
---|---|---|
238 | 238 |
sync_percent=None, |
239 | 239 |
estimated_time=None, |
240 | 240 |
is_degraded=False, |
241 |
ldisk_degraded=False)
|
|
241 |
ldisk_status=constants.LDS_OKAY)
|
|
242 | 242 |
|
243 | 243 |
def CombinedSyncStatus(self): |
244 | 244 |
"""Calculate the mirror status recursively for our children. |
... | ... | |
255 | 255 |
min_percent = status.sync_percent |
256 | 256 |
max_time = status.estimated_time |
257 | 257 |
is_degraded = status.is_degraded |
258 |
ldisk_degraded = status.ldisk_degraded
|
|
258 |
ldisk_status = status.ldisk_status
|
|
259 | 259 |
|
260 | 260 |
if self._children: |
261 | 261 |
for child in self._children: |
... | ... | |
272 | 272 |
max_time = max(max_time, child_status.estimated_time) |
273 | 273 |
|
274 | 274 |
is_degraded = is_degraded or child_status.is_degraded |
275 |
ldisk_degraded = ldisk_degraded or child_status.ldisk_degraded |
|
275 |
|
|
276 |
if ldisk_status is None: |
|
277 |
ldisk_status = child_status.ldisk_status |
|
278 |
elif child_status.ldisk_status is not None: |
|
279 |
ldisk_status = max(ldisk_status, child_status.ldisk_status) |
|
276 | 280 |
|
277 | 281 |
return objects.BlockDevStatus(dev_path=self.dev_path, |
278 | 282 |
major=self.major, |
... | ... | |
280 | 284 |
sync_percent=min_percent, |
281 | 285 |
estimated_time=max_time, |
282 | 286 |
is_degraded=is_degraded, |
283 |
ldisk_degraded=ldisk_degraded)
|
|
287 |
ldisk_status=ldisk_status)
|
|
284 | 288 |
|
285 | 289 |
|
286 | 290 |
def SetInfo(self, text): |
... | ... | |
532 | 536 |
@rtype: objects.BlockDevStatus |
533 | 537 |
|
534 | 538 |
""" |
539 |
if self._degraded: |
|
540 |
ldisk_status = constants.LDS_FAULTY |
|
541 |
else: |
|
542 |
ldisk_status = constants.LDS_OKAY |
|
543 |
|
|
535 | 544 |
return objects.BlockDevStatus(dev_path=self.dev_path, |
536 | 545 |
major=self.major, |
537 | 546 |
minor=self.minor, |
538 | 547 |
sync_percent=None, |
539 | 548 |
estimated_time=None, |
540 | 549 |
is_degraded=self._degraded, |
541 |
ldisk_degraded=self._degraded)
|
|
550 |
ldisk_status=ldisk_status)
|
|
542 | 551 |
|
543 | 552 |
def Open(self, force=False): |
544 | 553 |
"""Make the device ready for I/O. |
... | ... | |
1335 | 1344 |
_ThrowError("drbd%d: can't Attach() in GetSyncStatus", self._aminor) |
1336 | 1345 |
|
1337 | 1346 |
stats = self.GetProcStatus() |
1338 |
ldisk_degraded = not stats.is_disk_uptodate |
|
1339 |
is_degraded = not stats.is_connected |
|
1347 |
is_degraded = not stats.is_connected or not stats.is_disk_uptodate |
|
1348 |
|
|
1349 |
if stats.is_disk_uptodate: |
|
1350 |
ldisk_status = constants.LDS_OKAY |
|
1351 |
elif stats.is_diskless: |
|
1352 |
ldisk_status = constants.LDS_FAULTY |
|
1353 |
else: |
|
1354 |
ldisk_status = constants.LDS_UNKNOWN |
|
1340 | 1355 |
|
1341 | 1356 |
return objects.BlockDevStatus(dev_path=self.dev_path, |
1342 | 1357 |
major=self.major, |
1343 | 1358 |
minor=self.minor, |
1344 | 1359 |
sync_percent=stats.sync_percent, |
1345 | 1360 |
estimated_time=stats.est_time, |
1346 |
is_degraded=(is_degraded or ldisk_degraded),
|
|
1347 |
ldisk_degraded=ldisk_degraded)
|
|
1361 |
is_degraded=is_degraded,
|
|
1362 |
ldisk_status=ldisk_status)
|
|
1348 | 1363 |
|
1349 | 1364 |
def Open(self, force=False): |
1350 | 1365 |
"""Make the local state primary. |
Also available in: Unified diff