Revision bb5fc20f block.c
b/block.c | ||
---|---|---|
430 | 430 |
} |
431 | 431 |
} |
432 | 432 |
|
433 |
/* call the change callback */ |
|
434 |
bs->media_changed = 1; |
|
435 |
if (bs->change_cb) |
|
436 |
bs->change_cb(bs->change_opaque); |
|
437 |
|
|
433 |
if (!bdrv_key_required(bs)) { |
|
434 |
/* call the change callback */ |
|
435 |
bs->media_changed = 1; |
|
436 |
if (bs->change_cb) |
|
437 |
bs->change_cb(bs->change_opaque); |
|
438 |
} |
|
438 | 439 |
return 0; |
439 | 440 |
} |
440 | 441 |
|
... | ... | |
989 | 990 |
if (!bs->encrypted || !bs->drv || !bs->drv->bdrv_set_key) |
990 | 991 |
return -1; |
991 | 992 |
ret = bs->drv->bdrv_set_key(bs, key); |
992 |
bs->valid_key = (ret == 0); |
|
993 |
if (ret < 0) { |
|
994 |
bs->valid_key = 0; |
|
995 |
} else if (!bs->valid_key) { |
|
996 |
bs->valid_key = 1; |
|
997 |
/* call the change callback now, we skipped it on open */ |
|
998 |
bs->media_changed = 1; |
|
999 |
if (bs->change_cb) |
|
1000 |
bs->change_cb(bs->change_opaque); |
|
1001 |
} |
|
993 | 1002 |
return ret; |
994 | 1003 |
} |
995 | 1004 |
|
Also available in: Unified diff