#define CFILE_CAP_WRBUFFER 8
-struct CFile {
+class CFile {
+ public:
int client;
fileh_t fh; // file handle
int mode; // mode the file was opened in
long last_sent;
int confirmed_caps; // known to be client capabilities
long last_recv;
+
+ CFile() :
+ client(0),
+ fh(0),
+ mode(0),
+ pending_caps(0),
+ last_sent(0),
+ confirmed_caps(0),
+ last_recv(0) { }
};
// capability helper functions!
inline int file_mode_want_caps(int mode) {
- int wants;
+ int wants = 0;
if (mode == CFILE_MODE_W ) {
wants |= CFILE_CAP_WR | CFILE_CAP_WRBUFFER;
}
mds_logtype.add_inc("fw");
mds_logtype.add_inc("cfw");
- mds_logtype.add_set("cmax");
mds_logtype.add_set("c");
mds_logtype.add_set("ctop");
mds_logtype.add_set("cbot");
mds_logtype.add_set("nex");
mds_logtype.add_set("nim");
- mds->logger->set("cmax", lru.lru_get_max());
-
char n[80];
sprintf(n, "mds%d.cache", whoami);
if (!caps) return; // can't issue (yet), so wait!
// create fh
- CFile *f = new CFile;
+ CFile *f = new CFile();
f->mode = mode;
f->client = req->get_client();
f->fh = idalloc->get_id(ID_FH);
}
// serialize, unserialize
- //void _rope(crope& r);
- //void _unrope(crope& r, int& off);
void encode(bufferlist& blist);
void decode(bufferlist& blist);
#include <stdlib.h>
#include <stdio.h>
+#include <cassert>
#include "rush.h"
int deck[setSize];
int i, pick, t;
+ assert(nToDraw <= setSize);
+
for (i = 0; i < setSize; i++) {
deck[i] = i;
}
for (i = 0; i < nToDraw; i++) {
pick = (int)(RandomDouble () * (double)(setSize - i));
+ if (pick >= setSize-i) pick = setSize-i-1; // in case
+ // assert(i >= 0 && i < nToDraw);
+ // assert(pick >= 0 && pick < setSize);
vals[i] = deck[pick];
deck[pick] = deck[setSize-i-1];
}