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,11 +36,11 @@
  * 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.  */
+/* Copyright 2017 Nexenta Systems, Inc.  All rights reserved.  */
 
 #ifndef _NDMPD_H
 #define _NDMPD_H
 
 #include <sys/types.h>

@@ -168,10 +168,18 @@
         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,10 +239,15 @@
 #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,11 +702,10 @@
         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;
 

@@ -713,10 +725,12 @@
  * 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,12 +937,12 @@
 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 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,16 +961,17 @@
 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 *);
+    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,15 +989,16 @@
 
 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 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,12 +1031,12 @@
 
 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 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 *);