]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge commit 'gregskinny/unstable' into unstable
authorSage Weil <sage@newdream.net>
Wed, 1 Jul 2009 22:21:33 +0000 (15:21 -0700)
committerSage Weil <sage@newdream.net>
Wed, 1 Jul 2009 22:21:33 +0000 (15:21 -0700)
Conflicts:

src/client/Client.cc

1  2 
src/client/Client.cc
src/client/Client.h

index a536df21787eeb7af3c7de8a97f0dcccde4fefaa,400fe9bf83d135c2d4c69d264b6f3c5d1ad62f28..40f071e5281c80f2a50249d8fa3be5fd39121ab9
@@@ -1806,36 -1856,14 +1861,38 @@@ void Client::remove_all_caps(Inode *in
      remove_cap(in, in->caps.begin()->first);
  }
  
- void Client::remove_session_caps(int mds_num)
 -void Client::remove_session_caps(int mds_num) {
 -  if(mds_sessions.count(mds_num)) {
++void Client::remove_session_caps(int mds_num) 
 +{
-   MDSSession *mds = &mds_sessions[mds_num];
-   while (mds->caps.size())
-     remove_cap((*mds->caps.begin())->inode, mds_num);
++  if (mds_sessions.count(mds_num)) {
+     MDSSession* mds = &mds_sessions[mds_num];
+     while (mds->caps.size())
+       remove_cap((*mds->caps.begin())->inode, mds_num);
+   }
  }
  
 +void Client::trim_caps(int mds, int max)
 +{
 +  dout(10) << "trim_caps mds" << mds << " max" << max << dendl;
 +  MDSSession *s = &mds_sessions[mds];
 +
 +  int trimmed = 0;
 +  xlist<InodeCap*>::iterator p = s->caps.begin();
 +  while (s->caps.size() > max && !p.end()) {
 +    InodeCap *cap = *p;
 +    ++p;
 +    Inode *in = cap->inode;
 +    if (in->caps_used() ||
 +      in->caps_dirty()) {
 +      dout(20) << " keeping cap on " << *in << " used " << ccap_string(in->caps_used())
 +             << " dirty " << ccap_string(in->caps_dirty()) << dendl;
 +      continue;
 +    }
 +    dout(20) << " removing unused cap on " << *in << dendl;
 +    remove_cap(in, mds);
 +    trimmed++;
 +  }
 +}
 +
  void Client::mark_caps_dirty(Inode *in, int caps)
  {
    dout(10) << "mark_caps_dirty " << *in << " " << ccap_string(in->dirty_caps) << " -> "
Simple merge