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 *);