diff options
author | Ray Hassan <Ray.Hassan@oracle.COM> | 2010-06-16 10:25:09 +0100 |
---|---|---|
committer | Ray Hassan <Ray.Hassan@oracle.COM> | 2010-06-16 10:25:09 +0100 |
commit | e50ee8ef3546a2325eb1ef7768c1da5758ec16e9 (patch) | |
tree | a95e2192b328ba33022365c5c8893c55f2053345 /usr/src/uts/common | |
parent | 4e240297c2857fcb86445d5efc563627559bdbfd (diff) | |
download | illumos-joyent-e50ee8ef3546a2325eb1ef7768c1da5758ec16e9.tar.gz |
6914620 SVM can panic system when attempting to access a damaged one-sided mirror
Diffstat (limited to 'usr/src/uts/common')
-rw-r--r-- | usr/src/uts/common/io/lvm/mirror/mirror.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/usr/src/uts/common/io/lvm/mirror/mirror.c b/usr/src/uts/common/io/lvm/mirror/mirror.c index 02fca3cab1..121a8cf33c 100644 --- a/usr/src/uts/common/io/lvm/mirror/mirror.c +++ b/usr/src/uts/common/io/lvm/mirror/mirror.c @@ -20,8 +20,7 @@ */ /* - * Copyright 2009 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. + * Copyright (c) 1992, 2010, Oracle and/or its affiliates. All rights reserved. */ #include <sys/param.h> @@ -356,9 +355,11 @@ mirror_geterror(mm_unit_t *un, int *smi, int *cip, int clr_error, open_comp = (frm_probe) ? (shared->ms_flags & MDM_S_PROBEOPEN): (shared->ms_flags & MDM_S_ISOPEN); - if ((shared->ms_flags & MDM_S_IOERR || !open_comp) && + if (((shared->ms_flags & MDM_S_IOERR || !open_comp) && ((shared->ms_state == CS_OKAY) || - (shared->ms_state == CS_RESYNC))) { + (shared->ms_state == CS_RESYNC))) || + (!open_comp && + (shared->ms_state == CS_LAST_ERRED))) { if (clr_error) { shared->ms_flags &= ~MDM_S_IOERR; } |