]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: always share min of projected, actual max_size
authorSage Weil <sage@newdream.net>
Fri, 17 Jul 2009 22:18:53 +0000 (15:18 -0700)
committerSage Weil <sage@newdream.net>
Mon, 20 Jul 2009 18:03:51 +0000 (11:03 -0700)
src/mds/CInode.cc

index ac7e3faa1a7e9ee7f28b98810dd1690a0a048bd0..5e062055a66344603105c768b894f96f8b0cbcd6 100644 (file)
@@ -1540,16 +1540,16 @@ bool CInode::encode_inodestat(bufferlist& bl, Session *session,
   i = pfile ? pi:oi;
   e.layout = i->layout;
   e.size = i->size;
-  if (i->client_ranges.count(client))
-    e.max_size = i->client_ranges[client].last;
-  else
-    e.max_size = 0;
   e.truncate_seq = i->truncate_seq;
   e.truncate_size = i->truncate_size;
   i->mtime.encode_timeval(&e.mtime);
   i->atime.encode_timeval(&e.atime);
   e.time_warp_seq = i->time_warp_seq;
 
+  // max_size is min of projected, actual
+  e.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);
+
   e.files = i->dirstat.nfiles;
   e.subdirs = i->dirstat.nsubdirs;
   i->rstat.rctime.encode_timeval(&e.rctime);
@@ -1679,16 +1679,16 @@ void CInode::encode_cap_message(MClientCaps *m, Capability *cap)
   i = pfile ? pi:oi;
   m->head.layout = i->layout;
   m->head.size = i->size;
-  if (i->client_ranges.count(client))
-    m->head.max_size = i->client_ranges[client].last;
-  else
-    m->head.max_size = 0;
   m->head.truncate_seq = i->truncate_seq;
   m->head.truncate_size = i->truncate_size;
   i->mtime.encode_timeval(&m->head.mtime);
   i->atime.encode_timeval(&m->head.atime);
   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);
+
   i = pauth ? pi:oi;
   m->head.mode = i->mode;
   m->head.uid = i->uid;