Print this page
NEX-13374 NDMP should be able to backup unmounted ZFS filesystems
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-5801 Snapshots left over after failed backups
Reviewed by: Rick Mesta <rick.mesta@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Revert "NEX-5801 Snapshots left over after failed backups"
This reverts commit f182fb95f09036db71fbfc6f0a6b90469b761f21.
NEX-5801 Snapshots left over after failed backups
Reviewed by: Rick Mesta <rick.mesta@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
NEX-894 Default location of NDMP log file should be under /var/log
NEX-727 Netbackup Catalog verification hangs waiting for NDMP server
NEX-799 past last file mark returned NDMP_IO_ERR, should be NDMP_EOM_ERR (V4+)
NEX-812 NDMP backup terminate after hit the EOM in Netbackup backup
NEX-559 NDMP cannot backup/restore a file which spans multiple tapes
OS-49 Switch back to illumos' version of wcwidth()
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
NEX-426 ndmp_config_get_ext_list failed
        
*** 36,46 ****
   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   * POSSIBILITY OF SUCH DAMAGE.
   */
  /* Copyright (c) 2007, The Storage Networking Industry Association. */
  /* Copyright (c) 1996, 1997 PDC, Network Appliance. All Rights Reserved */
! /* Copyright 2014 Nexenta Systems, Inc.  All rights reserved.  */
  
  #ifndef _NDMPD_H
  #define _NDMPD_H
  
  #include <sys/types.h>
--- 36,46 ----
   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   * POSSIBILITY OF SUCH DAMAGE.
   */
  /* Copyright (c) 2007, The Storage Networking Industry Association. */
  /* Copyright (c) 1996, 1997 PDC, Network Appliance. All Rights Reserved */
! /* Copyright 2017 Nexenta Systems, Inc.  All rights reserved.  */
  
  #ifndef _NDMPD_H
  #define _NDMPD_H
  
  #include <sys/types.h>
*** 168,177 ****
--- 168,185 ----
          int rs_bm;
          int rs_lastidx;
  } ndmp_restore_params_t;
  
  /*
+  * Used to find latest snapshot in a dataset
+  */
+ typedef struct snap_data {
+         time_t          creation_time;
+         const char      *last_snapshot;
+ } snap_data_t;
+ 
+ /*
   * Tar format archiving ops table
   */
  extern tm_ops_t tm_tar_ops;
  
  /*
*** 231,240 ****
--- 239,253 ----
  #define NLP_READY       1
  
  typedef struct ndmp_lbr_params {
          struct ndmpd_session *nlp_session;
          int nlp_flags;
+         char nlp_job_name[ZFS_MAX_DATASET_NAME_LEN];
+         char nlp_vol[ZFS_MAX_DATASET_NAME_LEN];
+         char nlp_snapname[ZFS_MAX_DATASET_NAME_LEN];
+         char nlp_clonename[ZFS_MAX_DATASET_NAME_LEN];
+         char nlp_mountpoint[ZFS_MAX_DATASET_NAME_LEN];
  
          ndmp_backup_params_t bk_params;
          ndmp_restore_params_t rs_params;
  #define nlp_backup_path bk_params.bk_path
  #define nlp_llevel      bk_params.bk_llevel
*** 689,699 ****
          long nw_ipaddr;
          ndmp_con_handler_func_t nw_con_handler_func;
  } ndmpd_worker_arg_t;
  
  typedef struct {
-         char *br_jname;
          ndmp_lbr_params_t *br_nlp;
          tlm_commands_t *br_cmds;
          pthread_barrier_t br_barrier;
  } backup_reader_arg_t;
  
--- 702,711 ----
*** 713,722 ****
--- 725,736 ----
   * Variables from ndmpd_comm.c
   */
  extern int ndmp_ver;
  extern int ndmp_full_restore_path;
  extern int ndmp_dar_support;
+ extern int ndmp_autosync_support;
+ extern int ndmp_hpr_support;
  extern int ndmp_port;
  extern ndmp_stat_t ndstat;
  
  extern void ndmpd_main(void);
  extern void connection_handler(ndmp_connection_t *);
*** 923,934 ****
  extern void ndmp_stop_writer_thread(ndmpd_session_t *);
  extern void ndmp_free_reader_writer_ipc(ndmpd_session_t *);
  extern void ndmp_waitfor_op(ndmpd_session_t *);
  
  extern char *cctime(time_t *);
! extern char *ndmp_new_job_name(char *);
! extern char *ndmpd_mk_temp(char *);
  extern char *ndmpd_make_bk_dir_path(char *, char *);
  extern boolean_t ndmp_is_chkpnt_root(char *);
  extern char **ndmpd_make_exc_list(void);
  extern void ndmp_sort_nlist_v3(ndmpd_session_t *);
  extern int ndmp_get_bk_dir_ino(ndmp_lbr_params_t *);
--- 937,948 ----
  extern void ndmp_stop_writer_thread(ndmpd_session_t *);
  extern void ndmp_free_reader_writer_ipc(ndmpd_session_t *);
  extern void ndmp_waitfor_op(ndmpd_session_t *);
  
  extern char *cctime(time_t *);
