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

Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/ndmpd/ndmp/ndmpd.h
          +++ new/usr/src/cmd/ndmpd/ndmp/ndmpd.h
↓ open down ↓ 30 lines elided ↑ open up ↑
  31   31   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  32   32   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  33   33   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  34   34   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  35   35   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  36   36   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  37   37   * POSSIBILITY OF SUCH DAMAGE.
  38   38   */
  39   39  /* Copyright (c) 2007, The Storage Networking Industry Association. */
  40   40  /* Copyright (c) 1996, 1997 PDC, Network Appliance. All Rights Reserved */
  41      -/* Copyright 2014 Nexenta Systems, Inc.  All rights reserved.  */
       41 +/* Copyright 2017 Nexenta Systems, Inc.  All rights reserved.  */
  42   42  
  43   43  #ifndef _NDMPD_H
  44   44  #define _NDMPD_H
  45   45  
  46   46  #include <sys/types.h>
  47   47  #include <libzfs.h>
  48   48  #include <ndmpd_door.h>
  49   49  #include <libndmp.h>
  50   50  #include "ndmpd_common.h"
  51   51  #include "tlm_buffers.h"
↓ open down ↓ 111 lines elided ↑ open up ↑
 163  163  typedef struct {
 164  164          ulong_t rs_nf;  /* number of files to restore */
 165  165          char *rs_path;
 166  166          char *rs_bkpath;
 167  167          int *rs_restored;
 168  168          int rs_bm;
 169  169          int rs_lastidx;
 170  170  } ndmp_restore_params_t;
 171  171  
 172  172  /*
      173 + * Used to find latest snapshot in a dataset
      174 + */
      175 +typedef struct snap_data {
      176 +        time_t          creation_time;
      177 +        const char      *last_snapshot;
      178 +} snap_data_t;
      179 +
      180 +/*
 173  181   * Tar format archiving ops table
 174  182   */
 175  183  extern tm_ops_t tm_tar_ops;
 176  184  
 177  185  /*
 178  186   * IS_LBR_BKTYPE shows if the backup type is one of these
 179  187   * 'F' of 'f': 'Full' backup type.
 180  188   * 'A' of 'a': 'Archive' backup type.
 181  189   * 'I' of 'i': 'Incremental' backup type.
 182  190   * 'D' of 'd': 'Differntial' backup type.
↓ open down ↓ 43 lines elided ↑ open up ↑
 226  234  #define NS_UPD(s, t)    { \
 227  235          atomic_inc_32((volatile uint32_t *)&ndstat.ns_##s); \
 228  236          atomic_dec_32((volatile uint32_t *)&ndstat.ns_##t); \
 229  237          }
 230  238  
 231  239  #define NLP_READY       1
 232  240  
 233  241  typedef struct ndmp_lbr_params {
 234  242          struct ndmpd_session *nlp_session;
 235  243          int nlp_flags;
      244 +        char nlp_job_name[ZFS_MAX_DATASET_NAME_LEN];
      245 +        char nlp_vol[ZFS_MAX_DATASET_NAME_LEN];
      246 +        char nlp_snapname[ZFS_MAX_DATASET_NAME_LEN];
      247 +        char nlp_clonename[ZFS_MAX_DATASET_NAME_LEN];
      248 +        char nlp_mountpoint[ZFS_MAX_DATASET_NAME_LEN];
 236  249  
 237  250          ndmp_backup_params_t bk_params;
 238  251          ndmp_restore_params_t rs_params;
 239  252  #define nlp_backup_path bk_params.bk_path
 240  253  #define nlp_llevel      bk_params.bk_llevel
 241  254  #define nlp_ldate       bk_params.bk_ldate
 242  255  #define nlp_clevel      bk_params.bk_clevel
 243  256  #define nlp_tokseq      nlp_clevel
 244  257  #define nlp_tokdate     nlp_ldate
 245  258  #define nlp_cdate       bk_params.bk_cdate
↓ open down ↓ 438 lines elided ↑ open up ↑
 684  697  /*
 685  698   * pthread call arg parameters
 686  699   */
 687  700  typedef struct {
 688  701          int nw_sock;
 689  702          long nw_ipaddr;
 690  703          ndmp_con_handler_func_t nw_con_handler_func;
 691  704  } ndmpd_worker_arg_t;
 692  705  
 693  706  typedef struct {
 694      -        char *br_jname;
 695  707          ndmp_lbr_params_t *br_nlp;
 696  708          tlm_commands_t *br_cmds;
 697  709          pthread_barrier_t br_barrier;
 698  710  } backup_reader_arg_t;
 699  711  
 700  712  typedef struct {
 701  713          ndmpd_session_t *tr_session;
 702  714          ndmpd_module_params_t *tr_mod_params;
 703  715          tlm_commands_t *tr_cmds;
 704  716  } ndmp_tar_reader_arg_t;
