On 09/15/15 16:07, Josef Bacik wrote: > When dropping a snapshot we need to account for the qgroup changes. If we drop > the snapshot in all one go then the backref code will fail to find blocks from > the snapshot we dropped since it won't be able to find the root in the fs root > cache. This can lead to us failing to find refs from other roots that pointed > at blocks in the now deleted root. To handle this we need to not remove the fs > roots from the cache until after we process the qgroup operations. Do this by > adding dropped roots to a list on the transaction, and letting the transaction > remove the roots at the same time it drops the commit roots. This will keep all > of the backref searching code in sync properly, and fixes a problem Mark was > seeing with snapshot delete and qgroups. Thanks, > > Signed-off-by: Josef Bacik <jbacik@xxxxxx> > --- > V1->V2: > -clear the trans tag when we are finished dropping the subvol so we don't try to > update the root during commit. This V2 does indeed seem to fix the issues I reported with snapshot deletion & concurrent sync. I've now created/filled/deleted countless snapshots while issuing sync(s) in parallel, and the problem that I saw fairly frequently with V1 no longer seems to occur here. Therefore: Tested-by: Holger Hoffstätte <holger.hoffstaette@xxxxxxxxxxxxxx> Thanks for the quick fix, Josef! cheers Holger -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
