#define __USE_FILE_OFFSET64
#define _GNU_SOURCE
-#include <portals/list.h>
-
#include <stdio.h>
#ifdef HAVE_NETDB_H
#include <netdb.h>
#endif
#include <stdlib.h>
#include <string.h>
-#include "ioctl.h"
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
-#ifndef __CYGWIN__
-# include <syscall.h>
-#endif
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/mman.h>
-#ifdef HAVE_LINUX_VERSION_H
-#include <linux/version.h>
-
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
-#define BUG() /* workaround for module.h includes */
-#include <linux/module.h>
-#endif
-#endif /* !HAVE_LINUX_VERSION_H */
-
#include <sys/utsname.h>
#include <portals/api-support.h>
#include <portals/ptlctl.h>
+#include <libcfs/portals_utils.h>
#include "parser.h"
#include <time.h>
"other", "dentry", "portals", "page",
"dlmtrace", "error", "emerg", "ha",
"rpctrace", "vfstrace", "reada", "mmap",
- "config", NULL};
+ "config", "console", NULL};
struct debug_daemon_cmd {
char *cmd;
unsigned long dropped = 0, kept = 0;
struct list_head chunk_list;
- INIT_LIST_HEAD(&chunk_list);
+ CFS_INIT_LIST_HEAD(&chunk_list);
while (1) {
rc = fread(buf, sizeof(hdr->ph_len), 1, in);
return 1;
}
if (argc > 2) {
- fdout = open(argv[2], O_CREAT | O_WRONLY | O_LARGEFILE);
+ fdout = open(argv[2], O_CREAT | O_WRONLY | O_LARGEFILE, 0600);
if (fdout == -1) {
fprintf(stderr, "open(%s) failed: %s\n", argv[2],
strerror(errno));
rc = -1;
if (strcasecmp(argv[1], "start") == 0) {
- if (argc != 3) {
- fprintf(stderr, debug_daemon_usage);
- return 1;
+ if (argc < 3 || argc > 4 ||
+ (argc == 4 && strlen(argv[3]) > 5)) {
+ fprintf(stderr, debug_daemon_usage, argv[0]);
+ goto out;
+ }
+ if (argc == 4) {
+ char buf[12];
+ const long min_size = 10;
+ const long max_size = 20480;
+ long size;
+ char *end;
+
+ size = strtoul(argv[3], &end, 0);
+ if (size < min_size ||
+ size > max_size ||
+ *end != 0) {
+ fprintf(stderr, "size %s invalid, must be in "
+ "the range %ld-%ld MB\n", argv[3],
+ min_size, max_size);
+ goto out;
+ }
+ snprintf(buf, sizeof(buf), "size=%ld", size);
+ rc = dbg_write_cmd(fd, buf);
+
+ if (rc != 0) {
+ fprintf(stderr, "set %s failed: %s\n",
+ buf, strerror(errno));
+ goto out;
+ }
}
- rc = write(fd, argv[2], strlen(argv[2]));
- if (rc != strlen(argv[2])) {
- fprintf(stderr, "write(%s) failed: %s\n", argv[2],
- strerror(errno));
- close(fd);
- return 1;
+ rc = dbg_write_cmd(fd, argv[2]);
+ if (rc != 0) {
+ fprintf(stderr, "start debug_daemon on %s failed: %s\n",
+ argv[2], strerror(errno));
+ goto out;
}
+ rc = 0;
goto out;
}
if (strcasecmp(argv[1], "stop") == 0) {