On Tue, Mar 31, 2015 at 7:45 PM, Zach Brown <z...@zabbo.net> wrote:
We've known for eons that it's not great that readdir holds tree locks
while calling mkwrite by way of dir_emit(). I fiddled around and
found
a reliable if goofy deadlock reproducer. It typically takes a few
seconds on modest hardware here (single package, dual core/ht, single
spindle.)
I made a quick attempt at refactoring readdir to stage entries in a
locally allocated page before releasing the locks and emitting them
but
unfortunately my eyeballs fell out and one of the cats ran off with
them. Maybe someone else will have more luck.
Ok, copying into a temporary page (or just a temp extent buffer) really
is the best way. Basically copy out the extent buffer right after the
btrfs_search_slot and then process the local copy.
I'll take a look for the merge window.
-chris
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html