The retry occurs at the end of ext4_ext_remove_space where the code loops back to the top of the function if err == -EAGAIN, leading to another call to ext4_ext_rm_leaf. Nothing new needs to be added - we simply want to avoid using invalid state to decide whether to free a partial cluster (on occurrence of -EAGAIN), and the existing retry loop will eventually get us valid state. (I actually saw this in testing, but it takes a lot of runs to get there.) Sorry if I edited down my comment a little too far - I'd be happy to beef that up if desired. Thanks, Eric * Theodore Ts'o <tytso@xxxxxxx>: > On Fri, Nov 21, 2014 at 09:59:04AM -0500, Eric Whitney wrote: > > ext4_ext_remove_space() can incorrectly free a partial_cluster if > > EAGAIN is encountered while truncating or punching. Extent removal > > should be retried in this case. > > I don't see anything in the patch below which retries the extent > removal; am I missing something? > > 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