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/dmu.h
          +++ new/usr/src/uts/common/fs/zfs/sys/dmu.h
↓ open down ↓ 36 lines elided ↑ open up ↑
  37   37   *
  38   38   * The DMU also interacts with the SPA.  That interface is described in
  39   39   * dmu_spa.h.
  40   40   */
  41   41  
  42   42  #include <sys/inttypes.h>
  43   43  #include <sys/types.h>
  44   44  #include <sys/param.h>
  45   45  #include <sys/cred.h>
  46   46  #include <sys/time.h>
       47 +#include <sys/fs/zfs.h>
  47   48  
  48   49  #ifdef  __cplusplus
  49   50  extern "C" {
  50   51  #endif
  51   52  
  52   53  struct uio;
  53   54  struct xuio;
  54   55  struct page;
  55   56  struct vnode;
  56   57  struct spa;
↓ open down ↓ 152 lines elided ↑ open up ↑
 209  210          DMU_OTN_UINT16_DATA = DMU_OT(DMU_BSWAP_UINT16, B_FALSE),
 210  211          DMU_OTN_UINT16_METADATA = DMU_OT(DMU_BSWAP_UINT16, B_TRUE),
 211  212          DMU_OTN_UINT32_DATA = DMU_OT(DMU_BSWAP_UINT32, B_FALSE),
 212  213          DMU_OTN_UINT32_METADATA = DMU_OT(DMU_BSWAP_UINT32, B_TRUE),
 213  214          DMU_OTN_UINT64_DATA = DMU_OT(DMU_BSWAP_UINT64, B_FALSE),
 214  215          DMU_OTN_UINT64_METADATA = DMU_OT(DMU_BSWAP_UINT64, B_TRUE),
 215  216          DMU_OTN_ZAP_DATA = DMU_OT(DMU_BSWAP_ZAP, B_FALSE),
 216  217          DMU_OTN_ZAP_METADATA = DMU_OT(DMU_BSWAP_ZAP, B_TRUE),
 217  218  } dmu_object_type_t;
 218  219  
 219      -typedef enum dmu_objset_type {
 220      -        DMU_OST_NONE,
 221      -        DMU_OST_META,
 222      -        DMU_OST_ZFS,
 223      -        DMU_OST_ZVOL,
 224      -        DMU_OST_OTHER,                  /* For testing only! */
 225      -        DMU_OST_ANY,                    /* Be careful! */
 226      -        DMU_OST_NUMTYPES
 227      -} dmu_objset_type_t;
 228      -
 229  220  void byteswap_uint64_array(void *buf, size_t size);
 230  221  void byteswap_uint32_array(void *buf, size_t size);
 231  222  void byteswap_uint16_array(void *buf, size_t size);
 232  223  void byteswap_uint8_array(void *buf, size_t size);
 233  224  void zap_byteswap(void *buf, size_t size);
 234  225  void zfs_oldacl_byteswap(void *buf, size_t size);
 235  226  void zfs_acl_byteswap(void *buf, size_t size);
 236  227  void zfs_znode_byteswap(void *buf, size_t size);
 237  228  
 238  229  #define DS_FIND_SNAPSHOTS       (1<<0)
↓ open down ↓ 24 lines elided ↑ open up ↑
 263  254  void dmu_objset_rele(objset_t *os, void *tag);
 264  255  void dmu_objset_disown(objset_t *os, void *tag);
 265  256  int dmu_objset_open_ds(struct dsl_dataset *ds, objset_t **osp);
 266  257  
 267  258  int dmu_objset_evict_dbufs(objset_t *os);
 268  259  int dmu_objset_create(const char *name, dmu_objset_type_t type, uint64_t flags,
 269  260      void (*func)(objset_t *os, void *arg, cred_t *cr, dmu_tx_t *tx), void *arg);
 270  261  int dmu_objset_clone(const char *name, struct dsl_dataset *clone_origin,
 271  262      uint64_t flags);
 272  263  int dmu_objset_destroy(const char *name, boolean_t defer);
 273      -int dmu_snapshots_destroy_nvl(struct nvlist *snaps, boolean_t defer, char *);
 274      -int dmu_objset_snapshot(char *fsname, char *snapname, char *tag,
 275      -    struct nvlist *props, boolean_t recursive, boolean_t temporary, int fd);
      264 +int dmu_snapshots_destroy_nvl(struct nvlist *snaps, boolean_t defer,
      265 +    struct nvlist *errlist);
      266 +int dmu_objset_snapshot(struct nvlist *snaps, struct nvlist *, struct nvlist *);
      267 +int dmu_objset_snapshot_one(const char *fsname, const char *snapname);
      268 +int dmu_objset_snapshot_tmp(const char *, const char *, int);
 276  269  int dmu_objset_rename(const char *name, const char *newname,
 277  270      boolean_t recursive);
 278  271  int dmu_objset_find(char *name, int func(const char *, void *), void *arg,
 279  272      int flags);
 280  273  void dmu_objset_byteswap(void *buf, size_t size);
 281  274  
 282  275  typedef struct dmu_buf {
 283  276          uint64_t db_object;             /* object that this buffer is part of */
 284  277          uint64_t db_offset;             /* byte offset in this object */
 285  278          uint64_t db_size;               /* size of buffer in bytes */
↓ open down ↓ 496 lines elided ↑ open up ↑
 782  775   * Initial setup and final teardown.
 783  776   */
 784  777  extern void dmu_init(void);
 785  778  extern void dmu_fini(void);
 786  779  
 787  780  typedef void (*dmu_traverse_cb_t)(objset_t *os, void *arg, struct blkptr *bp,
 788  781      uint64_t object, uint64_t offset, int len);
 789  782  void dmu_traverse_objset(objset_t *os, uint64_t txg_start,
 790  783      dmu_traverse_cb_t cb, void *arg);
 791  784  
 792      -int dmu_send(objset_t *tosnap, objset_t *fromsnap, boolean_t fromorigin,
      785 +int dmu_send(objset_t *tosnap, objset_t *fromsnap,
 793  786      int outfd, struct vnode *vp, offset_t *off);
 794      -int dmu_send_estimate(objset_t *tosnap, objset_t *fromsnap, boolean_t fromorign,
 795      -    uint64_t *sizep);
      787 +int dmu_send_estimate(objset_t *tosnap, objset_t *fromsnap, uint64_t *sizep);
 796  788  
 797  789  typedef struct dmu_recv_cookie {
 798  790          /*
 799  791           * This structure is opaque!
 800  792           *
 801  793           * If logical and real are different, we are recving the stream
 802  794           * into the "real" temporary clone, and then switching it with
 803  795           * the "logical" target.
 804  796           */
 805  797          struct dsl_dataset *drc_logical_ds;
↓ open down ↓ 27 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX