Lines Matching refs:driver

22 	struct zpool_driver *driver;  member
36 void zpool_register_driver(struct zpool_driver *driver) in zpool_register_driver() argument
39 atomic_set(&driver->refcount, 0); in zpool_register_driver()
40 list_add(&driver->list, &drivers_head); in zpool_register_driver()
55 int zpool_unregister_driver(struct zpool_driver *driver) in zpool_unregister_driver() argument
60 refcount = atomic_read(&driver->refcount); in zpool_unregister_driver()
65 list_del(&driver->list); in zpool_unregister_driver()
75 struct zpool_driver *driver; in zpool_get_driver() local
78 list_for_each_entry(driver, &drivers_head, list) { in zpool_get_driver()
79 if (!strcmp(driver->type, type)) { in zpool_get_driver()
80 bool got = try_module_get(driver->owner); in zpool_get_driver()
83 atomic_inc(&driver->refcount); in zpool_get_driver()
85 return got ? driver : NULL; in zpool_get_driver()
93 static void zpool_put_driver(struct zpool_driver *driver) in zpool_put_driver() argument
95 atomic_dec(&driver->refcount); in zpool_put_driver()
96 module_put(driver->owner); in zpool_put_driver()
119 struct zpool_driver *driver = zpool_get_driver(type); in zpool_has_pool() local
121 if (!driver) { in zpool_has_pool()
123 driver = zpool_get_driver(type); in zpool_has_pool()
126 if (!driver) in zpool_has_pool()
129 zpool_put_driver(driver); in zpool_has_pool()
154 struct zpool_driver *driver; in zpool_create_pool() local
159 driver = zpool_get_driver(type); in zpool_create_pool()
161 if (!driver) { in zpool_create_pool()
163 driver = zpool_get_driver(type); in zpool_create_pool()
166 if (!driver) { in zpool_create_pool()
174 zpool_put_driver(driver); in zpool_create_pool()
178 zpool->driver = driver; in zpool_create_pool()
179 zpool->pool = driver->create(name, gfp, ops, zpool); in zpool_create_pool()
181 zpool->evictable = driver->shrink && ops && ops->evict; in zpool_create_pool()
182 zpool->can_sleep_mapped = driver->sleep_mapped; in zpool_create_pool()
186 zpool_put_driver(driver); in zpool_create_pool()
209 pr_debug("destroying pool type %s\n", zpool->driver->type); in zpool_destroy_pool()
211 zpool->driver->destroy(zpool->pool); in zpool_destroy_pool()
212 zpool_put_driver(zpool->driver); in zpool_destroy_pool()
228 return zpool->driver->type; in zpool_get_type()
244 return zpool->driver->malloc_support_movable; in zpool_malloc_support_movable()
266 return zpool->driver->malloc(zpool->pool, size, gfp, handle); in zpool_malloc()
285 zpool->driver->free(zpool->pool, handle); in zpool_free()
308 return zpool->driver->shrink ? in zpool_shrink()
309 zpool->driver->shrink(zpool->pool, pages, reclaimed) : -EINVAL; in zpool_shrink()
337 return zpool->driver->map(zpool->pool, handle, mapmode); in zpool_map_handle()
352 zpool->driver->unmap(zpool->pool, handle); in zpool_unmap_handle()
365 return zpool->driver->total_size(zpool->pool); in zpool_get_total_size()