From mboxrd@z Thu Jan 1 00:00:00 1970 From: rmccabe@sourceware.org Date: 9 Mar 2007 04:17:57 -0000 Subject: [Cluster-devel] conga/ricci/modules/storage parted_wrapper.cpp Message-ID: <20070309041757.26338.qmail@sourceware.org> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit CVSROOT: /cvs/cluster Module name: conga Branch: RHEL4 Changes by: rmccabe at sourceware.org 2007-03-09 04:17:56 Modified files: ricci/modules/storage: parted_wrapper.cpp Log message: work around parted brain damage (it uses "new," 10^n" $prefixbytes) Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/conga/ricci/modules/storage/parted_wrapper.cpp.diff?cvsroot=cluster&only_with_tag=RHEL4&r1=1.8&r2=1.8.4.1 --- conga/ricci/modules/storage/parted_wrapper.cpp 2006/10/06 03:10:13 1.8 +++ conga/ricci/modules/storage/parted_wrapper.cpp 2007/03/09 04:17:56 1.8.4.1 @@ -594,8 +594,8 @@ long long bbb; list parts = plain_partitions(pt_path, aaa, bbb); - seg_begin = seg_begin / 1024 / 1024; - long long seg_end = seg_begin + size / 1024 / 1024; + seg_begin = seg_begin / 1000000; + long long seg_end = seg_begin + size / 1000000; vector args; args.push_back("-s"); @@ -663,20 +663,21 @@ { String s = utils::to_lower(utils::strip(size_str)); long long multiplier; + // parted defines 1KB as 1000 bytes. if (s.find("b") == s.npos) - multiplier = 1024 * 1024; // by old parted behavior, size is in MB + multiplier = 1000000; // by old parted behavior, size is in MB else { if (s.size() < 3) throw String("parted size has an invalid value: ") + s; multiplier = 1; if (s[s.size()-2] == 'k') - multiplier = 1024; + multiplier = 1000; else if (s[s.size()-2] == 'm') - multiplier = 1024 * 1024; + multiplier = 1000000; else if (s[s.size()-2] == 'g') - multiplier = 1024 * 1024 * 1024; + multiplier = 1000000000; else if (s[s.size()-2] == 't') - multiplier = 1024 * 1024 * 1024 * 1024; + multiplier = 1000000000000; } return (long long) utils::to_float(s) * multiplier;