From nobody@FreeBSD.org  Wed Apr 11 17:53:06 2012
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
	by hub.freebsd.org (Postfix) with ESMTP id 8E645106564A
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 11 Apr 2012 17:53:06 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22])
	by mx1.freebsd.org (Postfix) with ESMTP id 7906E8FC17
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 11 Apr 2012 17:53:06 +0000 (UTC)
Received: from red.freebsd.org (localhost [127.0.0.1])
	by red.freebsd.org (8.14.4/8.14.4) with ESMTP id q3BHr6NE054653
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 11 Apr 2012 17:53:06 GMT
	(envelope-from nobody@red.freebsd.org)
Received: (from nobody@localhost)
	by red.freebsd.org (8.14.4/8.14.4/Submit) id q3BHr6Ba054652;
	Wed, 11 Apr 2012 17:53:06 GMT
	(envelope-from nobody)
Message-Id: <201204111753.q3BHr6Ba054652@red.freebsd.org>
Date: Wed, 11 Apr 2012 17:53:06 GMT
From: Yuri <yuri@tsoft.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: Copying directory from the mounted UFS disk image hangs in DL+ vnread state (source and destination both on the same ZFS)
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         166851
>Category:       kern
>Synopsis:       [zfs] [hang] Copying directory from the mounted UFS disk image hangs in DL+ vnread state (source and destination both on the same ZFS)
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-fs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Apr 11 18:00:27 UTC 2012
>Closed-Date:    
>Last-Modified:  Mon Apr 16 03:58:59 UTC 2012
>Originator:     Yuri
>Release:        9.0-STABLE amd64
>Organization:
n/a
>Environment:
>Description:
I have 82GB UFS image file (ufs-snapshot.img) mounted on some directory ufs-snapshot.mount. (mount /dev/`mdconfig -a -t vnode -f ufs-snapshot.img` ufs-snapshot.mount) Both original file ufs-snapshot.img and ufs-snapshot.mount are on the same ZFS disk.

Command 'cp -R ufs-snapshot.mount/usr other-dir/' hanged in the middle with DL+ status:
$ ps ax | grep cp
73635  10  DL+     0:12.19 cp -R ufs-snapshot.mount/usr other-dir/
'top' shows it in vnread state:
73635 root            1  20    0 10084K  2672K vnread  1   0:12  0.00% cp

When I ran 'ls' in the same mounted directory it hanged too with D+ status:
$ ps ax | grep ls
75882   2  D+      0:00.00 ls ufs-snapshot.mount/

Subsequent 'ls' of this ZFS disk's top directory hangs in the same way. And after few hours system freezes.

It appears that cp -R creates the gridlock condition when it copies from UFS contained in the image file within some ZFS disk into the same ZFS disk.

>How-To-Repeat:

>Fix:


>Release-Note:
>Audit-Trail:

From: Yuri <yuri@rawbw.com>
To: bug-followup@FreeBSD.org
Cc:  
Subject: RE: kern/166851: Copying directory from the mounted UFS disk image
 hangs in DL+ vnread state (source and destination both on the same ZFS)
Date: Wed, 11 Apr 2012 11:16:07 -0700

 I just was able to reproduce the same problem after reboot. Need to 
 reboot again now.
 
 Since both source (UFS image) of 'cp' and destination directory are on 
 the same ZFS disk, vnread was probably waiting for ZFS lock that was 
 somehow incurred by ongoing writing on the same disk.
Responsible-Changed-From-To: freebsd-bugs->freebsd-fs 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Mon Apr 16 03:58:43 UTC 2012 
Responsible-Changed-Why:  

http://www.freebsd.org/cgi/query-pr.cgi?pr=166851 
>Unformatted:
