Page MenuHomeFreeBSD

D29161.id85427.diff
No OneTemporary

D29161.id85427.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
@@ -822,6 +822,21 @@
g_free(dp);
}
+/*
+ * Free up a disk that's been allocated, but that will not go through
+ * disk_create.
+ */
+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);
+}
+
/*
* We only allow printable characters in disk ident,
* the rest is converted to 'x<HH>'.

File Metadata

Mime Type
text/plain
Expires
Thu, Jun 18, 4:38 PM (3 h, 58 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34054073
Default Alt Text
D29161.id85427.diff (1 KB)

Event Timeline