X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Ftests%2Fmultiop.c;h=4c9899a9f82ec8988309728b434686de6fcd6f5e;hp=5bd588caabb90736294cba8e31cbdd9e29c49487;hb=50e4b61886c4ded7959aabcdeadd162ecea8ea69;hpb=3b4c006b28c9d6a7c3b00535cd3a6292178fa4c6 diff --git a/lustre/tests/multiop.c b/lustre/tests/multiop.c old mode 100755 new mode 100644 index 5bd588c..4c9899a --- a/lustre/tests/multiop.c +++ b/lustre/tests/multiop.c @@ -1,6 +1,4 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8: - * +/* * GPL HEADER START * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -26,7 +24,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -45,12 +43,13 @@ #include #include #include +#include #include #include #include #include -#include -#include + +#include #define T1 "write data before unlink\n" #define T2 "write data after unlink\n" @@ -68,6 +67,8 @@ char usage[] = " d mkdir\n" " D open(O_DIRECTORY)\n" " f statfs\n" +" G gid get grouplock\n" +" g gid put grouplock\n" " L link\n" " l symlink\n" " m mknod\n" @@ -194,6 +195,7 @@ int main(int argc, char **argv) int flags; int save_errno; int verbose = 0; + int gid = 0; if (argc < 3) { fprintf(stderr, usage, argv[0]); @@ -257,6 +259,22 @@ int main(int argc, char **argv) exit(save_errno); } break; + case 'G': + gid = atoi(commands+1); + if (ioctl(fd, LL_IOC_GROUP_LOCK, gid) == -1) { + save_errno = errno; + perror("ioctl(GROUP_LOCK)"); + exit(save_errno); + } + break; + case 'g': + gid = atoi(commands+1); + if (ioctl(fd, LL_IOC_GROUP_UNLOCK, gid) == -1) { + save_errno = errno; + perror("ioctl(GROUP_UNLOCK)"); + exit(save_errno); + } + break; case 'l': newfile = POP_ARG(); if (!newfile) @@ -352,9 +370,12 @@ int main(int argc, char **argv) perror("read"); exit(save_errno); } - if (rc < len) - fprintf(stderr, "short read: %u/%u\n", - rc, len); + if (rc < len) { + fprintf(stderr, "short read: %u/%u\n", + rc, len); + if (rc == 0) + exit(ENODATA); + } len -= rc; if (verbose >= 2) printf("%.*s\n", rc, buf_align);