Symbol: drive
games/battlestar/cypher.c
517
lflag = drive();
games/battlestar/extern.h
343
int drive(void);
sbin/vinum/commands.c
1293
get_drive_info(&drive, srcobj); /* get info on drive */
sbin/vinum/commands.c
1303
drive.label.name,
sbin/vinum/commands.c
1522
struct drive *
sbin/vinum/commands.c
1566
return &drive; /* return the name of the drive */
sbin/vinum/commands.c
1585
struct drive *drive; /* drive we're currently looking at */
sbin/vinum/commands.c
1635
if ((drive = find_drive_by_devname(argv[o])) == NULL) /* doesn't exist */
sbin/vinum/commands.c
1636
drive = create_drive(argv[o]); /* create it */
sbin/vinum/commands.c
1637
sprintf(buffer, "sd name %s.p0.s%d drive %s size 0", objectname, o, drive->label.name);
sbin/vinum/commands.c
1639
printf(" sd name %s.p0.s%d drive %s size 0\n", objectname, o, drive->label.name);
sbin/vinum/commands.c
1686
struct drive *drive; /* drive we're currently looking at */
sbin/vinum/commands.c
1719
if ((drive = find_drive_by_devname(argv[o])) == NULL) /* doesn't exist */
sbin/vinum/commands.c
1720
drive = create_drive(argv[o]); /* create it */
sbin/vinum/commands.c
1723
for (fe = 0; fe < drive->freelist_entries; fe++) {
sbin/vinum/commands.c
1724
freeunion.ferq.driveno = drive->driveno;
sbin/vinum/commands.c
1776
drive = find_drive_by_devname(argv[o]); /* we know it exists... */
sbin/vinum/commands.c
1781
drive->label.name,
sbin/vinum/commands.c
1787
drive->label.name,
sbin/vinum/commands.c
1834
struct drive *drive; /* drive we're currently looking at */
sbin/vinum/commands.c
1867
if ((drive = find_drive_by_devname(argv[o])) == NULL) /* doesn't exist */
sbin/vinum/commands.c
1868
drive = create_drive(argv[o]); /* create it */
sbin/vinum/commands.c
1871
for (fe = 0; fe < drive->freelist_entries; fe++) {
sbin/vinum/commands.c
1872
freeunion.ferq.driveno = drive->driveno;
sbin/vinum/commands.c
1924
drive = find_drive_by_devname(argv[o]); /* we know it exists... */
sbin/vinum/commands.c
1929
drive->label.name,
sbin/vinum/commands.c
1935
drive->label.name,
sbin/vinum/commands.c
1982
struct drive *drive; /* drive we're currently looking at */
sbin/vinum/commands.c
2015
if ((drive = find_drive_by_devname(argv[o])) == NULL) /* doesn't exist */
sbin/vinum/commands.c
2016
drive = create_drive(argv[o]); /* create it */
sbin/vinum/commands.c
2019
for (fe = 0; fe < drive->freelist_entries; fe++) {
sbin/vinum/commands.c
2020
freeunion.ferq.driveno = drive->driveno;
sbin/vinum/commands.c
2072
drive = find_drive_by_devname(argv[o]); /* we know it exists... */
sbin/vinum/commands.c
2077
drive->label.name,
sbin/vinum/commands.c
2083
drive->label.name,
sbin/vinum/commands.c
2136
struct drive *drive; /* drive we're currently looking at */
sbin/vinum/commands.c
2177
if ((drive = find_drive_by_devname(argv[o])) == NULL) /* doesn't exist */
sbin/vinum/commands.c
2178
drive = create_drive(argv[o]); /* create it */
sbin/vinum/commands.c
2182
for (fe = 0; fe < drive->freelist_entries; fe++) {
sbin/vinum/commands.c
2183
freeunion.ferq.driveno = drive->driveno;
sbin/vinum/commands.c
2246
drive = find_drive_by_devname(argv[o]); /* we know it exists... */
sbin/vinum/commands.c
2252
drive->label.name,
sbin/vinum/commands.c
2259
drive->label.name,
sbin/vinum/commands.c
2364
if (drive.state == state) /* already in that state */
sbin/vinum/commands.c
2365
fprintf(stderr, "%s is already %s\n", drive.label.name, argv[0]);
sbin/vinum/commands.c
574
if (drive.state == drive_up) /* already up */
sbin/vinum/commands.c
575
fprintf(stderr, "%s is already up\n", drive.label.name);
sbin/vinum/list.c
1074
struct drive drive;
sbin/vinum/list.c
1090
get_drive_info(&drive, i);
sbin/vinum/list.c
1091
if (drive.state != drive_unallocated) {
sbin/vinum/list.c
1095
drive.label.name,
sbin/vinum/list.c
1096
drive.devicename);
sbin/vinum/list.c
1137
get_drive_info(&drive, sd.driveno);
sbin/vinum/list.c
1144
drive.label.name,
sbin/vinum/list.c
1154
drive.label.name,
sbin/vinum/list.c
1172
get_drive_info(&drive, o);
sbin/vinum/list.c
1173
if ((drive.state != drive_unallocated) /* drive exists */
sbin/vinum/list.c
1174
&&(drive.state != drive_up)) { /* but it's not up */
sbin/vinum/list.c
156
get_drive_info(&drive, driveno);
sbin/vinum/list.c
157
if (drive.state != drive_unallocated) {
sbin/vinum/list.c
160
drive.label.name,
sbin/vinum/list.c
161
drive.devicename);
sbin/vinum/list.c
162
t = drive.label.date_of_birth.tv_sec;
sbin/vinum/list.c
164
drive.label.sysname,
sbin/vinum/list.c
166
t = drive.label.last_update.tv_sec;
sbin/vinum/list.c
171
(long long) drive.label.drive_size, /* bytes used */
sbin/vinum/list.c
172
(long long) (drive.label.drive_size / MEGABYTE),
sbin/vinum/list.c
173
(long long) (drive.label.drive_size - drive.sectors_available
sbin/vinum/list.c
175
(long long) (drive.label.drive_size - drive.sectors_available
sbin/vinum/list.c
177
(long long) drive.sectors_available * DEV_BSIZE,
sbin/vinum/list.c
178
(int) (drive.sectors_available * DEV_BSIZE / MEGABYTE));
sbin/vinum/list.c
179
printf("\t\tState: %s\n", drive_state(drive.state));
sbin/vinum/list.c
180
if (drive.lasterror != 0)
sbin/vinum/list.c
181
printf("\t\tLast error: %s\n", strerror(drive.lasterror));
sbin/vinum/list.c
185
drive.active,
sbin/vinum/list.c
186
drive.maxactive);
sbin/vinum/list.c
198
drive.freelist_entries);
sbin/vinum/list.c
199
for (fe = 0; fe < drive.freelist_entries; fe++) {
sbin/vinum/list.c
200
freeunion.ferq.driveno = drive.driveno;
sbin/vinum/list.c
216
drive.label.name,
sbin/vinum/list.c
217
drive_state(drive.state),
sbin/vinum/list.c
218
drive.devicename,
sbin/vinum/list.c
219
(long long) drive.sectors_available * DEV_BSIZE / MEGABYTE,
sbin/vinum/list.c
220
(long long) (drive.label.drive_size / MEGABYTE));
sbin/vinum/list.c
221
if (drive.label.drive_size != 0)
sbin/vinum/list.c
223
(int) ((drive.sectors_available * 100 * DEV_BSIZE)
sbin/vinum/list.c
224
/ (drive.label.drive_size - (DATASTART * DEV_BSIZE))));
sbin/vinum/list.c
229
(long long) drive.reads,
sbin/vinum/list.c
230
(long long) drive.bytes_read,
sbin/vinum/list.c
231
roughlength(drive.bytes_read, 1));
sbin/vinum/list.c
232
if (drive.reads != 0)
sbin/vinum/list.c
234
(long long) drive.bytes_read / drive.reads);
sbin/vinum/list.c
236
(long long) drive.writes,
sbin/vinum/list.c
237
(long long) drive.bytes_written,
sbin/vinum/list.c
238
roughlength(drive.bytes_written, 1));
sbin/vinum/list.c
239
if (drive.writes != 0)
sbin/vinum/list.c
241
(long long) (drive.bytes_written / drive.writes));
sbin/vinum/list.c
244
drive.label.name,
sbin/vinum/list.c
245
(long long) drive.reads,
sbin/vinum/list.c
246
(long long) drive.bytes_read);
sbin/vinum/list.c
247
if (drive.reads != 0)
sbin/vinum/list.c
249
(long long) (drive.bytes_read / drive.reads));
sbin/vinum/list.c
253
(long long) drive.writes,
sbin/vinum/list.c
254
(long long) drive.bytes_written);
sbin/vinum/list.c
255
if (drive.writes != 0)
sbin/vinum/list.c
257
(long long) (drive.bytes_written / drive.writes));
sbin/vinum/list.c
265
&& (sd.driveno == drive.driveno))
sbin/vinum/list.c
658
get_drive_info(&drive, sd.driveno);
sbin/vinum/list.c
661
drive.label.name,
sbin/vinum/list.c
662
drive.devicename);
sbin/vinum/list.c
663
else if (drive.devicename[0] != '\0') /* has a name */
sbin/vinum/list.c
665
drive.label.name,
sbin/vinum/list.c
666
drive.devicename,
sbin/vinum/list.c
671
drive.label.name,
sbin/vinum/v.c
423
get_drive_info(struct drive *drive, int index)
sbin/vinum/v.c
425
*(int *) drive = index; /* put in drive to hand to driver */
sbin/vinum/v.c
426
if (ioctl(superdev, VINUM_DRIVECONFIG, drive) < 0) {
sbin/vinum/v.c
491
struct drive *
sbin/vinum/v.c
496
struct drive *drivep = NULL;
sbin/vinum/v.c
504
get_drive_info(&drive, driveno);
sbin/vinum/v.c
505
if (drive.state == drive_unallocated)
sbin/vinum/v.c
507
if (strcmp(drive.devicename, name) == 0) {
sbin/vinum/v.c
508
drivep = &drive;
sbin/vinum/v.c
511
if (strcmp(drive.devicename, devpath) == 0) {
sbin/vinum/v.c
512
drivep = &drive;
sbin/vinum/v.c
581
get_drive_info(&drive, driveno);
sbin/vinum/v.c
582
if (drive.state > drive_referenced) {
sbin/vinum/v.c
583
sprintf(filename, "ln -s %s " VINUM_DIR "/drive/%s", drive.devicename, drive.label.name);
sbin/vinum/v.c
713
get_drive_info(&drive, object);
sbin/vinum/v.c
714
if (strcmp(name, drive.label.name) == 0) {
sbin/vinum/v.c
95
struct drive drive;
sbin/vinum/vext.h
100
struct drive *create_drive(char *devicename);
sbin/vinum/vext.h
119
struct drive *find_drive_by_devname(char *name);
sbin/vinum/vext.h
128
void get_drive_info(struct drive *drive, int index);
sbin/vinum/vext.h
133
struct drive *find_drive_by_devname(char *name);
sbin/vinum/vext.h
164
extern struct drive drive;
sbin/vinum/vinumparser.c
73
{keypair(drive),
sbin/vinum/vinumutil.c
132
for (i = 0; i < STATECOUNT(drive); i++)
sbin/vinum/vinumutil.c
53
if (((unsigned) state) >= STATECOUNT(drive)) {
stand/boot/pc32/boot2/boot2.c
151
unsigned drive;
stand/boot/pc32/boot2/boot2.c
278
dsk.drive = *(uint8_t *)PTOV(MEM_BTX_USR_ARG);
stand/boot/pc32/boot2/boot2.c
279
dsk.type = dsk.drive & DRV_HARD ? TYPE_AD : TYPE_FD;
stand/boot/pc32/boot2/boot2.c
280
dsk.unit = dsk.drive & DRV_MASK;
stand/boot/pc32/boot2/boot2.c
342
dsk.drive & DRV_MASK, dev_nm[dsk.type], dsk.unit,
stand/boot/pc32/boot2/boot2.c
431
bootinfo.bi_bios_dev = dsk.drive;
stand/boot/pc32/boot2/boot2.c
508
dsk.drive = (dsk.type <= TYPE_MAXHARD
stand/boot/pc32/boot2/boot2.c
733
v86.edx = nblk << 8 | dsk.drive;
sys/dev/disk/nata/ata-raid.c
3324
int count, disk, drive, error = 0;
sys/dev/disk/nata/ata-raid.c
3411
for (drive = 0; drive < rdp->total_disks; drive++) {
sys/dev/disk/nata/ata-raid.c
3412
meta->raid.disk[drive].flags = 0;
sys/dev/disk/nata/ata-raid.c
3413
if (rdp->disks[drive].flags & AR_DF_PRESENT)
sys/dev/disk/nata/ata-raid.c
3414
meta->raid.disk[drive].flags |= PR_F_VALID;
sys/dev/disk/nata/ata-raid.c
3415
if (rdp->disks[drive].flags & AR_DF_ASSIGNED)
sys/dev/disk/nata/ata-raid.c
3416
meta->raid.disk[drive].flags |= PR_F_ASSIGNED;
sys/dev/disk/nata/ata-raid.c
3417
if (rdp->disks[drive].flags & AR_DF_ONLINE)
sys/dev/disk/nata/ata-raid.c
3418
meta->raid.disk[drive].flags |= PR_F_ONLINE;
sys/dev/disk/nata/ata-raid.c
3420
if (rdp->disks[drive].flags & AR_DF_PRESENT)
sys/dev/disk/nata/ata-raid.c
3421
meta->raid.disk[drive].flags = (PR_F_REDIR | PR_F_DOWN);
sys/dev/disk/nata/ata-raid.c
3422
if (rdp->disks[drive].flags & AR_DF_SPARE)
sys/dev/disk/nata/ata-raid.c
3423
meta->raid.disk[drive].flags |= PR_F_SPARE;
sys/dev/disk/nata/ata-raid.c
3424
meta->raid.disk[drive].dummy_0 = 0x0;
sys/dev/disk/nata/ata-raid.c
3425
if (rdp->disks[drive].dev) {
sys/dev/disk/nata/ata-raid.c
3427
device_get_softc(device_get_parent(rdp->disks[drive].dev));
sys/dev/disk/nata/ata-raid.c
3429
device_get_softc(rdp->disks[drive].dev);
sys/dev/disk/nata/ata-raid.c
3431
meta->raid.disk[drive].channel = ch->unit;
sys/dev/disk/nata/ata-raid.c
3432
meta->raid.disk[drive].device = atadev->unit;
sys/dev/disk/nata/ata-raid.c
3434
meta->raid.disk[drive].magic_0 =
sys/dev/disk/nata/ata-raid.c
3435
PR_MAGIC0(meta->raid.disk[drive]) | timestamp.tv_sec;
sys/dev/disk/nata/ata-raid.c
3618
int array, disk_number, drive, retval = 0;
sys/dev/disk/nata/ata-raid.c
3706
for (drive = 0; drive < raid->total_disks; drive++) {
sys/dev/disk/nata/ata-raid.c
3707
raid->disks[drive].sectors = raid->total_sectors/raid->width;
sys/dev/disk/nata/ata-raid.c
3708
if (drive == disk_number) {
sys/dev/raid/ciss/ciss.c
4026
bus = CISS_BIG_MAP_BUS(sc, cn->data.drive.big_physical_drive_number);
sys/dev/raid/ciss/ciss.c
4028
CISS_BIG_MAP_TARGET(sc, cn->data.drive.big_physical_drive_number);
sys/dev/raid/ciss/cissreg.h
370
struct ciss_notify_drive drive;
sys/dev/raid/ida/ida.c
318
int drive, u_int64_t pblkno, int flags)
sys/dev/raid/ida/ida.c
343
hwqcb->hdr.drive = drive;
sys/dev/raid/ida/ida.c
407
hwqcb->hdr.drive = drv->drive;
sys/dev/raid/ida/ida_disk.c
206
ap->a_length, drv->drive, ap->a_offset / DEV_BSIZE, DMA_DATA_OUT);
sys/dev/raid/ida/ida_disk.c
250
drv->drive = drv->controller->num_drives;
sys/dev/raid/ida/ida_disk.c
254
&dinfo, sizeof(dinfo), drv->drive, 0, DMA_DATA_IN);
sys/dev/raid/ida/idavar.h
174
int drive; /* per controller */
sys/dev/raid/ida/idavar.h
196
int datasize, int drive, u_int64_t pblkno, int flags);
sys/dev/raid/ida/idavar.h
51
u_int8_t drive; /* logical drive */
sys/dev/raid/mlx/mlx.c
100
static int mlx_check(struct mlx_softc *sc, int drive);
sys/dev/raid/mlx/mlx.c
1558
mlx_check(struct mlx_softc *sc, int drive)
sys/dev/raid/mlx/mlx.c
1574
mlx_make_type2(mc, MLX_CMD_CHECKASYNC, 0, 0, 0, 0, 0, drive | 0x80, 0, 0);
sys/dev/raid/mlx/mlx.c
1584
device_printf(sc->mlx_sysdrive[drive].ms_disk, "consistency check started");
sys/dev/raid/mlx/mlx.c
914
mlx_submit_ioctl(struct mlx_softc *sc, struct mlx_sysdrive *drive, u_long cmd,
sys/dev/raid/mlx/mlx.c
925
*arg = drive->ms_state;
sys/dev/raid/mlx/mlx.c
936
result = mlx_check(sc, drive - &sc->mlx_sysdrive[0]);
sys/dev/raid/mlx/mlxvar.h
243
struct mlx_sysdrive *drive, u_long cmd,
sys/dev/raid/vinum/request.h
264
struct drive *drive; /* for daemonrq_closedrive */
sys/dev/raid/vinum/vinum.c
267
DRIVE = (struct drive *) Malloc(sizeof(struct drive) * INITIAL_DRIVES);
sys/dev/raid/vinum/vinum.c
269
bzero(DRIVE, sizeof(struct drive) * INITIAL_DRIVES);
sys/dev/raid/vinum/vinumconfig.c
1001
partition_status = read_drive_label(drive, 1);
sys/dev/raid/vinum/vinumconfig.c
1005
close_drive(drive);
sys/dev/raid/vinum/vinumconfig.c
1006
if (drive->lasterror == EFTYPE) /* wrong kind of partition */
sys/dev/raid/vinum/vinumconfig.c
1007
throw_rude_remark(drive->lasterror,
sys/dev/raid/vinum/vinumconfig.c
1009
drive->label.name);
sys/dev/raid/vinum/vinumconfig.c
1011
throw_rude_remark(drive->lasterror,
sys/dev/raid/vinum/vinumconfig.c
1013
drive->label.name);
sys/dev/raid/vinum/vinumconfig.c
1018
bcopy(token[1], drive->label.name, sizeof(drive->label.name));
sys/dev/raid/vinum/vinumconfig.c
1021
close_drive(drive);
sys/dev/raid/vinum/vinumconfig.c
1029
drive->state = drive_unallocated; /* throw it away completely */
sys/dev/raid/vinum/vinumconfig.c
1030
throw_rude_remark(drive->lasterror,
sys/dev/raid/vinum/vinumconfig.c
1033
drive->label.name);
sys/dev/raid/vinum/vinumconfig.c
1046
ksnprintf(drive->devicename, sizeof(drive->devicename),
sys/dev/raid/vinum/vinumconfig.c
1053
drive->state = DriveState(token[parameter]); /* set the state */
sys/dev/raid/vinum/vinumconfig.c
1057
drive->flags |= VF_HOTSPARE;
sys/dev/raid/vinum/vinumconfig.c
1061
close_drive(drive);
sys/dev/raid/vinum/vinumconfig.c
1069
if (drive->devicename[0] != '/') {
sys/dev/raid/vinum/vinumconfig.c
1070
drive->state = drive_unallocated; /* deallocate the drive */
sys/dev/raid/vinum/vinumconfig.c
1071
throw_rude_remark(EINVAL, "No device name for %s", drive->label.name);
sys/dev/raid/vinum/vinumconfig.c
1728
struct drive *drive = &DRIVE[driveno];
sys/dev/raid/vinum/vinumconfig.c
1732
||(drive->state == drive_unallocated)) { /* or nothing there */
sys/dev/raid/vinum/vinumconfig.c
1735
} else if (drive->opencount > 0) { /* we have subdisks */
sys/dev/raid/vinum/vinumconfig.c
307
struct drive *drive; /* and drive */
sys/dev/raid/vinum/vinumconfig.c
312
drive = &DRIVE[sd->driveno]; /* and drive */
sys/dev/raid/vinum/vinumconfig.c
314
if (drive->state != drive_up) {
sys/dev/raid/vinum/vinumconfig.c
318
if (drive->flags & VF_HOTSPARE) /* the drive is a hot spare, */
sys/dev/raid/vinum/vinumconfig.c
322
drive->label.name);
sys/dev/raid/vinum/vinumconfig.c
323
if ((drive->sectors_available == 0) /* no space left */
sys/dev/raid/vinum/vinumconfig.c
324
||(sd->sectors > drive->sectors_available)) { /* or too big, */
sys/dev/raid/vinum/vinumconfig.c
327
throw_rude_remark(ENOSPC, "No space for %s on %s", sd->name, drive->label.name);
sys/dev/raid/vinum/vinumconfig.c
330
drive->subdisks_used++; /* one more subdisk */
sys/dev/raid/vinum/vinumconfig.c
334
for (fe = 0; fe < drive->freelist_entries; fe++) {
sys/dev/raid/vinum/vinumconfig.c
335
if (drive->freelist[fe].sectors >= sd->sectors) { /* more space here */
sys/dev/raid/vinum/vinumconfig.c
336
sd->sectors = drive->freelist[fe].sectors; /* take it */
sys/dev/raid/vinum/vinumconfig.c
337
sd->driveoffset = drive->freelist[fe].offset;
sys/dev/raid/vinum/vinumconfig.c
347
drive->label.name);
sys/dev/raid/vinum/vinumconfig.c
349
if (sfe < (drive->freelist_entries - 1)) /* not the last one, */
sys/dev/raid/vinum/vinumconfig.c
350
bcopy(&drive->freelist[sfe + 1],
sys/dev/raid/vinum/vinumconfig.c
351
&drive->freelist[sfe],
sys/dev/raid/vinum/vinumconfig.c
352
(drive->freelist_entries - sfe) * sizeof(struct drive_freelist));
sys/dev/raid/vinum/vinumconfig.c
353
drive->freelist_entries--; /* one less entry */
sys/dev/raid/vinum/vinumconfig.c
354
drive->sectors_available -= sd->sectors; /* and note how much less space we have */
sys/dev/raid/vinum/vinumconfig.c
356
for (fe = 0; fe < drive->freelist_entries; fe++) {
sys/dev/raid/vinum/vinumconfig.c
357
if (drive->freelist[fe].sectors >= sd->sectors) { /* it'll fit here */
sys/dev/raid/vinum/vinumconfig.c
358
sd->driveoffset = drive->freelist[fe].offset;
sys/dev/raid/vinum/vinumconfig.c
359
if (sd->sectors == drive->freelist[fe].sectors) { /* used up the entire entry */
sys/dev/raid/vinum/vinumconfig.c
360
if (fe < (drive->freelist_entries - 1)) /* not the last one, */
sys/dev/raid/vinum/vinumconfig.c
361
bcopy(&drive->freelist[fe + 1],
sys/dev/raid/vinum/vinumconfig.c
362
&drive->freelist[fe],
sys/dev/raid/vinum/vinumconfig.c
363
(drive->freelist_entries - fe) * sizeof(struct drive_freelist));
sys/dev/raid/vinum/vinumconfig.c
364
drive->freelist_entries--; /* one less entry */
sys/dev/raid/vinum/vinumconfig.c
366
drive->freelist[fe].sectors -= sd->sectors; /* this much less space */
sys/dev/raid/vinum/vinumconfig.c
367
drive->freelist[fe].offset += sd->sectors; /* this much further on */
sys/dev/raid/vinum/vinumconfig.c
369
drive->sectors_available -= sd->sectors; /* and note how much less space we have */
sys/dev/raid/vinum/vinumconfig.c
380
throw_rude_remark(ENOSPC, "No space for %s on %s", sd->name, drive->label.name);
sys/dev/raid/vinum/vinumconfig.c
388
for (fe = 0; fe < drive->freelist_entries; fe++) {
sys/dev/raid/vinum/vinumconfig.c
389
u_int64_t dend = drive->freelist[fe].offset + drive->freelist[fe].sectors; /* end of entry */
sys/dev/raid/vinum/vinumconfig.c
391
if (drive->freelist[fe].offset > sd->driveoffset) { /* starts after the beginning of sd area */
sys/dev/raid/vinum/vinumconfig.c
397
drive->label.name,
sys/dev/raid/vinum/vinumconfig.c
417
drive->sectors_available -= sd->sectors; /* note how much less space we have */
sys/dev/raid/vinum/vinumconfig.c
418
if (sd->driveoffset == drive->freelist[fe].offset) { /* 1 or 2 */
sys/dev/raid/vinum/vinumconfig.c
419
if (sd->sectors == drive->freelist[fe].sectors) { /* 1: used up the entire entry */
sys/dev/raid/vinum/vinumconfig.c
420
if (fe < (drive->freelist_entries - 1)) /* not the last one, */
sys/dev/raid/vinum/vinumconfig.c
421
bcopy(&drive->freelist[fe + 1],
sys/dev/raid/vinum/vinumconfig.c
422
&drive->freelist[fe],
sys/dev/raid/vinum/vinumconfig.c
423
(drive->freelist_entries - fe) * sizeof(struct drive_freelist));
sys/dev/raid/vinum/vinumconfig.c
424
drive->freelist_entries--; /* one less entry */
sys/dev/raid/vinum/vinumconfig.c
426
drive->freelist[fe].sectors -= sd->sectors; /* this much less space */
sys/dev/raid/vinum/vinumconfig.c
427
drive->freelist[fe].offset += sd->sectors; /* this much further on */
sys/dev/raid/vinum/vinumconfig.c
430
drive->freelist[fe].sectors = sd->driveoffset - drive->freelist[fe].offset;
sys/dev/raid/vinum/vinumconfig.c
432
if (fe < (drive->freelist_entries - 1)) /* not the last one */
sys/dev/raid/vinum/vinumconfig.c
433
bcopy(&drive->freelist[fe], /* move the rest down */
sys/dev/raid/vinum/vinumconfig.c
434
&drive->freelist[fe + 1],
sys/dev/raid/vinum/vinumconfig.c
435
(drive->freelist_entries - fe) * sizeof(struct drive_freelist));
sys/dev/raid/vinum/vinumconfig.c
436
drive->freelist_entries++; /* one less entry */
sys/dev/raid/vinum/vinumconfig.c
437
drive->freelist[fe + 1].offset = sdend; /* second entry starts after sd */
sys/dev/raid/vinum/vinumconfig.c
438
drive->freelist[fe + 1].sectors = dend - sdend; /* and is this long */
sys/dev/raid/vinum/vinumconfig.c
445
drive->opencount++; /* one more subdisk attached */
sys/dev/raid/vinum/vinumconfig.c
453
struct drive *drive;
sys/dev/raid/vinum/vinumconfig.c
462
EXPAND(DRIVE, struct drive, vinum_conf.drives_allocated, INITIAL_DRIVES);
sys/dev/raid/vinum/vinumconfig.c
465
drive = &DRIVE[driveno];
sys/dev/raid/vinum/vinumconfig.c
466
bzero(drive, sizeof(struct drive));
sys/dev/raid/vinum/vinumconfig.c
467
drive->driveno = driveno; /* put number in structure */
sys/dev/raid/vinum/vinumconfig.c
468
drive->flags |= VF_NEWBORN; /* newly born drive */
sys/dev/raid/vinum/vinumconfig.c
469
strcpy(drive->devicename, "unknown"); /* and make the name ``unknown'' */
sys/dev/raid/vinum/vinumconfig.c
484
struct drive *drive;
sys/dev/raid/vinum/vinumconfig.c
488
drive = &DRIVE[driveno]; /* point to drive */
sys/dev/raid/vinum/vinumconfig.c
489
if ((drive->label.name[0] != '\0') /* it has a name */
sys/dev/raid/vinum/vinumconfig.c
490
&&(strcmp(drive->label.name, name) == 0) /* and it's this one */
sys/dev/raid/vinum/vinumconfig.c
491
&&(drive->state > drive_unallocated)) /* and it's a real one: found */
sys/dev/raid/vinum/vinumconfig.c
500
drive = &DRIVE[driveno];
sys/dev/raid/vinum/vinumconfig.c
502
ksnprintf(drive->label.name, sizeof(drive->label.name), "%s", name);
sys/dev/raid/vinum/vinumconfig.c
503
drive->state = drive_referenced; /* in use, nothing worthwhile there */
sys/dev/raid/vinum/vinumconfig.c
516
struct drive *drive;
sys/dev/raid/vinum/vinumconfig.c
519
drive = &DRIVE[driveno];
sys/dev/raid/vinum/vinumconfig.c
520
if (strcmp(drive->devicename, devname) == 0 &&
sys/dev/raid/vinum/vinumconfig.c
521
drive->state > drive_unallocated
sys/dev/raid/vinum/vinumconfig.c
531
drive = &DRIVE[driveno];
sys/dev/raid/vinum/vinumconfig.c
532
ksnprintf(drive->devicename, sizeof(drive->devicename), "%s", devname);
sys/dev/raid/vinum/vinumconfig.c
534
drive->state = drive_referenced;
sys/dev/raid/vinum/vinumconfig.c
572
free_drive(struct drive *drive)
sys/dev/raid/vinum/vinumconfig.c
574
if ((drive->state > drive_referenced) /* real drive */
sys/dev/raid/vinum/vinumconfig.c
575
||(drive->flags & VF_OPEN)) { /* how can it be open without a state? */
sys/dev/raid/vinum/vinumconfig.c
576
LOCKDRIVE(drive);
sys/dev/raid/vinum/vinumconfig.c
577
if (drive->flags & VF_OPEN) { /* it's open, */
sys/dev/raid/vinum/vinumconfig.c
578
close_locked_drive(drive); /* close it */
sys/dev/raid/vinum/vinumconfig.c
579
drive->state = drive_down; /* and note the fact */
sys/dev/raid/vinum/vinumconfig.c
581
if (drive->freelist)
sys/dev/raid/vinum/vinumconfig.c
582
Free(drive->freelist);
sys/dev/raid/vinum/vinumconfig.c
583
bzero(drive, sizeof(struct drive)); /* this also sets drive_unallocated */
sys/dev/raid/vinum/vinumconfig.c
584
unlockdrive(drive);
sys/dev/raid/vinum/vinumconfig.c
621
struct drive *drive;
sys/dev/raid/vinum/vinumconfig.c
626
drive = &DRIVE[driveno];
sys/dev/raid/vinum/vinumconfig.c
627
if (drive->state == drive_up) {
sys/dev/raid/vinum/vinumconfig.c
632
(fe < drive->freelist_entries) && (drive->freelist[fe].offset < offset);
sys/dev/raid/vinum/vinumconfig.c
639
&&((fe == drive->freelist_entries) /* gone past the end */
sys/dev/raid/vinum/vinumconfig.c
640
||(drive->freelist[fe].offset > offset))) /* or past the block were looking for */
sys/dev/raid/vinum/vinumconfig.c
642
dend = drive->freelist[fe].offset + drive->freelist[fe].sectors; /* end of the entry */
sys/dev/raid/vinum/vinumconfig.c
675
if ((fe < drive->freelist_entries - 1) /* we're not the last block in the free list */
sys/dev/raid/vinum/vinumconfig.c
677
&&(sdend == drive->freelist[fe + 1].offset)) {
sys/dev/raid/vinum/vinumconfig.c
678
drive->freelist[fe].sectors /* 1a: merge all three blocks */
sys/dev/raid/vinum/vinumconfig.c
679
= drive->freelist[fe + 1].sectors;
sys/dev/raid/vinum/vinumconfig.c
680
if (fe < drive->freelist_entries - 2) /* still more blocks after next */
sys/dev/raid/vinum/vinumconfig.c
681
bcopy(&drive->freelist[fe + 2], /* move down one */
sys/dev/raid/vinum/vinumconfig.c
682
&drive->freelist[fe + 1],
sys/dev/raid/vinum/vinumconfig.c
683
(drive->freelist_entries - 2 - fe)
sys/dev/raid/vinum/vinumconfig.c
685
drive->freelist_entries--; /* one less entry in the free list */
sys/dev/raid/vinum/vinumconfig.c
687
drive->freelist[fe].sectors += length;
sys/dev/raid/vinum/vinumconfig.c
691
if ((fe < drive->freelist_entries) /* we're not the last block in the free list */
sys/dev/raid/vinum/vinumconfig.c
693
&&(sdend == drive->freelist[fe].offset)) {
sys/dev/raid/vinum/vinumconfig.c
694
drive->freelist[fe].offset = offset; /* it starts where the sd was */
sys/dev/raid/vinum/vinumconfig.c
695
drive->freelist[fe].sectors += length; /* and it's this much bigger */
sys/dev/raid/vinum/vinumconfig.c
697
if (fe < drive->freelist_entries) /* not after the last block, */
sys/dev/raid/vinum/vinumconfig.c
698
bcopy(&drive->freelist[fe], /* move the rest up one entry */
sys/dev/raid/vinum/vinumconfig.c
699
&drive->freelist[fe + 1],
sys/dev/raid/vinum/vinumconfig.c
700
(drive->freelist_entries - fe)
sys/dev/raid/vinum/vinumconfig.c
702
drive->freelist_entries++; /* one less entry */
sys/dev/raid/vinum/vinumconfig.c
703
drive->freelist[fe].offset = offset; /* this entry represents the sd */
sys/dev/raid/vinum/vinumconfig.c
704
drive->freelist[fe].sectors = length;
sys/dev/raid/vinum/vinumconfig.c
707
drive->sectors_available += length; /* the sectors are now available */
sys/dev/raid/vinum/vinumconfig.c
958
struct drive *drive; /* and pointer to it */
sys/dev/raid/vinum/vinumconfig.c
965
drive = &DRIVE[driveno]; /* and get a pointer */
sys/dev/raid/vinum/vinumconfig.c
966
if (update && ((drive->flags & VF_NEWBORN) == 0)) /* this drive exists already */
sys/dev/raid/vinum/vinumconfig.c
968
drive->flags &= ~VF_NEWBORN; /* no longer newly born */
sys/dev/raid/vinum/vinumconfig.c
970
if (drive->state != drive_referenced) { /* we already know this drive */
sys/dev/raid/vinum/vinumconfig.c
983
drive->state = drive_unallocated; /* deallocate the drive */
sys/dev/raid/vinum/vinumconfig.c
989
if (drive->devicename[0] == '/') { /* we know this drive... */
sys/dev/raid/vinum/vinumconfig.c
990
if (strcmp(drive->devicename, token[parameter])) /* different name */
sys/dev/raid/vinum/vinumconfig.c
991
close_drive(drive); /* close it if it's open */
sys/dev/raid/vinum/vinumconfig.c
999
ksnprintf(drive->devicename, sizeof(drive->devicename),
sys/dev/raid/vinum/vinumdaemon.c
162
close_drive(request->info.drive); /* do it */
sys/dev/raid/vinum/vinumext.h
116
int open_drive(struct drive *, struct proc *, int);
sys/dev/raid/vinum/vinumext.h
117
void close_drive(struct drive *drive);
sys/dev/raid/vinum/vinumext.h
118
void close_locked_drive(struct drive *drive);
sys/dev/raid/vinum/vinumext.h
119
int driveio(struct drive *, char *, size_t, off_t, buf_cmd_t);
sys/dev/raid/vinum/vinumext.h
120
int set_drive_parms(struct drive *drive);
sys/dev/raid/vinum/vinumext.h
121
int init_drive(struct drive *, int);
sys/dev/raid/vinum/vinumext.h
128
void free_drive(struct drive *drive);
sys/dev/raid/vinum/vinumext.h
129
void down_drive(struct drive *drive);
sys/dev/raid/vinum/vinumext.h
218
struct drive *validdrive(int driveno, struct _ioctl_reply *);
sys/dev/raid/vinum/vinumext.h
227
int lockdrive(struct drive *drive, char *, int);
sys/dev/raid/vinum/vinumext.h
229
int lockdrive(struct drive *drive);
sys/dev/raid/vinum/vinumext.h
231
void unlockdrive(struct drive *drive);
sys/dev/raid/vinum/vinumext.h
70
struct drive *check_drive(char *);
sys/dev/raid/vinum/vinumext.h
71
enum drive_label_info read_drive_label(struct drive *, int);
sys/dev/raid/vinum/vinumext.h
78
int drive_index(struct drive *drive);
sys/dev/raid/vinum/vinuminterrupt.c
316
struct drive *drive; /* drive to access */
sys/dev/raid/vinum/vinuminterrupt.c
403
drive = &DRIVE[rqe->driveno]; /* drive to access */
sys/dev/raid/vinum/vinuminterrupt.c
404
rqe->b.b_bio1.bio_driver_info = drive->dev;
sys/dev/raid/vinum/vinuminterrupt.c
408
drive->active++;
sys/dev/raid/vinum/vinuminterrupt.c
409
if (drive->active >= drive->maxactive)
sys/dev/raid/vinum/vinuminterrupt.c
410
drive->maxactive = drive->active;
sys/dev/raid/vinum/vinuminterrupt.c
419
drive->devicename,
sys/dev/raid/vinum/vinuminterrupt.c
427
vn_strategy(drive->vp, &rqe->b.b_bio1);
sys/dev/raid/vinum/vinuminterrupt.c
439
drive = &DRIVE[rqe->driveno]; /* drive to access */
sys/dev/raid/vinum/vinuminterrupt.c
440
rqe->b.b_bio1.bio_driver_info = drive->dev;
sys/dev/raid/vinum/vinuminterrupt.c
444
drive->active++;
sys/dev/raid/vinum/vinuminterrupt.c
445
if (drive->active >= drive->maxactive)
sys/dev/raid/vinum/vinuminterrupt.c
446
drive->maxactive = drive->active;
sys/dev/raid/vinum/vinuminterrupt.c
456
drive->devicename,
sys/dev/raid/vinum/vinuminterrupt.c
464
vn_strategy(drive->vp, &rqe->b.b_bio1);
sys/dev/raid/vinum/vinuminterrupt.c
71
struct drive *drive;
sys/dev/raid/vinum/vinuminterrupt.c
86
drive = &DRIVE[rqe->driveno];
sys/dev/raid/vinum/vinuminterrupt.c
87
drive->active--; /* one less outstanding I/O on this drive */
sys/dev/raid/vinum/vinuminterrupt.c
89
if ((drive->active == (DRIVE_MAXACTIVE - 1)) /* we were at the drive limit */
sys/dev/raid/vinum/vinumio.c
101
drive->devicename, error);
sys/dev/raid/vinum/vinumio.c
104
drive->dev = drive->vp->v_rdev;
sys/dev/raid/vinum/vinumio.c
105
drive->flags |= VF_OPEN;
sys/dev/raid/vinum/vinumio.c
107
drive->lasterror = error;
sys/dev/raid/vinum/vinumio.c
116
set_drive_parms(struct drive *drive)
sys/dev/raid/vinum/vinumio.c
118
drive->blocksize = BLKDEV_IOSIZE; /* do we need this? */
sys/dev/raid/vinum/vinumio.c
119
drive->secsperblock = drive->blocksize /* number of sectors per block */
sys/dev/raid/vinum/vinumio.c
120
/ drive->partinfo.media_blksize;
sys/dev/raid/vinum/vinumio.c
123
bcopy(hostname, drive->label.sysname, VINUMHOSTNAMELEN); /* put in host name */
sys/dev/raid/vinum/vinumio.c
124
getmicrotime(&drive->label.date_of_birth); /* and current time */
sys/dev/raid/vinum/vinumio.c
125
drive->label.drive_size = drive->partinfo.media_size;
sys/dev/raid/vinum/vinumio.c
128
drive->label.drive_size *= 100;
sys/dev/raid/vinum/vinumio.c
132
drive->sectors_available = drive->label.drive_size / DEV_BSIZE - DATASTART;
sys/dev/raid/vinum/vinumio.c
138
if (drive->label.drive_size < MINVINUMSLICE) { /* too small to worry about */
sys/dev/raid/vinum/vinumio.c
139
set_drive_state(drive->driveno, drive_down, setstate_force);
sys/dev/raid/vinum/vinumio.c
140
drive->lasterror = ENOSPC;
sys/dev/raid/vinum/vinumio.c
143
drive->freelist_size = INITIAL_DRIVE_FREELIST; /* initial number of entries */
sys/dev/raid/vinum/vinumio.c
144
drive->freelist = (struct drive_freelist *)
sys/dev/raid/vinum/vinumio.c
146
if (drive->freelist == NULL) /* can't malloc, dammit */
sys/dev/raid/vinum/vinumio.c
148
drive->freelist_entries = 1; /* just (almost) the complete drive */
sys/dev/raid/vinum/vinumio.c
149
drive->freelist[0].offset = DATASTART; /* starts here */
sys/dev/raid/vinum/vinumio.c
150
drive->freelist[0].sectors = (drive->label.drive_size >> DEV_BSHIFT) - DATASTART; /* and it's this long */
sys/dev/raid/vinum/vinumio.c
151
if (drive->label.name[0] != '\0') /* got a name */
sys/dev/raid/vinum/vinumio.c
152
set_drive_state(drive->driveno, drive_up, setstate_force); /* our drive is accessible */
sys/dev/raid/vinum/vinumio.c
154
drive->state = drive_referenced;
sys/dev/raid/vinum/vinumio.c
163
init_drive(struct drive *drive, int verbose)
sys/dev/raid/vinum/vinumio.c
165
if (drive->devicename[0] != '/') {
sys/dev/raid/vinum/vinumio.c
166
drive->lasterror = EINVAL;
sys/dev/raid/vinum/vinumio.c
168
drive->devicename);
sys/dev/raid/vinum/vinumio.c
171
drive->lasterror = open_drive(drive, curproc, verbose); /* open the drive */
sys/dev/raid/vinum/vinumio.c
172
if (drive->lasterror)
sys/dev/raid/vinum/vinumio.c
173
return drive->lasterror;
sys/dev/raid/vinum/vinumio.c
175
drive->lasterror = VOP_IOCTL(drive->vp, DIOCGPART,
sys/dev/raid/vinum/vinumio.c
176
(caddr_t)&drive->partinfo, FREAD|FWRITE,
sys/dev/raid/vinum/vinumio.c
178
if (drive->lasterror) {
sys/dev/raid/vinum/vinumio.c
182
drive->devicename,
sys/dev/raid/vinum/vinumio.c
183
drive->lasterror);
sys/dev/raid/vinum/vinumio.c
184
close_drive(drive);
sys/dev/raid/vinum/vinumio.c
185
return drive->lasterror;
sys/dev/raid/vinum/vinumio.c
187
if (drive->partinfo.fstype != FS_VINUM &&
sys/dev/raid/vinum/vinumio.c
188
!kuuid_is_vinum(&drive->partinfo.fstype_uuid)
sys/dev/raid/vinum/vinumio.c
190
drive->lasterror = EFTYPE;
sys/dev/raid/vinum/vinumio.c
194
drive->devicename);
sys/dev/raid/vinum/vinumio.c
195
close_drive(drive);
sys/dev/raid/vinum/vinumio.c
198
return set_drive_parms(drive); /* set various odds and ends */
sys/dev/raid/vinum/vinumio.c
203
close_drive(struct drive *drive)
sys/dev/raid/vinum/vinumio.c
205
LOCKDRIVE(drive); /* keep the daemon out */
sys/dev/raid/vinum/vinumio.c
206
if (drive->flags & VF_OPEN)
sys/dev/raid/vinum/vinumio.c
207
close_locked_drive(drive); /* and close it */
sys/dev/raid/vinum/vinumio.c
208
if (drive->state > drive_down) /* if it's up */
sys/dev/raid/vinum/vinumio.c
209
drive->state = drive_down; /* make sure it's down */
sys/dev/raid/vinum/vinumio.c
210
unlockdrive(drive);
sys/dev/raid/vinum/vinumio.c
218
close_locked_drive(struct drive *drive)
sys/dev/raid/vinum/vinumio.c
225
if (drive->vp) {
sys/dev/raid/vinum/vinumio.c
226
drive->lasterror = vn_close(drive->vp, FREAD|FWRITE, NULL);
sys/dev/raid/vinum/vinumio.c
227
drive->vp = NULL;
sys/dev/raid/vinum/vinumio.c
229
drive->flags &= ~VF_OPEN;
sys/dev/raid/vinum/vinumio.c
239
struct drive *drive = &vinum_conf.drive[driveno];
sys/dev/raid/vinum/vinumio.c
243
if (drive->state > drive_referenced) { /* real drive */
sys/dev/raid/vinum/vinumio.c
244
if (drive->state == drive_up) {
sys/dev/raid/vinum/vinumio.c
247
error = read_drive(drive, (void *) vhdr, VINUMHEADERLEN, VINUM_LABEL_OFFSET);
sys/dev/raid/vinum/vinumio.c
249
drive->lasterror = error;
sys/dev/raid/vinum/vinumio.c
252
write_drive(drive, (void *) vhdr, VINUMHEADERLEN, VINUM_LABEL_OFFSET);
sys/dev/raid/vinum/vinumio.c
256
free_drive(drive); /* close it and free resources */
sys/dev/raid/vinum/vinumio.c
272
driveio(struct drive *drive, char *buf, size_t length, off_t offset, buf_cmd_t cmd)
sys/dev/raid/vinum/vinumio.c
291
vn_strategy(drive->vp, &bp->b_bio1);
sys/dev/raid/vinum/vinumio.c
322
read_drive_label(struct drive *drive, int verbose)
sys/dev/raid/vinum/vinumio.c
328
error = init_drive(drive, verbose); /* find the drive */
sys/dev/raid/vinum/vinumio.c
335
drive->state = drive_up; /* be optimistic */
sys/dev/raid/vinum/vinumio.c
336
error = read_drive(drive, (void *) vhdr, VINUMHEADERLEN, VINUM_LABEL_OFFSET);
sys/dev/raid/vinum/vinumio.c
338
if (drive->label.name[0] /* we have a name for this drive */
sys/dev/raid/vinum/vinumio.c
339
&&(strcmp(drive->label.name, vhdr->label.name))) { /* but it doesn't match the real name */
sys/dev/raid/vinum/vinumio.c
340
drive->lasterror = EINVAL;
sys/dev/raid/vinum/vinumio.c
342
drive->state = drive_unallocated; /* put it back, it's not ours */
sys/dev/raid/vinum/vinumio.c
350
drive->label = vhdr->label; /* put in the label information */
sys/dev/raid/vinum/vinumio.c
366
struct drive *
sys/dev/raid/vinum/vinumio.c
371
struct drive *drive;
sys/dev/raid/vinum/vinumio.c
374
drive = &vinum_conf.drive[driveno]; /* and get a pointer */
sys/dev/raid/vinum/vinumio.c
376
if (read_drive_label(drive, 0) == DL_OURS) { /* one of ours */
sys/dev/raid/vinum/vinumio.c
382
struct drive *mydrive = &DRIVE[i];
sys/dev/raid/vinum/vinumio.c
390
drive->lasterror = EEXIST;
sys/dev/raid/vinum/vinumio.c
398
SD[sdno].driveno = drive->driveno; /* point to the one we found */
sys/dev/raid/vinum/vinumio.c
402
bzero(mydrive, sizeof(struct drive)); /* don't deallocate it, just remove it */
sys/dev/raid/vinum/vinumio.c
407
if (drive->lasterror == 0)
sys/dev/raid/vinum/vinumio.c
408
drive->lasterror = ENODEV;
sys/dev/raid/vinum/vinumio.c
409
close_drive(drive);
sys/dev/raid/vinum/vinumio.c
410
drive->state = drive_down;
sys/dev/raid/vinum/vinumio.c
412
return drive;
sys/dev/raid/vinum/vinumio.c
506
drivename = vinum_conf.drive[sd->driveno].label.name;
sys/dev/raid/vinum/vinumio.c
53
open_drive(struct drive *drive, struct proc *p, int verbose)
sys/dev/raid/vinum/vinumio.c
572
struct drive *drive; /* point to current drive info */
sys/dev/raid/vinum/vinumio.c
592
drive = &vinum_conf.drive[driveno]; /* point to drive */
sys/dev/raid/vinum/vinumio.c
593
if (drive->state > drive_referenced) {
sys/dev/raid/vinum/vinumio.c
594
LOCKDRIVE(drive); /* don't let it change */
sys/dev/raid/vinum/vinumio.c
601
if ((drive->devicename[0] == '\0')
sys/dev/raid/vinum/vinumio.c
602
|| (drive->label.name[0] == '\0')) {
sys/dev/raid/vinum/vinumio.c
603
unlockdrive(drive);
sys/dev/raid/vinum/vinumio.c
604
free_drive(drive); /* get rid of it */
sys/dev/raid/vinum/vinumio.c
607
if (((drive->flags & VF_OPEN) == 0) /* drive not open */
sys/dev/raid/vinum/vinumio.c
608
&&(drive->state > drive_down)) { /* and it thinks it's not down */
sys/dev/raid/vinum/vinumio.c
609
unlockdrive(drive);
sys/dev/raid/vinum/vinumio.c
61
if (drive->flags & VF_OPEN)
sys/dev/raid/vinum/vinumio.c
613
if ((drive->state == drive_down) /* it's down */
sys/dev/raid/vinum/vinumio.c
614
&&(drive->flags & VF_OPEN)) { /* but open, */
sys/dev/raid/vinum/vinumio.c
615
unlockdrive(drive);
sys/dev/raid/vinum/vinumio.c
616
close_drive(drive); /* close it */
sys/dev/raid/vinum/vinumio.c
617
} else if (drive->state > drive_down) {
sys/dev/raid/vinum/vinumio.c
618
getmicrotime(&drive->label.last_update); /* time of last update is now */
sys/dev/raid/vinum/vinumio.c
619
bcopy((char *) &drive->label, /* and the label info from the drive structure */
sys/dev/raid/vinum/vinumio.c
622
if ((drive->state != drive_unallocated)
sys/dev/raid/vinum/vinumio.c
623
&& (drive->state != drive_referenced)) { /* and it's a real drive */
sys/dev/raid/vinum/vinumio.c
627
error = VOP_IOCTL(drive->vp, DIOCWLABEL,
sys/dev/raid/vinum/vinumio.c
632
error = write_drive(drive, (char *) vhdr, VINUMHEADERLEN, VINUM_LABEL_OFFSET);
sys/dev/raid/vinum/vinumio.c
634
error = write_drive(drive, config, MAXCONFIG, VINUM_CONFIG_OFFSET); /* first config copy */
sys/dev/raid/vinum/vinumio.c
636
error = write_drive(drive, config, MAXCONFIG, VINUM_CONFIG_OFFSET + MAXCONFIG); /* second copy */
sys/dev/raid/vinum/vinumio.c
640
error = VOP_IOCTL(drive->vp, DIOCWLABEL,
sys/dev/raid/vinum/vinumio.c
645
unlockdrive(drive);
sys/dev/raid/vinum/vinumio.c
649
drive->devicename,
sys/dev/raid/vinum/vinumio.c
651
set_drive_state(drive->driveno, drive_down, setstate_force);
sys/dev/raid/vinum/vinumio.c
655
unlockdrive(drive); /* just unlock it again */
sys/dev/raid/vinum/vinumio.c
666
struct drive *volatile drive;
sys/dev/raid/vinum/vinumio.c
68
error = nlookup_init(&nd, drive->devicename, UIO_SYSSPACE, NLC_FOLLOW);
sys/dev/raid/vinum/vinumio.c
72
drive->vp = nd.nl_open_vp;
sys/dev/raid/vinum/vinumio.c
730
drive = check_drive(partname); /* try to open it */
sys/dev/raid/vinum/vinumio.c
731
if ((drive->lasterror != 0) /* didn't work, */
sys/dev/raid/vinum/vinumio.c
732
||(drive->state != drive_up))
sys/dev/raid/vinum/vinumio.c
733
free_drive(drive); /* get rid of it */
sys/dev/raid/vinum/vinumio.c
734
else if (drive->flags & VF_CONFIGURED) /* already read this config, */
sys/dev/raid/vinum/vinumio.c
737
drive->label.name);
sys/dev/raid/vinum/vinumio.c
739
drivelist[gooddrives] = drive->driveno; /* keep the drive index */
sys/dev/raid/vinum/vinumio.c
740
drive->flags &= ~VF_NEWBORN; /* which is no longer newly born */
sys/dev/raid/vinum/vinumio.c
766
drive = &DRIVE[drivelist[driveno]]; /* point to the drive */
sys/dev/raid/vinum/vinumio.c
769
log(LOG_INFO, "vinum: reading configuration from %s\n", drive->devicename);
sys/dev/raid/vinum/vinumio.c
771
log(LOG_INFO, "vinum: updating configuration from %s\n", drive->devicename);
sys/dev/raid/vinum/vinumio.c
773
if (drive->state == drive_up)
sys/dev/raid/vinum/vinumio.c
775
error = read_drive(drive, config_text, MAXCONFIG * 2, VINUM_CONFIG_OFFSET);
sys/dev/raid/vinum/vinumio.c
778
kprintf("vinum_scandisk: %s is %s\n", drive->devicename, drive_state(drive->state));
sys/dev/raid/vinum/vinumio.c
782
log(LOG_ERR, "vinum: Can't read device %s, error %d\n", drive->devicename, error);
sys/dev/raid/vinum/vinumio.c
783
free_drive(drive); /* give it back */
sys/dev/raid/vinum/vinumio.c
79
error = vn_opendisk(drive->devicename, FREAD|FWRITE, &drive->vp);
sys/dev/raid/vinum/vinumio.c
813
drive->devicename);
sys/dev/raid/vinum/vinumio.c
814
free_drive(drive); /* give it back */
sys/dev/raid/vinum/vinumio.c
822
drive->flags |= VF_CONFIGURED; /* read this drive's configuration */
sys/dev/raid/vinum/vinumio.c
84
if (error == 0 && drive->vp == NULL)
sys/dev/raid/vinum/vinumio.c
844
const struct drive *a = &DRIVE[*(const int *) va];
sys/dev/raid/vinum/vinumio.c
845
const struct drive *b = &DRIVE[*(const int *) vb];
sys/dev/raid/vinum/vinumio.c
91
if (error == 0 && drive->vp->v_type != VCHR) {
sys/dev/raid/vinum/vinumio.c
92
vn_close(drive->vp, FREAD|FWRITE, NULL);
sys/dev/raid/vinum/vinumio.c
93
drive->vp = NULL;
sys/dev/raid/vinum/vinumio.c
97
drive->state = drive_down;
sys/dev/raid/vinum/vinumio.h
122
#define VINUM_DRIVECONFIG _IOWR(L, 66, struct drive)
sys/dev/raid/vinum/vinumioctl.c
138
bcopy(&DRIVE[index], data, sizeof(struct drive));
sys/dev/raid/vinum/vinumioctl.c
381
struct drive *
sys/dev/raid/vinum/vinumioctl.c
434
struct drive *drive = &DRIVE[msg->index];
sys/dev/raid/vinum/vinumioctl.c
435
if (drive->state > drive_referenced) {
sys/dev/raid/vinum/vinumioctl.c
436
drive->reads = 0; /* number of reads on this drive */
sys/dev/raid/vinum/vinumioctl.c
437
drive->writes = 0; /* number of writes on this drive */
sys/dev/raid/vinum/vinumioctl.c
438
drive->bytes_read = 0; /* number of bytes read */
sys/dev/raid/vinum/vinumioctl.c
439
drive->bytes_written = 0; /* number of bytes written */
sys/dev/raid/vinum/vinumioctl.c
726
struct drive *drive;
sys/dev/raid/vinum/vinumioctl.c
738
drive = validdrive(msg->index, reply);
sys/dev/raid/vinum/vinumioctl.c
739
if (drive) {
sys/dev/raid/vinum/vinumioctl.c
740
bcopy(msg->newname, drive->label.name, MAXDRIVENAME);
sys/dev/raid/vinum/vinumioctl.c
817
struct drive *drive;
sys/dev/raid/vinum/vinumioctl.c
821
drive = validdrive(msg->index, (struct _ioctl_reply *) msg);
sys/dev/raid/vinum/vinumioctl.c
822
if (drive == NULL)
sys/dev/raid/vinum/vinumlock.c
101
drive->flags &= ~VF_LOCKED;
sys/dev/raid/vinum/vinumlock.c
50
lockdrive(struct drive *drive, char *file, int line)
sys/dev/raid/vinum/vinumlock.c
53
lockdrive(struct drive *drive)
sys/dev/raid/vinum/vinumlock.c
59
if ((drive->flags & VF_LOCKED) /* it's locked */
sys/dev/raid/vinum/vinumlock.c
60
&&(drive->pid == curproc->p_pid)) { /* by us! */
sys/dev/raid/vinum/vinumlock.c
64
drive->label.name,
sys/dev/raid/vinum/vinumlock.c
65
drive->lockfilename,
sys/dev/raid/vinum/vinumlock.c
66
drive->lockline,
sys/dev/raid/vinum/vinumlock.c
72
drive->label.name);
sys/dev/raid/vinum/vinumlock.c
76
while ((drive->flags & VF_LOCKED) != 0) {
sys/dev/raid/vinum/vinumlock.c
87
drive->flags |= VF_LOCKED;
sys/dev/raid/vinum/vinumlock.c
88
drive->pid = curproc->p_pid; /* it's a panic error if curproc is null */
sys/dev/raid/vinum/vinumlock.c
90
bcopy(basename(file), drive->lockfilename, 15);
sys/dev/raid/vinum/vinumlock.c
91
drive->lockfilename[15] = '\0'; /* truncate if necessary */
sys/dev/raid/vinum/vinumlock.c
92
drive->lockline = line;
sys/dev/raid/vinum/vinumlock.c
99
unlockdrive(struct drive *drive)
sys/dev/raid/vinum/vinumparser.c
85
{keypair(drive),
sys/dev/raid/vinum/vinumrequest.c
317
struct drive *drive;
sys/dev/raid/vinum/vinumrequest.c
411
drive = &DRIVE[rqe->driveno]; /* look at drive */
sys/dev/raid/vinum/vinumrequest.c
412
drive->active++;
sys/dev/raid/vinum/vinumrequest.c
413
if (drive->active >= drive->maxactive)
sys/dev/raid/vinum/vinumrequest.c
414
drive->maxactive = drive->active;
sys/dev/raid/vinum/vinumrequest.c
896
struct drive *drive;
sys/dev/raid/vinum/vinumrequest.c
906
drive = &DRIVE[sd->driveno];
sys/dev/raid/vinum/vinumrequest.c
908
if (drive->state != drive_up) {
sys/dev/raid/vinum/vinumrequest.c
969
drive->devicename,
sys/dev/raid/vinum/vinumrequest.c
980
vn_strategy(drive->vp, &sbp->b.b_bio1);
sys/dev/raid/vinum/vinumstate.c
427
struct drive *drive;
sys/dev/raid/vinum/vinumstate.c
432
drive = &DRIVE[sd->driveno];
sys/dev/raid/vinum/vinumstate.c
434
if (drive->state == drive_up) {
sys/dev/raid/vinum/vinumstate.c
53
struct drive *drive = &DRIVE[driveno];
sys/dev/raid/vinum/vinumstate.c
54
int oldstate = drive->state;
sys/dev/raid/vinum/vinumstate.c
57
if (drive->state == drive_unallocated) /* no drive to do anything with, */
sys/dev/raid/vinum/vinumstate.c
64
&& (drive->opencount != 0)) /* we can't do it */
sys/dev/raid/vinum/vinumstate.c
66
drive->state = newstate; /* set the state */
sys/dev/raid/vinum/vinumstate.c
67
if (drive->label.name[0] != '\0') /* we have a name, */
sys/dev/raid/vinum/vinumstate.c
70
drive->label.name,
sys/dev/raid/vinum/vinumstate.c
71
drive_state(drive->state));
sys/dev/raid/vinum/vinumstate.c
72
if (drive->state != oldstate) { /* state has changed */
sys/dev/raid/vinum/vinumstate.c
80
if ((drive->flags & VF_OPEN) == 0) /* should be open, but we're not */
sys/dev/raid/vinum/vinumstate.c
81
init_drive(drive, 1); /* which changes the state again */
sys/dev/raid/vinum/vinumstate.c
83
di.drive = drive;
sys/dev/raid/vinum/vinumutil.c
137
for (i = 0; i < STATECOUNT(drive); i++)
sys/dev/raid/vinum/vinumutil.c
58
if (((unsigned) state) >= STATECOUNT(drive)) {
sys/dev/raid/vinum/vinumvar.h
318
struct drive *drive;
sys/dev/raid/vinum/vinumvar.h
348
#define DRIVE vinum_conf.drive
usr.sbin/mfiutil/mfi_drive.c
160
mfi_lookup_drive(int fd, char *drive, uint16_t *device_id)
usr.sbin/mfiutil/mfi_drive.c
170
val = strtol(drive, &cp, 0);
usr.sbin/mfiutil/mfi_drive.c
179
if (toupper(drive[0]) == 'E' || toupper(drive[0]) == 'S') {
usr.sbin/mfiutil/mfi_drive.c
180
if (drive[1] == '\0')
usr.sbin/mfiutil/mfi_drive.c
182
cp = drive;
usr.sbin/mfiutil/mfi_drive.c
183
if (toupper(drive[0]) == 'E') {
usr.sbin/mfiutil/mfi_drive.c
222
warnx("Unknown drive %s", drive);
usr.sbin/mfiutil/mfi_drive.c
227
warnx("Invalid drive number %s", drive);
usr.sbin/mfiutil/mfi_drive.c
379
drive_set_state(char *drive, uint16_t new_state)
usr.sbin/mfiutil/mfi_drive.c
393
error = mfi_lookup_drive(fd, drive, &device_id);
usr.sbin/mfiutil/mfi_drive.c
46
MFI_TABLE(top, drive);
usr.sbin/mfiutil/mfi_drive.c
637
MFI_COMMAND(drive, progress, drive_progress);
usr.sbin/mfiutil/mfi_drive.c
700
MFI_COMMAND(drive, clear, drive_clear);
usr.sbin/mfiutil/mfiutil.h
96
int mfi_lookup_drive(int fd, char *drive, uint16_t *device_id);
usr.sbin/mptutil/mpt_drive.c
239
mpt_lookup_drive(struct mpt_drive_list *list, const char *drive,
usr.sbin/mptutil/mpt_drive.c
247
val = strtol(drive, &cp, 0);
usr.sbin/mptutil/mpt_drive.c
309
drive_set_state(char *drive, U8 Action, U8 State, const char *name)
usr.sbin/mptutil/mpt_drive.c
327
if (mpt_lookup_drive(list, drive, &PhysDiskNum) < 0) {
usr.sbin/mptutil/mpt_drive.c
329
warn("Failed to find drive %s", drive);
usr.sbin/mptutil/mptutil.h
124
int mpt_lookup_drive(struct mpt_drive_list *list, const char *drive,