Print this page
4171 clean up spa_feature_*() interfaces
4172 implement extensible_dataset feature for use by other zpool features
Reviewed by: Max Grossman <max.grossman@delphix.com>
Reviewed by: Christopher Siden <christopher.siden@delphix.com>
Reviewed by: George Wilson <george.wilson@delphix.com>
*** 21,31 ****
* Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/*
! * Copyright (c) 2012 by Delphix. All rights reserved.
* Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
*/
/*
* The zfs plug-in routines for GRUB are:
--- 21,31 ----
* Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/*
! * Copyright (c) 2013 by Delphix. All rights reserved.
* Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
*/
/*
* The zfs plug-in routines for GRUB are:
*** 964,973 ****
--- 964,974 ----
* When this list is updated the version number in usr/src/grub/capability
* must be incremented to ensure the new grub gets installed.
*/
static const char *spa_feature_names[] = {
"org.illumos:lz4_compress",
+ "com.delphix:extensible_dataset",
NULL
};
/*
* Checks whether the MOS features that are active are supported by this
*** 1042,1052 ****
if (errnum = zap_lookup(mdn, DMU_POOL_ROOT_DATASET, &objnum,
stack))
return (errnum);
! if (errnum = dnode_get(mosmdn, objnum, DMU_OT_DSL_DIR, mdn, stack))
return (errnum);
if (fsname == NULL) {
headobj =
((dsl_dir_phys_t *)DN_BONUS(mdn))->dd_head_dataset_obj;
--- 1043,1053 ----
if (errnum = zap_lookup(mdn, DMU_POOL_ROOT_DATASET, &objnum,
stack))
return (errnum);
! if (errnum = dnode_get(mosmdn, objnum, 0, mdn, stack))
return (errnum);
if (fsname == NULL) {
headobj =
((dsl_dir_phys_t *)DN_BONUS(mdn))->dd_head_dataset_obj;
*** 1084,1094 ****
return (errnum);
if (zap_lookup(mdn, cname, &objnum, stack))
return (ERR_FILESYSTEM_NOT_FOUND);
! if (errnum = dnode_get(mosmdn, objnum, DMU_OT_DSL_DIR,
mdn, stack))
return (errnum);
*fsname = ch;
if (issnapshot)
--- 1085,1095 ----
return (errnum);
if (zap_lookup(mdn, cname, &objnum, stack))
return (ERR_FILESYSTEM_NOT_FOUND);
! if (errnum = dnode_get(mosmdn, objnum, 0,
mdn, stack))
return (errnum);
*fsname = ch;
if (issnapshot)
*** 1097,1107 ****
headobj = ((dsl_dir_phys_t *)DN_BONUS(mdn))->dd_head_dataset_obj;
if (obj)
*obj = headobj;
skip:
! if (errnum = dnode_get(mosmdn, headobj, DMU_OT_DSL_DATASET, mdn, stack))
return (errnum);
if (issnapshot) {
uint64_t snapobj;
snapobj = ((dsl_dataset_phys_t *)DN_BONUS(mdn))->
--- 1098,1108 ----
headobj = ((dsl_dir_phys_t *)DN_BONUS(mdn))->dd_head_dataset_obj;
if (obj)
*obj = headobj;
skip:
! if (errnum = dnode_get(mosmdn, headobj, 0, mdn, stack))
return (errnum);
if (issnapshot) {
uint64_t snapobj;
snapobj = ((dsl_dataset_phys_t *)DN_BONUS(mdn))->
*** 1110,1121 ****
if (errnum = dnode_get(mosmdn, snapobj,
DMU_OT_DSL_DS_SNAP_MAP, mdn, stack))
return (errnum);
if (zap_lookup(mdn, snapname + 1, &headobj, stack))
return (ERR_FILESYSTEM_NOT_FOUND);
! if (errnum = dnode_get(mosmdn, headobj,
! DMU_OT_DSL_DATASET, mdn, stack))
return (errnum);
if (obj)
*obj = headobj;
}
--- 1111,1121 ----
if (errnum = dnode_get(mosmdn, snapobj,
DMU_OT_DSL_DS_SNAP_MAP, mdn, stack))
return (errnum);
if (zap_lookup(mdn, snapname + 1, &headobj, stack))
return (ERR_FILESYSTEM_NOT_FOUND);
! if (errnum = dnode_get(mosmdn, headobj, 0, mdn, stack))
return (errnum);
if (obj)
*obj = headobj;
}