Project

General

Profile

Bug #4432

151a7 Panic on boot

Added by John Huang over 5 years ago.

Status:
New
Priority:
High
Assignee:
-
Category:
-
Start date:
2013-12-25
Due date:
% Done:

0%

Estimated time:
Difficulty:
Medium
Tags:
needs-triage

Description

At oi_151a7, Use samba and take a snapshot per 20 seconds, system run about 3 month. Reboot system, the system panic at zfs function zap_leaf_lookup_closest()+40, install 151a8, import the zpool, also panic at zap_leaf_lookup_closest()+40.
I debug the the system:
in file zap_leaf.c
zap_leaf_lookup_closest(zap_leaf_t *l, uint64_t h, uint32_t cd, zap_entry_handle_t *zeh) {
uint16_t chunk;
uint64_t besth = -1ULL;
uint32_t bestcd = -1U;
uint16_t bestlh = ZAP_LEAF_HASH_NUMENTRIES(l)-1;
uint16_t lh;
struct zap_leaf_entry *le;

ASSERT3U(l->l_phys->l_hdr.lh_magic, ==, ZAP_LEAF_MAGIC);
...................
}
find the "l->l_phys" is NULL, so system panic. I don't know why "l->l_phys" is NUL!
I trace it, find l->l_phys is get value at function zap_get_leaf_byblk() in file zap.c

zap_get_leaf_byblk(zap_t *zap, uint64_t blkid, dmu_tx_t *tx, krw_t lt,
zap_leaf_t **lp) {
..........
l = dmu_buf_get_user(db);
....................
//here l->l_phys maybe NULL
if ((l != NULL) && (l->l_phys == NULL)) {
dmu_buf_rele(db, NULL);
return (EIO);
}
}

replace zfs module at /kernel/fs/amd64, import the rpool, it is work.

Also available in: Atom PDF