Skip to content

Commit 301d298

Browse files
committed
CP-35551: remove blktap device handling
Signed-off-by: Mark Syms <[email protected]>
1 parent 2a64ef3 commit 301d298

24 files changed

+442
-1411
lines changed

control/tap-ctl-allocate.c

Lines changed: 11 additions & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
#include <linux/major.h>
4949

5050
#include "tap-ctl.h"
51-
#include "blktap2.h"
51+
#include "blktap.h"
5252

5353
static int
5454
tap_ctl_prepare_directory(const char *dir)
@@ -71,7 +71,7 @@ tap_ctl_prepare_directory(const char *dir)
7171
if (ptr)
7272
*ptr = '\0';
7373

74-
err = mkdir(name, 0755);
74+
err = mkdir(name, 0700);
7575
if (err && errno != EEXIST) {
7676
PERROR("mkdir %s", name);
7777
err = errno;
@@ -94,165 +94,37 @@ tap_ctl_prepare_directory(const char *dir)
9494
}
9595

9696
static int
97-
tap_ctl_make_device(const char *devname, const int major,
98-
const int minor, const int perm)
97+
tap_ctl_check_environment(void)
9998
{
10099
int err;
101-
char *copy, *dir;
102-
103-
copy = strdup(devname);
104-
if (!copy)
105-
return ENOMEM;
106-
107-
dir = dirname(copy);
108-
109-
err = tap_ctl_prepare_directory(dir);
110-
free(copy);
111-
112-
if (err)
113-
return err;
114-
115-
if (unlink(devname)) {
116-
err = errno;
117-
if (err != ENOENT) {
118-
PERROR("unlink %s", devname);
119-
EPRINTF("Unlink failed with %d\n", err);
120-
return err;
121-
}
122-
}
123100

124-
err = mknod(devname, perm, makedev(major, minor));
101+
err = tap_ctl_prepare_directory(BLKTAP2_CONTROL_DIR);
125102
if (err) {
126-
err = errno;
127-
PERROR("mknod %s", devname);
128-
EPRINTF("Mknod failed with %d\n", err);
103+
EPRINTF("Prepare %s directory failed %d",
104+
BLKTAP2_CONTROL_DIR, err);
129105
return err;
130106
}
131107

132-
return 0;
133-
}
134-
135-
static int
136-
tap_ctl_check_environment(void)
137-
{
138-
FILE *f;
139-
int err, minor;
140-
char name[257];
141-
142-
err = tap_ctl_prepare_directory(BLKTAP2_CONTROL_DIR);
108+
err = tap_ctl_prepare_directory(BLKTAP2_NP_RUN_DIR);
143109
if (err) {
144-
EPRINTF("Prepare directory failed %d", err);
110+
EPRINTF("Prepare %s directory failed %d",
111+
BLKTAP2_NP_RUN_DIR, err);
145112
return err;
146113
}
147114

148-
f = fopen("/proc/misc", "r");
149-
if (!f) {
150-
EPRINTF("failed to open /proc/misc: %d\n", errno);
151-
return errno;
152-
}
153-
/* There is not a lot we can do about an error returned
154-
* from flock() so don't check */
155-
flock(fileno(f), LOCK_EX);
156-
157-
/* Note err is 0 owing to tap_ctl_prepare_directory() above */
158-
if (!access(BLKTAP2_CONTROL_DEVICE, R_OK | W_OK))
159-
goto out;
160-
161-
memset(name, 0, sizeof(name));
162-
163-
while (fscanf(f, "%d %256s", &minor, name) == 2)
164-
if (!strcmp(name, BLKTAP2_CONTROL_NAME)) {
165-
err = tap_ctl_make_device(BLKTAP2_CONTROL_DEVICE,
166-
MISC_MAJOR,
167-
minor, S_IFCHR | 0600);
168-
if (err)
169-
EPRINTF("tap_ctl_make_device failed\n");
170-
goto out;
171-
}
172-
173-
err = ENOSYS;
174-
EPRINTF("didn't find %s in /proc/misc\n", BLKTAP2_CONTROL_NAME);
175-
176-
out:
177-
flock(fileno(f), LOCK_UN);
178-
fclose(f);
179115
return err;
180116
}
181117

