diff options
author | Alexander Motin <mav@FreeBSD.org> | 2013-04-05 13:11:28 +0000 |
---|---|---|
committer | Alexander Motin <mav@FreeBSD.org> | 2013-04-05 13:11:28 +0000 |
commit | 0fb832fdf0671837845cd957009424dc93bf806e (patch) | |
tree | ee31fc71d76b138f1cbf0c30cb6c0b7e415ba125 /sys/geom/geom_disk.c | |
parent | 791a7de9987ee93f96b146a6bf6d2446cc461130 (diff) | |
download | src-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.c | 12 |
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); + } } } |