Пример #1
0
void testMount() {
   printf("testing tfs_mount\n");

   printf("non-existant file\n");
   REQUIRE_EQ(tfs_mount(FILE_NOT_EXISTS), TFS_EACCESS);

   printf("valid file\n");
   REQUIRE_EQ(tfs_mount(FILE_VALID), TFS_SUCCESS);
   tfs_unmount();

   printf("valid file, then non-existant file\n");
   REQUIRE_EQ(tfs_mount(FILE_VALID), TFS_SUCCESS);
   REQUIRE_EQ(tfs_mount(FILE_NOT_EXISTS), TFS_EONEFS);
   tfs_unmount();

   printf("valid file, then valid file\n");
   REQUIRE_EQ(tfs_mount(FILE_VALID), TFS_SUCCESS);
   REQUIRE_EQ(tfs_mount(FILE_VALID), TFS_EONEFS);
   tfs_unmount();

   printf("invalid file\n");
   REQUIRE_EQ(tfs_mount(FILE_INVALID), TFS_ENOTFS);

   printf("invalid file, then valid file\n");
   REQUIRE_EQ(tfs_mount(FILE_INVALID), TFS_ENOTFS);
   REQUIRE_EQ(tfs_mount(FILE_VALID), TFS_SUCCESS);
   tfs_unmount();
}
Пример #2
0
void wrapTest(void (*test)()) {
   REQUIRE_EQ(tfs_mkfs(DEFAULT_DISK_NAME, DEFAULT_DISK_SIZE), TFS_SUCCESS);
   REQUIRE_EQ(tfs_mount(DEFAULT_DISK_NAME), TFS_SUCCESS);

   test();

   REQUIRE_EQ(tfs_unmount(), TFS_SUCCESS);
}
Пример #3
0
int squash(Buffer * buf) {
   int num;
   for (num = 0; num < buf->nBufferBlocks; num++) {
      if (buf->pin[num] == 1) {
         unPinPage(buf, buf->pages[num].address);
      }
      if (buf->dirty[num] == 1) {
         flushPage(buf, buf->pages[num].address);
      }
   }

   free(buf->database);
   free(buf->pages);
   free(buf->cache);
   free(buf->buffer_timestamp);
   free(buf->cache_timestamp);
   free(buf->pin);
   free(buf->dirty);
   free(buf->volatileFDs);
   free(buf->persistentFDs);
   free(buf);

   return tfs_unmount();
}
Пример #4
0
int tfs_mount(char *filename) {
	int i, diskNum;

	if (disk_mount)
		tfs_unmount();

	char buff[BLOCKSIZE];
	
	diskNum = openDisk(filename, 0);
	if (diskNum < 0)
		return ERR_BADFS;

	readBlock(diskNum, 0, buff);

	if (buff[1] != 0x45)   
		return ERR_BADFS;

	disk_mount = filename;

        if(DEBUG)
            printf("Mounted disk %s\n",disk_mount);
        close(diskNum);
	return 1;
}
Пример #5
0
void testMountAndUnmount() {
   printf("testing tfs_mount and tfs_unmount\n");

   printf("valid file, unmount, non-existant file, unmount\n");
   REQUIRE_EQ(tfs_mount(FILE_VALID), TFS_SUCCESS);
   REQUIRE_EQ(tfs_unmount(), TFS_SUCCESS);
   REQUIRE_EQ(tfs_mount(FILE_NOT_EXISTS), TFS_EACCESS);
   REQUIRE_EQ(tfs_unmount(), TFS_ENOFS);

   printf("valid file, unmount, invalid file, unmount\n");
   REQUIRE_EQ(tfs_mount(FILE_VALID), TFS_SUCCESS);
   REQUIRE_EQ(tfs_unmount(), TFS_SUCCESS);
   REQUIRE_EQ(tfs_mount(FILE_INVALID), TFS_ENOTFS);
   REQUIRE_EQ(tfs_unmount(), TFS_ENOFS);

   printf("valid file, unmount, valid file, unmount\n");
   REQUIRE_EQ(tfs_mount(FILE_VALID), TFS_SUCCESS);
   REQUIRE_EQ(tfs_unmount(), TFS_SUCCESS);
   REQUIRE_EQ(tfs_mount(FILE_VALID), TFS_SUCCESS);
   REQUIRE_EQ(tfs_unmount(), TFS_SUCCESS);
}