예제 #1
0
파일: lvscan.c 프로젝트: ErisBlastar/osfree
static int lvscan_single(struct cmd_context *cmd, struct logical_volume *lv,
			 void *handle) // __attribute((unused)))
{
	struct lvinfo info;
	int lv_total = 0;
	uint64_t lv_capacity_total = 0;
	int inkernel, snap_active = 1;
	struct lv_segment *snap_seg = NULL;
	float snap_percent;     /* fused, fsize; */

	const char *active_str, *snapshot_str;

	if (!arg_count(cmd, all_ARG) && !lv_is_visible(lv))
		return ECMD_PROCESSED;

	inkernel = lv_info(cmd, lv, &info, 1) && info.exists;
	if (lv_is_origin(lv)) {
		list_iterate_items_gen(snap_seg, struct lv_segment, &lv->snapshot_segs,
				       origin_list) {
			if (inkernel &&
			    (snap_active = lv_snapshot_percent(snap_seg->cow,
							       &snap_percent)))
				if (snap_percent < 0 || snap_percent >= 100)
					snap_active = 0;
		}
		snap_seg = NULL;
	} else if (lv_is_cow(lv)) {
예제 #2
0
static percent_t _snap_percent(const struct logical_volume *lv) {
    percent_t perc;

    if (!lv_is_cow(lv) || !lv_snapshot_percent(lv, &perc))
        perc = PERCENT_INVALID;

    return perc;
}
예제 #3
0
static dm_percent_t _snap_percent(const struct logical_volume *lv)
{
	dm_percent_t percent;

	if (!lv_is_cow(lv) || !lv_snapshot_percent(lv, &percent))
		percent = DM_PERCENT_INVALID;

	return percent;
}