Page MenuHomeFreeBSD

D29161.id.diff
No OneTemporary

D29161.id.diff

Index: share/man/man9/disk.9
===================================================================
--- share/man/man9/disk.9
+++ share/man/man9/disk.9
@@ -40,6 +40,8 @@
.Ft void
.Fn disk_create "struct disk *disk" "int version"
.Ft void
+.Fn disk_free "struct disk *disk"
+.Ft void
.Fn disk_gone "struct disk *disk"
.Ft void
.Fn disk_destroy "struct disk *disk"
@@ -71,6 +73,11 @@
fill in the fields and call
.Fn disk_create
when the device is ready to service requests.
+.Fn disk_free
+frees uninitialized disks from
+.Fn disk_alloc
+that will not proceed to
+.Fn disk_create .
.Fn disk_add_alias
adds an alias for the disk and must be called before
.Fn disk_create ,
Index: sys/geom/geom_disk.h
===================================================================
--- sys/geom/geom_disk.h
+++ sys/geom/geom_disk.h
@@ -139,6 +139,7 @@
struct disk *disk_alloc(void);
void disk_create(struct disk *disk, int version);
void disk_destroy(struct disk *disk);
+void disk_free(struct disk *disk);
void disk_gone(struct disk *disk);
void disk_attr_changed(struct disk *dp, const char *attr, int flag);
void disk_media_changed(struct disk *dp, int flag);
Index: sys/geom/geom_disk.c
===================================================================
--- sys/geom/geom_disk.c
+++ sys/geom/geom_disk.c
@@ -798,6 +798,21 @@
g_free(sc);
}
+/*
+ * Free up a disk that's been allocated, but that will not go through
+ * disk_create, or has been completely torn down by g_disk_destroy.
+ */
+void
+disk_free(struct disk *dp)
+{
+ KASSERT(dp->d_geom == NULL,
+ ("disk_free: d_geom initialized, use disk_destroy"));
+ KASSERT(LIST_FIRST(&dp->d_aliases) == NULL,
+ ("disk_free: alias list initialized, use disk_destroy"));
+
+ g_free(dp);
+}
+
static void
g_disk_destroy(void *ptr, int flag)
{
@@ -819,7 +834,7 @@
LIST_FOREACH_SAFE(dap, &dp->d_aliases, da_next, daptmp)
g_free(dap);
- g_free(dp);
+ disk_free(dp);
}
/*

File Metadata

Mime Type
text/plain
Expires
Fri, May 22, 5:43 AM (20 h, 53 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33415506
Default Alt Text
D29161.id.diff (1 KB)

Event Timeline