From: John Spray Date: Tue, 26 Aug 2014 16:36:16 +0000 (+0100) Subject: mds: fix FP error in ROUND_UP_TO X-Git-Tag: v0.86~209^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bf3e4835dabc057982def1b5c9a6499c04ac5312;p=ceph.git mds: fix FP error in ROUND_UP_TO Explicitly handle case where denominator is 0, instead of passing into ROUND_UP_TO. Regression from 9449520b121fc6ce0c64948386d4ff77f46f4f5f Signed-off-by: John Spray --- diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index 391a3797b603..eb4eccf5e5bc 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -2119,7 +2119,13 @@ public: void Locker::calc_new_client_ranges(CInode *in, uint64_t size, map& new_ranges) { inode_t *latest = in->get_projected_inode(); - uint64_t ms = ROUND_UP_TO((size+1)<<1, latest->get_layout_size_increment()); + uint64_t ms; + if(latest->has_layout()) { + ms = ROUND_UP_TO((size+1)<<1, latest->get_layout_size_increment()); + } else { + // Layout-less directories like ~mds0/, have zero size + ms = 0; + } // increase ranges as appropriate. // shrink to 0 if no WR|BUFFER caps issued.