From: Sage Weil Date: Wed, 28 Apr 2010 20:42:50 +0000 (-0700) Subject: mds: clean up MIN/MAX, client_ranges X-Git-Tag: v0.22~607 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3a9439caa9e46d21f98996ff56d1e83c9bafbe98;p=ceph.git mds: clean up MIN/MAX, client_ranges Avoid double evaluation via macros... --- diff --git a/src/mds/CDir.cc b/src/mds/CDir.cc index 88d6d20571f3..8de3e5fd64d0 100644 --- a/src/mds/CDir.cc +++ b/src/mds/CDir.cc @@ -753,8 +753,11 @@ void CDir::merge(int bits, list& waiters, bool replay) // merge replica map for (map::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); diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc index 911a3531be13..c077663e0502 100644 --- a/src/mds/CInode.cc +++ b/src/mds/CInode.cc @@ -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; diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index c39968be77c6..9b7e6cc460ce 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -1448,6 +1448,7 @@ public: void Locker::calc_new_client_ranges(CInode *in, __u64 size, map& 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, mapsecond->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; } } diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index 8b72a9d64f5a..4eb4beeb71af 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -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)