]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: clean up MIN/MAX, client_ranges
authorSage Weil <sage@newdream.net>
Wed, 28 Apr 2010 20:42:50 +0000 (13:42 -0700)
committerSage Weil <sage@newdream.net>
Thu, 29 Apr 2010 21:28:51 +0000 (14:28 -0700)
Avoid double evaluation via macros...

src/mds/CDir.cc
src/mds/CInode.cc
src/mds/Locker.cc
src/mds/MDCache.cc

index 88d6d20571f34b60b67eff82a96afc64b910a748..8de3e5fd64d0705361721482bca500a2d3f95899 100644 (file)
@@ -753,8 +753,11 @@ void CDir::merge(int bits, list<Context*>& waiters, bool replay)
     // merge replica map
     for (map<int,int>::iterator p = dir->replica_map.begin();
         p != dir->replica_map.end();
-        ++p) 
-      replica_map[p->first] = MAX(replica_map[p->first], p->second);
+        ++p) {
+      int cur = replica_map[p->first];
+      if (p->second > cur)
+       replica_map[p->first] = p->second;
+    }
     
     // merge state
     state_set(dir->get_state() & MASK_STATE_FRAGMENT_KEPT);
index 911a3531be13ff628ed852ed9234100eb3dcf357..c077663e0502300366044072f659a800cad9d71a 100644 (file)
@@ -1827,8 +1827,9 @@ void CInode::encode_cap_message(MClientCaps *m, Capability *cap)
   m->head.time_warp_seq = i->time_warp_seq;
 
   // max_size is min of projected, actual.
-  m->head.max_size = MIN(oi->client_ranges.count(client) ? oi->client_ranges[client].last : 0,
-                        pi->client_ranges.count(client) ? pi->client_ranges[client].last : 0);
+  __u64 oldms = oi->client_ranges.count(client) ? oi->client_ranges[client].last : 0;
+  __u64 newms = pi->client_ranges.count(client) ? pi->client_ranges[client].last : 0;
+  m->head.max_size = MIN(oldms, newms);
 
   i = pauth ? pi:oi;
   m->head.mode = i->mode;
index c39968be77c6960c5f6329a99ce09d31dc2c3b0a..9b7e6cc460ce3569388f2c68aa72ee6da44a5b0d 100644 (file)
@@ -1448,6 +1448,7 @@ public:
 void Locker::calc_new_client_ranges(CInode *in, __u64 size, map<client_t,byte_range_t>& new_ranges)
 {
   inode_t *latest = in->get_projected_inode();
+  __u64 ms = ROUND_UP_TO((size+1)<<1, latest->get_layout_size_increment());
 
   // increase ranges as appropriate.
   // shrink to 0 if no WR|BUFFER caps issued.
@@ -1456,11 +1457,11 @@ void Locker::calc_new_client_ranges(CInode *in, __u64 size, map<client_t,byte_ra
        p++) {
     if ((p->second->issued() | p->second->wanted()) & (CEPH_CAP_FILE_WR|CEPH_CAP_FILE_BUFFER)) {
       new_ranges[p->first].first = 0;
-      if (latest->client_ranges.count(p->first))
-       new_ranges[p->first].last = MAX(ROUND_UP_TO((size+1)<<1, latest->get_layout_size_increment()),
-                                       latest->client_ranges[p->first].last);
-      else
-       new_ranges[p->first].last = ROUND_UP_TO((size+1)<<1, latest->get_layout_size_increment());
+      if (latest->client_ranges.count(p->first)) {
+       __u64 last = latest->client_ranges[p->first].last;
+       new_ranges[p->first].last = MAX(ms, last);
+      else
+       new_ranges[p->first].last = ms;
     }
   }
 
index 8b72a9d64f5ad4e7296ea10345609a7a5e17a0d5..4eb4beeb71af41a436f1452c949f9c17ad4ba8fe 100644 (file)
@@ -7019,7 +7019,8 @@ void MDCache::purge_stray(CDentry *dn)
   }
 
   __u64 period = in->inode.layout.fl_object_size * in->inode.layout.fl_stripe_count;
-  __u64 to = MAX(in->inode.size, in->inode.get_max_size());
+  __u64 cur_max_size = in->inode.get_max_size();
+  __u64 to = MAX(in->inode.size, cur_max_size);
   __u64 num = (to + period - 1) / period;
   dout(10) << "purge_stray 0~" << to << " objects 0~" << num << " snapc " << snapc << " on " << *in << dendl;
   if (to)