Lines Matching defs:lv

60 	struct logical_volume *lv;
90 static int _read_only_lv(struct logical_volume *lv)
92 return (!(lv->vg->status & LVM_WRITE) || !(lv->status & LVM_WRITE));
239 const struct logical_volume *lv, int with_mknodes,
245 if (!(dlid = _build_dlid(mem, lv->lvid.s, NULL))) {
246 log_error("dlid build failed for %s", lv->name);
350 struct logical_volume *lv, float *percent,
361 struct dm_list *segh = &lv->segments;
391 if (lv) {
392 if (!(segh = dm_list_next(&lv->segments, segh))) {
394 "does not match metadata", lv->name);
423 if (lv && (segh = dm_list_next(&lv->segments, segh))) {
425 "match metadata", lv->name);
450 struct logical_volume *lv, float *percent,
454 if (_percent_run(dm, NULL, dlid, target_type, wait, lv, percent,
458 target_type, wait, lv, percent,
463 if (name && _percent_run(dm, name, NULL, target_type, wait, lv, percent,
518 const struct logical_volume *lv,
527 if (!(name = build_dm_name(dm->mem, lv->vg->name, lv->name, NULL)))
530 if (!(dlid = build_dlid(dm, lv->lvid.s, NULL)))
550 struct logical_volume *lv, int wait,
556 const char *suffix = (lv_is_origin(lv)) ? "real" : NULL;
561 if (!(name = build_dm_name(dm->mem, lv->vg->name, lv->name, suffix)))
566 if (!(dlid = build_dlid(dm, lv->lvid.s, suffix))) {
567 log_error("dlid build failed for %s", lv->name);
572 if (!(_percent(dm, name, dlid, "mirror", wait, lv, percent,
596 dl->lv->size, params);
603 new_name = build_dm_name(dm->mem, dm->vg_name, dl->lv->name,
622 if (!(snap_seg = find_cow(lv)))
629 active = lvl->lv;
642 int dev_manager_lv_mknodes(const struct logical_volume *lv)
646 if (!(name = build_dm_name(lv->vg->cmd->mem, lv->vg->name,
647 lv->name, NULL)))
650 return fs_add_lv(lv, name);
653 int dev_manager_lv_rmnodes(const struct logical_volume *lv)
655 return fs_del_lv(lv);
659 struct logical_volume *lv, const char *layer)
664 if (!(name = build_dm_name(dm->mem, lv->vg->name, lv->name, layer)))
667 if (!(dlid = build_dlid(dm, lv->lvid.s, layer)))
680 if (!layer && lv->major != -1 && lv->minor != -1) {
682 * FIXME compare info.major with lv->major if multiple major support
684 if (info.exists && (info.minor != lv->minor)) {
688 lv->name, lv->major, lv->minor, info.major, info.minor);
691 if (!info.exists && _info_by_dev(lv->major, lv->minor, &info2) &&
695 lv->major, lv->minor);
712 static int _add_lv_to_dtree(struct dev_manager *dm, struct dm_tree *dtree, struct logical_volume *lv)
714 if (!_add_dev_to_dtree(dm, dtree, lv, NULL))
718 if (!_add_dev_to_dtree(dm, dtree, lv, "real"))
721 if (!_add_dev_to_dtree(dm, dtree, lv, "cow"))
724 if (!_add_dev_to_dtree(dm, dtree, lv, "_mlog"))
730 static struct dm_tree *_create_partial_dtree(struct dev_manager *dm, struct logical_volume *lv)
738 log_error("Partial dtree creation failed for %s.", lv->name);
742 if (!_add_lv_to_dtree(dm, dtree, lv))
746 dm_list_iterate_safe(snh, snht, &lv->snapshot_segs)
751 dm_list_iterate_items(seg, &lv->segments)
773 uint64_t size = seg->len * seg->lv->vg->extent_size;
775 dm_list_iterate_items(seg_i, &seg->lv->segments) {
788 if (!(id = build_dlid(dm, seg->lv->lvid.s, errid)))
791 if (!(name = build_dm_name(dm->mem, seg->lv->vg->name,
792 seg->lv->name, errid)))
806 uint64_t extent_size = seg->lv->vg->extent_size;
831 uint64_t extent_size = seg->lv->vg->extent_size;
858 seg->lv->name);
868 struct logical_volume *lv)
872 if (!(real_dlid = build_dlid(dm, lv->lvid.s, "real")))
875 if (!dm_tree_node_add_snapshot_origin_target(dnode, lv->size, real_dlid))
883 struct logical_volume *lv)
890 if (!(snap_seg = find_cow(lv))) {
891 log_error("Couldn't find snapshot for '%s'.", lv->name);
913 uint64_t extent_size = seg->lv->vg->extent_size;
929 struct logical_volume *lv, const char *layer);
942 seg_present = find_cow(seg->lv) ? : seg;
945 seg_present->segtype->name, seg->lv->name,
949 !seg_present->segtype->ops->target_present(seg_present->lv->vg->cmd,
952 "from kernel?", seg->lv->name, seg_present->segtype->name);
962 if (lv_is_origin(seg->lv) && !layer) {
963 if (vg_is_clustered(seg->lv->vg)) {
967 if (!_add_new_lv_to_dtree(dm, dtree, seg->lv, "real"))
969 } else if (lv_is_cow(seg->lv) && !layer) {
970 if (!_add_new_lv_to_dtree(dm, dtree, seg->lv, "cow"))
981 if (lv_is_origin(seg->lv) && !layer) {
982 if (!_add_origin_target_to_dtree(dm, dnode, seg->lv))
984 } else if (lv_is_cow(seg->lv) && !layer) {
985 if (!_add_snapshot_target_to_dtree(dm, dnode, seg->lv))
990 if (lv_is_origin(seg->lv) && !layer)
992 dm_list_iterate(snh, &seg->lv->snapshot_segs)
1000 struct logical_volume *lv, const char *layer)
1007 uint32_t read_ahead = lv->read_ahead;
1011 if (!(name = build_dm_name(dm->mem, lv->vg->name, lv->name, layer)))
1014 if (!(dlid = build_dlid(dm, lv->lvid.s, layer)))
1023 log_error("_add_new_lv_to_dtree: pool alloc failed for %s %s.", lv->name, layer);
1027 lvlayer->lv = lv;
1029 if (layer || !lv_is_visible(lv))
1034 if (lv_is_cow(lv))
1044 layer ? UINT32_C(0) : (uint32_t) lv->major,
1045 layer ? UINT32_C(0) : (uint32_t) lv->minor,
1046 _read_only_lv(lv),
1047 (lv->vg->status & PRECOMMITTED) ? 1 : 0,
1057 dm_list_iterate_items(seg, &lv->segments) {
1061 if (lv_is_origin(lv) && !layer)
1063 if (lv_is_cow(lv) && !layer)
1073 lv_calculate_readahead(lv, &read_ahead);
1115 if (!fs_rename_lv(lvlayer->lv, name, old_vgname, old_lvname))
1119 if (lv_is_visible(lvlayer->lv)) {
1120 if (!dev_manager_lv_mknodes(lvlayer->lv))
1124 if (!dev_manager_lv_rmnodes(lvlayer->lv))
1196 static int _tree_action(struct dev_manager *dm, struct logical_volume *lv, action_t action)
1203 if (!(dtree = _create_partial_dtree(dm, lv)))
1211 if (!(dlid = build_dlid(dm, lv->lvid.s, NULL)))
1230 log_error("Failed to remove all device symlinks associated with %s.", lv->name);
1234 if (!dm->flush_required && (lv->status & MIRRORED) && !(lv->status & PVMOVE))
1243 if (!_add_new_lv_to_dtree(dm, dtree, lv, NULL))
1265 log_error("Failed to create symlinks for %s.", lv->name);
1284 int dev_manager_activate(struct dev_manager *dm, struct logical_volume *lv)
1286 if (!_tree_action(dm, lv, ACTIVATE))
1289 return _tree_action(dm, lv, CLEAN);
1292 int dev_manager_preload(struct dev_manager *dm, struct logical_volume *lv,
1296 if ((lv->status & PVMOVE) || (lv->status & LOCKED))
1299 if (!_tree_action(dm, lv, PRELOAD))
1307 int dev_manager_deactivate(struct dev_manager *dm, struct logical_volume *lv)
1311 r = _tree_action(dm, lv, DEACTIVATE);
1313 fs_del_lv(lv);
1318 int dev_manager_suspend(struct dev_manager *dm, struct logical_volume *lv,
1323 return _tree_action(dm, lv, lockfs ? SUSPEND_WITH_LOCKFS : SUSPEND);