On Tue, 22 Mar 2011, Miklos Szeredi wrote: > On Tue, 22 Mar 2011, Al Viro wrote: > > On Tue, Mar 22, 2011 at 09:06:38PM +0100, Miklos Szeredi wrote: > > > On Tue, 22 Mar 2011, Al Viro wrote: > > > > Proceeding with rename is not interesting; proceeding with copyup is. > > > > > > > > Who said that by the time we get to copy_up_locked you will still have > > > > dentry (and upper) match lowerpath? Or that ->d_parent on overlay and > > > > on upper will change in sync, for that matter - there are two d_move() > > > > calls involved... > > > > > > If rename is involved, than rename itself already did the copy up. > > > And that's checked before proceeding with the actual copy up. If > > > there was no rename, then that guarantees that things are in sync, at > > > least for the duration of the copy up. > > > > What do you mean, before? It's not atomic... What happens if e.g. > > you get > > > > A: decided to do copy_up_locked > > blocked on i_mutex > > > > B: did copy_up > > did rename(), complete with d_move() > > did unlink() in new place > > > > A: got CPU back, got i_mutex > > Here it can check if the file was copied up or not. OK, I see the > code doesn't quite get that right. > > Patch below would fix it, I think. Scratch that, d_move() on overlayfs would also have to be under i_mutex of upper. But that should be doable as well. I'll fix that tomorrow when my brain is a little fresher. Thanks, Miklos -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html