aboutsummaryrefslogtreecommitdiff
path: root/sys/geom/geom_disk.c
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2013-04-05 13:11:28 +0000
committerAlexander Motin <mav@FreeBSD.org>2013-04-05 13:11:28 +0000
commit0fb832fdf0671837845cd957009424dc93bf806e (patch)
treeee31fc71d76b138f1cbf0c30cb6c0b7e415ba125 /sys/geom/geom_disk.c
parent791a7de9987ee93f96b146a6bf6d2446cc461130 (diff)
downloadsrc-0fb832fdf0671837845cd957009424dc93bf806e.tar.gz
src-0fb832fdf0671837845cd957009424dc93bf806e.zip
Following r241022, replace iteration over the provider list on media events
by taking first one and asserting that there is no others. MFC after: 1 week
Notes
Notes: svn path=/head/; revision=249161
Diffstat (limited to 'sys/geom/geom_disk.c')
-rw-r--r--sys/geom/geom_disk.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/sys/geom/geom_disk.c b/sys/geom/geom_disk.c
index af0316a4d0f8..c71e6eccd87f 100644
--- a/sys/geom/geom_disk.c
+++ b/sys/geom/geom_disk.c
@@ -658,8 +658,12 @@ disk_media_changed(struct disk *dp, int flag)
gp = dp->d_geom;
if (gp != NULL) {
- LIST_FOREACH(pp, &gp->provider, provider)
+ pp = LIST_FIRST(&gp->provider);
+ if (pp != NULL) {
+ KASSERT(LIST_NEXT(pp, provider) == NULL,
+ ("geom %p has more than one provider", gp));
g_media_changed(pp, flag);
+ }
}
}
@@ -671,8 +675,12 @@ disk_media_gone(struct disk *dp, int flag)
gp = dp->d_geom;
if (gp != NULL) {
- LIST_FOREACH(pp, &gp->provider, provider)
+ pp = LIST_FIRST(&gp->provider);
+ if (pp != NULL) {
+ KASSERT(LIST_NEXT(pp, provider) == NULL,
+ ("geom %p has more than one provider", gp));
g_media_gone(pp, flag);
+ }
}
}