View | Details | Raw Unified | Return to bug 165428
Collapse All | Expand All

(-)b/sbin/geom/class/label/glabel.8 (+3 lines)
Lines 117-122 REISERFS (directory Link Here
117
.It
117
.It
118
NTFS (directory
118
NTFS (directory
119
.Pa /dev/ntfs/ ) .
119
.Pa /dev/ntfs/ ) .
120
.It
121
XFS (directory
122
.Pa /dev/xfs ) .
120
.El
123
.El
121
.Pp
124
.Pp
122
Support for partition metadata is implemented for:
125
Support for partition metadata is implemented for:
(-)b/sys/conf/files (+1 lines)
Lines 2222-2227 geom/label/g_label_ntfs.c optional geom_label Link Here
2222
geom/label/g_label_reiserfs.c	optional geom_label
2222
geom/label/g_label_reiserfs.c	optional geom_label
2223
geom/label/g_label_ufs.c	optional geom_label
2223
geom/label/g_label_ufs.c	optional geom_label
2224
geom/label/g_label_gpt.c	optional geom_label
2224
geom/label/g_label_gpt.c	optional geom_label
2225
geom/label/g_label_xfs.c	optional geom_label
2225
geom/linux_lvm/g_linux_lvm.c	optional geom_linux_lvm
2226
geom/linux_lvm/g_linux_lvm.c	optional geom_linux_lvm
2226
geom/mirror/g_mirror.c		optional geom_mirror
2227
geom/mirror/g_mirror.c		optional geom_mirror
2227
geom/mirror/g_mirror_ctl.c	optional geom_mirror
2228
geom/mirror/g_mirror_ctl.c	optional geom_mirror
(-)b/sys/geom/label/g_label.c (+1 lines)
Lines 87-92 const struct g_label_desc *g_labels[] = { Link Here
87
	&g_label_ntfs,
87
	&g_label_ntfs,
88
	&g_label_gpt,
88
	&g_label_gpt,
89
	&g_label_gpt_uuid,
89
	&g_label_gpt_uuid,
90
	&g_label_xfs,
90
	NULL
91
	NULL
91
};
92
};
92
93
(-)b/sys/geom/label/g_label.h (+1 lines)
Lines 87-92 extern struct g_label_desc g_label_reiserfs; Link Here
87
extern struct g_label_desc g_label_ntfs;
87
extern struct g_label_desc g_label_ntfs;
88
extern struct g_label_desc g_label_gpt;
88
extern struct g_label_desc g_label_gpt;
89
extern struct g_label_desc g_label_gpt_uuid;
89
extern struct g_label_desc g_label_gpt_uuid;
90
extern struct g_label_desc g_label_xfs;
90
#endif	/* _KERNEL */
91
#endif	/* _KERNEL */
91
92
92
struct g_label_metadata {
93
struct g_label_metadata {
(-)b/sys/geom/label/g_label_xfs.c (+85 lines)
Added Link Here
1
/*-
2
 * Copyright (c) 2010 Arne Meyer
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
 * 1. Redistributions of source code must retain the above copyright
9
 *    notice, this list of conditions and the following disclaimer.
10
 * 2. Redistributions in binary form must reproduce the above copyright
11
 *    notice, this list of conditions and the following disclaimer in the
12
 *    documentation and/or other materials provided with the distribution.
13
 *
14
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24
 * SUCH DAMAGE.
25
 */
26
27
#include <sys/cdefs.h>
28
29
#include <sys/param.h>
30
#include <sys/systm.h>
31
#include <sys/kernel.h>
32
#include <sys/malloc.h>
33
34
#include <geom/geom.h>
35
#include <geom/label/g_label.h>
36
37
#define XFS_MAGIC 0x58465342
38
39
typedef struct xfs_sb {
40
	uint32_t sb_magicnum;
41
	char fake[104];
42
	char sb_fname[12];
43
} xfs_sb_t;
44
45
static void
46
g_label_xfs_taste(struct g_consumer *cp, char *label, size_t size)
47
{
48
	struct g_provider *pp;
49
	xfs_sb_t *fs;
50
51
	g_topology_assert_not();
52
	pp = cp->provider;
53
	label[0] = '\0';
54
55
	fs = (xfs_sb_t *)g_read_data(cp, 0, pp->sectorsize, NULL);
56
	if(fs == NULL)
57
		return;
58
59
	/* Check for xfs magic */
60
	if (be32toh(fs->sb_magicnum) == XFS_MAGIC) {
61
		G_LABEL_DEBUG(1, "xfs file system detected on %s.",
62
		    pp->name);
63
	} else {
64
		goto exit_free;
65
	}
66
67
	/* Check for volume label */
68
	if (fs->sb_fname[0] == '\0')
69
		goto exit_free;
70
71
	/* Terminate label */
72
	fs->sb_fname[sizeof(fs->sb_fname) - 1] = '\0';
73
	strlcpy(label, fs->sb_fname, size);
74
75
exit_free:
76
	g_free(fs);
77
}
78
79
struct g_label_desc g_label_xfs = {
80
	.ld_taste = g_label_xfs_taste,
81
	.ld_dir = "xfs",
82
	.ld_enabled = 1
83
};
84
85
G_LABEL_INIT(xfs, g_label_xfs, "Create device nodes for XFS volumes");
(-)b/sys/modules/geom/geom_label/Makefile (+1 lines)
Lines 11-15 SRCS+= g_label_msdosfs.c Link Here
11
SRCS+=	g_label_ntfs.c
11
SRCS+=	g_label_ntfs.c
12
SRCS+=	g_label_reiserfs.c
12
SRCS+=	g_label_reiserfs.c
13
SRCS+=	g_label_ufs.c
13
SRCS+=	g_label_ufs.c
14
SRCS+=	g_label_xfs.c
14
15
15
.include <bsd.kmod.mk>
16
.include <bsd.kmod.mk>

Return to bug 165428