]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fix FP error in ROUND_UP_TO
authorJohn Spray <john.spray@redhat.com>
Tue, 26 Aug 2014 16:36:16 +0000 (17:36 +0100)
committerSage Weil <sage@redhat.com>
Thu, 28 Aug 2014 00:32:26 +0000 (17:32 -0700)
Explicitly handle case where denominator is 0, instead of
passing into ROUND_UP_TO.

Regression from 9449520b121fc6ce0c64948386d4ff77f46f4f5f

Signed-off-by: John Spray <john.spray@redhat.com>
(cherry picked from commit bf3e4835dabc057982def1b5c9a6499c04ac5312)

src/mds/Locker.cc

index e5fe00c2a679404daef2c31d1cb1378c5cd82cea..74305b9cbf639d450b48b730bdfdc38308a141f1 100644 (file)
@@ -2062,7 +2062,13 @@ public:
 void Locker::calc_new_client_ranges(CInode *in, uint64_t size, map<client_t,client_writeable_range_t>& 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.