↓ open down ↓ 3 lines elided ↑ open up ↑
 708  720          char *bs_jname;
 709  721          char *bs_path;
 710  722  } ndmp_bkup_size_arg_t;
 711  723  
 712  724  /*
 713  725   * Variables from ndmpd_comm.c
 714  726   */
 715  727  extern int ndmp_ver;
 716  728  extern int ndmp_full_restore_path;
 717  729  extern int ndmp_dar_support;
      730 +extern int ndmp_autosync_support;
      731 +extern int ndmp_hpr_support;
 718  732  extern int ndmp_port;
 719  733  extern ndmp_stat_t ndstat;
 720  734  
 721  735  extern void ndmpd_main(void);
 722  736  extern void connection_handler(ndmp_connection_t *);
 723  737  extern void ndmpd_audit_backup(ndmp_connection_t *conn, char *path,
 724  738      int dest, char *local_path, int result);
 725  739  extern void ndmpd_audit_restore(ndmp_connection_t *conn,
 726  740      char *path, int dest, char *local_path, int result);
 727  741  extern void ndmpd_audit_connect(ndmp_connection_t *conn,
↓ open down ↓ 190 lines elided ↑ open up ↑
 918  932  extern int ndmp_open_list_del(char *, int, int);
 919  933  extern void ndmp_open_list_release(ndmp_connection_t *);
 920  934  
 921  935  extern void ndmp_stop_buffer_worker(ndmpd_session_t *);
 922  936  extern void ndmp_stop_reader_thread(ndmpd_session_t *);
 923  937  extern void ndmp_stop_writer_thread(ndmpd_session_t *);
 924  938  extern void ndmp_free_reader_writer_ipc(ndmpd_session_t *);
 925  939  extern void ndmp_waitfor_op(ndmpd_session_t *);
 926  940  
 927  941  extern char *cctime(time_t *);
 928      -extern char *ndmp_new_job_name(char *);
 929      -extern char *ndmpd_mk_temp(char *);
      942 +extern int ndmp_new_job_name(char *, size_t);
      943 +extern char *ndmpd_mk_temp(char *, char *);
 930  944  extern char *ndmpd_make_bk_dir_path(char *, char *);
 931  945  extern boolean_t ndmp_is_chkpnt_root(char *);
 932  946  extern char **ndmpd_make_exc_list(void);
 933  947  extern void ndmp_sort_nlist_v3(ndmpd_session_t *);
 934  948  extern int ndmp_get_bk_dir_ino(ndmp_lbr_params_t *);
 935  949  extern int ndmp_write_utf8magic(tlm_cmd_t *);
 936  950  extern int ndmp_tar_writer(ndmpd_session_t *,
 937  951      ndmpd_module_params_t *,
 938  952      tlm_commands_t *);
 939  953  extern void ndmp_wait_for_reader(tlm_commands_t *);
↓ open down ↓ 2 lines elided ↑ open up ↑
 942  956      ulong_t);
 943  957  extern void ndmpd_free_nlist_v3(ndmpd_session_t *);
 944  958  extern int ndmp_create_socket(ulong_t *, ushort_t *);
 945  959  extern int ndmp_connect_sock_v3(ulong_t, ushort_t);
 946  960  extern void ndmp_copy_addr_v3(ndmp_addr_v3 *, ndmp_addr_v3 *);
 947  961  extern void ndmp_copy_addr_v4(ndmp_addr_v4 *, ndmp_addr_v4 *);
 948  962  extern char *ndmp_addr2str_v3(ndmp_addr_type);
 949  963  extern boolean_t ndmp_valid_v3addr_type(ndmp_addr_type);
 950  964  extern boolean_t ndmp_check_utf8magic(tlm_cmd_t *);
 951  965  extern int ndmp_get_cur_bk_time(ndmp_lbr_params_t *,
 952      -    time_t *, char *);
      966 +    time_t *);
 953  967  extern char *ndmp_get_relative_path(char *, char *);
 954  968  
 955  969  extern boolean_t ndmp_fhinode;
 956  970  extern void ndmp_load_params(void);
 957  971  extern void randomize(unsigned char *, int);
      972 +extern int ndmp_find_latest_autosync(zfs_handle_t *, void *);
 958  973  
 959  974  
 960  975  /*
 961  976   * Utility functions from ndmpd_tar3.c.
 962  977   */
 963  978  extern ndmp_error ndmp_restore_get_params_v3(ndmpd_session_t *,
 964  979      ndmpd_module_params_t *);
 965  980  extern ndmp_error ndmp_backup_get_params_v3(ndmpd_session_t *,
 966  981      ndmpd_module_params_t *);
 967  982  
