17 * information: Portions Copyright [yyyy] [name of copyright owner] |
17 * information: Portions Copyright [yyyy] [name of copyright owner] |
18 * |
18 * |
19 * CDDL HEADER END |
19 * CDDL HEADER END |
20 */ |
20 */ |
21 /* |
21 /* |
22 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. |
22 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. |
23 * Use is subject to license terms. |
23 * Use is subject to license terms. |
24 */ |
24 */ |
25 |
25 |
26 #ifndef _SYS_METASLAB_H |
26 #ifndef _SYS_METASLAB_H |
27 #define _SYS_METASLAB_H |
27 #define _SYS_METASLAB_H |
37 #endif |
37 #endif |
38 |
38 |
39 typedef struct metaslab_class metaslab_class_t; |
39 typedef struct metaslab_class metaslab_class_t; |
40 typedef struct metaslab_group metaslab_group_t; |
40 typedef struct metaslab_group metaslab_group_t; |
41 |
41 |
|
42 extern space_map_ops_t *zfs_metaslab_ops; |
|
43 |
42 extern metaslab_t *metaslab_init(metaslab_group_t *mg, space_map_obj_t *smo, |
44 extern metaslab_t *metaslab_init(metaslab_group_t *mg, space_map_obj_t *smo, |
43 uint64_t start, uint64_t size, uint64_t txg); |
45 uint64_t start, uint64_t size, uint64_t txg); |
44 extern void metaslab_fini(metaslab_t *msp); |
46 extern void metaslab_fini(metaslab_t *msp); |
45 extern void metaslab_sync(metaslab_t *msp, uint64_t txg); |
47 extern void metaslab_sync(metaslab_t *msp, uint64_t txg); |
46 extern void metaslab_sync_done(metaslab_t *msp, uint64_t txg); |
48 extern void metaslab_sync_done(metaslab_t *msp, uint64_t txg); |
53 blkptr_t *bp, int ncopies, uint64_t txg, blkptr_t *hintbp, int flags); |
55 blkptr_t *bp, int ncopies, uint64_t txg, blkptr_t *hintbp, int flags); |
54 extern void metaslab_free(spa_t *spa, const blkptr_t *bp, uint64_t txg, |
56 extern void metaslab_free(spa_t *spa, const blkptr_t *bp, uint64_t txg, |
55 boolean_t now); |
57 boolean_t now); |
56 extern int metaslab_claim(spa_t *spa, const blkptr_t *bp, uint64_t txg); |
58 extern int metaslab_claim(spa_t *spa, const blkptr_t *bp, uint64_t txg); |
57 |
59 |
58 extern metaslab_class_t *metaslab_class_create(void); |
60 extern metaslab_class_t *metaslab_class_create(space_map_ops_t *ops); |
59 extern void metaslab_class_destroy(metaslab_class_t *mc); |
61 extern void metaslab_class_destroy(metaslab_class_t *mc); |
60 extern void metaslab_class_add(metaslab_class_t *mc, metaslab_group_t *mg); |
62 extern void metaslab_class_add(metaslab_class_t *mc, metaslab_group_t *mg); |
61 extern void metaslab_class_remove(metaslab_class_t *mc, metaslab_group_t *mg); |
63 extern void metaslab_class_remove(metaslab_class_t *mc, metaslab_group_t *mg); |
62 |
64 |
63 extern metaslab_group_t *metaslab_group_create(metaslab_class_t *mc, |
65 extern metaslab_group_t *metaslab_group_create(metaslab_class_t *mc, |