td_image_t * tapdisk_image_allocate(const char *file, int type, td_flag_t flags) { int err; td_image_t *image; image = calloc(1, sizeof(td_image_t)); if (!image) return NULL; err = tapdisk_namedup(&image->name, file); if (err) { free(image); return NULL; } image->type = type; image->flags = flags; INIT_LIST_HEAD(&image->next); return image; }
static int lcache_open(td_driver_t * driver, const char *name, td_flag_t flags) { td_lcache_t *cache = driver->data; int err; err = tapdisk_namedup(&cache->name, (char *) name); if (err) goto fail; err = lcache_create_buffers(cache); if (err) goto fail; timerclear(&cache->ts); cache->wr_en = 1; return 0; fail: lcache_close(driver); return err; }