- 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?
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?
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;
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;
}
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--;