From bf3e4835dabc057982def1b5c9a6499c04ac5312 Mon Sep 17 00:00:00 2001 From: John Spray Date: Tue, 26 Aug 2014 17:36:16 +0100 Subject: [PATCH] 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 --- src/mds/Locker.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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. -- 2.47.3