4 * Copyright (C) 1997-2004 Sistina Software, Inc. All rights reserved.
5 * Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved.
7 * This file is part of LVM2.
9 * This copyrighted material is made available to anyone wishing to use,
10 * modify, copy, or redistribute it subject to the terms and conditions
11 * of the GNU Lesser General Public License v.2.1.
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program; if not, write to the Free Software Foundation,
15 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 #include "pool_label.h"
28 static void _pool_not_supported(const char *op
)
30 log_error("The '%s' operation is not supported for the pool labeller.",
34 static int _pool_can_handle(struct labeller
*l
__attribute((unused
)), void *buf
, uint64_t sector
)
40 * POOL label must always be in first sector
45 pool_label_in(&pd
, buf
);
47 /* can ignore 8 rightmost bits for ondisk format check */
48 if ((pd
.pl_magic
== POOL_MAGIC
) &&
49 (pd
.pl_version
>> 8 == POOL_VERSION
>> 8))
55 static int _pool_write(struct label
*label
__attribute((unused
)), void *buf
__attribute((unused
)))
57 _pool_not_supported("write");
61 static int _pool_read(struct labeller
*l
, struct device
*dev
, void *buf
,
66 return read_pool_label(&pl
, l
, dev
, buf
, label
);
69 static int _pool_initialise_label(struct labeller
*l
__attribute((unused
)), struct label
*label
)
71 strcpy(label
->type
, "POOL");
76 static void _pool_destroy_label(struct labeller
*l
__attribute((unused
)), struct label
*label
__attribute((unused
)))
81 static void _label_pool_destroy(struct labeller
*l
)
86 struct label_ops _pool_ops
= {
87 .can_handle
= _pool_can_handle
,
90 .verify
= _pool_can_handle
,
91 .initialise_label
= _pool_initialise_label
,
92 .destroy_label
= _pool_destroy_label
,
93 .destroy
= _label_pool_destroy
,
96 struct labeller
*pool_labeller_create(struct format_type
*fmt
)
100 if (!(l
= dm_malloc(sizeof(*l
)))) {
101 log_error("Couldn't allocate labeller object.");
106 l
->private = (const void *) fmt
;