From fbcb768c8fd1f32653f46ed4a8a9ceafe139087b Mon Sep 17 00:00:00 2001 From: Tim Chase Date: Sat, 12 Oct 2013 17:33:28 -0500 Subject: Add missing dsl pool configuration lock The semantics introduced by the restructured sync task of illumos 3464 require this lock when calling dmu_snapshot_list_next(). The pool is locked/unlocked for each iteration to reduce the chance of long-running locks. This was accidentally missed when doing the original port because ZoL's control directory code is Linux-specific and is in a different file than in illumos. Signed-off-by: Richard Yao Signed-off-by: Brian Behlendorf Closes #1785 --- module/zfs/zpl_ctldir.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'module') diff --git a/module/zfs/zpl_ctldir.c b/module/zfs/zpl_ctldir.c index 1bb646fdf..96157ec78 100644 --- a/module/zfs/zpl_ctldir.c +++ b/module/zfs/zpl_ctldir.c @@ -261,8 +261,10 @@ zpl_snapdir_iterate(struct file *filp, struct dir_context *ctx) goto out; while (error == 0) { + dsl_pool_config_enter(dmu_objset_pool(zsb->z_os), FTAG); error = -dmu_snapshot_list_next(zsb->z_os, MAXNAMELEN, - snapname, &id, &(ctx->pos), &case_conflict); + snapname, &id, &ctx->pos, &case_conflict); + dsl_pool_config_exit(dmu_objset_pool(zsb->z_os), FTAG); if (error) goto out; -- cgit v1.2.3