vdev_geom.c (216256) | vdev_geom.c (218278) |
---|---|
1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE --- 379 unchanged lines hidden (view full) --- 388 uint64_t guid; 389 390 cp = NULL; 391 g_topology_lock(); 392 pp = g_provider_by_name(vd->vdev_path + sizeof("/dev/") - 1); 393 if (pp != NULL) { 394 ZFS_LOG(1, "Found provider by name %s.", vd->vdev_path); 395 cp = vdev_geom_attach(pp); | 1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE --- 379 unchanged lines hidden (view full) --- 388 uint64_t guid; 389 390 cp = NULL; 391 g_topology_lock(); 392 pp = g_provider_by_name(vd->vdev_path + sizeof("/dev/") - 1); 393 if (pp != NULL) { 394 ZFS_LOG(1, "Found provider by name %s.", vd->vdev_path); 395 cp = vdev_geom_attach(pp); |
396 if (cp != NULL && check_guid) { | 396 if (cp != NULL && check_guid && ISP2(pp->sectorsize) && 397 pp->sectorsize <= VDEV_PAD_SIZE) { |
397 g_topology_unlock(); 398 guid = vdev_geom_read_guid(cp); 399 g_topology_lock(); 400 if (guid != vd->vdev_guid) { 401 vdev_geom_detach(cp, 0); 402 cp = NULL; 403 ZFS_LOG(1, "guid mismatch for provider %s: " 404 "%ju != %ju.", vd->vdev_path, --- 47 unchanged lines hidden (view full) --- 452 */ 453 cp = vdev_geom_open_by_guid(vd); 454 } 455 } 456 457 if (cp == NULL) { 458 ZFS_LOG(1, "Provider %s not found.", vd->vdev_path); 459 error = ENOENT; | 398 g_topology_unlock(); 399 guid = vdev_geom_read_guid(cp); 400 g_topology_lock(); 401 if (guid != vd->vdev_guid) { 402 vdev_geom_detach(cp, 0); 403 cp = NULL; 404 ZFS_LOG(1, "guid mismatch for provider %s: " 405 "%ju != %ju.", vd->vdev_path, --- 47 unchanged lines hidden (view full) --- 453 */ 454 cp = vdev_geom_open_by_guid(vd); 455 } 456 } 457 458 if (cp == NULL) { 459 ZFS_LOG(1, "Provider %s not found.", vd->vdev_path); 460 error = ENOENT; |
461 } else if (cp->provider->sectorsize > VDEV_PAD_SIZE || 462 !ISP2(cp->provider->sectorsize)) { 463 ZFS_LOG(1, "Provider %s has unsupported sectorsize.", 464 vd->vdev_path); 465 466 g_topology_lock(); 467 vdev_geom_detach(cp, 0); 468 g_topology_unlock(); 469 470 error = EINVAL; 471 cp = NULL; |
|
460 } else if (cp->acw == 0 && (spa_mode(vd->vdev_spa) & FWRITE) != 0) { 461 int i; 462 463 g_topology_lock(); 464 for (i = 0; i < 5; i++) { 465 error = g_access(cp, 0, 1, 0); 466 if (error == 0) 467 break; --- 161 unchanged lines hidden --- | 472 } else if (cp->acw == 0 && (spa_mode(vd->vdev_spa) & FWRITE) != 0) { 473 int i; 474 475 g_topology_lock(); 476 for (i = 0; i < 5; i++) { 477 error = g_access(cp, 0, 1, 0); 478 if (error == 0) 479 break; --- 161 unchanged lines hidden --- |