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.
		
		
		
		
		
			
		
			
				
					
					
						
							44 lines
						
					
					
						
							1.4 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							44 lines
						
					
					
						
							1.4 KiB
						
					
					
				| package storage | |
| 
 | |
| import ( | |
| 	"fmt" | |
| 	"strconv" | |
| 
 | |
| 	"github.com/chrislusf/weed-fs/go/glog" | |
| ) | |
| 
 | |
| func (s *Store) CheckCompactVolume(volumeIdString string, garbageThresholdString string) (error, bool) { | |
| 	vid, err := NewVolumeId(volumeIdString) | |
| 	if err != nil { | |
| 		return fmt.Errorf("Volume Id %s is not a valid unsigned integer!", volumeIdString), false | |
| 	} | |
| 	garbageThreshold, e := strconv.ParseFloat(garbageThresholdString, 32) | |
| 	if e != nil { | |
| 		return fmt.Errorf("garbageThreshold %s is not a valid float number!", garbageThresholdString), false | |
| 	} | |
| 	if v := s.findVolume(vid); v != nil { | |
| 		glog.V(3).Infoln(vid, "garbage level is", v.garbageLevel()) | |
| 		return nil, garbageThreshold < v.garbageLevel() | |
| 	} | |
| 	return fmt.Errorf("volume id %d is not found during check compact!", vid), false | |
| } | |
| func (s *Store) CompactVolume(volumeIdString string) error { | |
| 	vid, err := NewVolumeId(volumeIdString) | |
| 	if err != nil { | |
| 		return fmt.Errorf("Volume Id %s is not a valid unsigned integer!", volumeIdString) | |
| 	} | |
| 	if v := s.findVolume(vid); v != nil { | |
| 		return v.Compact() | |
| 	} | |
| 	return fmt.Errorf("volume id %d is not found during compact!", vid) | |
| } | |
| func (s *Store) CommitCompactVolume(volumeIdString string) error { | |
| 	vid, err := NewVolumeId(volumeIdString) | |
| 	if err != nil { | |
| 		return fmt.Errorf("Volume Id %s is not a valid unsigned integer!", volumeIdString) | |
| 	} | |
| 	if v := s.findVolume(vid); v != nil { | |
| 		return v.commitCompact() | |
| 	} | |
| 	return fmt.Errorf("volume id %d is not found during commit compact!", vid) | |
| }
 |