Lines Matching defs:bdev

26 static void vbdev_lvs_examine_config(struct spdk_bdev *bdev);
27 static void vbdev_lvs_examine_disk(struct spdk_bdev *bdev);
79 /* bdev representing lvols have only one alias,
83 TAILQ_FOREACH(tmp, spdk_bdev_get_aliases(lvol->bdev), tailq) {
85 SPDK_ERRLOG("There is more than 1 alias in bdev %s\n", lvol->bdev->name);
93 SPDK_ERRLOG("There are no aliases in bdev %s\n", lvol->bdev->name);
103 rc = spdk_bdev_alias_add(lvol->bdev, alias);
111 rc = spdk_bdev_alias_del(lvol->bdev, old_alias);
126 if (lvs_bdev->bdev == bdev_orig) {
144 vbdev_lvs_hotremove_cb(struct spdk_bdev *bdev)
148 lvs_bdev = vbdev_get_lvs_bdev_by_bdev(bdev);
150 SPDK_NOTICELOG("bdev %s being removed: closing lvstore %s\n",
151 spdk_bdev_get_name(bdev), lvs_bdev->lvs->name);
157 vbdev_lvs_base_bdev_event_cb(enum spdk_bdev_event_type type, struct spdk_bdev *bdev,
162 vbdev_lvs_hotremove_cb(bdev);
165 SPDK_NOTICELOG("Unsupported bdev event: type %d\n", type);
175 struct spdk_bdev *bdev = req->base_bdev;
180 SPDK_ERRLOG("Cannot create lvol store bdev\n");
186 SPDK_INFOLOG(vbdev_lvol, "Lvol store base bdev already claimed by another bdev\n");
199 lvs_bdev->bdev = bdev;
203 SPDK_INFOLOG(vbdev_lvol, "Lvol store bdev inserted\n");
481 if (lvol->bdev == NULL) {
485 spdk_bdev_unregister(lvol->bdev, _vbdev_lvs_remove_bdev_unregistered_cb, lvs_bdev);
595 spdk_bdev_destruct_done(&lvol_bdev->bdev, lvserrno);
610 spdk_bdev_destruct_done(&lvol_bdev->bdev, lvolerrno);
621 lvol_bdev = SPDK_CONTAINEROF(lvol->bdev, struct lvol_bdev, bdev);
623 spdk_bdev_alias_del_all(lvol->bdev);
639 SPDK_INFOLOG(vbdev_lvol, "Could not unregister bdev during lvol (%s) destroy\n",
687 spdk_bdev_unregister(lvol->bdev, _vbdev_lvol_destroy_cb, ctx);
736 struct spdk_bdev *bdev;
752 bdev = lvs_bdev->bdev;
756 spdk_json_write_named_string(w, "base_bdev", spdk_bdev_get_name(bdev));
830 vbdev_lvol_write_config_json(struct spdk_bdev *bdev, struct spdk_json_write_ctx *w)
886 start_page = bdev_io->u.bdev.offset_blocks;
887 num_pages = bdev_io->u.bdev.num_blocks;
895 bdev_io->u.bdev.seek.offset = spdk_blob_get_next_allocated_io_unit(lvol->blob,
896 bdev_io->u.bdev.offset_blocks);
904 bdev_io->u.bdev.seek.offset = spdk_blob_get_next_unallocated_io_unit(lvol->blob,
905 bdev_io->u.bdev.offset_blocks);
916 start_page = bdev_io->u.bdev.offset_blocks;
917 num_pages = bdev_io->u.bdev.num_blocks;
926 struct spdk_lvol *lvol = bdev_io->bdev->ctxt;
930 start_page = bdev_io->u.bdev.offset_blocks;
931 num_pages = bdev_io->u.bdev.num_blocks;
934 lvol_io->ext_io_opts.memory_domain = bdev_io->u.bdev.memory_domain;
935 lvol_io->ext_io_opts.memory_domain_ctx = bdev_io->u.bdev.memory_domain_ctx;
937 spdk_blob_io_readv_ext(blob, ch, bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt, start_page,
948 start_page = bdev_io->u.bdev.offset_blocks;
949 num_pages = bdev_io->u.bdev.num_blocks;
952 lvol_io->ext_io_opts.memory_domain = bdev_io->u.bdev.memory_domain;
953 lvol_io->ext_io_opts.memory_domain_ctx = bdev_io->u.bdev.memory_domain_ctx;
955 spdk_blob_io_writev_ext(blob, ch, bdev_io->u.bdev.iovs, bdev_io->u.bdev.iovcnt, start_page,
981 struct spdk_lvol *lvol = bdev_io->bdev->ctxt;
986 bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen);
1053 * lvol bdev is being registered with spdk_bdev_register() before the external
1054 * snapshot bdev is loaded. Ideally, the load of a missing esnap would trigger an
1055 * event that causes the lvol bdev's memory domain information to be updated.
1063 * The esnap bdev has not yet been loaded. Anyone that has opened at this point may
1108 SPDK_ERRLOG("Could not unregister bdev for lvol %s\n",
1122 SPDK_ERRLOG("Could not unregister bdev for lvol %s\n",
1134 struct spdk_bdev *bdev;
1142 SPDK_NOTICELOG("lvol %s: blob is degraded: deferring bdev creation\n",
1149 SPDK_ERRLOG("No spdk lvs-bdev pair found for lvol %s\n", lvol->unique_id);
1156 SPDK_ERRLOG("Cannot alloc memory for lvol bdev\n");
1163 bdev = &lvol_bdev->bdev;
1164 bdev->name = lvol->unique_id;
1165 bdev->product_name = "Logical Volume";
1166 bdev->blocklen = spdk_bs_get_io_unit_size(lvol->lvol_store->blobstore);
1169 assert((total_size % bdev->blocklen) == 0);
1170 bdev->blockcnt = total_size / bdev->blocklen;
1171 bdev->uuid = lvol->uuid;
1172 bdev->required_alignment = lvs_bdev->bdev->required_alignment;
1173 bdev->split_on_optimal_io_boundary = true;
1174 bdev->optimal_io_boundary = spdk_bs_get_cluster_size(lvol->lvol_store->blobstore) / bdev->blocklen;
1176 bdev->ctxt = lvol;
1177 bdev->fn_table = &vbdev_lvol_fn_table;
1178 bdev->module = &g_lvol_if;
1179 bdev->phys_blocklen = lvol->lvol_store->bs_dev->phys_blocklen;
1181 /* Set default bdev reset waiting time. This value indicates how much
1183 * bdev module.
1185 * bdev that may be used by multiple lvols. */
1186 bdev->reset_io_drain_timeout = SPDK_BDEV_RESET_IO_DRAIN_RECOMMENDED_VALUE;
1188 rc = spdk_bdev_register(bdev);
1193 lvol->bdev = bdev;
1198 spdk_bdev_unregister(lvol->bdev, (destroy ? _create_lvol_disk_destroy_cb :
1203 rc = spdk_bdev_alias_add(bdev, alias);
1205 SPDK_ERRLOG("Cannot add alias to lvol bdev\n");
1206 spdk_bdev_unregister(lvol->bdev, (destroy ? _create_lvol_disk_destroy_cb :
1291 ignore_bdev_event_cb(enum spdk_bdev_event_type type, struct spdk_bdev *bdev, void *ctx)
1302 struct spdk_bdev *bdev;
1315 SPDK_ERRLOG("bdev '%s' could not be opened: error %d\n", esnap_name, rc);
1319 bdev = spdk_bdev_desc_get_bdev(desc);
1321 rc = spdk_uuid_fmt_lower(bdev_uuid, sizeof(bdev_uuid), spdk_bdev_get_uuid(bdev));
1324 SPDK_ERRLOG("bdev %s: unable to parse UUID\n", esnap_name);
1340 sz = spdk_bdev_get_num_blocks(bdev) * spdk_bdev_get_block_size(bdev);
1395 /* change bdev size */
1397 SPDK_ERRLOG("CB function for bdev lvol %s receive error no: %d.\n", lvol->name, lvolerrno);
1403 assert((total_size % lvol->bdev->blocklen) == 0);
1405 lvolerrno = spdk_bdev_notify_blockcnt_change(lvol->bdev, total_size / lvol->bdev->blocklen);
1407 SPDK_ERRLOG("Could not change num blocks for bdev lvol %s with error no: %d.\n",
1427 assert(lvol->bdev != NULL);
1450 SPDK_ERRLOG("Could not set bdev lvol %s as read only due to error: %d.\n", lvol->name, lvolerrno);
1468 assert(lvol->bdev != NULL);
1571 SPDK_ERRLOG("Cannot create bdev for lvol %s\n", lvol->unique_id);
1597 struct spdk_bdev *bdev = ctx;
1602 SPDK_ERRLOG("lvol %s: failed to create bdev after esnap hotplug of %s: %d\n",
1603 lvol->unique_id, spdk_bdev_get_name(bdev), rc);
1617 SPDK_ERRLOG("lvol %s: during examine of bdev %s: not creating clone bdev due to "
1626 vbdev_lvs_examine_config(struct spdk_bdev *bdev)
1630 spdk_uuid_fmt_lower(uuid_str, sizeof(uuid_str), &bdev->uuid);
1632 if (spdk_lvs_notify_hotplug(uuid_str, sizeof(uuid_str), vbdev_lvs_hotplug, bdev)) {
1633 SPDK_INFOLOG(vbdev_lvol, "bdev %s: claimed by one or more esnap clones\n",
1663 SPDK_INFOLOG(vbdev_lvol, "Lvol store base bdev already claimed by another bdev\n");
1678 lvs_bdev->bdev = req->base_bdev;
1704 _vbdev_lvs_examine(struct spdk_bdev *bdev, struct spdk_lvs_req *ori_req,
1718 rc = spdk_bdev_create_bs_dev_ext(bdev->name, vbdev_lvs_base_bdev_event_cb,
1721 SPDK_INFOLOG(vbdev_lvol, "Cannot create bs dev on %s\n", bdev->name);
1727 req->base_bdev = bdev;
1753 vbdev_lvs_examine_disk(struct spdk_bdev *bdev)
1757 if (spdk_bdev_get_md_size(bdev) != 0) {
1759 bdev->name);
1774 _vbdev_lvs_examine(bdev, req, vbdev_lvs_load);
1778 vbdev_lvol_get_from_bdev(struct spdk_bdev *bdev)
1780 if (!bdev || bdev->module != &g_lvol_if) {
1784 if (bdev->ctxt == NULL) {
1785 SPDK_ERRLOG("No lvol ctx assigned to bdev %s\n", bdev->name);
1789 return (struct spdk_lvol *)bdev->ctxt;
1796 * back_bs_dev. No bdev is registered, so there should be no IO nor requests for channels. The main
1887 vbdev_lvol_esnap_bdev_event_cb(enum spdk_bdev_event_type type, struct spdk_bdev *bdev,
1890 SPDK_NOTICELOG("bdev name (%s) received unsupported event type %d\n",
1891 spdk_bdev_get_name(bdev), type);
1922 /* Format the UUID the same as it is in the bdev names tree. */
1939 SPDK_ERRLOG("lvol %s: unable to claim esnap bdev '%s': %d\n", lvol->unique_id,
1949 /* Unable to open or claim the bdev. This lvol is degraded. */
1951 SPDK_NOTICELOG("lvol %s: bdev %s not available: lvol is degraded\n", lvol->unique_id,
1974 _vbdev_lvol_shallow_copy_base_bdev_event_cb(enum spdk_bdev_event_type type, struct spdk_bdev *bdev,
2010 SPDK_ERRLOG("lvol %s, bdev name must not be NULL\n", lvol->name);
2014 assert(lvol->bdev != NULL);
2025 SPDK_ERRLOG("lvol %s, cannot create blobstore block device from bdev %s\n", lvol->name, bdev_name);
2032 SPDK_ERRLOG("lvol %s, unable to claim bdev %s, error %d\n", lvol->name, bdev_name, rc);
2059 struct spdk_bdev *bdev;
2065 SPDK_ERRLOG("bdev '%s' could not be opened: error %d\n", esnap_name, rc);
2069 bdev = spdk_bdev_desc_get_bdev(desc);
2071 rc = spdk_uuid_fmt_lower(bdev_uuid, sizeof(bdev_uuid), spdk_bdev_get_uuid(bdev));
2074 SPDK_ERRLOG("bdev %s: unable to parse UUID\n", esnap_name);