-/* -*- 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.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 only,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License version 2 for more details (a copy is included
+ * in the LICENSE file that accompanied this code).
+ *
+ * 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.
+ *
+ * GPL HEADER END
+ */
+/*
+ * Copyright (c) 2003, 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.
*/
+#ifndef _GNU_SOURCE
#define _GNU_SOURCE
+#endif
#include <stdio.h>
#include <errno.h>
#include <sys/stat.h>
#include <dirent.h>
#include <string.h>
+#include <unistd.h>
+#include <stdlib.h>
int main(int argc, char **argv)
{
fprintf(stderr, "creating special file %s\n", dname1);
rc = mknod(dname1, 0777|S_IFIFO, 0);
if (rc == -1) {
- fprintf(stderr, "creating %s fails: %s\n",
+ fprintf(stderr, "creating %s fails: %s\n",
dname1, strerror(errno));
exit(1);
}
dname1, strerror(errno));
exit(1);
}
-
+
// doesn't matter if the two dirs are the same??
fddev2 = open(dname2, O_RDONLY | O_NONBLOCK);
if (fddev2 == -1) {
dname2, strerror(errno));
exit(1);
}
-
+
// delete the special file
fprintf (stderr, "unlinking %s\n", dname1);
rc = unlink(dname1);
if (rc) {
- fprintf(stderr, "unlink %s error: %s\n",
+ fprintf(stderr, "unlink %s error: %s\n",
dname1, strerror(errno));
exit(1);
}
- if (access(dname2, F_OK) == 0){
+ if (access(dname2, F_OK) == 0) {
fprintf(stderr, "%s still exists\n", dname2);
exit(1);
}
- if (access(dname1, F_OK) == 0){
+ if (access(dname1, F_OK) == 0) {
fprintf(stderr, "%s still exists\n", dname1);
exit(1);
}
// fchmod one special file
rc = fchmod (fddev1, 0777);
- if(rc == -1)
- {
- fprintf(stderr, "fchmod unlinked special file %s fails: %s\n",
+ if (rc == -1) {
+ fprintf(stderr, "fchmod unlinked special file %s fails: %s\n",
dname1, strerror(errno));
exit(1);
}
-
+
// fstat two files to check if they are the same
rc = fstat(fddev1, &st1);
- if(rc == -1)
- {
- fprintf(stderr, "fstat unlinked special file %s fails: %s\n",
+ if (rc == -1) {
+ fprintf(stderr, "fstat unlinked special file %s fails: %s\n",
dname1, strerror(errno));
exit(1);
}
exit(1);
}
+#if 0
+ /* We cannot do this any longer, we do not store open special nodes
+ * on MDS after unlink */
if (st1.st_mode != st2.st_mode) { // can we do this?
fprintf(stderr, "fstat different value on %s and %s\n", dname1, dname2);
exit(1);
- }
+ }
+#endif
fprintf(stderr, "Ok, everything goes well.\n");
return 0;
}
-