Closed lundman closed 11 years ago
This is a new one. Can you grab the line number of the NULL deref and post it in to the bug. You should be able to get it with gdb as follows. Do your local changes include and modifications to these arc functions?
$ gdb module/zfs/zfs.ko
Reading symbols from /home/behlendo/src/git/zfs/module/zfs/zfs.ko...done.
(gdb) list *(arc_read_nolock+0x2d4)
...
I did not know that gdb command, future-lundman thanks you!
(gdb) list *(arc_read_nolock+0x2d4)
0x5dd8 is in arc_read_nolock (module/zfs/../../module/zfs/arc.c:2976).
2971 buf_discard_identity(hdr);
2972 (void) arc_buf_remove_ref(buf, private);
2973 goto top; /* restart the IO request */
2974 }
2975 /* if this is a prefetch, we don't have a reference */
2976 if (*arc_flags & ARC_PREFETCH) {
2977 (void) remove_reference(hdr, hash_lock,
2978 private);
2979 hdr->b_flags |= ARC_PREFETCH;
2980 }
arc.c is the one file that I have not touched. But added maybe 2 calls that call into it.
One of your new callers is passing in NULL for arc_flags
. Don't do that.
zil.c:234
error = arc_read(NULL, zilog->zl_spa, bp, 0, arc_getbuf_func,
&abuf, ZIO_PRIORITY_SYNC_READ, zio_flags, NULL, &zb);
yeah I do! This is not relevant to master, so I will close. Sorry for the noise.
Disclaimer; Now, this should be synced with master of this morning, but it does have local changes. "I don't think" those changes are in effect yet, but it entirely possible that I am wrong. So it could be not relevant here. In fact, when has upgrading a pool been tested on Linux.
My finger is hovering over the "delete issue" button, but if it is something that stands out immediately, please let me know.