]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: only increase file_max if filelock is wrlockable
authorSage Weil <sage@newdream.net>
Tue, 8 Apr 2008 02:48:19 +0000 (19:48 -0700)
committerSage Weil <sage@newdream.net>
Tue, 8 Apr 2008 02:48:19 +0000 (19:48 -0700)
src/TODO
src/mds/Locker.cc

index 622524cd4fa094b0b226f63b843f4100f3a30da3..bf18261431429ca4f37a3f6b4a9c73ff1b3eddae 100644 (file)
--- a/src/TODO
+++ b/src/TODO
@@ -16,6 +16,8 @@ userspace client
 - reference count lease validations on path lookup?
 
 kernel client
+- file_data_version stuff!
+- deal with CAP_RDCACHE properly: invalidate cache pages?
 - trim expired leases so we don't indefinitely hold dcache/icache refs...
 - apply_truncate needs to truncate page cache, or something?
 - procfs/debugfs
@@ -27,11 +29,7 @@ kernel client
 - vfs
  - can we use dentry_path(), if it gets merged into mainline?
 - io / osd client
-  - carry wrbuffer/rdcache caps until data is flushed
-    - this should make the utimes bit kick in
-    - invalidate cache pages?
   - kick requests when new map arrives
-  - capability changes (flush.. need way to initiate/block on writeback initiated by mds)
   - osd ack vs commit handling.  hmm!
 - mon client
   - work out message resend logic..?
index 868ace123a02d387d81148acb0043fa1d3f33e53..d5001ff31abe117795e8dc308ef67afaf24d32eb 100644 (file)
@@ -904,7 +904,8 @@ void Locker::handle_client_file_caps(MClientFileCaps *m)
   bool increase_max = false;
   int64_t inc = in->get_layout_size_increment();
   if ((wanted & (CEPH_CAP_WR|CEPH_CAP_WRBUFFER|CEPH_CAP_WREXTEND)) &&
-      size + inc > latest->max_size) {
+      size + inc > latest->max_size &&
+      in->filelock.can_wrlock()) {
     dout(10) << "hey, wr caps wanted, and size " << size
             << " > max " << latest->max_size << " *2, increasing" << dendl;
     increase_max = true;