mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	devmapper: use RAMInBytes() rather than FromHumanSize()
Device Mapper needs device sizes in binary (1024) multiples. Otherwise kernel checks can find that the specified thin-pool device sizes aren't a multiple of the specified thin-pool blocksize. The name for "RAMInBytes" is likely too narrow given the new consumers but... Also add "tebibyte" support to RAMInBytes. Docker-DCO-1.1-Signed-off-by: Mike Snitzer <snitzer@redhat.com> (github: snitm)
This commit is contained in:
		
							parent
							
								
									d420134fa2
								
							
						
					
					
						commit
						2470a5ed99
					
				
					 3 changed files with 11 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -58,11 +58,11 @@ func FromHumanSize(size string) (int64, error) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
// Parses a human-readable string representing an amount of RAM
 | 
			
		||||
// in bytes, kibibytes, mebibytes or gibibytes, and returns the
 | 
			
		||||
// number of bytes, or -1 if the string is unparseable.
 | 
			
		||||
// in bytes, kibibytes, mebibytes, gibibytes, or tebibytes and
 | 
			
		||||
// returns the number of bytes, or -1 if the string is unparseable.
 | 
			
		||||
// Units are case-insensitive, and the 'b' suffix is optional.
 | 
			
		||||
func RAMInBytes(size string) (bytes int64, err error) {
 | 
			
		||||
	re, error := regexp.Compile("^(\\d+)([kKmMgG])?[bB]?$")
 | 
			
		||||
	re, error := regexp.Compile("^(\\d+)([kKmMgGtT])?[bB]?$")
 | 
			
		||||
	if error != nil {
 | 
			
		||||
		return -1, error
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -86,6 +86,8 @@ func RAMInBytes(size string) (bytes int64, err error) {
 | 
			
		|||
		memLimit *= 1024 * 1024
 | 
			
		||||
	} else if unit == "g" {
 | 
			
		||||
		memLimit *= 1024 * 1024 * 1024
 | 
			
		||||
	} else if unit == "t" {
 | 
			
		||||
		memLimit *= 1024 * 1024 * 1024 * 1024
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return memLimit, nil
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -64,7 +64,10 @@ func TestRAMInBytes(t *testing.T) {
 | 
			
		|||
	assertRAMInBytes(t, "32kb", false, 32*1024)
 | 
			
		||||
	assertRAMInBytes(t, "32Kb", false, 32*1024)
 | 
			
		||||
	assertRAMInBytes(t, "32Mb", false, 32*1024*1024)
 | 
			
		||||
	assertRAMInBytes(t, "32MB", false, 32*1024*1024)
 | 
			
		||||
	assertRAMInBytes(t, "32Gb", false, 32*1024*1024*1024)
 | 
			
		||||
	assertRAMInBytes(t, "32G", false, 32*1024*1024*1024)
 | 
			
		||||
	assertRAMInBytes(t, "32Tb", false, 32*1024*1024*1024*1024)
 | 
			
		||||
 | 
			
		||||
	assertRAMInBytes(t, "", true, -1)
 | 
			
		||||
	assertRAMInBytes(t, "hello", true, -1)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue