From: Sage Weil Date: Thu, 12 Nov 2009 23:12:18 +0000 (-0800) Subject: todo X-Git-Tag: v0.18~121^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=35e68924d13250bcfef0ec967e23b7bfd3134f68;p=ceph.git todo --- diff --git a/src/TODO b/src/TODO index cf586df8cd19..d00674663add 100644 --- a/src/TODO +++ b/src/TODO @@ -50,7 +50,9 @@ v0.18 - selectable crush hash function(s) - mds restart bug fixes - kclient mds reconnect bug fixes - +- fixed mds log trimming bug +- fixed mds cap vs snap deadlock +- filestore faster flushing - mount btrfs by UUID? @@ -67,10 +69,9 @@ v0.18 pending wire, disk format changes bugs -- rados needs to check for -p for lots of arguments (currently seg faults on say ./rados mksnap foo) -- rados: fix usage, it's -p, not -P -- kclient cap reconnect on mds restart -- zeros in pg log, followed by valid data. +- mds rstat bug (on 2* cp -av usr + 11_kernel_untar_build) +mds/CInode.cc: In function 'virtual void CInode::finish_scatter_gather_update(int)': +mds/CInode.cc:1233: FAILED assert(pi->rstat.rfiles >= 0) - mislinked directory? - premature filejournal trimming? - weird osd_lock contention during osd restart? diff --git a/src/include/Context.h b/src/include/Context.h index bb2eec134490..f3024f87711c 100644 --- a/src/include/Context.h +++ b/src/include/Context.h @@ -122,11 +122,12 @@ private: int num; bool any; /* if true, OR, otherwise, AND */ - bool sub_finish(int num, int r) { - //cout << "C_Gather sub_finish " << this << " got " << r << " of " << waitfor << endl; + bool sub_finish(void *sub, int num, int r) { assert(waitfor.count(num)); waitfor.erase(num); + //generic_dout(0) << this << ".sub_finish(r=" << r << ") " << sub << " " << num << " of " << waitfor << dendl; + if (r < 0 && result == 0) result = r; @@ -154,7 +155,7 @@ private: public: C_GatherSub(C_Gather *g, int n) : gather(g), num(n) {} void finish(int r) { - if (gather->sub_finish(num, r)) { + if (gather->sub_finish((void *)this, num, r)) { delete gather; // last one! gather = 0; } @@ -181,7 +182,9 @@ public: Context *new_sub() { num++; waitfor.insert(num); - return new C_GatherSub(this, num); + Context *s = new C_GatherSub(this, num); + //generic_dout(0) << this << ".new_sub " << num << " " << s << dendl; + return s; } void rm_sub(int n) { num--;