diff options
author | pjd <pjd@FreeBSD.org> | 2004-11-09 23:15:40 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2004-11-09 23:15:40 +0000 |
commit | a2d5ae235db70465d84ce92765d3ed0ae37f28c0 (patch) | |
tree | 4761fe10bb69211f066b5cc05d16ad8f7b72cf1a | |
parent | 8fe1c8565771b852ee289cd3aa35ade92db714f7 (diff) | |
download | FreeBSD-src-a2d5ae235db70465d84ce92765d3ed0ae37f28c0.zip FreeBSD-src-a2d5ae235db70465d84ce92765d3ed0ae37f28c0.tar.gz |
Don't rely on DIRTY flag to be sure that consumer if open, because
DIRTY flag can be removed in idle process. Use consumer's acw field
instead to avoid opening consumer twice.
-rw-r--r-- | sys/geom/mirror/g_mirror.c | 2 | ||||
-rw-r--r-- | sys/geom/raid3/g_raid3.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/sys/geom/mirror/g_mirror.c b/sys/geom/mirror/g_mirror.c index 750aa05..192e415 100644 --- a/sys/geom/mirror/g_mirror.c +++ b/sys/geom/mirror/g_mirror.c @@ -584,7 +584,7 @@ g_mirror_write_metadata(struct g_mirror_disk *disk, /* * Open consumer if it wasn't opened and remember to close it. */ - if ((disk->d_flags & G_MIRROR_DISK_FLAG_DIRTY) == 0) { + if (cp->acw == 0) { error = g_access(cp, 0, 1, 1); G_MIRROR_DEBUG(2, "Access %s r%dw%de%d = %d", cp->provider->name, 0, 1, 1, error); diff --git a/sys/geom/raid3/g_raid3.c b/sys/geom/raid3/g_raid3.c index 36f3e20..4a020d7 100644 --- a/sys/geom/raid3/g_raid3.c +++ b/sys/geom/raid3/g_raid3.c @@ -618,7 +618,7 @@ g_raid3_write_metadata(struct g_raid3_disk *disk, struct g_raid3_metadata *md) /* * Open consumer if it wasn't opened and remember to close it. */ - if ((disk->d_flags & G_RAID3_DISK_FLAG_DIRTY) == 0) { + if (cp->acw == 0) { error = g_access(cp, 0, 1, 1); G_RAID3_DEBUG(2, "Access %s r%dw%de%d = %d", cp->provider->name, 0, 1, 1, error); |