On Fri, Jun 9, 2017 at 1:49 PM, Miklos Szeredi <miklos@xxxxxxxxxx> wrote: > On Fri, Jun 9, 2017 at 11:38 AM, Amir Goldstein <amir73il@xxxxxxxxx> wrote: > The challenge is in accounting the number of link-ups atomically with > the link-up itself. No ideas off-hand. Following would work I think: - copy up to indexdir (it now has st_nlink == 1) - set overlay.nlinkup to "1-2" + the first number indicates the target number of linkups + the second indicates the target st_nlink on the file - fsync the file (hopefully this writes the xattrs as well as the data) - link the file from indexdir to upper - set overlay.nlinkup to "1" + this indicates that the linkup was finished and number of linkups is 1. There are 3 cases when we find a file with overlay.nlinkup: - just one number: nothing to do - two numbers and second number == st_nlink: replace with just the linkup value - two numbers and second number != st_nlink: replace with decremented linkup value So the atomicity is guaranteed by st_nlink becoming in sync with the target value. Would need to ensure that ovl_link() is not performed in parallel with the linkup procedure. Thanks, Miklos - power fai overlay.nlinkup -- To unsubscribe from this list: send the line "unsubscribe linux-unionfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html