--- /dev/null
+commit 3613204cd7e3ab1ae658e31dac875e58827a6655
+Author: Brian Behlendorf <behlendorf1@llnl.gov>
+Date: Thu May 5 09:40:57 2011 -0700
+
+ Allow mounting of read-only snapshots
+
+ With the addition of the mount helper we accidentally regressed
+ the ability to manually mount snapshots. This commit updates
+ the mount helper to expect the possibility of a ZFS_TYPE_SNAPSHOT.
+ All snapshot will be automatically treated as 'legacy' type mounts
+ so they can be mounted manually.
+
+diff --git a/cmd/mount_zfs/mount_zfs.c b/cmd/mount_zfs/mount_zfs.c
+index c38ba51..e97b2b8 100644
+--- a/cmd/mount_zfs/mount_zfs.c
++++ b/cmd/mount_zfs/mount_zfs.c
+@@ -428,15 +428,20 @@ main(int argc, char **argv)
+ return (MOUNT_SYSERR);
+
+ /* try to open the dataset to access the mount point */
+- if ((zhp = zfs_open(g_zfs, dataset, ZFS_TYPE_FILESYSTEM)) == NULL) {
++ if ((zhp = zfs_open(g_zfs, dataset,
++ ZFS_TYPE_FILESYSTEM | ZFS_TYPE_SNAPSHOT)) == NULL) {
+ (void) fprintf(stderr, gettext("filesystem '%s' cannot be "
+ "mounted, unable to open the dataset\n"), dataset);
+ libzfs_fini(g_zfs);
+ return (MOUNT_USAGE);
+ }
+
+- (void) zfs_prop_get(zhp, ZFS_PROP_MOUNTPOINT, legacy,
+- sizeof (legacy), NULL, NULL, 0, B_FALSE);
++ /* treat all snapshots as legacy mount points */
++ if (zfs_get_type(zhp) == ZFS_TYPE_SNAPSHOT)
++ (void) strlcpy(legacy, ZFS_MOUNTPOINT_LEGACY, ZFS_MAXPROPLEN);
++ else
++ (void) zfs_prop_get(zhp, ZFS_PROP_MOUNTPOINT, legacy,
++ sizeof (legacy), NULL, NULL, 0, B_FALSE);
+
+ zfs_close(zhp);
+ libzfs_fini(g_zfs);