code: func (d *Driver) Create(id, parent string, opts *graphdriver.CreateOpts) error {
  	var storageOpt map[string]string
  	if opts != nil {
  		storageOpt = opts.StorageOpt
  	}
  
  	err := d.create(id, parent, storageOpt)
  	if err == nil {
  		return nil
  	}
  	if zfsError, ok := err.(*zfs.Error); ok {
  		if !strings.HasSuffix(zfsError.Stderr, "dataset already exists\n") {
  			return err
  		}
  		// aborted build -> cleanup
  	} else {
  		return err
  	}
  
  	dataset := zfs.Dataset{Name: d.zfsPath(id)}
  	if err := dataset.Destroy(zfs.DestroyRecursiveClones); err != nil {
  		return err
  	}
  
  	// retry
  	return d.create(id, parent, storageOpt)
  }
docs: // Create prepares the dataset and filesystem for the ZFS driver for the given id under the parent.