| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -92,8 +92,7 @@ _rename_create_path(const Policy::Search &searchPolicy_, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  for(auto &branch : *branches_) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      newfullpath  = branch.path; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      newfullpath += newfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      newfullpath = branch.path / newfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      if(!::_contains(oldbranches,branch.path)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        { | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -101,8 +100,7 @@ _rename_create_path(const Policy::Search &searchPolicy_, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          continue; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      oldfullpath  = branch.path; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      oldfullpath += oldfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      oldfullpath = branch.path / oldfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      rv = fs::rename(oldfullpath,newfullpath); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      if(rv < 0) | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -146,8 +144,7 @@ _rename_preserve_path(const Policy::Action &actionPolicy_, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  success = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  for(auto &branch : *branches_) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      newfullpath  = branch.path; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      newfullpath += newfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      newfullpath = branch.path / newfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      if(!::_contains(oldbranches,branch.path)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        { | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -155,8 +152,7 @@ _rename_preserve_path(const Policy::Action &actionPolicy_, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          continue; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      oldfullpath  = branch.path; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      oldfullpath += oldfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      oldfullpath = branch.path / oldfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      rv = fs::rename(oldfullpath,newfullpath); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      if(rv < 0) | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -189,10 +185,10 @@ _rename_exdev_rename_back(const std::vector<Branch*> &branches_, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      oldpath  = branch->path; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      oldpath /= ".mergerfs_rename_exdev"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      oldpath += oldfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      oldpath /= oldfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      newpath  = branch->path; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      newpath += oldfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      newpath /= oldfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      fs::rename(oldpath,newpath); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -207,7 +203,7 @@ _rename_exdev_rename_target(const Policy::Action &actionPolicy_, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  int rv; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  fs::path clonesrc; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  fs::path clonetgt; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  fs::path clonedst; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  rv = actionPolicy_(ibranches_,oldfusepath_,obranches_); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  if(rv < 0) | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -217,23 +213,23 @@ _rename_exdev_rename_target(const Policy::Action &actionPolicy_, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  for(auto &branch : obranches_) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      clonesrc  = branch->path; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      clonetgt  = branch->path; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      clonetgt /= ".mergerfs_rename_exdev"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      clonedst  = branch->path; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      clonedst /= ".mergerfs_rename_exdev"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      rv = fs::clonepath(clonesrc,clonetgt,oldfusepath_.parent_path()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      rv = fs::clonepath(clonesrc,clonedst,oldfusepath_.parent_path()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      if(rv == -ENOENT) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          fs::mkdir(clonetgt,01777); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          rv = fs::clonepath(clonesrc,clonetgt,oldfusepath_.parent_path()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          fs::mkdir(clonedst,01777); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					          rv = fs::clonepath(clonesrc,clonedst,oldfusepath_.parent_path()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      if(rv < 0) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        goto error; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      clonesrc += oldfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      clonetgt += oldfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      clonesrc /= oldfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      clonedst /= oldfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      rv = fs::rename(clonesrc,clonetgt); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      rv = fs::rename(clonesrc,clonedst); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      if(rv < 0) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        goto error; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -264,7 +260,7 @@ _rename_exdev_rel_symlink(const Policy::Action &actionPolicy_, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  linkpath  = newfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  target    = "/.mergerfs_rename_exdev"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  target   += oldfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  target   /= oldfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  target    = target.lexically_relative(linkpath.parent_path()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  rv = FUSE::symlink(target.c_str(),linkpath); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -294,7 +290,7 @@ _rename_exdev_abs_symlink(const Policy::Action &actionPolicy_, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  linkpath  = newfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  target    = mount_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  target   /= ".mergerfs_rename_exdev"; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  target   += oldfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  target   /= oldfusepath_; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  rv = FUSE::symlink(target.c_str(),linkpath); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  if(rv < 0) | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |