Lines Matching defs:lv

69 	if (lv_is_origin(seg->lv))
70 dm_list_iterate(snh, &seg->lv->snapshot_segs)
78 if (lv_is_cow(seg->lv)) {
79 snap_seg = find_cow(seg->lv);
104 int list_lv_modules(struct dm_pool *mem, const struct logical_volume *lv,
109 dm_list_iterate_items(seg, &lv->segments)
151 int lv_info(struct cmd_context *cmd, const struct logical_volume *lv, struct lvinfo *info,
161 int lv_snapshot_percent(const struct logical_volume *lv, float *percent,
166 int lv_mirror_percent(struct cmd_context *cmd, struct logical_volume *lv,
218 int lv_mknodes(struct cmd_context *cmd, const struct logical_volume *lv)
263 struct logical_volume *lv)
276 if (str_list_match_list(&cmd->tags, &lv->tags) ||
277 str_list_match_list(&cmd->tags, &lv->vg->tags))
307 if (str_list_match_list(&cmd->tags, &lv->tags)
309 &lv->vg->tags))
315 if (str_list_match_item(&lv->tags, str) ||
316 str_list_match_item(&lv->vg->tags, str))
323 if (!strcmp(str, lv->vg->name))
329 if (dm_snprintf(path, sizeof(path), "%s/%s", lv->vg->name,
330 lv->name) < 0) {
331 log_error("dm_snprintf error from %s/%s", lv->vg->name,
332 lv->name);
445 static int _lv_info(struct cmd_context *cmd, const struct logical_volume *lv, int with_mknodes,
455 !(name = build_dm_name(cmd->mem, lv->vg->name, lv->name, NULL)))
459 if (!dev_manager_info(lv->vg->cmd->mem, name, lv, with_mknodes,
482 int lv_info(struct cmd_context *cmd, const struct logical_volume *lv, struct lvinfo *info,
485 return _lv_info(cmd, lv, 0, info, with_open_count, with_read_ahead, 0);
491 struct logical_volume *lv;
493 if (!(lv = lv_from_lvid(cmd, lvid_s, 0)))
496 return _lv_info(cmd, lv, 0, info, with_open_count, with_read_ahead, 0);
502 int lv_snapshot_percent(const struct logical_volume *lv, float *percent,
511 if (!(dm = dev_manager_create(lv->vg->cmd, lv->vg->name)))
514 if (!(r = dev_manager_snapshot_percent(dm, lv, percent, percent_range)))
523 int lv_mirror_percent(struct cmd_context *cmd, struct logical_volume *lv,
533 if (dm_list_size(&lv->segments) == 1 && first_seg(lv)->area_count == 1) {
541 if (!lv_info(cmd, lv, &info, 0, 0))
547 if (!(dm = dev_manager_create(lv->vg->cmd, lv->vg->name)))
550 if (!(r = dev_manager_mirror_percent(dm, lv, wait, percent,
559 static int _lv_active(struct cmd_context *cmd, struct logical_volume *lv,
564 if (!_lv_info(cmd, lv, 0, &info, 0, 0, by_uuid_only)) {
572 static int _lv_open_count(struct cmd_context *cmd, struct logical_volume *lv)
576 if (!lv_info(cmd, lv, &info, 1, 0)) {
584 static int _lv_activate_lv(struct logical_volume *lv)
589 if (!(dm = dev_manager_create(lv->vg->cmd, lv->vg->name)))
592 if (!(r = dev_manager_activate(dm, lv)))
599 static int _lv_preload(struct logical_volume *lv, int *flush_required)
604 if (!(dm = dev_manager_create(lv->vg->cmd, lv->vg->name)))
607 if (!(r = dev_manager_preload(dm, lv, flush_required)))
614 static int _lv_deactivate(struct logical_volume *lv)
619 if (!(dm = dev_manager_create(lv->vg->cmd, lv->vg->name)))
622 if (!(r = dev_manager_deactivate(dm, lv)))
629 static int _lv_suspend_lv(struct logical_volume *lv, int lockfs, int flush_required)
634 if (!(dm = dev_manager_create(lv->vg->cmd, lv->vg->name)))
637 if (!(r = dev_manager_suspend(dm, lv, lockfs, flush_required)))
657 if (lv_is_visible(lvl->lv))
658 count += (_lv_active(vg->cmd, lvl->lv, by_uuid_only) == 1);
683 if (lv_is_visible(lvl->lv))
684 count += (_lv_open_count(vg->cmd, lvl->lv) > 0);
697 int lv_is_active(struct logical_volume *lv)
701 if (_lv_active(lv->vg->cmd, lv, 0))
704 if (!vg_is_clustered(lv->vg))
707 if ((ret = remote_lock_held(lv->lvid.s)) >= 0)
714 if (activate_lv_excl(lv->vg->cmd, lv)) {
715 deactivate_lv(lv->vg->cmd, lv);
730 struct logical_volume *lv, int monitor)
751 * In case of a snapshot device, we monitor lv->snapshot->lv,
754 if (lv_is_cow(lv))
755 return monitor_dev_for_events(cmd, lv->snapshot->lv, monitor);
764 if (lv_is_origin(lv)) {
765 dm_list_iterate_safe(snh, snht, &lv->snapshot_segs)
772 dm_list_iterate(tmp, &lv->segments) {
806 log_verbose("%s/%s already monitored.", lv->vg->name, lv->name);
811 log_verbose("%s/%s already not monitored.", lv->vg->name, lv->name);
820 log_verbose("%sonitoring %s/%s", monitor ? "M" : "Not m", lv->vg->name, lv->name);
825 lv->vg->name, lv->name, seg->segtype->name);
838 lv->vg->name, lv->name, monitor ? "" : "un");
856 struct logical_volume *lv = NULL, *lv_pre = NULL;
863 if (!(lv = lv_from_lvid(cmd, lvid_s, 0)))
871 _skip("Suspending '%s'.", lv->name);
876 if (!lv_info(cmd, lv, &info, 0, 0))
884 lv_calculate_readahead(lv, NULL);
894 if (!monitor_dev_for_events(cmd, lv, 0))
903 if (!_lv_suspend_lv(lv, lockfs, flush_required)) {
913 if (lv)
914 vg_release(lv->vg);
933 struct logical_volume *lv;
940 if (!(lv = lv_from_lvid(cmd, lvid_s, 0)))
944 _skip("Resuming '%s'.", lv->name);
949 if (!lv_info(cmd, lv, &info, 0, 0))
957 if (!_lv_activate_lv(lv))
963 if (!monitor_dev_for_events(cmd, lv, 1))
968 if (lv)
969 vg_release(lv->vg);
985 static int _lv_has_open_snapshots(struct logical_volume *lv)
991 dm_list_iterate_items_gen(snap_seg, &lv->snapshot_segs, origin_list) {
992 if (!lv_info(lv->vg->cmd, snap_seg->cow, &info, 1, 0)) {
999 "not deactivating", lv->vg->name, lv->name,
1010 struct logical_volume *lv;
1017 if (!(lv = lv_from_lvid(cmd, lvid_s, 0)))
1021 _skip("Deactivating '%s'.", lv->name);
1026 if (!lv_info(cmd, lv, &info, 1, 0))
1034 if (lv_is_visible(lv)) {
1037 lv->vg->name, lv->name);
1040 if (lv_is_origin(lv) && _lv_has_open_snapshots(lv))
1044 lv_calculate_readahead(lv, NULL);
1046 if (!monitor_dev_for_events(cmd, lv, 0))
1050 r = _lv_deactivate(lv);
1054 if (!lv_info(cmd, lv, &info, 1, 0) || info.exists)
1057 if (lv)
1058 vg_release(lv->vg);
1067 struct logical_volume *lv;
1075 if (!(lv = lv_from_lvid(cmd, lvid_s, 0)))
1078 if (!_passes_activation_filter(cmd, lv)) {
1080 lv->vg->name, lv->name);
1086 if (lv)
1087 vg_release(lv->vg);
1095 struct logical_volume *lv;
1102 if (!(lv = lv_from_lvid(cmd, lvid_s, 0)))
1105 if (filter && !_passes_activation_filter(cmd, lv)) {
1107 lv->vg->name, lv->name);
1111 if ((!lv->vg->cmd->partial_activation) && (lv->status & PARTIAL_LV)) {
1113 lv->name);
1117 if (lv_has_unknown_segments(lv)) {
1119 "an unrecognised segment.", lv->name);
1124 _skip("Activating '%s'.", lv->name);
1129 if (!lv_info(cmd, lv, &info, 0, 0))
1137 lv_calculate_readahead(lv, NULL);
1140 lv->status |= ACTIVATE_EXCL;
1143 if (!(r = _lv_activate_lv(lv)))
1148 if (r && !monitor_dev_for_events(cmd, lv, 1))
1152 if (lv)
1153 vg_release(lv->vg);
1176 int lv_mknodes(struct cmd_context *cmd, const struct logical_volume *lv)
1181 if (!lv) {
1187 if (!_lv_info(cmd, lv, 1, &info, 0, 0, 0))
1191 if (lv_is_visible(lv))
1192 r = dev_manager_lv_mknodes(lv);
1194 r = dev_manager_lv_rmnodes(lv);