\r
memset(bc, 0, sizeof(struct ext4_bcache));\r
\r
- bc->refctr = malloc(cnt * sizeof(uint32_t));\r
- if(!bc->refctr)\r
- goto error;\r
-\r
- bc->lru_id = malloc(cnt * sizeof(uint32_t));\r
- if(!bc->lru_id)\r
- goto error;\r
-\r
- bc->free_delay = malloc(cnt * sizeof(uint8_t));\r
- if(!bc->free_delay)\r
- goto error;\r
-\r
- bc->lba = malloc(cnt * sizeof(uint64_t));\r
- if(!bc->lba)\r
- goto error;\r
-\r
bc->data = malloc(cnt * itemsize);\r
if(!bc->data)\r
goto error;\r
\r
- memset(bc->refctr, 0, cnt * sizeof(uint32_t));\r
- memset(bc->lru_id, 0, cnt * sizeof(uint32_t));\r
- memset(bc->free_delay, 0, cnt * sizeof(uint8_t));\r
- memset(bc->lba, 0, cnt * sizeof(uint64_t));\r
-\r
bc->cnt = cnt;\r
bc->itemsize = itemsize;\r
bc->ref_blocks = 0;\r
\r
error:\r
\r
- if(bc->refctr)\r
- free(bc->refctr);\r
-\r
- if(bc->lru_id)\r
- free(bc->lru_id);\r
-\r
- if(bc->free_delay)\r
- free(bc->free_delay);\r
-\r
- if(bc->lba)\r
- free(bc->lba);\r
-\r
if(bc->data)\r
free(bc->data);\r
\r
\r
int ext4_bcache_fini_dynamic(struct ext4_bcache *bc)\r
{\r
- if(bc->refctr)\r
- free(bc->refctr);\r
-\r
- if(bc->lru_id)\r
- free(bc->lru_id);\r
-\r
- if(bc->free_delay)\r
- free(bc->free_delay);\r
-\r
- if(bc->lba)\r
- free(bc->lba);\r
-\r
if(bc->data)\r
free(bc->data);\r
\r