Lines Matching defs:dax_dev
70 bool __generic_fsdax_supported(struct dax_device *dax_dev,
89 if (!dax_dev) {
111 len = dax_direct_access(dax_dev, pgoff, 1, &kaddr, &pfn);
112 len2 = dax_direct_access(dax_dev, pgoff_end, 1, &end_kaddr, &end_pfn);
170 struct dax_device *dax_dev;
183 dax_dev = dax_get_by_host(bdev->bd_disk->disk_name);
184 if (!dax_dev) {
191 ret = dax_supported(dax_dev, bdev, blocksize, 0,
195 put_dax(dax_dev);
232 struct dax_device *dax_dev = dax_get_by_host(dev_name(dev));
235 WARN_ON_ONCE(!dax_dev);
236 if (!dax_dev)
239 rc = sprintf(buf, "%d\n", !!dax_write_cache_enabled(dax_dev));
240 put_dax(dax_dev);
249 struct dax_device *dax_dev = dax_get_by_host(dev_name(dev));
251 WARN_ON_ONCE(!dax_dev);
252 if (!dax_dev)
258 dax_write_cache(dax_dev, write_cache);
260 put_dax(dax_dev);
268 struct dax_device *dax_dev = dax_get_by_host(dev_name(dev));
270 WARN_ON_ONCE(!dax_dev);
271 if (!dax_dev)
295 * @dax_dev: a dax_device instance representing the logical memory range
304 long dax_direct_access(struct dax_device *dax_dev, pgoff_t pgoff, long nr_pages,
309 if (!dax_dev)
312 if (!dax_alive(dax_dev))
318 avail = dax_dev->ops->direct_access(dax_dev, pgoff, nr_pages,
326 bool dax_supported(struct dax_device *dax_dev, struct block_device *bdev,
329 if (!dax_dev)
332 if (!dax_alive(dax_dev))
335 return dax_dev->ops->dax_supported(dax_dev, bdev, blocksize, start, len);
339 size_t dax_copy_from_iter(struct dax_device *dax_dev, pgoff_t pgoff, void *addr,
342 if (!dax_alive(dax_dev))
345 return dax_dev->ops->copy_from_iter(dax_dev, pgoff, addr, bytes, i);
349 size_t dax_copy_to_iter(struct dax_device *dax_dev, pgoff_t pgoff, void *addr,
352 if (!dax_alive(dax_dev))
355 return dax_dev->ops->copy_to_iter(dax_dev, pgoff, addr, bytes, i);
359 int dax_zero_page_range(struct dax_device *dax_dev, pgoff_t pgoff,
362 if (!dax_alive(dax_dev))
372 return dax_dev->ops->zero_page_range(dax_dev, pgoff, nr_pages);
378 void dax_flush(struct dax_device *dax_dev, void *addr, size_t size)
380 if (unlikely(!dax_write_cache_enabled(dax_dev)))
386 void dax_flush(struct dax_device *dax_dev, void *addr, size_t size)
392 void dax_write_cache(struct dax_device *dax_dev, bool wc)
395 set_bit(DAXDEV_WRITE_CACHE, &dax_dev->flags);
397 clear_bit(DAXDEV_WRITE_CACHE, &dax_dev->flags);
401 bool dax_write_cache_enabled(struct dax_device *dax_dev)
403 return test_bit(DAXDEV_WRITE_CACHE, &dax_dev->flags);
407 bool __dax_synchronous(struct dax_device *dax_dev)
409 return test_bit(DAXDEV_SYNC, &dax_dev->flags);
413 void __set_dax_synchronous(struct dax_device *dax_dev)
415 set_bit(DAXDEV_SYNC, &dax_dev->flags);
419 bool dax_alive(struct dax_device *dax_dev)
422 return test_bit(DAXDEV_ALIVE, &dax_dev->flags);
432 * Note, rcu is not protecting the liveness of dax_dev, rcu is ensuring
437 void kill_dax(struct dax_device *dax_dev)
439 if (!dax_dev)
442 clear_bit(DAXDEV_ALIVE, &dax_dev->flags);
447 hlist_del_init(&dax_dev->list);
452 void run_dax(struct dax_device *dax_dev)
454 set_bit(DAXDEV_ALIVE, &dax_dev->flags);
460 struct dax_device *dax_dev;
463 dax_dev = kmem_cache_alloc(dax_cache, GFP_KERNEL);
464 if (!dax_dev)
467 inode = &dax_dev->inode;
479 struct dax_device *dax_dev = to_dax_dev(inode);
480 kfree(dax_dev->host);
481 dax_dev->host = NULL;
484 kmem_cache_free(dax_cache, dax_dev);
489 struct dax_device *dax_dev = to_dax_dev(inode);
490 WARN_ONCE(test_bit(DAXDEV_ALIVE, &dax_dev->flags),
534 struct dax_device *dax_dev;
543 dax_dev = to_dax_dev(inode);
545 set_bit(DAXDEV_ALIVE, &dax_dev->flags);
546 inode->i_cdev = &dax_dev->cdev;
553 return dax_dev;
556 static void dax_add_host(struct dax_device *dax_dev, const char *host)
561 * Unconditionally init dax_dev since it's coming from a
564 INIT_HLIST_NODE(&dax_dev->list);
565 dax_dev->host = host;
571 hlist_add_head(&dax_dev->list, &dax_host_list[hash]);
578 struct dax_device *dax_dev;
599 dax_dev = dax_dev_get(devt);
600 if (!dax_dev)
603 dax_add_host(dax_dev, host);
604 dax_dev->ops = ops;
605 dax_dev->private = private;
607 set_dax_synchronous(dax_dev);
609 return dax_dev;
619 void put_dax(struct dax_device *dax_dev)
621 if (!dax_dev)
623 iput(&dax_dev->inode);
633 struct dax_device *dax_dev, *found = NULL;
643 hlist_for_each_entry(dax_dev, &dax_host_list[hash], list) {
644 if (!dax_alive(dax_dev)
645 || strcmp(host, dax_dev->host) != 0)
648 if (igrab(&dax_dev->inode))
649 found = dax_dev;
660 * inode_dax: convert a public inode into its dax_dev
661 * @inode: An inode with i_cdev pointing to a dax_dev
674 struct inode *dax_inode(struct dax_device *dax_dev)
676 return &dax_dev->inode;
680 void *dax_get_private(struct dax_device *dax_dev)
682 if (!test_bit(DAXDEV_ALIVE, &dax_dev->flags))
684 return dax_dev->private;
690 struct dax_device *dax_dev = _dax_dev;
691 struct inode *inode = &dax_dev->inode;
693 memset(dax_dev, 0, sizeof(*dax_dev));