Print this page
2882 implement libzfs_core
2883 changing "canmount" property to "on" should not always remount dataset
2900 "zfs snapshot" should be able to create multiple, arbitrary snapshots at once
Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Chris Siden <christopher.siden@delphix.com>
Reviewed by: Garrett D'Amore <garrett@damore.org>
Reviewed by: Bill Pijewski <wdp@joyent.com>
Reviewed by: Dan Kruchinin <dan.kruchinin@gmail.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/zfs/sys/spa.h
          +++ new/usr/src/uts/common/fs/zfs/sys/spa.h
↓ open down ↓ 44 lines elided ↑ open up ↑
  45   45  typedef struct vdev vdev_t;
  46   46  typedef struct metaslab metaslab_t;
  47   47  typedef struct metaslab_group metaslab_group_t;
  48   48  typedef struct metaslab_class metaslab_class_t;
  49   49  typedef struct zio zio_t;
  50   50  typedef struct zilog zilog_t;
  51   51  typedef struct spa_aux_vdev spa_aux_vdev_t;
  52   52  typedef struct ddt ddt_t;
  53   53  typedef struct ddt_entry ddt_entry_t;
  54   54  struct dsl_pool;
       55 +struct dsl_dataset;
  55   56  
  56   57  /*
  57   58   * General-purpose 32-bit and 64-bit bitfield encodings.
  58   59   */
  59   60  #define BF32_DECODE(x, low, len)        P2PHASE((x) >> (low), 1U << (len))
  60   61  #define BF64_DECODE(x, low, len)        P2PHASE((x) >> (low), 1ULL << (len))
  61   62  #define BF32_ENCODE(x, low, len)        (P2PHASE((x), 1U << (len)) << (low))
  62   63  #define BF64_ENCODE(x, low, len)        (P2PHASE((x), 1ULL << (len)) << (low))
  63   64  
  64   65  #define BF32_GET(x, low, len)           BF32_DECODE(x, low, len)
↓ open down ↓ 346 lines elided ↑ open up ↑
 411  412          SPA_IMPORT_ASSEMBLE
 412  413  } spa_import_type_t;
 413  414  
 414  415  /* state manipulation functions */
 415  416  extern int spa_open(const char *pool, spa_t **, void *tag);
 416  417  extern int spa_open_rewind(const char *pool, spa_t **, void *tag,
 417  418      nvlist_t *policy, nvlist_t **config);
 418  419  extern int spa_get_stats(const char *pool, nvlist_t **config, char *altroot,
 419  420      size_t buflen);
 420  421  extern int spa_create(const char *pool, nvlist_t *config, nvlist_t *props,
 421      -    const char *history_str, nvlist_t *zplprops);
      422 +    nvlist_t *zplprops);
 422  423  extern int spa_import_rootpool(char *devpath, char *devid);
 423  424  extern int spa_import(const char *pool, nvlist_t *config, nvlist_t *props,
 424  425      uint64_t flags);
 425  426  extern nvlist_t *spa_tryimport(nvlist_t *tryconfig);
 426  427  extern int spa_destroy(char *pool);
 427  428  extern int spa_export(char *pool, nvlist_t **oldconfig, boolean_t force,
 428  429      boolean_t hardforce);
 429  430  extern int spa_reset(char *pool);
 430  431  extern void spa_async_request(spa_t *spa, int flag);
 431  432  extern void spa_async_unrequest(spa_t *spa, int flag);
↓ open down ↓ 193 lines elided ↑ open up ↑
 625  626  extern uint64_t dva_get_dsize_sync(spa_t *spa, const dva_t *dva);
 626  627  extern uint64_t bp_get_dsize_sync(spa_t *spa, const blkptr_t *bp);
 627  628  extern uint64_t bp_get_dsize(spa_t *spa, const blkptr_t *bp);
 628  629  extern boolean_t spa_has_slogs(spa_t *spa);
 629  630  extern boolean_t spa_is_root(spa_t *spa);
 630  631  extern boolean_t spa_writeable(spa_t *spa);
 631  632  
 632  633  extern int spa_mode(spa_t *spa);
 633  634  extern uint64_t strtonum(const char *str, char **nptr);
 634  635  
 635      -/* history logging */
 636      -typedef enum history_log_type {
 637      -        LOG_CMD_POOL_CREATE,
 638      -        LOG_CMD_NORMAL,
 639      -        LOG_INTERNAL
 640      -} history_log_type_t;
 641      -
 642      -typedef struct history_arg {
 643      -        char *ha_history_str;
 644      -        history_log_type_t ha_log_type;
 645      -        history_internal_events_t ha_event;
 646      -        char *ha_zone;
 647      -        uid_t ha_uid;
 648      -} history_arg_t;
 649      -
 650  636  extern char *spa_his_ievent_table[];
 651  637  
 652  638  extern void spa_history_create_obj(spa_t *spa, dmu_tx_t *tx);
 653  639  extern int spa_history_get(spa_t *spa, uint64_t *offset, uint64_t *len_read,
 654  640      char *his_buf);
 655      -extern int spa_history_log(spa_t *spa, const char *his_buf,
 656      -    history_log_type_t what);
 657      -extern void spa_history_log_internal(history_internal_events_t event,
 658      -    spa_t *spa, dmu_tx_t *tx, const char *fmt, ...);
 659      -extern void spa_history_log_version(spa_t *spa, history_internal_events_t evt);
      641 +extern int spa_history_log(spa_t *spa, const char *his_buf);
      642 +extern int spa_history_log_nvl(spa_t *spa, nvlist_t *nvl);
      643 +extern void spa_history_log_version(spa_t *spa, const char *operation);
      644 +extern void spa_history_log_internal(spa_t *spa, const char *operation,
      645 +    dmu_tx_t *tx, const char *fmt, ...);
      646 +extern void spa_history_log_internal_ds(struct dsl_dataset *ds, const char *op,
      647 +    dmu_tx_t *tx, const char *fmt, ...);
      648 +extern void spa_history_log_internal_dd(dsl_dir_t *dd, const char *operation,
      649 +    dmu_tx_t *tx, const char *fmt, ...);
 660  650  
 661  651  /* error handling */
 662  652  struct zbookmark;
 663  653  extern void spa_log_error(spa_t *spa, zio_t *zio);
 664  654  extern void zfs_ereport_post(const char *class, spa_t *spa, vdev_t *vd,
 665  655      zio_t *zio, uint64_t stateoroffset, uint64_t length);
 666  656  extern void zfs_post_remove(spa_t *spa, vdev_t *vd);
 667  657  extern void zfs_post_state_change(spa_t *spa, vdev_t *vd);
 668  658  extern void zfs_post_autoreplace(spa_t *spa, vdev_t *vd);
 669  659  extern uint64_t spa_get_errlog_size(spa_t *spa);
↓ open down ↓ 51 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX