mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-14 10:09:48 +00:00
Remove DIOCGDINFO ioctl. This almost makes newfs work again without
the -v option, though it's not clear that it won't bite us elsewhere. Forgotten by: phk Implement setreadpol() function for the VINUM_READPOL ioctl. Submitted by: Allan Saddi <allan@saddi.com>
This commit is contained in:
parent
fdfcec3b7c
commit
e802b7f05e
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=114696
@ -41,7 +41,7 @@
|
||||
* otherwise) arising in any way out of the use of this software, even if
|
||||
* advised of the possibility of such damage.
|
||||
*
|
||||
* $Id: vinumioctl.c,v 1.20 2003/04/28 02:54:43 grog Exp $
|
||||
* $Id: vinumioctl.c,v 1.21 2003/05/04 05:23:09 grog Exp grog $
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
@ -57,6 +57,7 @@ void detachobject(struct vinum_ioctl_msg *);
|
||||
void renameobject(struct vinum_rename_msg *);
|
||||
void replaceobject(struct vinum_ioctl_msg *);
|
||||
void moveobject(struct vinum_ioctl_msg *);
|
||||
void setreadpol(struct vinum_ioctl_msg *);
|
||||
|
||||
jmp_buf command_fail; /* return on a failed command */
|
||||
|
||||
@ -86,10 +87,6 @@ vinumioctl(dev_t dev,
|
||||
sd = &SD[objno];
|
||||
|
||||
switch (cmd) {
|
||||
case DIOCGDINFO: /* get disk label */
|
||||
get_volume_label(sd->name, 1, sd->sectors, (struct disklabel *) data);
|
||||
break;
|
||||
|
||||
/*
|
||||
* We don't have this stuff on hardware,
|
||||
* so just pretend to do it so that
|
||||
@ -111,10 +108,6 @@ vinumioctl(dev_t dev,
|
||||
plex = &PLEX[objno];
|
||||
|
||||
switch (cmd) {
|
||||
case DIOCGDINFO: /* get disk label */
|
||||
get_volume_label(plex->name, 1, plex->length, (struct disklabel *) data);
|
||||
break;
|
||||
|
||||
/*
|
||||
* We don't have this stuff on hardware,
|
||||
* so just pretend to do it so that
|
||||
@ -140,10 +133,6 @@ vinumioctl(dev_t dev,
|
||||
return EIO; /* I/O error */
|
||||
|
||||
switch (cmd) {
|
||||
case DIOCGDINFO: /* get disk label */
|
||||
get_volume_label(vol->name, vol->plexes, vol->size, (struct disklabel *) data);
|
||||
break;
|
||||
|
||||
/*
|
||||
* We don't have this stuff on hardware,
|
||||
* so just pretend to do it so that
|
||||
@ -420,6 +409,10 @@ vinum_super_ioctl(dev_t dev,
|
||||
moveobject((struct vinum_ioctl_msg *) data);
|
||||
return 0;
|
||||
|
||||
case VINUM_READPOL:
|
||||
setreadpol((struct vinum_ioctl_msg *) data);
|
||||
return 0;
|
||||
|
||||
default:
|
||||
/* FALLTHROUGH */
|
||||
break;
|
||||
@ -633,7 +626,7 @@ attachobject(struct vinum_ioctl_msg *msg)
|
||||
set_sd_state(plex->sdnos[sdno], sd_stale, setstate_force); /* make it stale */
|
||||
}
|
||||
set_plex_state(plex->plexno, plex_up, setstate_none); /* update plex state */
|
||||
give_plex_to_volume(msg->otherobject, msg->index); /* and give it to the volume */
|
||||
give_plex_to_volume(msg->otherobject, msg->index, 0); /* and give it to the volume */
|
||||
update_plex_config(plex->plexno, 0);
|
||||
save_config();
|
||||
reply->error = 0; /* all went well */
|
||||
@ -909,6 +902,40 @@ moveobject(struct vinum_ioctl_msg *msg)
|
||||
reply->error = 0;
|
||||
}
|
||||
|
||||
void
|
||||
setreadpol(struct vinum_ioctl_msg *msg)
|
||||
{
|
||||
struct _ioctl_reply *reply = (struct _ioctl_reply *) msg;
|
||||
struct volume *vol;
|
||||
struct plex *plex;
|
||||
int myplexno = -1;
|
||||
|
||||
/* Check that our objects are valid (i.e. they exist) */
|
||||
vol = validvol(msg->index, reply);
|
||||
if (vol == NULL)
|
||||
return;
|
||||
|
||||
/* If a plex was specified, check that is is valid */
|
||||
if (msg->otherobject >= 0) {
|
||||
plex = validplex(msg->otherobject, reply);
|
||||
if (vol == NULL)
|
||||
return;
|
||||
|
||||
/* Is it attached to this volume? */
|
||||
myplexno = my_plex(msg->index, msg->otherobject);
|
||||
if (myplexno < 0) {
|
||||
strcpy(reply->msg, "Plex is not attached to volume");
|
||||
reply->error = ENOENT;
|
||||
return;
|
||||
}
|
||||
}
|
||||
lock_config();
|
||||
vol->preferred_plex = myplexno;
|
||||
save_config();
|
||||
unlock_config();
|
||||
reply->error = 0;
|
||||
}
|
||||
|
||||
/* Local Variables: */
|
||||
/* fill-column: 50 */
|
||||
/* End: */
|
||||
|
Loading…
Reference in New Issue
Block a user