On Wed, Apr 03, 2013 at 04:41:01PM +0200, Lukáš Czerner wrote: > Hi Ted, > > there is a problem with your patch: > > 32d90a241a44d22ebc5289d2a2561691fc2d1351 > > because there is one more case where we might call ext4_truncate() > without i_mutex locked - from ext4_symlink(). Because we might be > calling __page_symlink() and it will call ext4_write_begin(). In > possible error case (ENOSPC for example) we might want to truncate > everything which might have been instantiated past i_size, however > at that point we're not holding i_mutex because there is no point in > doing so - the inode can not be possibly held by anyone else. > > My proposal is to only check whether the mutex is locked if the > inode is _not_ new or is _not_ being freed. > > There is a quick&dirty patch and it seems to be working well so > far. Let me know if you prefer standalone patch, or if you'll > include it into your commit. I really like your approach. We've been trying a number of other approaches, including http://patchwork.ozlabs.org/patch/232914/ and http://patchwork.ozlabs.org/patch/231679/ but I think your suggestion is the best. Thanks!! - Ted -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html