PERFORCE change 79891 for review
soc-cjones
soc-cjones at FreeBSD.org
Sun Jul 10 04:45:41 GMT 2005
http://perforce.freebsd.org/chv.cgi?CH=79891
Change 79891 by soc-cjones at soc-cjones_ides on 2005/07/10 04:45:06
Flesh out 'rename' plan.
Affected files ...
.. //depot/projects/soc2005/gvinum/docs/PLAN#2 edit
Differences ...
==== //depot/projects/soc2005/gvinum/docs/PLAN#2 (text+ko) ====
@@ -9,15 +9,51 @@
- _move
- Identify -f flag, drive, object(s) from argv
- - Do sanity checks (is object already on drive?)
- - Check whether there's free space
- - Instantiate a new object on target drive
- - Copy, verify, remove original object
+ - Do sanity checks (is object already on drive?) [kernel-side]
+ - Check whether there's free space [kernel-side]
+ - Instantiate a new object on target drive [kernel-side]
+ - Copy, verify, remove original object [kernel-side]
+
+ req = gctl_get_handle();
+ gctl_ro_param(req, "class", -1, "VINUM");
+ gctl_ro_param(req, "verb", -1, "move");
- _rename
- Identify -r flag, object, new name from argv
- - Rename object
+ - Rename object (call 'move' verb)
- Recurse over descendants if applicable
+ req = gctl_get_handle();
+ gctl_ro_param(req, "class", -1, "VINUM");
+ gctl_ro_param(req, "verb", -1, "rename");
+ gctl_ro_param(req, "cmd", -1, "rename");
+ gctl_ro_param(req, "argc", sizeof(int), &argc);
+ gctl_ro_param(req, "flags", sizeof(int), &flags);
+ gctl_ro_param(req, "argvX", ... argvX ...);
+ gctl_ro_param(req, "object", -1, argv[..]);
+ gctl_ro_param(req, "newname", -1, argv[..]);
+ gctl_issue(req);
+ ... error handling
+ gctl_free(req);
+ return;
+
Kernel
======
+
+* Add hooks for 'rename', 'move' verbs in
+ sys/geom/vinum/geom_vinum.c:gv_config
+
+* Add 'rename' verb to VINUM GEOM class
+ - use 'object' and 'newname' as verb arguments
+ - int gv_rename(struct g_geom *, struct gctl_req *)
+ - Find object (drive, vol, plex, sd) [gv_object_type]
+ - Get {drive, volume, plex, sd} struct pointer
+ - Change name by twiddling ->name
+ - Fix up references in other structures
+ - for gv_drive: FOREACH subdisks, fix ->drive
+ - for gv_plex: FOREACH subsdisks, fix ->plex
+ - Commit to disk
+
+* Add 'move' verb to VINUM GEOM class
+
+ - int gv_move(struct g_geom *, struct gctl_req *)
More information about the p4-projects
mailing list