int
main(int argc, char *argv[])
{
+ size_t newblocksize;
int wss, cs, n = 0, p;
#define ITER 3
/* Can the cache handle differently sized blocks? */
for(p = 1; p <= 3; p++) {
- curblocksize = PAGE_SIZE*p;
- lmfs_set_blocksize(curblocksize, MYMAJOR);
+ /* Do not update curblocksize until the cache is flushed. */
+ newblocksize = PAGE_SIZE*p;
+ lmfs_set_blocksize(newblocksize, MYMAJOR);
+ curblocksize = newblocksize; /* now it's safe to update */
lmfs_buf_pool(BLOCKS);
if(dotest(curblocksize, BLOCKS, ITER)) e(n);
n++;
for(wss = 2; wss <= 3; wss++) {
int wsblocks = 10*wss*wss*wss*wss*wss;
for(cs = wsblocks/4; cs <= wsblocks*3; cs *= 1.5) {
- curblocksize = PAGE_SIZE;
- lmfs_set_blocksize(curblocksize, MYMAJOR);
+ lmfs_set_blocksize(PAGE_SIZE, MYMAJOR);
+ curblocksize = PAGE_SIZE; /* same as above */
lmfs_buf_pool(cs);
if(dotest(curblocksize, wsblocks, ITER)) e(n);
n++;