182118
static int
183119
tap_ctl_allocate_device(int *minor, char **devname)
184120
{
185-
char *name;
186-
int fd, err;
187-
struct blktap2_handle handle;
188-
char free_devname = 0;
189-
190121
*minor = -1;
191122
if (!devname)
192123
return EINVAL;
193124

194-
fd = open(BLKTAP2_CONTROL_DEVICE, O_RDONLY);
195-
if (fd == -1) {
196-
EPRINTF("failed to open control device: %d\n", errno);
197-
return errno;
198-
}
199-
200-
err = ioctl(fd, BLKTAP2_IOCTL_ALLOC_TAP, &handle);
201-
close(fd);
202-
if (err == -1) {
203-
EPRINTF("failed to allocate new device: %d\n", errno);
204-
return errno;
205-
}
206-
207-
err = asprintf(&name, "%s%d", BLKTAP2_RING_DEVICE, handle.minor);
208-
if (err == -1) {
209-
err = ENOMEM;
210-
goto fail;
211-
}
212-
213-
err = tap_ctl_make_device(name, handle.ring,
214-
handle.minor, S_IFCHR | 0600);
215-
free(name);
216-
if (err) {
217-
EPRINTF("creating ring device for %d failed: %d\n",
218-
handle.minor, err);
219-
goto fail;
220-
}
221-
222-
if (*devname)
223-
name = *devname;
224-
else {
225-
err = asprintf(&name, "%s%d",
226-
BLKTAP2_IO_DEVICE, handle.minor);
227-
if (err == -1) {
228-
err = ENOMEM;
229-
goto fail;
230-
}
231-
*devname = name;
232-
free_devname = 1;
233-
}
234-
235-
err = tap_ctl_make_device(name, handle.device,
236-
handle.minor, S_IFBLK | 0600);
237-
if (err) {
238-
EPRINTF("creating IO device for %d failed: %d\n",
239-
handle.minor, err);
240-
goto fail;
241-
}
242-
243-
DBG("new interface: ring: %u, device: %u, minor: %u\n",
244-
handle.ring, handle.device, handle.minor);
245-
246-
*minor = handle.minor;
125+
/* TO-DO: get this from a file based resource */
126+
*minor = 1;
247127
return 0;
248-
249-
fail:
250-
if (free_devname) {
251-
free(*devname);
252-
*devname = 0;
253-
}
254-
tap_ctl_free(handle.minor);
255-
return err;
256128
}
257129

258130
int

control/tap-ctl-create.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
#include <getopt.h>
4040

4141
#include "tap-ctl.h"
42-
#include "blktap2.h"
42+
#include "blktap.h"
4343

4444
int
4545
tap_ctl_create(const char *params, char **devname, int flags, int parent_minor,

control/tap-ctl-destroy.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
#include <getopt.h>
4141

4242
#include "tap-ctl.h"
43-
#include "blktap2.h"
43+
#include "blktap.h"
4444

4545
int
4646
tap_ctl_destroy(const int id, const int minor,

control/tap-ctl-free.c

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,22 +41,24 @@
4141
#include <sys/ioctl.h>
4242

4343
#include "tap-ctl.h"
44-
#include "blktap2.h"
44+
#include "blktap.h"
4545

4646
int
4747
tap_ctl_free(const int minor)
4848
{
49-
int fd, err;
49+
/* TO-DO: Take the lock and remove the associated marker file */
50+
/* int fd, err; */
5051

51-
fd = open(BLKTAP2_CONTROL_DEVICE, O_RDONLY);
52-
if (fd == -1) {
53-
EPRINTF("failed to open control device: %d\n", errno);
54-
return errno;
55-
}
52+
/* fd = open(BLKTAP2_CONTROL_DEVICE, O_RDONLY); */
53+
/* if (fd == -1) { */
54+
/* EPRINTF("failed to open control device: %d\n", errno); */
55+
/* return errno; */
56+
/* } */
5657

57-
err = ioctl(fd, BLKTAP2_IOCTL_FREE_TAP, minor);
58-
err = (err == -1) ? -errno : 0;
59-
close(fd);
58+
/* err = ioctl(fd, BLKTAP2_IOCTL_FREE_TAP, minor); */
59+
/* err = (err == -1) ? -errno : 0; */
60+
/* close(fd); */
6061

61-
return err;
62+
/* return err; */
63+
return 0;
6264
}

control/tap-ctl-ipc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
#include <sys/socket.h>
4545

4646
#include "tap-ctl.h"
47-
#include "blktap2.h"
47+
#include "blktap.h"
4848
#include "compiler.h"
4949
#include "util.h"
5050

control/tap-ctl-list.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
#include <glob.h>
4141

4242
#include "tap-ctl.h"
43-
#include "blktap2.h"
43+
#include "blktap.h"
4444
#include "list.h"
4545

4646
static tap_list_t*

control/tap-ctl-spawn.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
#include <sys/wait.h>
4242

4343
#include "tap-ctl.h"
44-
#include "blktap2.h"
44+
#include "blktap.h"
4545

4646
static pid_t
4747
__tap_ctl_spawn(int *readfd)

drivers/Makefile.am

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ libtapdisk_la_SOURCES += tapdisk-control.h
3333
libtapdisk_la_SOURCES += tapdisk-vbd.c
3434
libtapdisk_la_SOURCES += tapdisk-vbd.h
3535
libtapdisk_la_SOURCES += linux-blktap.h
36-
libtapdisk_la_SOURCES += tapdisk-blktap.c
37-
libtapdisk_la_SOURCES += tapdisk-blktap.h
3836
libtapdisk_la_SOURCES += tapdisk-protocol-new.h
3937
libtapdisk_la_SOURCES += tapdisk-nbdserver.c
4038
libtapdisk_la_SOURCES += tapdisk-nbdserver.h

0 commit comments

Comments
 (0)