mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-25 18:59:33 +03:00
Fix incorrect assertions in ddt_phys_decref and ddt_sync_entry
The assertions in ddt_phys_decref and ddt_sync_entry cast ddp->ddp_refcnt from uint64_t to int64_t, with a reference count bigger than 2^63, e.g. the reference count of zero blocks commonly available in spare files, we may mistakenly hit these assertations, so drop the type conversions here. Signed-off-by: Ying Zhu <casualfisher@gmail.com> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #1436
This commit is contained in:
parent
044baf009a
commit
ee664d4631
@ -324,7 +324,7 @@ void
|
|||||||
ddt_phys_decref(ddt_phys_t *ddp)
|
ddt_phys_decref(ddt_phys_t *ddp)
|
||||||
{
|
{
|
||||||
if (ddp) {
|
if (ddp) {
|
||||||
ASSERT((int64_t)ddp->ddp_refcnt > 0);
|
ASSERT(ddp->ddp_refcnt > 0);
|
||||||
ddp->ddp_refcnt--;
|
ddp->ddp_refcnt--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1058,7 +1058,6 @@ ddt_sync_entry(ddt_t *ddt, ddt_entry_t *dde, dmu_tx_t *tx, uint64_t txg)
|
|||||||
|
|
||||||
for (p = 0; p < DDT_PHYS_TYPES; p++, ddp++) {
|
for (p = 0; p < DDT_PHYS_TYPES; p++, ddp++) {
|
||||||
ASSERT(dde->dde_lead_zio[p] == NULL);
|
ASSERT(dde->dde_lead_zio[p] == NULL);
|
||||||
ASSERT((int64_t)ddp->ddp_refcnt >= 0);
|
|
||||||
if (ddp->ddp_phys_birth == 0) {
|
if (ddp->ddp_phys_birth == 0) {
|
||||||
ASSERT(ddp->ddp_refcnt == 0);
|
ASSERT(ddp->ddp_refcnt == 0);
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
Reference in New Issue
Block a user