From 0d95a0db3ec1af3cbf7ff3174dc677714568e81c Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 31 Jan 2008 12:01:31 -0800 Subject: [PATCH] mds: dont force journal flush on every op; mdlog+journaler are smart enough to detect waiters --- src/TODO | 38 ++++++-------------------------------- src/mds/MDS.cc | 2 +- 2 files changed, 7 insertions(+), 33 deletions(-) diff --git a/src/TODO b/src/TODO index 7b3c0740546c6..72f90388a401e 100644 --- a/src/TODO +++ b/src/TODO @@ -17,8 +17,6 @@ code cleanup - probably kill base case in encoder.h, replace with int types, with appropriate swabbing - specify word size in all encoded structures - - kernel client - some bugs - open path needs to call fill_trace/fill_inode such that ci->i_max_size gets filled in @@ -125,9 +123,7 @@ mds - and dir sizes, if i add that... also on rejoin? - efficient stat for single writers -- lstat vs stat? - add FILE_CAP_EXTEND capability bit -- delayed replica caps release... we need to set a timer event? (and cancel it when appropriate?) client @@ -150,6 +146,11 @@ journaler - need to truncate at detected (valid) write_pos to clear out any other partial trailing writes +fsck +- fsck.ebofs +- online mds fsck? + + rados snapshots @@ -222,6 +223,7 @@ messenger - fix messenger shutdown.. we shouldn't delete messenger, since the caller may be referencing it, etc. simplemessenger +- fix/audit accept() logic to detect reset, do callback - close idle connections - take a look at RDS? http://oss.oracle.com/projects/rds/ @@ -287,31 +289,3 @@ ebofs remaining hard problems - how to cope with file size changes and read/write sharing - - - - - - - - - - - - -why qsync could be wrong (for very strict POSIX) : varying mds -> client message transit or processing times. -- mds -> 1,2 : qsync -- client1 writes at byte 100 -- client1 -> mds : qsync reply (size=100) -- client1 writes at byte 300 -- client1 -> client2 (outside channel) -- client2 writes at byte 200 -- client2 -> mds : qsync reply (size=200) --> stat results in size 200, even though at no single point in time was the max size 500. --> for correct result, need to _stop_ client writers while gathering metadata. - - -- dump active config in run output somewhere - - - diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc index 1b8448432a599..418d520d16f59 100644 --- a/src/mds/MDS.cc +++ b/src/mds/MDS.cc @@ -1136,7 +1136,7 @@ void MDS::_dispatch(Message *m) // HACK FOR NOW if (is_active() || is_stopping()) { // flush log to disk after every op. for now. - mdlog->flush(); + //mdlog->flush(); // trim cache mdcache->trim(); -- 2.39.5