From 59cc2e482073cb5171a811f607bcb3eccaac2b36 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 25 Mar 2008 10:31:48 -0700 Subject: [PATCH] client: observe dn mask in reply --- src/TODO | 3 +-- src/client/Client.cc | 8 ++++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/TODO b/src/TODO index 5265338c84763..313970a3a0b51 100644 --- a/src/TODO +++ b/src/TODO @@ -10,12 +10,11 @@ client leases - esp on client.. keep mask/ttl and onetime_mask/onetime_ttl? /- time out on mds - dual-mode? short vs long lease lrus, depending on some simple heuristic... - - kick affected locks + - kick affected locks on release - client: preemptively release lease on dentry we are unlinking, renaming from/to, etc. - or inode fields we are chmodding, etc. - rework reply trace to allow negative dentries... maybe hard links... - mds: implement release handler -- client: look at dn mask kernel client diff --git a/src/client/Client.cc b/src/client/Client.cc index a383855ab5492..e3609408f7f81 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -461,6 +461,7 @@ Inode* Client::insert_trace(MClientReply *reply, utime_t ttl) dout(10) << "insert_trace got " << reply->get_trace_in().size() << " inodes" << dendl; list::const_iterator pdn = reply->get_trace_dn().begin(); + list::const_iterator pdnmask = reply->get_trace_dn_mask().begin(); list::const_iterator pdir = reply->get_trace_dir().begin(); for (list::const_iterator pin = reply->get_trace_in().begin(); @@ -485,13 +486,16 @@ Inode* Client::insert_trace(MClientReply *reply, utime_t ttl) assert(pdn != reply->get_trace_dn().end()); cur = this->insert_inode(dir, *pin, *pdn, ttl); dout(10) << "insert_trace dn " << *pdn << " ino " << (*pin)->inode.ino << " -> " << cur << dendl; - ++pdn; // touch dn if (cur->dn) { lru.lru_touch(cur->dn); - cur->dn->ttl = ttl; + if (*pdnmask) + cur->dn->ttl = ttl; } + + ++pdn; + ++pdnmask; } // update dir dist info -- 2.39.5