svn commit: r308776 - head/sys/boot/zfs

Toomas Soome tsoome at FreeBSD.org
Thu Nov 17 19:38:32 UTC 2016


Author: tsoome
Date: Thu Nov 17 19:38:30 2016
New Revision: 308776
URL: https://svnweb.freebsd.org/changeset/base/308776

Log:
  loader: zfs toplevel vdev must have spa set.
  
  The salt based checksum mechanisms, such as skein, are storing the seed
  in spa structure, and need to access the spa to use the seed. The current
  mechanism for quick access to correct spa is via pointer provided by
  vdev structure, but unfortunately the current code does set spa only
  for the leaf vdev. This patch will fix the issue by making sure the
  loader zfs reader will set spa also for top-level vdevs.
  
  PR:		214375
  Reported by:	lstewart
  Reviewed by:	allanjude, imp
  Approved by:	allanjude (mentor), imp (mentor)
  MFC after:	2 weeks
  Differential Revision:	https://reviews.freebsd.org/D8487

Modified:
  head/sys/boot/zfs/zfsimpl.c

Modified: head/sys/boot/zfs/zfsimpl.c
==============================================================================
--- head/sys/boot/zfs/zfsimpl.c	Thu Nov 17 19:02:25 2016	(r308775)
+++ head/sys/boot/zfs/zfsimpl.c	Thu Nov 17 19:38:30 2016	(r308776)
@@ -1049,8 +1049,10 @@ vdev_probe(vdev_phys_read_t *read, void 
 	STAILQ_FOREACH(pool_vdev, &spa->spa_vdevs, v_childlink)
 		if (top_vdev == pool_vdev)
 			break;
-	if (!pool_vdev && top_vdev)
+	if (!pool_vdev && top_vdev) {
+		top_vdev->spa = spa;
 		STAILQ_INSERT_TAIL(&spa->spa_vdevs, top_vdev, v_childlink);
+	}
 
 	/*
 	 * We should already have created an incomplete vdev for this


More information about the svn-src-all mailing list