>> Here's the fix for the fdisk problem: >> >> /sys/src/cmd/disk/prep/edit.c:503,508 - edit.c:503,509 >> */ >> for(i=0; i<edit->nctlpart; i++) { >> p = edit->ctlpart[i]; >> + if(strncmp(p->ctlname, "data", 5) != 0) >> if(p->changed) >> if(fprint(ctlfd, "delpart %s\n", p->ctlname)<0) { >> fprint(2, "delpart failed: %s: %r\n", p->ctlname);
on second read, with this approach, i would think that strcmp() not strncmp should be used. > > That would work, but one wonders why > the normal kernel doesn't have this problem. this must be a quirk of the interaction between devsd and fdisk. by hand data does disappear: ; lc 9fat ctl data nvram plan9 raw ; for(i in 9fat data nvram plan9 data)echo delpart $i>ctl ; lc ctl raw by the way, be very careful with this before applying this patch: ; diff -c /sys/src/9/port/devsd.c /n/dump/2008/0701/sys/src/9/port/devsd.c /sys/src/9/port/devsd.c:147,153 - /n/dump/2008/0701/sys/src/9/port/devsd.c:147,152 */ pp = unit->part; for(i = 0; i < unit->npart; i++){ - if(pp->name) if(strcmp(name, pp->name) == 0) break; pp++; this is required because npart is set to the number of partitions allocated. the names never-set partitions might be 0. otherwise "delpart missingpart>/dev/sdXX/ctl" will be a noisy and somewhat gratituous synonym for "echo reboot>/dev/reboot". - erik