Excerpts from Liu Bo's message of 2011-08-06 05:37:46 -0400:
> We maintain the inode's logged_trans to avoid reloging it, but if we iput
> the inode and reread it, we'll get logged_trans to zero.
> 
> So when an inode is still in log tree, and transaction is not committed yet,
> we do not iput the inode.

I know you've tried a few different methods for this, but I think this
one will end up leading to OOM, since it pins the inodes in ram and we
don't have a way for the inode shrinker to force a commit.

So I took this code out and couldn't trigger my eexist oops anymore.
I'm going through right now to make sure this isn't because someone took
the BUG_ON out ;)

The big problem was the code wasn't expecting to find previously logged
items for the inode because the last trans field wasn't set.  It seems
like we should just be able to deal with these eexist returns without
any real trouble?

-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

Reply via email to