~ubuntu-branches/debian/sid/lvm2/sid

« back to all changes in this revision

Viewing changes to lib/raid/raid.c

  • Committer: Package Import Robot
  • Author(s): Bastian Blank
  • Date: 2014-08-19 15:37:06 UTC
  • mfrom: (1.1.18)
  • Revision ID: package-import@ubuntu.com-20140819153706-i1gaio8lg534dara
Tags: 2.02.109-1
New upstream version.

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
 */
14
14
 
15
15
#include "lib.h"
16
 
#include "toolcontext.h"
17
16
#include "segtype.h"
18
17
#include "display.h"
19
18
#include "text_export.h"
25
24
#include "activate.h"
26
25
#include "metadata.h"
27
26
#include "lv_alloc.h"
28
 
#include "defaults.h"
29
27
 
30
28
static const char *_raid_name(const struct lv_segment *seg)
31
29
{
32
30
        return seg->segtype->name;
33
31
}
34
32
 
 
33
static void _raid_display(const struct lv_segment *seg)
 
34
{
 
35
        unsigned s;
 
36
 
 
37
        for (s = 0; s < seg->area_count; ++s) {
 
38
                log_print("  Raid Data LV%2d", s);
 
39
                display_stripe(seg, s, "    ");
 
40
        }
 
41
 
 
42
        for (s = 0; s < seg->area_count; ++s)
 
43
                log_print("  Raid Metadata LV%2d\t%s", s, seg_metalv(seg, s)->name);
 
44
 
 
45
        log_print(" ");
 
46
}
 
47
 
35
48
static int _raid_text_import_area_count(const struct dm_config_node *sn,
36
49
                                        uint32_t *area_count)
37
50
{
264
277
        return (strstr(type, "raid") != NULL);
265
278
}
266
279
 
267
 
static int _raid_modules_needed(struct dm_pool *mem,
268
 
                                const struct lv_segment *seg __attribute__((unused)),
269
 
                                struct dm_list *modules)
270
 
{
271
 
        if (!str_list_add(mem, modules, "raid")) {
272
 
                log_error("raid module string list allocation failed");
273
 
                return 0;
274
 
        }
275
 
 
276
 
        return 1;
277
 
}
278
 
 
279
280
static void _raid_destroy(struct segment_type *segtype)
280
281
{
281
282
        dm_free((void *) segtype);
283
284
 
284
285
#ifdef DEVMAPPER_SUPPORT
285
286
static int _raid_target_percent(void **target_state,
286
 
                                percent_t *percent,
 
287
                                dm_percent_t *percent,
287
288
                                struct dm_pool *mem,
288
289
                                struct cmd_context *cmd,
289
290
                                struct lv_segment *seg, char *params,
319
320
        if (seg)
320
321
                seg->extents_copied = seg->area_len * numerator / denominator;
321
322
 
322
 
        *percent = make_percent(numerator, denominator);
 
323
        *percent = dm_make_percent(numerator, denominator);
323
324
 
324
325
        return 1;
325
326
}
369
370
        return _raid_present;
370
371
}
371
372
 
372
 
#ifdef DMEVENTD
 
373
static int _raid_modules_needed(struct dm_pool *mem,
 
374
                                const struct lv_segment *seg __attribute__((unused)),
 
375
                                struct dm_list *modules)
 
376
{
 
377
        if (!str_list_add(mem, modules, "raid")) {
 
378
                log_error("raid module string list allocation failed");
 
379
                return 0;
 
380
        }
 
381
 
 
382
        return 1;
 
383
}
 
384
 
 
385
#  ifdef DMEVENTD
373
386
static const char *_get_raid_dso_path(struct cmd_context *cmd)
374
387
{
375
388
        const char *config_str = find_config_tree_str(cmd, dmeventd_raid_library_CFG, NULL);
401
414
{
402
415
        return _raid_set_events(seg, events, 0);
403
416
}
 
417
#  endif /* DMEVENTD */
404
418
#endif /* DEVMAPPER_SUPPORT */
405
 
#endif /* DMEVENTD */
 
419
 
406
420
static struct segtype_handler _raid_ops = {
407
421
        .name = _raid_name,
 
422
        .display = _raid_display,
408
423
        .text_import_area_count = _raid_text_import_area_count,
409
424
        .text_import = _raid_text_import,
410
425
        .text_export = _raid_text_export,
413
428
#ifdef DEVMAPPER_SUPPORT
414
429
        .target_percent = _raid_target_percent,
415
430
        .target_present = _raid_target_present,
 
431
        .modules_needed = _raid_modules_needed,
416
432
#  ifdef DMEVENTD
417
433
        .target_monitored = _raid_target_monitored,
418
434
        .target_monitor_events = _raid_target_monitor_events,
419
435
        .target_unmonitor_events = _raid_target_unmonitor_events,
420
436
#  endif        /* DMEVENTD */
421
437
#endif
422
 
        .modules_needed = _raid_modules_needed,
423
438
        .destroy = _raid_destroy,
424
439
};
425
440
 
477
492
        int monitored = 0;
478
493
 
479
494
#ifdef DEVMAPPER_SUPPORT
480
 
#ifdef DMEVENTD
 
495
#  ifdef DMEVENTD
481
496
        if (_get_raid_dso_path(cmd))
482
497
                monitored = SEG_MONITORED;
483
 
#endif
 
498
#  endif
484
499
#endif
485
500
 
486
501
        for (i = 0; i < DM_ARRAY_SIZE(_raid_types); ++i)