kern/175323: Fail to use ZVOL as a gmirror component

Alexander Motin mav at FreeBSD.org
Tue Jan 22 17:48:10 UTC 2013


On 22.01.2013 18:29, Andriy Gapon wrote:
> on 21/01/2013 14:39 Алексей Волков said the following:
>> Eventually this patch works for me just fine.
>>
>> --- sys/geom/mirror/g_mirror.c    (revision 245741)
>> +++ sys/geom/mirror/g_mirror.c    (working copy)
>> @@ -456,7 +456,7 @@
>>      disk->d_flags = md->md_dflags;
>>      error = g_getattr("GEOM::candelete", disk->d_consumer, &i);
>>      if (error != 0)
>> -        goto fail;
>> +        i=0;
>>      if (i)
>>          disk->d_flags |= G_MIRROR_DISK_FLAG_CANDELETE;
>>      if (md->md_provider[0] != '\0')
>>
> 
> So any comments from the GEOM / gmirror guys?

That looks fine to me. I would just do it as:

--- g_mirror.c  (revision 245794)
+++ g_mirror.c  (working copy)
@@ -457,9 +457,7 @@ g_mirror_init_disk(struct g_mirror_softc *sc, stru
        disk->d_priority = md->md_priority;
        disk->d_flags = md->md_dflags;
        error = g_getattr("GEOM::candelete", disk->d_consumer, &i);
-       if (error != 0)
-               goto fail;
-       if (i)
+       if (error == 0 && i != 0)
                disk->d_flags |= G_MIRROR_DISK_FLAG_CANDELETE;
        if (md->md_provider[0] != '\0')
                disk->d_flags |= G_MIRROR_DISK_FLAG_HARDCODED;


-- 
Alexander Motin


More information about the freebsd-geom mailing list