! extern int ndmp_new_job_name(char *, size_t);
! extern char *ndmpd_mk_temp(char *, char *);
  extern char *ndmpd_make_bk_dir_path(char *, char *);
  extern boolean_t ndmp_is_chkpnt_root(char *);
  extern char **ndmpd_make_exc_list(void);
  extern void ndmp_sort_nlist_v3(ndmpd_session_t *);
  extern int ndmp_get_bk_dir_ino(ndmp_lbr_params_t *);
*** 947,962 ****
  extern void ndmp_copy_addr_v4(ndmp_addr_v4 *, ndmp_addr_v4 *);
  extern char *ndmp_addr2str_v3(ndmp_addr_type);
  extern boolean_t ndmp_valid_v3addr_type(ndmp_addr_type);
  extern boolean_t ndmp_check_utf8magic(tlm_cmd_t *);
  extern int ndmp_get_cur_bk_time(ndmp_lbr_params_t *,
!     time_t *, char *);
  extern char *ndmp_get_relative_path(char *, char *);
  
  extern boolean_t ndmp_fhinode;
  extern void ndmp_load_params(void);
  extern void randomize(unsigned char *, int);
  
  
  /*
   * Utility functions from ndmpd_tar3.c.
   */
--- 961,977 ----
  extern void ndmp_copy_addr_v4(ndmp_addr_v4 *, ndmp_addr_v4 *);
  extern char *ndmp_addr2str_v3(ndmp_addr_type);
  extern boolean_t ndmp_valid_v3addr_type(ndmp_addr_type);
  extern boolean_t ndmp_check_utf8magic(tlm_cmd_t *);
  extern int ndmp_get_cur_bk_time(ndmp_lbr_params_t *,
!     time_t *);
  extern char *ndmp_get_relative_path(char *, char *);
  
  extern boolean_t ndmp_fhinode;
  extern void ndmp_load_params(void);
  extern void randomize(unsigned char *, int);
+ extern int ndmp_find_latest_autosync(zfs_handle_t *, void *);
  
  
  /*
   * Utility functions from ndmpd_tar3.c.
   */
*** 974,988 ****
  
  extern int ndmp_get_max_tok_seq(void);
  
  extern int get_zfsvolname(char *, int, char *);
  extern int ndmp_create_snapshot(char *, char *);
! extern int ndmp_remove_snapshot(char *, char *);
  extern int ndmpd_mark_inodes_v2(ndmpd_session_t *, ndmp_lbr_params_t *);
  extern void ndmpd_abort_marking_v2(ndmpd_session_t *);
  extern int ndmpd_mark_inodes_v3(ndmpd_session_t *, ndmp_lbr_params_t *);
  extern ndmp_lbr_params_t *ndmp_get_nlp(void *);
  
  module_start_func_t ndmpd_tar_backup_starter;
  module_abort_func_t ndmpd_tar_backup_abort;
  
  module_start_func_t ndmpd_tar_restore_starter;
--- 989,1004 ----
  
  extern int ndmp_get_max_tok_seq(void);
  
  extern int get_zfsvolname(char *, int, char *);
  extern int ndmp_create_snapshot(char *, char *);
! extern int ndmp_remove_snapshot(ndmp_bkup_size_arg_t *);
  extern int ndmpd_mark_inodes_v2(ndmpd_session_t *, ndmp_lbr_params_t *);
  extern void ndmpd_abort_marking_v2(ndmpd_session_t *);
  extern int ndmpd_mark_inodes_v3(ndmpd_session_t *, ndmp_lbr_params_t *);
  extern ndmp_lbr_params_t *ndmp_get_nlp(void *);
+ extern int ndmp_clone_snapshot(ndmp_lbr_params_t *);
  
  module_start_func_t ndmpd_tar_backup_starter;
  module_abort_func_t ndmpd_tar_backup_abort;
  
  module_start_func_t ndmpd_tar_restore_starter;
*** 1015,1026 ****
  
  extern char *gethostaddr(void);
  extern char *get_default_nic_addr(void);
  extern int tlm_init(void);
  
! extern int snapshot_create(char *, char *, boolean_t, boolean_t);
! extern int snapshot_destroy(char *, char *, boolean_t, boolean_t, int *);
  
  extern boolean_t fs_is_chkpntvol(char *);
  extern boolean_t fs_is_chkpnt_enabled(char *);
  extern boolean_t fs_is_rdonly(char *);
  extern boolean_t fs_volexist(char *);
--- 1031,1042 ----
  
  extern char *gethostaddr(void);
  extern char *get_default_nic_addr(void);
  extern int tlm_init(void);
  
! extern int backup_dataset_create(ndmp_lbr_params_t *);
! extern int backup_dataset_destroy(ndmp_lbr_params_t *);
  
  extern boolean_t fs_is_chkpntvol(char *);
  extern boolean_t fs_is_chkpnt_enabled(char *);
  extern boolean_t fs_is_rdonly(char *);
  extern boolean_t fs_volexist(char *);