Commit Diff


commit - 92a9bc24f9bcc152b33c8f876cc13e9e1c95cfc8
commit + dcb5580cf084ca5a94f354e048b8f6b6e4dae630
blob - d156457d5fcbad85f29a430a012bc39e6a1384c7
blob + 5d447479037d1d5ea49d7ff844ca0766f6ef5eda
--- src/libdiskfs/part.c
+++ src/libdiskfs/part.c
@@ -28,7 +28,9 @@ diskpartsync(Disk *dd)
 {
 	DiskPart *d = (DiskPart*)dd;
 	
-	return disksync(d->subdisk);
+	if(d->subdisk)
+		return disksync(d->subdisk);
+	return 0;
 }
 
 static void
@@ -36,12 +38,13 @@ diskpartclose(Disk *dd)
 {
 	DiskPart *d = (DiskPart*)dd;
 	
-	diskclose(d->subdisk);
+	if(d->subdisk)
+		diskclose(d->subdisk);
 	free(d);
 }
 
 Disk*
-diskpart(Disk *subdisk, u64int size, u64int offset)
+diskpart(Disk *subdisk, u64int offset, u64int size)
 {
 	DiskPart *d;
 	
@@ -58,3 +61,11 @@ diskpart(Disk *subdisk, u64int size, u64int offset)
 	
 	return &d->disk;
 }
+
+void
+diskpartabandon(Disk *d)
+{
+	if(d->_read != diskpartread)
+		abort();
+	d->subdisk = nil;
+}