↓ open down ↓ 1 lines elided ↑ open up ↑
 969  984   * door init and fini function from ndmpd_door_serv.c
 970  985   */
 971  986  extern int ndmp_door_init(void);
 972  987  extern void ndmp_door_fini(void);
 973  988  extern boolean_t ndmp_door_check(void);
 974  989  
 975  990  extern int ndmp_get_max_tok_seq(void);
 976  991  
 977  992  extern int get_zfsvolname(char *, int, char *);
 978  993  extern int ndmp_create_snapshot(char *, char *);
 979      -extern int ndmp_remove_snapshot(char *, char *);
      994 +extern int ndmp_remove_snapshot(ndmp_bkup_size_arg_t *);
 980  995  extern int ndmpd_mark_inodes_v2(ndmpd_session_t *, ndmp_lbr_params_t *);
 981  996  extern void ndmpd_abort_marking_v2(ndmpd_session_t *);
 982  997  extern int ndmpd_mark_inodes_v3(ndmpd_session_t *, ndmp_lbr_params_t *);
 983  998  extern ndmp_lbr_params_t *ndmp_get_nlp(void *);
      999 +extern int ndmp_clone_snapshot(ndmp_lbr_params_t *);
 984 1000  
 985 1001  module_start_func_t ndmpd_tar_backup_starter;
 986 1002  module_abort_func_t ndmpd_tar_backup_abort;
 987 1003  
 988 1004  module_start_func_t ndmpd_tar_restore_starter;
 989 1005  module_abort_func_t ndmpd_tar_restore_abort;
 990 1006  
 991 1007  module_start_func_t ndmpd_tar_backup_starter_v3;
 992 1008  module_abort_func_t ndmpd_tar_backup_abort_v3;
 993 1009  
↓ open down ↓ 16 lines elided ↑ open up ↑
1010 1026  
1011 1027  void ndmpd_get_file_entry_type(int, ndmp_file_type *);
1012 1028  
1013 1029  extern int tcp_accept(int, unsigned int *);
1014 1030  extern int tcp_get_peer(int, unsigned int *, int *);
1015 1031  
1016 1032  extern char *gethostaddr(void);
1017 1033  extern char *get_default_nic_addr(void);
1018 1034  extern int tlm_init(void);
1019 1035  
1020      -extern int snapshot_create(char *, char *, boolean_t, boolean_t);
1021      -extern int snapshot_destroy(char *, char *, boolean_t, boolean_t, int *);
     1036 +extern int backup_dataset_create(ndmp_lbr_params_t *);
     1037 +extern int backup_dataset_destroy(ndmp_lbr_params_t *);
1022 1038  
1023 1039  extern boolean_t fs_is_chkpntvol(char *);
1024 1040  extern boolean_t fs_is_chkpnt_enabled(char *);
1025 1041  extern boolean_t fs_is_rdonly(char *);
1026 1042  extern boolean_t fs_volexist(char *);
1027 1043  extern boolean_t fs_is_valid_logvol(char *);
1028 1044  extern boolean_t rootfs_dot_or_dotdot(char *);
1029 1045  extern int dp_readdir(DIR *, unsigned long *, char *,
1030 1046      int *, unsigned long *);
1031 1047  
↓ open down ↓ 63 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX