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