PERFORCE change 118254 for review
Ulf Lilleengen
lulf at FreeBSD.org
Mon Apr 16 18:30:57 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=118254
Change 118254 by lulf at lulf_carrot on 2007/04/16 18:30:04
- Silly C. We can't just dereference local variables, so we have to hack
it up.
Affected files ...
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum.c#3 edit
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_state.c#3 edit
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_kernel/geom_vinum.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_kernel/geom_vinum.h#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_kernel/geom_vinum_drive.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_kernel/geom_vinum_init.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_kernel/geom_vinum_list.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_kernel/geom_vinum_move.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_kernel/geom_vinum_plex.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_kernel/geom_vinum_raid5.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_kernel/geom_vinum_raid5.h#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_kernel/geom_vinum_rename.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_kernel/geom_vinum_rm.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_kernel/geom_vinum_share.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_kernel/geom_vinum_share.h#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_kernel/geom_vinum_state.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_kernel/geom_vinum_subr.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_kernel/geom_vinum_var.h#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_kernel/geom_vinum_volume.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/Makefile#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/geom_vinum.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/geom_vinum.h#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/geom_vinum_drive.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/geom_vinum_init.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/geom_vinum_list.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/geom_vinum_move.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/geom_vinum_plex.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/geom_vinum_raid5.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/geom_vinum_raid5.h#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/geom_vinum_rename.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/geom_vinum_rm.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/geom_vinum_share.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/geom_vinum_share.h#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/geom_vinum_state.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/geom_vinum_subr.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/geom_vinum_var.h#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/geom_vinum_volume.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/gvinum.8#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/gvinum.c#2 delete
.. //depot/projects/soc2007/lulf/gvinum_fixup/vinum_user/gvinum.h#2 delete
Differences ...
==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum.c#3 (text+ko) ====
@@ -507,27 +507,31 @@
case GV_EVENT_SET_SD_STATE:
printf("VINUM: event 'setstate sd'\n");
s = ev->arg1;
- newstate = *(int *)ev->arg2;
- flags = *(int *)ev->arg3;
+ newstate = *ev->arg2;
+ flags = *ev->arg3;
err = gv_set_sd_state(s, newstate, flags);
+ /* XXX: Handle these errors better, provide
+ * ERROR CODES.*/
if (err)
printf("VINUM: error setting subdisk "
"state\n");
- /* XXX: Handle these errors better, provide
- * ERROR CODES.*/
+ free(ev->arg2);
+ free(ev->arg3);
break;
case GV_EVENT_SET_DRIVE_STATE:
printf("VINUM: event 'setstate drive'\n");
d = ev->arg1;
- newstate = *(int *)ev->arg2;
- flags = *(int *)ev->arg3;
+ newstate = *ev->arg2;
+ flags = *ev->arg3;
err = gv_set_drive_state(d, newstate, flags);
+ /* XXX: Handle these errors better, provide
+ * ERROR CODES.*/
if (err)
printf("VINUM: error setting drive "
"state");
- /* XXX: Handle these errors better, provide
- * ERROR CODES.*/
+ free(ev->arg2);
+ free(ev->arg3);
break;
case GV_EVENT_THREAD_EXIT:
==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_state.c#3 (text+ko) ====
@@ -44,7 +44,7 @@
struct gv_sd *s;
struct gv_drive *d;
char *obj, *state;
- int f, *flags, newstate, type;
+ int *f, *flags, *newstate, type;
f = 0;
obj = gctl_get_param(req, "object", NULL);
@@ -77,25 +77,30 @@
break;
case GV_TYPE_SD:
- newstate = gv_sdstatei(state);
- if (newstate < 0) {
+ if (gv_sdstatei(state) < 0) {
gctl_error(req, "invalid subdisk state '%s'", state);
break;
}
s = gv_find_sd(sc, obj);
-
- gv_post_event(sc, GV_EVENT_SET_SD_STATE, s, &newstate, &f);
+ newstatep = malloc(sizeof(int), M_WAITOK | M_ZERO));
+ *newstatep = gv_sdstatei(state);
+ flagp = malloc(sizeof(int), M_WAITOK | M_ZERO));
+ *flagp = f;
+ gv_post_event(sc, GV_EVENT_SET_SD_STATE, s, newstatep, flagp);
break;
case GV_TYPE_DRIVE:
- newstate = gv_drivestatei(state);
- if (newstate < 0) {
+ if (gv_drivestatei(state) < 0) {
gctl_error(req, "invalid drive state '%s'", state);
break;
}
d = gv_find_drive(sc, obj);
- gv_post_event(sc, GV_EVENT_SET_DRIVE_STATE, d, &newstate, &f);
+ newstatep = malloc(sizeof(int), M_WAITOK | M_ZERO));
+ *newstatep = gv_sdstatei(state);
+ flagp = malloc(sizeof(int), M_WAITOK | M_ZERO));
+ *flagp = f;
+ gv_post_event(sc, GV_EVENT_SET_DRIVE_STATE, d, newstatep, flagp);
break;
default:
More information about the p4-projects
mailing list