| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -150,13 +150,15 @@ func (fs *Filesystem) bind(from string, to string, flags int, u *user.User) erro
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if err := copyPathPermissions(fs.Root(), src); err != nil {
 | 
					 | 
					 | 
					 | 
						if err := copyPathPermissions(fs.Root(), src); err != nil {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							return fmt.Errorf("failed to copy path permissions for (%s): %v", src, err)
 | 
					 | 
					 | 
					 | 
							return fmt.Errorf("failed to copy path permissions for (%s): %v", src, err)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						fs.log.Info("bind mounting %s -> %s", src, to)
 | 
					 | 
					 | 
					 | 
						rolog := " "
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						mntflags := syscall.MS_NOSUID | syscall.MS_NODEV
 | 
					 | 
					 | 
					 | 
						mntflags := syscall.MS_NOSUID | syscall.MS_NODEV
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if flags&BindReadOnly != 0 {
 | 
					 | 
					 | 
					 | 
						if flags&BindReadOnly != 0 {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							mntflags |= syscall.MS_RDONLY
 | 
					 | 
					 | 
					 | 
							mntflags |= syscall.MS_RDONLY
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							rolog = "(as readonly) "
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} else {
 | 
					 | 
					 | 
					 | 
						} else {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							flags |= syscall.MS_NOEXEC
 | 
					 | 
					 | 
					 | 
							flags |= syscall.MS_NOEXEC
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						fs.log.Info("bind mounting %s%s -> %s", rolog, src, to)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						return bindMount(src, to, mntflags)
 | 
					 | 
					 | 
					 | 
						return bindMount(src, to, mntflags)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -170,6 +172,7 @@ func (fs *Filesystem) UnbindPath(to string) (error) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						// XXX
 | 
					 | 
					 | 
					 | 
						// XXX
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						fs.log.Info("unbinding %s", to)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if err := syscall.Unmount(to, syscall.MNT_DETACH/* | syscall.MNT_FORCE*/); err != nil {
 | 
					 | 
					 | 
					 | 
						if err := syscall.Unmount(to, syscall.MNT_DETACH/* | syscall.MNT_FORCE*/); err != nil {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							return err
 | 
					 | 
					 | 
					 | 
							return err
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |