Lines Matching refs:dax_dev

87 	struct dax_device *dax_dev;  in __bdev_dax_supported()  local
116 dax_dev = dax_get_by_host(bdev->bd_disk->disk_name); in __bdev_dax_supported()
117 if (!dax_dev) { in __bdev_dax_supported()
124 len = dax_direct_access(dax_dev, pgoff, 1, NULL, &pfn); in __bdev_dax_supported()
127 put_dax(dax_dev); in __bdev_dax_supported()
193 struct dax_device *dax_dev = dax_get_by_host(dev_name(dev)); in write_cache_show() local
196 WARN_ON_ONCE(!dax_dev); in write_cache_show()
197 if (!dax_dev) in write_cache_show()
200 rc = sprintf(buf, "%d\n", !!dax_write_cache_enabled(dax_dev)); in write_cache_show()
201 put_dax(dax_dev); in write_cache_show()
210 struct dax_device *dax_dev = dax_get_by_host(dev_name(dev)); in write_cache_store() local
212 WARN_ON_ONCE(!dax_dev); in write_cache_store()
213 if (!dax_dev) in write_cache_store()
219 dax_write_cache(dax_dev, write_cache); in write_cache_store()
221 put_dax(dax_dev); in write_cache_store()
229 struct dax_device *dax_dev = dax_get_by_host(dev_name(dev)); in dax_visible() local
231 WARN_ON_ONCE(!dax_dev); in dax_visible()
232 if (!dax_dev) in dax_visible()
265 long dax_direct_access(struct dax_device *dax_dev, pgoff_t pgoff, long nr_pages, in dax_direct_access() argument
270 if (!dax_dev) in dax_direct_access()
273 if (!dax_alive(dax_dev)) in dax_direct_access()
279 avail = dax_dev->ops->direct_access(dax_dev, pgoff, nr_pages, in dax_direct_access()
287 size_t dax_copy_from_iter(struct dax_device *dax_dev, pgoff_t pgoff, void *addr, in dax_copy_from_iter() argument
290 if (!dax_alive(dax_dev)) in dax_copy_from_iter()
293 return dax_dev->ops->copy_from_iter(dax_dev, pgoff, addr, bytes, i); in dax_copy_from_iter()
297 size_t dax_copy_to_iter(struct dax_device *dax_dev, pgoff_t pgoff, void *addr, in dax_copy_to_iter() argument
300 if (!dax_alive(dax_dev)) in dax_copy_to_iter()
303 return dax_dev->ops->copy_to_iter(dax_dev, pgoff, addr, bytes, i); in dax_copy_to_iter()
309 void dax_flush(struct dax_device *dax_dev, void *addr, size_t size) in dax_flush() argument
311 if (unlikely(!dax_write_cache_enabled(dax_dev))) in dax_flush()
317 void dax_flush(struct dax_device *dax_dev, void *addr, size_t size) in dax_flush() argument
323 void dax_write_cache(struct dax_device *dax_dev, bool wc) in dax_write_cache() argument
326 set_bit(DAXDEV_WRITE_CACHE, &dax_dev->flags); in dax_write_cache()
328 clear_bit(DAXDEV_WRITE_CACHE, &dax_dev->flags); in dax_write_cache()
332 bool dax_write_cache_enabled(struct dax_device *dax_dev) in dax_write_cache_enabled() argument
334 return test_bit(DAXDEV_WRITE_CACHE, &dax_dev->flags); in dax_write_cache_enabled()
338 bool dax_alive(struct dax_device *dax_dev) in dax_alive() argument
341 return test_bit(DAXDEV_ALIVE, &dax_dev->flags); in dax_alive()
356 void kill_dax(struct dax_device *dax_dev) in kill_dax() argument
358 if (!dax_dev) in kill_dax()
361 clear_bit(DAXDEV_ALIVE, &dax_dev->flags); in kill_dax()
366 hlist_del_init(&dax_dev->list); in kill_dax()
369 dax_dev->private = NULL; in kill_dax()
375 struct dax_device *dax_dev; in dax_alloc_inode() local
378 dax_dev = kmem_cache_alloc(dax_cache, GFP_KERNEL); in dax_alloc_inode()
379 if (!dax_dev) in dax_alloc_inode()
382 inode = &dax_dev->inode; in dax_alloc_inode()
395 struct dax_device *dax_dev = to_dax_dev(inode); in dax_i_callback() local
397 kfree(dax_dev->host); in dax_i_callback()
398 dax_dev->host = NULL; in dax_i_callback()
401 kmem_cache_free(dax_cache, dax_dev); in dax_i_callback()
406 struct dax_device *dax_dev = to_dax_dev(inode); in dax_destroy_inode() local
408 WARN_ONCE(test_bit(DAXDEV_ALIVE, &dax_dev->flags), in dax_destroy_inode()
449 struct dax_device *dax_dev; in dax_dev_get() local
458 dax_dev = to_dax_dev(inode); in dax_dev_get()
460 set_bit(DAXDEV_ALIVE, &dax_dev->flags); in dax_dev_get()
461 inode->i_cdev = &dax_dev->cdev; in dax_dev_get()
468 return dax_dev; in dax_dev_get()
471 static void dax_add_host(struct dax_device *dax_dev, const char *host) in dax_add_host() argument
479 INIT_HLIST_NODE(&dax_dev->list); in dax_add_host()
480 dax_dev->host = host; in dax_add_host()
486 hlist_add_head(&dax_dev->list, &dax_host_list[hash]); in dax_add_host()
493 struct dax_device *dax_dev; in alloc_dax() local
507 dax_dev = dax_dev_get(devt); in alloc_dax()
508 if (!dax_dev) in alloc_dax()
511 dax_add_host(dax_dev, host); in alloc_dax()
512 dax_dev->ops = ops; in alloc_dax()
513 dax_dev->private = private; in alloc_dax()
514 return dax_dev; in alloc_dax()
524 void put_dax(struct dax_device *dax_dev) in put_dax() argument
526 if (!dax_dev) in put_dax()
528 iput(&dax_dev->inode); in put_dax()
538 struct dax_device *dax_dev, *found = NULL; in dax_get_by_host() local
548 hlist_for_each_entry(dax_dev, &dax_host_list[hash], list) { in dax_get_by_host()
549 if (!dax_alive(dax_dev) in dax_get_by_host()
550 || strcmp(host, dax_dev->host) != 0) in dax_get_by_host()
553 if (igrab(&dax_dev->inode)) in dax_get_by_host()
554 found = dax_dev; in dax_get_by_host()
579 struct inode *dax_inode(struct dax_device *dax_dev) in dax_inode() argument
581 return &dax_dev->inode; in dax_inode()
585 void *dax_get_private(struct dax_device *dax_dev) in dax_get_private() argument
587 return dax_dev->private; in dax_get_private()
593 struct dax_device *dax_dev = _dax_dev; in init_once() local
594 struct inode *inode = &dax_dev->inode; in init_once()
596 memset(dax_dev, 0, sizeof(*dax_dev)); in init_once()