From: braam Date: Tue, 5 Mar 2002 18:44:34 +0000 (+0000) Subject: - track offset for debugging X-Git-Tag: 0.4.2~561 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=874008fcda1e40ab0078a4e853e2feff9a791630;p=fs%2Flustre-release.git - track offset for debugging --- diff --git a/lustre/ptlrpc/events.c b/lustre/ptlrpc/events.c index 2d0f516..20977f4 100644 --- a/lustre/ptlrpc/events.c +++ b/lustre/ptlrpc/events.c @@ -100,6 +100,8 @@ int server_request_callback(ptl_event_t *ev, void *data) service->srv_ref_count[service->srv_md_active]++; + CDEBUG(D_INODE, "event offset %d buf size %d\n", + ev->offset, service->srv_buf_size); if (ev->offset >= (service->srv_buf_size - 1024)) { CDEBUG(D_INODE, "Unlinking ME %d\n", service->srv_me_active); diff --git a/lustre/ptlrpc/service.c b/lustre/ptlrpc/service.c index f560a41..f87ca839 100644 --- a/lustre/ptlrpc/service.c +++ b/lustre/ptlrpc/service.c @@ -99,7 +99,7 @@ ptlrpc_init_svc(__u32 bufsize, int req_portal, int rep_portal, char *uuid, init_waitqueue_head(&svc->srv_waitq); svc->srv_thread = NULL; - svc->srv_flags = 0; + svc->srv_flags = 0; svc->srv_buf_size = bufsize; svc->srv_rep_portal = rep_portal; @@ -107,7 +107,7 @@ ptlrpc_init_svc(__u32 bufsize, int req_portal, int rep_portal, char *uuid, svc->srv_req_unpack = unpack; svc->srv_rep_pack = pack; svc->srv_handler = handler; - err = kportal_uuid_to_peer(uuid, &svc->srv_self); + err = kportal_uuid_to_peer(uuid, &svc->srv_self); if (err) { CERROR("cannot get peer for uuid %s", uuid); OBD_FREE(svc, sizeof(*svc)); @@ -120,29 +120,29 @@ static int ptlrpc_main(void *arg) { int rc; struct ptlrpc_svc_data *data = (struct ptlrpc_svc_data *)arg; - struct obd_device *obddev = data->dev; + struct obd_device *obddev = data->dev; struct ptlrpc_service *svc = data->svc; - ENTRY; + ENTRY; - lock_kernel(); - daemonize(); - spin_lock_irq(¤t->sigmask_lock); - sigfillset(¤t->blocked); - recalc_sigpending(current); - spin_unlock_irq(¤t->sigmask_lock); + lock_kernel(); + daemonize(); + spin_lock_irq(¤t->sigmask_lock); + sigfillset(¤t->blocked); + recalc_sigpending(current); + spin_unlock_irq(¤t->sigmask_lock); - sprintf(current->comm, data->name); + sprintf(current->comm, data->name); - /* Record that the thread is running */ - svc->srv_thread = current; + /* Record that the thread is running */ + svc->srv_thread = current; svc->srv_flags = SVC_RUNNING; - wake_up(&svc->srv_ctl_waitq); + wake_up(&svc->srv_ctl_waitq); - /* XXX maintain a list of all managed devices: insert here */ + /* XXX maintain a list of all managed devices: insert here */ - /* And now, loop forever on requests */ - while (1) { + /* And now, loop forever on requests */ + while (1) { wait_event(svc->srv_waitq, ptlrpc_check_event(svc)); @@ -157,7 +157,7 @@ static int ptlrpc_main(void *arg) } if (svc->srv_flags & SVC_EVENT) { - struct ptlrpc_request request; + struct ptlrpc_request request; svc->srv_flags = SVC_RUNNING; /* FIXME: If we move to an event-driven model, @@ -180,7 +180,7 @@ static int ptlrpc_main(void *arg) } if (svc->srv_flags & SVC_LIST) { - struct ptlrpc_request *request; + struct ptlrpc_request *request; svc->srv_flags = SVC_RUNNING; spin_lock(&svc->srv_lock); @@ -196,16 +196,16 @@ static int ptlrpc_main(void *arg) break; } - svc->srv_thread = NULL; + svc->srv_thread = NULL; svc->srv_flags = SVC_STOPPED; - wake_up(&svc->srv_ctl_waitq); - CERROR("svc exiting process %d\n", current->pid); - return 0; + wake_up(&svc->srv_ctl_waitq); + CERROR("svc exiting process %d\n", current->pid); + return 0; } void ptlrpc_stop_thread(struct ptlrpc_service *svc) { - svc->srv_flags = SVC_STOPPING; + svc->srv_flags = SVC_STOPPING; wake_up(&svc->srv_waitq); wait_event_interruptible(svc->srv_ctl_waitq, @@ -217,16 +217,16 @@ int ptlrpc_start_thread(struct obd_device *dev, struct ptlrpc_service *svc, { struct ptlrpc_svc_data d; int rc; - ENTRY; + ENTRY; d.dev = dev; d.svc = svc; d.name = name; - init_waitqueue_head(&svc->srv_waitq); + init_waitqueue_head(&svc->srv_waitq); - init_waitqueue_head(&svc->srv_ctl_waitq); - rc = kernel_thread(ptlrpc_main, (void *) &d, + init_waitqueue_head(&svc->srv_ctl_waitq); + rc = kernel_thread(ptlrpc_main, (void *) &d, CLONE_VM | CLONE_FS | CLONE_FILES); if (rc < 0) { CERROR("cannot start thread\n"); @@ -234,7 +234,7 @@ int ptlrpc_start_thread(struct obd_device *dev, struct ptlrpc_service *svc, } wait_event(svc->srv_ctl_waitq, svc->srv_flags & SVC_RUNNING); - EXIT; + EXIT; return 0; } @@ -298,11 +298,12 @@ int rpc_register_service(struct ptlrpc_service *service, char *uuid) } service->srv_ref_count[i] = 0; - service->srv_md[i].start = service->srv_buf[i]; + service->srv_md[i].start = service->srv_buf[i]; service->srv_md[i].length = service->srv_buf_size; - service->srv_md[i].threshold = PTL_MD_THRESH_INF; - service->srv_md[i].options = PTL_MD_OP_PUT; - service->srv_md[i].user_ptr = service; + service->srv_md[i].max_offset = service->srv_buf_size; + service->srv_md[i].threshold = PTL_MD_THRESH_INF; + service->srv_md[i].options = PTL_MD_OP_PUT; + service->srv_md[i].user_ptr = service; service->srv_md[i].eventq = service->srv_eq_h; rc = PtlMDAttach(service->srv_me_h[i], service->srv_md[i], diff --git a/lustre/utils/obdctl.c b/lustre/utils/obdctl.c index 3a029b3..da0cf65 100644 --- a/lustre/utils/obdctl.c +++ b/lustre/utils/obdctl.c @@ -29,6 +29,7 @@ #include #include #include +#include #define printk printf #include #include @@ -38,6 +39,7 @@ #include #include #include +#include #define __KERNEL__ #include @@ -82,329 +84,350 @@ int max = 8192; char * obdo_print(struct obdo *obd) { - char buf[1024]; - - sprintf(buf, "id: %Ld\ngrp: %Ld\natime: %Ld\nmtime: %Ld\nctime: %Ld\nsize: %Ld\nblocks: %Ld\nblksize: %d\nmode: %o\nuid: %d\ngid: %d\nflags: %x\nobdflags: %x\nnlink: %d,\nvalid %x\n", - obd->o_id, - obd->o_gr, - obd->o_atime, - obd->o_mtime, - obd->o_ctime, - obd->o_size, - obd->o_blocks, - obd->o_blksize, - obd->o_mode, - obd->o_uid, - obd->o_gid, - obd->o_flags, - obd->o_obdflags, - obd->o_nlink, - obd->o_valid); - return strdup(buf); + char buf[1024]; + + sprintf(buf, "id: %Ld\ngrp: %Ld\natime: %Ld\nmtime: %Ld\nctime: %Ld\nsize: %Ld\nblocks: %Ld\nblksize: %d\nmode: %o\nuid: %d\ngid: %d\nflags: %x\nobdflags: %x\nnlink: %d,\nvalid %x\n", + obd->o_id, + obd->o_gr, + obd->o_atime, + obd->o_mtime, + obd->o_ctime, + obd->o_size, + obd->o_blocks, + obd->o_blksize, + obd->o_mode, + obd->o_uid, + obd->o_gid, + obd->o_flags, + obd->o_obdflags, + obd->o_nlink, + obd->o_valid); + return strdup(buf); } static int jt_device(int argc, char **argv) { - struct obd_ioctl_data data; - int rc; - - memset(&data, 0, sizeof(data)); - if ( argc != 2 ) { - fprintf(stderr, "Usage: %s devno\n", argv[0]); - return 1; - } - - data.ioc_dev = atoi(argv[1]); - - if (obd_ioctl_pack(&data, &buf, max)) { - printf("invalid ioctl\n"); - return 1; - } - - if (fd == -1) - fd = open("/dev/obd", O_RDWR); - if (fd == -1) { - printf("Opening /dev/obd: %s\n", strerror(errno)); - return 1; - } - - rc = ioctl(fd, OBD_IOC_DEVICE , buf); - if (rc < 0) { - printf("Device: %x %s\n", OBD_IOC_DEVICE, strerror(errno)); - return 1; - } - - return 0; + struct obd_ioctl_data data; + int rc; + + memset(&data, 0, sizeof(data)); + if ( argc != 2 ) { + fprintf(stderr, "Usage: %s devno\n", argv[0]); + return 1; + } + + data.ioc_dev = atoi(argv[1]); + + if (obd_ioctl_pack(&data, &buf, max)) { + printf("invalid ioctl\n"); + return 1; + } + + if (fd == -1) + fd = open("/dev/obd", O_RDWR); + if (fd == -1) { + printf("Opening /dev/obd: %s\n", strerror(errno)); + return 1; + } + + rc = ioctl(fd, OBD_IOC_DEVICE , buf); + if (rc < 0) { + printf("Device: %x %s\n", OBD_IOC_DEVICE, strerror(errno)); + return 1; + } + + return 0; +} + +static int do_disconnect() +{ + struct obd_ioctl_data data; + int rc; + IOCINIT(data); + + if (connid == -1) + return 0; + + rc = ioctl(fd, OBD_IOC_DISCONNECT , &data); + if (rc < 0) { + printf("Device: %x %s\n", OBD_IOC_DISCONNECT, strerror(errno)); + return 0; + } + connid = -1; + + return 0; } static int jt_connect(int argc, char **argv) { - struct obd_ioctl_data data; - int rc; + struct obd_ioctl_data data; + int rc; - IOCINIT(data); + IOCINIT(data); - if ( argc != 1 ) { - fprintf(stderr, "Usage: %s\n", argv[0]); - return 1; - } + do_disconnect(); - rc = ioctl(fd, OBD_IOC_CONNECT , &data); - if (rc < 0) { - printf("Device: %x %s\n", OBD_IOC_CONNECT, strerror(errno)); - return 1; - } - connid = data.ioc_conn1; + if ( argc != 1 ) { + fprintf(stderr, "Usage: %s\n", argv[0]); + return 1; + } - return 0; + rc = ioctl(fd, OBD_IOC_CONNECT , &data); + if (rc < 0) { + printf("Device: %x %s\n", OBD_IOC_CONNECT, strerror(errno)); + return 1; + } + connid = data.ioc_conn1; + + return 0; } static int jt_disconnect(int argc, char **argv) { - struct obd_ioctl_data data; - int rc; + struct obd_ioctl_data data; + int rc; - IOCINIT(data); + IOCINIT(data); - if ( argc != 1 ) { - fprintf(stderr, "Usage: %s\n", argv[0]); - return 1; - } + if ( argc != 1 ) { + fprintf(stderr, "Usage: %s\n", argv[0]); + return 1; + } - rc = ioctl(fd, OBD_IOC_DISCONNECT , &data); - if (rc < 0) { - printf("Device: %x %s\n", OBD_IOC_DISCONNECT, strerror(errno)); - return 1; - } - connid = -1; + rc = ioctl(fd, OBD_IOC_DISCONNECT , &data); + if (rc < 0) { + printf("Device: %x %s\n", OBD_IOC_DISCONNECT, strerror(errno)); + return 1; + } + connid = -1; - return 0; + return 0; } static int jt_detach(int argc, char **argv) { - struct obd_ioctl_data data; - int rc; - - IOCINIT(data); - - if ( argc != 1 ) { - fprintf(stderr, "Usage: %s\n", argv[0]); - return 1; - } - - if (obd_ioctl_pack(&data, &buf, max)) { - printf("invalid ioctl\n"); - return 1; - } - - rc = ioctl(fd, OBD_IOC_DETACH , buf); - if (rc < 0) { - printf("Detach: %s\n", strerror(errno)); - return 1; - } - return 0; + struct obd_ioctl_data data; + int rc; + + IOCINIT(data); + + if ( argc != 1 ) { + fprintf(stderr, "Usage: %s\n", argv[0]); + return 1; + } + + if (obd_ioctl_pack(&data, &buf, max)) { + printf("invalid ioctl\n"); + return 1; + } + + rc = ioctl(fd, OBD_IOC_DETACH , buf); + if (rc < 0) { + printf("Detach: %s\n", strerror(errno)); + return 1; + } + return 0; } static int jt_cleanup(int argc, char **argv) { - struct obd_ioctl_data data; - int rc; - - IOCINIT(data); - - if ( argc != 1 ) { - fprintf(stderr, "Usage: %s\n", argv[0]); - return 1; - } - - rc = ioctl(fd, OBD_IOC_CLEANUP , &data); - if (rc < 0) { - printf("Detach: %s\n", strerror(errno)); - return 1; - } - return 0; + struct obd_ioctl_data data; + int rc; + + IOCINIT(data); + + if ( argc != 1 ) { + fprintf(stderr, "Usage: %s\n", argv[0]); + return 1; + } + + rc = ioctl(fd, OBD_IOC_CLEANUP , &data); + if (rc < 0) { + printf("Detach: %s\n", strerror(errno)); + return 1; + } + return 0; } static int jt_attach(int argc, char **argv) { - struct obd_ioctl_data data; - int rc; - - IOCINIT(data); - - if ( argc != 2 && argc != 3 ) { - fprintf(stderr, "Usage: %s type [data]\n", argv[0]); - return 1; - } - - data.ioc_inllen1 = strlen(argv[1]) + 1; - data.ioc_inlbuf1 = argv[1]; - if ( argc == 3 ) { - data.ioc_inllen2 = strlen(argv[2]) + 1; - data.ioc_inlbuf2 = argv[2]; - } - - printf("attach len %d addr %p type %s data %s\n", data.ioc_len, buf, - MKSTR(data.ioc_inlbuf1), MKSTR(data.ioc_inlbuf2)); - - if (obd_ioctl_pack(&data, &buf, max)) { - printf("invalid ioctl\n"); - return 1; - } - printf("attach len %d addr %p raw %p type %s data %s and %s\n", data.ioc_len, buf, rawbuf, - MKSTR(data.ioc_inlbuf1), MKSTR(data.ioc_inlbuf2), &buf[516]); - - rc = ioctl(fd, OBD_IOC_ATTACH , buf); - if (rc < 0) { - printf("Attach: %x %s\n", OBD_IOC_ATTACH, strerror(errno)); - return 1; - } - return 0; + struct obd_ioctl_data data; + int rc; + + IOCINIT(data); + + if ( argc != 2 && argc != 3 ) { + fprintf(stderr, "Usage: %s type [data]\n", argv[0]); + return 1; + } + + data.ioc_inllen1 = strlen(argv[1]) + 1; + data.ioc_inlbuf1 = argv[1]; + if ( argc == 3 ) { + data.ioc_inllen2 = strlen(argv[2]) + 1; + data.ioc_inlbuf2 = argv[2]; + } + + printf("attach len %d addr %p type %s data %s\n", data.ioc_len, buf, + MKSTR(data.ioc_inlbuf1), MKSTR(data.ioc_inlbuf2)); + + if (obd_ioctl_pack(&data, &buf, max)) { + printf("invalid ioctl\n"); + return 1; + } + printf("attach len %d addr %p raw %p type %s data %s and %s\n", data.ioc_len, buf, rawbuf, + MKSTR(data.ioc_inlbuf1), MKSTR(data.ioc_inlbuf2), &buf[516]); + + rc = ioctl(fd, OBD_IOC_ATTACH , buf); + if (rc < 0) { + printf("Attach: %x %s\n", OBD_IOC_ATTACH, strerror(errno)); + return 1; + } + return 0; } static int jt_setup(int argc, char **argv) { - struct obd_ioctl_data data; - int rc; - - IOCINIT(data); - - if ( argc > 3 ) { - fprintf(stderr, "Usage: %s [device] [fstype]\n", argv[0]); - return 1; - } - - if (argc > 1) { - data.ioc_inllen1 = strlen(argv[1]) + 1; - data.ioc_inlbuf1 = argv[1]; - data.ioc_dev = strtoul(argv[1], NULL, 0); - } else { - data.ioc_dev = -1; - } - if ( argc == 3 ) { - data.ioc_inllen2 = strlen(argv[2]) + 1; - data.ioc_inlbuf2 = argv[2]; - } - - printf("setup len %d addr %p device %s type %s\n", data.ioc_len, buf, - MKSTR(data.ioc_inlbuf1), MKSTR(data.ioc_inlbuf2)); - - if (obd_ioctl_pack(&data, &buf, max)) { - printf("invalid ioctl\n"); - return 1; - } - printf("setup len %d addr %p raw %p device %s type %s\n", - data.ioc_len, buf, rawbuf, - MKSTR(data.ioc_inlbuf1), MKSTR(data.ioc_inlbuf2)); - - rc = ioctl(fd, OBD_IOC_SETUP , buf); - if (rc < 0) { - printf("setup: %x %s\n", OBD_IOC_SETUP, strerror(errno)); - return 1; - } - return 0; + struct obd_ioctl_data data; + int rc; + + IOCINIT(data); + + if ( argc > 3 ) { + fprintf(stderr, "Usage: %s [device] [fstype]\n", argv[0]); + return 1; + } + + if (argc > 1) { + data.ioc_inllen1 = strlen(argv[1]) + 1; + data.ioc_inlbuf1 = argv[1]; + data.ioc_dev = strtoul(argv[1], NULL, 0); + } else { + data.ioc_dev = -1; + } + if ( argc == 3 ) { + data.ioc_inllen2 = strlen(argv[2]) + 1; + data.ioc_inlbuf2 = argv[2]; + } + + printf("setup len %d addr %p device %s type %s\n", data.ioc_len, buf, + MKSTR(data.ioc_inlbuf1), MKSTR(data.ioc_inlbuf2)); + + if (obd_ioctl_pack(&data, &buf, max)) { + printf("invalid ioctl\n"); + return 1; + } + printf("setup len %d addr %p raw %p device %s type %s\n", + data.ioc_len, buf, rawbuf, + MKSTR(data.ioc_inlbuf1), MKSTR(data.ioc_inlbuf2)); + + rc = ioctl(fd, OBD_IOC_SETUP , buf); + if (rc < 0) { + printf("setup: %x %s\n", OBD_IOC_SETUP, strerror(errno)); + return 1; + } + return 0; } static int jt_create(int argc, char **argv) { - struct obd_ioctl_data data; - int num = 1; - int silent = 0; - int i; - int rc; - - IOCINIT(data); - if (argc > 1) { - num = strtoul(argv[1], NULL, 0); - } else { - printf("usage %s num [mode] [silent]\n", argv[0]); - } - - if (argc > 2) { - data.ioc_obdo1.o_mode = strtoul(argv[2], NULL, 0); - } else { - data.ioc_obdo1.o_mode = 0100644; - } - data.ioc_obdo1.o_valid = OBD_MD_FLMODE; - - if (argc > 3) { - silent = strtoul(argv[3], NULL, 0); - } - - printf("Creating %d obdos\n", num); - - for (i = 0 ; i 1) { + num = strtoul(argv[1], NULL, 0); + } else { + printf("usage %s num [mode] [silent]\n", argv[0]); + } + + if (argc > 2) { + data.ioc_obdo1.o_mode = strtoul(argv[2], NULL, 0); + } else { + data.ioc_obdo1.o_mode = 0100644; + } + data.ioc_obdo1.o_valid = OBD_MD_FLMODE; + + if (argc > 3) { + silent = strtoul(argv[3], NULL, 0); + } + + printf("Creating %d obdos\n", num); + + for (i = 0 ; i 1) { - return Parser_execarg(argc - 1, &argv[1], list); - } + if (argc > 1) { + return Parser_execarg(argc - 1, &argv[1], list); + } - Parser_init("obdctl > ", list); - Parser_commands(); + Parser_init("obdctl > ", list); + Parser_commands(); - return 0; + return 0; }