1*084fd14fSBrian Behlendorf /*
2*084fd14fSBrian Behlendorf * This file and its contents are supplied under the terms of the
3*084fd14fSBrian Behlendorf * Common Development and Distribution License ("CDDL"), version 1.0.
4*084fd14fSBrian Behlendorf * You may only use this file in accordance with the terms of version
5*084fd14fSBrian Behlendorf * 1.0 of the CDDL.
6*084fd14fSBrian Behlendorf *
7*084fd14fSBrian Behlendorf * A full copy of the text of the CDDL should have accompanied this
8*084fd14fSBrian Behlendorf * source. A copy of the CDDL is also available via the Internet at
9*084fd14fSBrian Behlendorf * http://www.illumos.org/license/CDDL.
10*084fd14fSBrian Behlendorf */
11*084fd14fSBrian Behlendorf
12*084fd14fSBrian Behlendorf /*
13*084fd14fSBrian Behlendorf * Copyright 2019 Joyent, Inc.
14*084fd14fSBrian Behlendorf */
15*084fd14fSBrian Behlendorf
16*084fd14fSBrian Behlendorf #include <sys/types.h>
17*084fd14fSBrian Behlendorf #include <sys/stat.h>
18*084fd14fSBrian Behlendorf #include <fcntl.h>
19*084fd14fSBrian Behlendorf #include <stdio.h>
20*084fd14fSBrian Behlendorf #include <stdlib.h>
21*084fd14fSBrian Behlendorf #include <errno.h>
22*084fd14fSBrian Behlendorf #include <string.h>
23*084fd14fSBrian Behlendorf #include <unistd.h>
24*084fd14fSBrian Behlendorf #include <sys/dkio.h>
25*084fd14fSBrian Behlendorf
26*084fd14fSBrian Behlendorf int
main(int argc,char ** argv)27*084fd14fSBrian Behlendorf main(int argc, char **argv)
28*084fd14fSBrian Behlendorf {
29*084fd14fSBrian Behlendorf int umap, fd;
30*084fd14fSBrian Behlendorf
31*084fd14fSBrian Behlendorf if (argc < 2) {
32*084fd14fSBrian Behlendorf fprintf(stderr, "missing disk name\n");
33*084fd14fSBrian Behlendorf exit(2);
34*084fd14fSBrian Behlendorf }
35*084fd14fSBrian Behlendorf
36*084fd14fSBrian Behlendorf if ((fd = open(argv[1], O_RDONLY)) == -1) {
37*084fd14fSBrian Behlendorf fprintf(stderr, "couldn't open %s: %s\n", argv[1],
38*084fd14fSBrian Behlendorf strerror(errno));
39*084fd14fSBrian Behlendorf exit(2);
40*084fd14fSBrian Behlendorf }
41*084fd14fSBrian Behlendorf
42*084fd14fSBrian Behlendorf if (ioctl(fd, DKIOC_CANFREE, &umap) < 0) {
43*084fd14fSBrian Behlendorf fprintf(stderr, "ioctl failed %s: %s\n", argv[1],
44*084fd14fSBrian Behlendorf strerror(errno));
45*084fd14fSBrian Behlendorf exit(2);
46*084fd14fSBrian Behlendorf }
47*084fd14fSBrian Behlendorf
48*084fd14fSBrian Behlendorf (void) close(fd);
49*084fd14fSBrian Behlendorf
50*084fd14fSBrian Behlendorf return (umap ? 0 : 1);
51*084fd14fSBrian Behlendorf }
52