source: mainline/uspace/srv/bd/hr/util.h@ 8a65373

Last change on this file since 8a65373 was 8b51009, checked in by Miroslav Cimerman <mc@…>, 7 months ago

hr: auto assembly, refactor

Added automatic assembly (with hrctl -A). All disks or their partitions
are scanned for HelenRAID metadata and assembly is attempted.

Main volume list is now locked with RW lock. The volume list
manipulation functions are moved into util.c.

hr_{create,destroy}_vol_struct() are implemented for better reusability
and modularity.

Volume destroy/stop (hrctl -D) now returns EBUSY if someone has still
the volume open()-ed.

  • Property mode set to 100644
File size: 3.1 KB
Line 
1/*
2 * Copyright (c) 2025 Miroslav Cimerman
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/** @addtogroup hr
30 * @{
31 */
32/**
33 * @file
34 */
35
36#ifndef _HR_UTIL_H
37#define _HR_UTIL_H
38
39#include <errno.h>
40#include <io/log.h>
41
42#include "var.h"
43
44#define HR_DEBUG(format, ...) \
45 log_msg(LOG_DEFAULT, LVL_DEBUG, format, ##__VA_ARGS__)
46
47#define HR_WARN(format, ...) \
48 log_msg(LOG_DEFAULT, LVL_WARN, format, ##__VA_ARGS__)
49
50#define HR_ERROR(format, ...) \
51 log_msg(LOG_DEFAULT, LVL_ERROR, format, ##__VA_ARGS__)
52
53
54extern errno_t hr_create_vol_struct(hr_volume_t **, hr_level_t);
55extern void hr_destroy_vol_struct(hr_volume_t *);
56extern hr_volume_t *hr_get_volume(service_id_t);
57extern errno_t hr_remove_volume(service_id_t);
58extern errno_t hr_init_devs(hr_volume_t *);
59extern void hr_fini_devs(hr_volume_t *);
60extern errno_t hr_register_volume(hr_volume_t *);
61extern errno_t hr_check_devs(hr_volume_t *, uint64_t *, size_t *);
62extern errno_t hr_check_ba_range(hr_volume_t *, size_t, uint64_t);
63extern void hr_add_ba_offset(hr_volume_t *, uint64_t *);
64extern void hr_update_ext_status(hr_volume_t *, size_t,
65 hr_ext_status_t);
66extern void hr_update_hotspare_status(hr_volume_t *, size_t,
67 hr_ext_status_t);
68extern void hr_update_vol_status(hr_volume_t *, hr_vol_status_t);
69extern void hr_update_ext_svc_id(hr_volume_t *, size_t,
70 service_id_t);
71extern void hr_update_hotspare_svc_id(hr_volume_t *, size_t,
72 service_id_t);
73extern void hr_sync_all_extents(hr_volume_t *);
74extern size_t hr_count_extents(hr_volume_t *, hr_ext_status_t);
75extern void hr_mark_vol_state_dirty(hr_volume_t *);
76extern void hr_range_lock_release(hr_range_lock_t *);
77extern hr_range_lock_t *hr_range_lock_acquire(hr_volume_t *, uint64_t,
78 uint64_t);
79extern errno_t hr_util_try_auto_assemble(size_t *);
80
81#endif
82
83/** @}
84 */
Note: See TracBrowser for help on using the repository browser.