Date: Wed, 18 May 2011 14:05:06 +0200 From: Borja Marcos <borjam@sarenet.es> To: Jeremy Chadwick <freebsd@jdc.parodius.com> Cc: Charles Sprickman <spork@bway.net>, stable@FreeBSD.org, Andriy Gapon <avg@FreeBSD.org> Subject: Re: 8.1R possible zfs snapshot livelock? Message-ID: <FCE5F082-A3BF-4A21-B2E3-FEF3EA715F2C@sarenet.es> In-Reply-To: <20110517112952.GA48610@icarus.home.lan> References: <alpine.OSX.2.00.1105170120510.1983@hotlap.nat.fasttrackmonkey.com> <20110517073029.GA44359@icarus.home.lan> <4DD25264.8040305@FreeBSD.org> <20110517112952.GA48610@icarus.home.lan>
next in thread | previous in thread | raw e-mail | index | archive | help
On May 17, 2011, at 1:29 PM, Jeremy Chadwick wrote: > * ZFS send | ssh zfs recv results in ZFS subsystem hanging; 8.1-RELEASE; > February 2011: > http://lists.freebsd.org/pipermail/freebsd-fs/2011-February/010602.html I found a reproducible deadlock condition actually. If you keep some I/O activity on a dataset on which you are receiving a ZFS incremental snapshot at the same time, it can deadlock. Imagine this situation: Two servers, A and B. A dataset on server A is replicated at regular intervals to B, so that you keep a reasonably up to date copy. Something like: (Runnning on server A): zfs snapshot thepool/thedataset@thistime zfs send -Ri thepooll/thedataser@previoustime hepool/thedataset@thistime | ssh serverB zfs receive -d thepool It works, but I suffered a deadlock when one of the periodic "daily" scripts was running. Doing some tests, I saw that ZFS can deadlock if you do a zfs receive onto a dataset which has some read activity. Disabling atime didn't help either. But if you make sure *not* to access the replicated dataset it works, I havenīt seen it failing otherwise. If you wish to reproduce it, try creating a dataset for /usr/obj, running make buildworld on it, replicating at, say, 30 or 60 second intervals, and keep several scripts (or rsync) reading the target dataset files and just copying them to another place in the usual, "classic" way. (example: tar cf - . | ( cd /destination && tar xf -) Borja
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?FCE5F082-A3BF-4A21-B2E3-FEF3EA715F2C>
