From a63081bd4b94f9adcb3340ea9ff7f33e27f51ed2 Mon Sep 17 00:00:00 2001 From: pschwan Date: Wed, 2 Jul 2003 23:26:55 +0000 Subject: [PATCH] b=1501 - return -ENOTDIR from mds_open() if we're trying to open a non-directory with O_DIRECTORY - add tests/o_directory.c and make it in sanity test 38 --- lustre/mdc/mdc_lib.c | 3 +-- lustre/tests/o_directory.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 lustre/tests/o_directory.c diff --git a/lustre/mdc/mdc_lib.c b/lustre/mdc/mdc_lib.c index 1396f8d..806a830 100644 --- a/lustre/mdc/mdc_lib.c +++ b/lustre/mdc/mdc_lib.c @@ -98,8 +98,7 @@ void mds_create_pack(struct ptlrpc_request *req, int offset, void mds_open_pack(struct ptlrpc_request *req, int offset, struct mdc_op_data *op_data, __u32 mode, __u64 rdev, __u32 uid, __u32 gid, __u64 time, - __u32 flags, - const void *data, int datalen) + __u32 flags, const void *data, int datalen) { struct mds_rec_create *rec; char *tmp; diff --git a/lustre/tests/o_directory.c b/lustre/tests/o_directory.c new file mode 100644 index 0000000..d4b2c1b --- /dev/null +++ b/lustre/tests/o_directory.c @@ -0,0 +1,51 @@ +/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- + * vim:expandtab:shiftwidth=8:tabstop=8: + */ + +/* for O_DIRECTORY */ +#define _GNU_SOURCE + +#include +#include +#include +#include +#include +#include +#include +#include + +int main(int argc, char **argv) +{ + int fd, rc; + + if (argc != 2) { + printf("Usage: %s \n", argv[0]); + exit(1); + } + + fd = open(argv[1], O_RDONLY | O_CREAT, 0600); + if (fd == -1) { + printf("Error opening %s for create: %s\n", argv[1], + strerror(errno)); + exit(1); + } + rc = close(fd); + if (rc < 0) { + printf("Error closing %s: %s\n", argv[1], strerror(errno)); + exit(1); + } + + fd = open(argv[1], O_DIRECTORY); + if (fd >= 0) { + printf("opening %s as directory should have returned an " + "error!\n", argv[1]); + exit(1); + } + if (errno != ENOTDIR) { + printf("opening %s as directory, expected -ENOTDIR and got " + "%s\n", argv[1], strerror(errno)); + exit(1); + } + + return 0; +} -- 1.8.3.1