Print this page
5819 want dumpadm(1m) option to print estimated dump size

*** 18,27 **** --- 18,28 ---- * * CDDL HEADER END */ /* * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2015 Nexenta Systems, Inc. All rights reserved. */ #include <sys/stat.h> #include <locale.h> #include <unistd.h>
*** 32,45 **** #include "dconf.h" #include "minfree.h" #include "utils.h" static const char USAGE[] = "\ ! Usage: %s [-nuy] [-c kernel | curproc | all ] [-d dump-device | swap ]\n\ [-m min {k|m|%%} ] [-s savecore-dir] [-r root-dir] [-z on|off]\n"; ! static const char OPTS[] = "inuyc:d:m:s:r:z:"; static const char PATH_DEVICE[] = "/dev/dump"; static const char PATH_CONFIG[] = "/etc/dumpadm.conf"; int --- 33,46 ---- #include "dconf.h" #include "minfree.h" #include "utils.h" static const char USAGE[] = "\ ! Usage: %s [-enuy] [-c kernel | curproc | all ] [-d dump-device | swap ]\n\ [-m min {k|m|%%} ] [-s savecore-dir] [-r root-dir] [-z on|off]\n"; ! static const char OPTS[] = "einuyc:d:m:s:r:z:"; static const char PATH_DEVICE[] = "/dev/dump"; static const char PATH_CONFIG[] = "/etc/dumpadm.conf"; int
*** 49,58 **** --- 50,60 ---- u_longlong_t minf; struct stat st; int c; int dflag = 0; /* for checking in use during -d ops */ + int eflag = 0; /* print estimated dump size */ int dcmode = DC_CURRENT; /* kernel settings override unless -u */ int modified = 0; /* have we modified the dump config? */ char *minfstr = NULL; /* string value of -m argument */ dumpconf_t dc; /* current configuration */ int chrooted = 0;
*** 119,129 **** if (dconf_str2device(&dc, optarg) == -1) return (E_USAGE); dflag++; modified++; break; ! case 'i': /* undocumented option */ if (chrooted) { warn(gettext("-i and -r cannot be " "used together\n")); --- 121,133 ---- if (dconf_str2device(&dc, optarg) == -1) return (E_USAGE); dflag++; modified++; break; ! case 'e': ! eflag++; ! break; case 'i': /* undocumented option */ if (chrooted) { warn(gettext("-i and -r cannot be " "used together\n"));
*** 166,175 **** --- 170,187 ---- break; } } } + if (eflag) { + if (argc == 2 && argv[1][0] == '-' && argv[1][1] == 'e' && + !argv[1][2]) + return (dconf_get_dumpsize(&dc) ? E_SUCCESS : E_ERROR); + else + die(gettext("-e cannot be used with other options\n")); + } + if (douuid) return (dconf_write_uuid(&dc) ? E_SUCCESS : E_ERROR); if (minfstr != NULL) { if (minfree_compute(dc.dc_savdir, minfstr, &minf) == -1)