> I just retried to reproduce it to generate a reliable
> test case. Unfortunately, I cannot reproduce the
> error message. So I really have no idea what might
> have cause it....
I also had this problem 2-3 times in the past,
but I cannot reproduce it.
====================================================================
Using dtrace against the kernel, I found out that the source
of the EBUSY error 16 is the kernel function zil_suspend():
[b]
...
0 <- dnode_cons 0
0 -> dnode_setdblksz
0 <- dnode_setdblksz 14
0 -> dmu_zfetch_init
0 -> list_create
0 <- list_create 3734548404
0 -> rw_init
0 <- rw_init 3734548400
0 <- dmu_zfetch_init 3734548400
0 -> list_insert_head
0 <- list_insert_head 3734548052
0 <- dnode_create 3734548048
0 <- dnode_special_open 3734548048
0 -> dsl_dataset_set_user_ptr
0 <- dsl_dataset_set_user_ptr 0
0 <- dmu_objset_open_impl 0
0 <- dmu_objset_open 0
0 -> dmu_objset_zil
0 <- dmu_objset_zil 3700903200
0 -> zil_suspend
0 | zil_suspend:entry zh_claim_txg: 83432
0 <- zil_suspend 16
0 -> dmu_objset_close
0 -> dsl_dataset_close
0 -> dbuf_rele
0 -> dbuf_evict_user
0 -> dsl_dataset_evict
0 -> unique_remove
...
1200 /*
1201 * Suspend an intent log. While in suspended mode, we still honor
1202 * synchronous semantics, but we rely on txg_wait_synced() to do it.
1203 * We suspend the log briefly when taking a snapshot so that the
snapshot
1204 * contains all the data it's supposed to, and has an empty intent log.
1205 */
1206 int
1207 zil_suspend(zilog_t *zilog)
1208 {
1209 const zil_header_t *zh = zilog->zl_header;
1210 lwb_t *lwb;
1211
1212 mutex_enter(&zilog->zl_lock);
1213 if (zh->zh_claim_txg != 0) { /* unplayed log */
1214 mutex_exit(&zilog->zl_lock);
1215 return (EBUSY);
1216 }
...
[/b]
====================================================================
It seems that you can identify zfs filesystems that fail
zfs snapshot with error 16 EBUSY using
zdb -iv {your_zpool_here} | grep claim_txg
If there are any ZIL headers listed with a claim_txg != 0, the
dataset that uses this ZIL should fail zfs snapshot with
error 16, EBUSY.
This message posted from opensolaris.org
_______________________________________________
zfs-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss