I'm trying to chase down an I/O hang on an x4500 running snv_70, and
have seen in
http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common
/fs/zfs/zil.c#zil_commit_writer at line 1075 that function's only call
to txg_wait_synced... and that call appears in my stack trace.

Looking on to txg_wait_synced, I notice that there's a while loop at
line 475 of
http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common
/fs/zfs/txg.c#txg_wait_synced while (tx->tx_synced_txg < txg) {

Since (unit64_t) txg is passed in as 0, and tx_synced_txg is also a
uint64_t, isn't this a rather infinite loop?  There are many calls to
tx_synced_txg(,0) elsewhere too.

I have to admit that I don't know what the correct behavior when the if
in zil_commit_writer there is true (i.e. we've had an error writing the
ZIL), but I don't think an infinite loop is it.

Any thoughts?

Kernel crash dump is available on request (16GB)

--Joe
_______________________________________________
storage-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/storage-discuss

Reply via email to