Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F157419687
D29161.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
D29161.id.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D29161: geom: create disk_free() to free uninitialized disks
Attached
Detach File
Event Timeline
Log In to Comment