Lines Matching refs:driver

22 	struct zpool_driver *driver;
39 * @driver: driver to register
41 void zpool_register_driver(struct zpool_driver *driver)
44 atomic_set(&driver->refcount, 0);
45 list_add(&driver->list, &drivers_head);
52 * @driver: driver to unregister.
54 * Module usage counting is used to prevent using a driver
58 * failure, the driver is in use and must remain available.
60 int zpool_unregister_driver(struct zpool_driver *driver)
65 refcount = atomic_read(&driver->refcount);
70 list_del(&driver->list);
80 struct zpool_driver *driver;
83 list_for_each_entry(driver, &drivers_head, list) {
84 if (!strcmp(driver->type, type)) {
85 bool got = try_module_get(driver->owner);
88 atomic_inc(&driver->refcount);
90 return got ? driver : NULL;
98 static void zpool_put_driver(struct zpool_driver *driver)
100 atomic_dec(&driver->refcount);
101 module_put(driver->owner);
105 * zpool_has_pool() - Check if the pool driver is available
108 * This checks if the @type pool driver is available. This will try to load
124 struct zpool_driver *driver = zpool_get_driver(type);
126 if (!driver) {
128 driver = zpool_get_driver(type);
131 if (!driver)
134 zpool_put_driver(driver);
159 struct zpool_driver *driver;
164 driver = zpool_get_driver(type);
166 if (!driver) {
168 driver = zpool_get_driver(type);
171 if (!driver) {
172 pr_err("no driver for type %s\n", type);
179 zpool_put_driver(driver);
183 zpool->driver = driver;
184 zpool->pool = driver->create(name, gfp, ops, zpool);
186 zpool->evictable = driver->shrink && ops && ops->evict;
187 zpool->can_sleep_mapped = driver->sleep_mapped;
191 zpool_put_driver(driver);
218 pr_debug("destroying pool type %s\n", zpool->driver->type);
223 zpool->driver->destroy(zpool->pool);
224 zpool_put_driver(zpool->driver);
240 return zpool->driver->type;
256 return zpool->driver->malloc_support_movable;
278 return zpool->driver->malloc(zpool->pool, size, gfp, handle);
297 zpool->driver->free(zpool->pool, handle);
320 return zpool->driver->shrink ?
321 zpool->driver->shrink(zpool->pool, pages, reclaimed) : -EINVAL;
349 return zpool->driver->map(zpool->pool, handle, mapmode);
364 zpool->driver->unmap(zpool->pool, handle);
377 return zpool->driver->total_size(zpool->pool);
385 * zpool_ops.evict and its driver implements struct zpool_driver.shrink.
387 * However, it doesn't necessarily mean driver will use zpool_ops.evict