Lines Matching refs:dev
17 static void bl_unregister_scsi(struct pnfs_block_dev *dev) in bl_unregister_scsi() argument
19 struct block_device *bdev = file_bdev(dev->bdev_file); in bl_unregister_scsi()
23 status = ops->pr_register(bdev, dev->pr_key, 0, false); in bl_unregister_scsi()
25 trace_bl_pr_key_unreg_err(bdev, dev->pr_key, status); in bl_unregister_scsi()
27 trace_bl_pr_key_unreg(bdev, dev->pr_key); in bl_unregister_scsi()
30 static bool bl_register_scsi(struct pnfs_block_dev *dev) in bl_register_scsi() argument
32 struct block_device *bdev = file_bdev(dev->bdev_file); in bl_register_scsi()
36 if (test_and_set_bit(PNFS_BDEV_REGISTERED, &dev->flags)) in bl_register_scsi()
39 status = ops->pr_register(bdev, 0, dev->pr_key, true); in bl_register_scsi()
41 trace_bl_pr_key_reg_err(bdev, dev->pr_key, status); in bl_register_scsi()
44 trace_bl_pr_key_reg(bdev, dev->pr_key); in bl_register_scsi()
48 static void bl_unregister_dev(struct pnfs_block_dev *dev) in bl_unregister_dev() argument
52 if (dev->nr_children) { in bl_unregister_dev()
53 for (i = 0; i < dev->nr_children; i++) in bl_unregister_dev()
54 bl_unregister_dev(&dev->children[i]); in bl_unregister_dev()
58 if (dev->type == PNFS_BLOCK_VOLUME_SCSI && in bl_unregister_dev()
59 test_and_clear_bit(PNFS_BDEV_REGISTERED, &dev->flags)) in bl_unregister_dev()
60 bl_unregister_scsi(dev); in bl_unregister_dev()
63 bool bl_register_dev(struct pnfs_block_dev *dev) in bl_register_dev() argument
67 if (dev->nr_children) { in bl_register_dev()
68 for (i = 0; i < dev->nr_children; i++) { in bl_register_dev()
69 if (!bl_register_dev(&dev->children[i])) { in bl_register_dev()
71 bl_unregister_dev(&dev->children[--i]); in bl_register_dev()
78 if (dev->type == PNFS_BLOCK_VOLUME_SCSI) in bl_register_dev()
79 return bl_register_scsi(dev); in bl_register_dev()
84 bl_free_device(struct pnfs_block_dev *dev) in bl_free_device() argument
86 bl_unregister_dev(dev); in bl_free_device()
88 if (dev->nr_children) { in bl_free_device()
91 for (i = 0; i < dev->nr_children; i++) in bl_free_device()
92 bl_free_device(&dev->children[i]); in bl_free_device()
93 kfree(dev->children); in bl_free_device()
95 if (dev->bdev_file) in bl_free_device()
96 fput(dev->bdev_file); in bl_free_device()
103 struct pnfs_block_dev *dev = in bl_free_deviceid_node() local
106 bl_free_device(dev); in bl_free_deviceid_node()
107 kfree_rcu(dev, node.rcu); in bl_free_deviceid_node()
224 static bool bl_map_simple(struct pnfs_block_dev *dev, u64 offset, in bl_map_simple() argument
227 map->start = dev->start; in bl_map_simple()
228 map->len = dev->len; in bl_map_simple()
229 map->disk_offset = dev->disk_offset; in bl_map_simple()
230 map->bdev = file_bdev(dev->bdev_file); in bl_map_simple()
234 static bool bl_map_concat(struct pnfs_block_dev *dev, u64 offset, in bl_map_concat() argument
239 for (i = 0; i < dev->nr_children; i++) { in bl_map_concat()
240 struct pnfs_block_dev *child = &dev->children[i]; in bl_map_concat()
254 static bool bl_map_stripe(struct pnfs_block_dev *dev, u64 offset, in bl_map_stripe() argument
263 chunk = div_u64(offset, dev->chunk_size); in bl_map_stripe()
264 disk_chunk = div_u64_rem(chunk, dev->nr_children, &chunk_idx); in bl_map_stripe()
266 if (chunk_idx >= dev->nr_children) { in bl_map_stripe()
268 __func__, chunk_idx, offset, dev->chunk_size); in bl_map_stripe()
274 offset = chunk * dev->chunk_size; in bl_map_stripe()
277 disk_offset = disk_chunk * dev->chunk_size; in bl_map_stripe()
279 child = &dev->children[chunk_idx]; in bl_map_stripe()
284 map->len = dev->chunk_size; in bl_map_stripe()
299 dev_t dev; in bl_parse_simple() local
301 dev = bl_resolve_deviceid(server, v, gfp_mask); in bl_parse_simple()
302 if (!dev) in bl_parse_simple()
305 bdev_file = bdev_file_open_by_dev(dev, BLK_OPEN_READ | BLK_OPEN_WRITE, in bl_parse_simple()
309 MAJOR(dev), MINOR(dev), PTR_ERR(bdev_file)); in bl_parse_simple()