Lines Matching refs:driver

22 	struct zpool_driver *driver;
31 * @driver: driver to register
33 void zpool_register_driver(struct zpool_driver *driver)
36 atomic_set(&driver->refcount, 0);
37 list_add(&driver->list, &drivers_head);
44 * @driver: driver to unregister.
46 * Module usage counting is used to prevent using a driver
50 * failure, the driver is in use and must remain available.
52 int zpool_unregister_driver(struct zpool_driver *driver)
57 refcount = atomic_read(&driver->refcount);
62 list_del(&driver->list);
72 struct zpool_driver *driver;
75 list_for_each_entry(driver, &drivers_head, list) {
76 if (!strcmp(driver->type, type)) {
77 bool got = try_module_get(driver->owner);
80 atomic_inc(&driver->refcount);
82 return got ? driver : NULL;
90 static void zpool_put_driver(struct zpool_driver *driver)
92 atomic_dec(&driver->refcount);
93 module_put(driver->owner);
97 * zpool_has_pool() - Check if the pool driver is available
100 * This checks if the @type pool driver is available. This will try to load
116 struct zpool_driver *driver = zpool_get_driver(type);
118 if (!driver) {
120 driver = zpool_get_driver(type);
123 if (!driver)
126 zpool_put_driver(driver);
149 struct zpool_driver *driver;
154 driver = zpool_get_driver(type);
156 if (!driver) {
158 driver = zpool_get_driver(type);
161 if (!driver) {
162 pr_err("no driver for type %s\n", type);
169 zpool_put_driver(driver);
173 zpool->driver = driver;
174 zpool->pool = driver->create(name, gfp);
178 zpool_put_driver(driver);
201 pr_debug("destroying pool type %s\n", zpool->driver->type);
203 zpool->driver->destroy(zpool->pool);
204 zpool_put_driver(zpool->driver);
220 return zpool->driver->type;
236 return zpool->driver->malloc_support_movable;
258 return zpool->driver->malloc(zpool->pool, size, gfp, handle);
277 zpool->driver->free(zpool->pool, handle);
305 return zpool->driver->map(zpool->pool, handle, mapmode);
320 zpool->driver->unmap(zpool->pool, handle);
333 return zpool->driver->total_size(zpool->pool);
351 return zpool->driver->sleep_mapped;