Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sbin/hastd/activemap.h
39475 views
1
/*-
2
* SPDX-License-Identifier: BSD-2-Clause
3
*
4
* Copyright (c) 2009-2010 The FreeBSD Foundation
5
*
6
* This software was developed by Pawel Jakub Dawidek under sponsorship from
7
* the FreeBSD Foundation.
8
*
9
* Redistribution and use in source and binary forms, with or without
10
* modification, are permitted provided that the following conditions
11
* are met:
12
* 1. Redistributions of source code must retain the above copyright
13
* notice, this list of conditions and the following disclaimer.
14
* 2. Redistributions in binary form must reproduce the above copyright
15
* notice, this list of conditions and the following disclaimer in the
16
* documentation and/or other materials provided with the distribution.
17
*
18
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
19
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
22
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28
* SUCH DAMAGE.
29
*/
30
31
#ifndef _ACTIVEMAP_H_
32
#define _ACTIVEMAP_H_
33
34
#include <stdbool.h>
35
#include <stdint.h>
36
37
struct activemap;
38
39
int activemap_init(struct activemap **ampp, uint64_t mediasize,
40
uint32_t extentsize, uint32_t sectorsize, uint32_t keepdirty);
41
void activemap_free(struct activemap *amp);
42
43
bool activemap_write_start(struct activemap *amp, off_t offset, off_t length);
44
bool activemap_write_complete(struct activemap *amp, off_t offset,
45
off_t length);
46
bool activemap_extent_complete(struct activemap *amp, int extent);
47
uint64_t activemap_ndirty(const struct activemap *amp);
48
49
bool activemap_differ(const struct activemap *amp);
50
size_t activemap_size(const struct activemap *amp);
51
size_t activemap_ondisk_size(const struct activemap *amp);
52
void activemap_copyin(struct activemap *amp, const unsigned char *buf,
53
size_t size);
54
void activemap_merge(struct activemap *amp, const unsigned char *buf,
55
size_t size);
56
const unsigned char *activemap_bitmap(struct activemap *amp, size_t *sizep);
57
58
size_t activemap_calc_ondisk_size(uint64_t mediasize, uint32_t extentsize,
59
uint32_t sectorsize);
60
61
void activemap_sync_rewind(struct activemap *amp);
62
off_t activemap_sync_offset(struct activemap *amp, off_t *lengthp,
63
int *syncextp);
64
bool activemap_need_sync(struct activemap *amp, off_t offset, off_t length);
65
66
void activemap_dump(const struct activemap *amp);
67
68
#endif /* !_ACTIVEMAP_H_ */
69
70