You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							29 lines
						
					
					
						
							887 B
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							29 lines
						
					
					
						
							887 B
						
					
					
				| package mount | |
| 
 | |
| import ( | |
| 	"github.com/hanwen/go-fuse/v2/fuse" | |
| 	"github.com/seaweedfs/seaweedfs/weed/pb/filer_pb" | |
| 	"github.com/seaweedfs/seaweedfs/weed/util" | |
| ) | |
| 
 | |
| func (wfs *WFS) AcquireHandle(inode uint64, flags, uid, gid uint32) (fileHandle *FileHandle, status fuse.Status) { | |
| 	var entry *filer_pb.Entry | |
| 	var path util.FullPath | |
| 	path, _, entry, status = wfs.maybeReadEntry(inode) | |
| 	if status == fuse.OK { | |
| 		if wormEnforced, _ := wfs.wormEnforcedForEntry(path, entry); wormEnforced && flags&fuse.O_ANYWRITE != 0 { | |
| 			return nil, fuse.EPERM | |
| 		} | |
| 		// need to AcquireFileHandle again to ensure correct handle counter | |
| 		fileHandle = wfs.fhMap.AcquireFileHandle(wfs, inode, entry) | |
| 	} | |
| 	return | |
| } | |
| 
 | |
| func (wfs *WFS) ReleaseHandle(handleId FileHandleId) { | |
| 	wfs.fhMap.ReleaseByHandle(handleId) | |
| } | |
| 
 | |
| func (wfs *WFS) GetHandle(handleId FileHandleId) *FileHandle { | |
| 	return wfs.fhMap.GetFileHandle(handleId) | |
| }
 |