X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Fopenunlink.c;h=36f4c805cb48f81c8a72982930518d42b94efa1a;hb=d813c75df6798efbf3228347628c0d671ca7269c;hp=d69dff3eb325787ba4918b4ac44cd81941ea420b;hpb=6869932b552ac705f411de3362f01bd50c1f6f7d;p=fs%2Flustre-release.git diff --git a/lustre/tests/openunlink.c b/lustre/tests/openunlink.c index d69dff3..36f4c80 100644 --- a/lustre/tests/openunlink.c +++ b/lustre/tests/openunlink.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. @@ -17,21 +15,16 @@ * * You should have received a copy of the GNU General Public License * version 2 along with this program; If not, see - * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * http://www.gnu.org/licenses/gpl-2.0.html * * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* * This file is part of Lustre, http://www.lustre.org/ - * Lustre is a trademark of Sun Microsystems, Inc. */ #include @@ -49,140 +42,142 @@ char buf[128]; int main(int argc, char **argv) { - char *fname, *fname2; - struct stat st; - int fd, rc; - - if (argc < 2 || argc > 3) { - fprintf(stderr, "usage: %s filename [filename2]\n", argv[0]); - exit(1); - } - - fname = argv[1]; - if (argc == 3) - fname2 = argv[2]; - else - fname2 = argv[1]; - - fprintf(stderr, "opening\n"); - fd = open(fname, O_RDWR | O_TRUNC | O_CREAT, 0644); - if (fd == -1) { - fprintf(stderr, "open (normal) %s\n", strerror(errno)); - exit(1); - } - - fprintf(stderr, "writing\n"); - rc = write(fd, T1, strlen(T1) + 1); - if (rc != strlen(T1) + 1) { - fprintf(stderr, "write (normal) %s (rc %d)\n", - strerror(errno), rc); - exit(1); - } - - if (argc == 3) { - fprintf (stderr, "unlinking %s\n", fname2); - rc = unlink(fname2); - if (rc) { - fprintf(stderr, "unlink %s\n", strerror(errno)); - exit(1); - } - } else { - printf("unlink %s and press enter\n", fname); - getc(stdin); - } - - if (access(fname, F_OK) == 0) { - fprintf(stderr, "%s still exists\n", fname2); - exit(1); - } - - fprintf(stderr, "resetting fd offset\n"); - rc = lseek(fd, 0, SEEK_SET); - if (rc) { - fprintf(stderr, "seek %s\n", strerror(errno)); - exit(1); - } - - if (access(fname, F_OK) == 0) { - fprintf(stderr, "%s still exists\n", fname); - exit(1); - } - - fprintf(stderr, "fstat...\n"); - rc = fstat(fd, &st); - if (rc) { - fprintf(stderr, "fstat (unlink) %s\n", strerror(errno)); - exit(1); - } - if (st.st_nlink != 0) - fprintf(stderr, "st_nlink = %d\n", (int)st.st_nlink); - - fprintf(stderr, "reading\n"); - rc = read(fd, buf, strlen(T1) + 1); - if (rc != strlen(T1) + 1) { - fprintf(stderr, "read (unlink) %s (rc %d)\n", - strerror(errno), rc); - exit(1); - } - - fprintf(stderr, "comparing data\n"); - if (memcmp(buf, T1, strlen(T1) + 1) ) { - fprintf(stderr, "FAILURE: read wrong data after unlink\n"); - exit(1); - } - - fprintf(stderr, "truncating\n"); - rc = ftruncate(fd, 0); - if (rc) { - fprintf(stderr, "truncate (unlink) %s\n", strerror(errno)); - exit(1); - } - - fprintf(stderr, "seeking\n"); - rc = lseek(fd, 0, SEEK_SET); - if (rc) { - fprintf(stderr, "seek (after unlink trunc) %s\n", - strerror(errno)); - exit(1); - } - - fprintf(stderr, "writing again\n"); - rc = write(fd, T2, strlen(T2) + 1); - if (rc != strlen(T2) + 1) { - fprintf(stderr, "write (after unlink trunc) %s (rc %d)\n", - strerror(errno), rc); - exit(1); - } - - fprintf(stderr, "seeking\n"); - rc = lseek(fd, 0, SEEK_SET); - if (rc) { - fprintf(stderr, "seek (before unlink read) %s\n", - strerror(errno)); - exit(1); - } - - fprintf(stderr, "reading again\n"); - rc = read(fd, buf, strlen(T2) + 1); - if (rc != strlen(T2) + 1) { - fprintf(stderr, "read (after unlink rewrite) %s (rc %d)\n", - strerror(errno), rc); - exit(1); - } - - fprintf(stderr, "comparing data again\n"); - if (memcmp(buf, T2, strlen(T2) + 1)) { - fprintf(stderr, "FAILURE: read wrong data after rewrite\n"); - exit(1); - } - - fprintf(stderr, "closing\n"); - rc = close(fd); - if (rc) { - fprintf(stderr, "close (unlink) %s\n", strerror(errno)); - exit(1); - } - - fprintf(stderr, "SUCCESS - goto beer\n"); - return 0; + char *fname, *fname2; + struct stat st; + int fd, rc; + + if (argc < 2 || argc > 3) { + fprintf(stderr, "usage: %s filename [filename2]\n", argv[0]); + exit(1); + } + + fname = argv[1]; + if (argc == 3) + fname2 = argv[2]; + else + fname2 = argv[1]; + + fprintf(stderr, "opening\n"); + fd = open(fname, O_RDWR | O_TRUNC | O_CREAT, 0644); + if (fd == -1) { + fprintf(stderr, "open (normal) %s\n", strerror(errno)); + exit(1); + } + + fprintf(stderr, "writing\n"); + rc = write(fd, T1, strlen(T1) + 1); + if (rc != strlen(T1) + 1) { + fprintf(stderr, "write (normal) %s (rc %d)\n", + strerror(errno), rc); + exit(1); + } + + if (argc == 3) { + fprintf(stderr, "unlinking %s\n", fname2); + rc = unlink(fname2); + if (rc) { + fprintf(stderr, "unlink %s\n", strerror(errno)); + exit(1); + } + } else { + printf("unlink %s and press enter\n", fname); + getc(stdin); + } + + fprintf(stderr, "accessing (1)\n"); + if (access(fname, F_OK) == 0) { + fprintf(stderr, "%s still exists\n", fname); + exit(1); + } + + fprintf(stderr, "seeking (1)\n"); + rc = lseek(fd, 0, SEEK_SET); + if (rc) { + fprintf(stderr, "seek %s\n", strerror(errno)); + exit(1); + } + + fprintf(stderr, "accessing (2)\n"); + if (access(fname, F_OK) == 0) { + fprintf(stderr, "%s still exists\n", fname); + exit(1); + } + + fprintf(stderr, "fstat...\n"); + rc = fstat(fd, &st); + if (rc) { + fprintf(stderr, "fstat (unlink) %s\n", strerror(errno)); + exit(1); + } + if (st.st_nlink != 0) + fprintf(stderr, "st_nlink = %d\n", (int)st.st_nlink); + + fprintf(stderr, "reading\n"); + rc = read(fd, buf, strlen(T1) + 1); + if (rc != strlen(T1) + 1) { + fprintf(stderr, "read (unlink) %s (rc %d)\n", + strerror(errno), rc); + exit(1); + } + + fprintf(stderr, "comparing data\n"); + if (memcmp(buf, T1, strlen(T1) + 1)) { + fprintf(stderr, "FAILURE: read wrong data after unlink\n"); + exit(1); + } + + fprintf(stderr, "truncating\n"); + rc = ftruncate(fd, 0); + if (rc) { + fprintf(stderr, "truncate (unlink) %s\n", strerror(errno)); + exit(1); + } + + fprintf(stderr, "seeking (2)\n"); + rc = lseek(fd, 0, SEEK_SET); + if (rc) { + fprintf(stderr, "seek (after unlink trunc) %s\n", + strerror(errno)); + exit(1); + } + + fprintf(stderr, "writing again\n"); + rc = write(fd, T2, strlen(T2) + 1); + if (rc != strlen(T2) + 1) { + fprintf(stderr, "write (after unlink trunc) %s (rc %d)\n", + strerror(errno), rc); + exit(1); + } + + fprintf(stderr, "seeking (3)\n"); + rc = lseek(fd, 0, SEEK_SET); + if (rc) { + fprintf(stderr, "seek (before unlink read) %s\n", + strerror(errno)); + exit(1); + } + + fprintf(stderr, "reading again\n"); + rc = read(fd, buf, strlen(T2) + 1); + if (rc != strlen(T2) + 1) { + fprintf(stderr, "read (after unlink rewrite) %s (rc %d)\n", + strerror(errno), rc); + exit(1); + } + + fprintf(stderr, "comparing data again\n"); + if (memcmp(buf, T2, strlen(T2) + 1)) { + fprintf(stderr, "FAILURE: read wrong data after rewrite\n"); + exit(1); + } + + fprintf(stderr, "closing\n"); + rc = close(fd); + if (rc) { + fprintf(stderr, "close (unlink) %s\n", strerror(errno)); + exit(1); + } + + fprintf(stderr, "SUCCESS - goto beer\n"); + return 0; }