diff 43166ed050b8eaf9205e57c6eded4807310c24b5 uncommitted --- a/sys/src/cmd/gefs/fs.c +++ b/sys/src/cmd/gefs/fs.c @@ -2353,8 +2353,8 @@ } assert(estacksz() == 0); epochend(id); - epochclean(); qunlock(&fs->mutlk); + epochclean(); if(a != nil) chsend(fs->admchan, a); @@ -2396,8 +2396,8 @@ bp = unpackbp(kv.v, kv.nv); freetree(bp, pred); qlock(&fs->mutlk); - epochclean(); qunlock(&fs->mutlk); + epochclean(); } } if(rb.gen > pred) @@ -2432,8 +2432,8 @@ if(bp.gen > t->pred) freebp(nil, bp); qlock(&fs->mutlk); - epochclean(); qunlock(&fs->mutlk); + epochclean(); } btexit(&s); freetree(t->bp, t->pred); @@ -2471,8 +2471,8 @@ if(am->halt) ainc(&fs->rdonly); - qlock(&fs->mutlk); for(i = 0; i < fs->narena; i++){ + qlock(&fs->mutlk); a = &fs->arenas[i]; qlock(a); if(a->nlog < a->reserve/(10*Blksz)){ @@ -2492,10 +2492,10 @@ compresslog(a); qunlock(a); epochend(id); + qunlock(&fs->mutlk); epochclean(); poperror(); } - qunlock(&fs->mutlk); sync(); for(i = 0; i < fs->narena; i++){ @@ -2507,8 +2507,8 @@ freeblk(nil, b); dropblk(b); epochend(id); - epochclean(); qunlock(&fs->mutlk); + epochclean(); } } @@ -2611,8 +2611,8 @@ epochstart(id); upsert(am->mnt, mb, nm); epochend(id); - epochclean(); qunlock(&fs->mutlk); + epochclean(); poperror(); nm = 0; }