1d13d74bbf207c2d01598c6fef092a75b93b07c71vapier/*
2d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *   Copyright (c) International Business Machines  Corp., 2004
3d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *
4d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *   This program is free software;  you can redistribute it and/or modify
5d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *   it under the terms of the GNU General Public License as published by
6d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *   the Free Software Foundation; either version 2 of the License, or
7d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *   (at your option) any later version.
8d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *
9d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *   This program is distributed in the hope that it will be useful,
10d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *   but WITHOUT ANY WARRANTY;  without even the implied warranty of
11d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
12d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *   the GNU General Public License for more details.
13d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *
14d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *   You should have received a copy of the GNU General Public License
15d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *   along with this program;  if not, write to the Free Software
164548c6cf9bcdd96d8303caa4130ab638b61f8a30Wanlong Gao *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17d13d74bbf207c2d01598c6fef092a75b93b07c71vapier */
18d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
19d13d74bbf207c2d01598c6fef092a75b93b07c71vapier/*
20d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * TEST CASE	: event_an.c
21d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *
22d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * VARIATIONS	: 34
23d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *
24d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * EVENTS TESTED: DM_EVENT_POSTCREATE
25d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * 		  DM_EVENT_POSTREMOVE
26d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * 		  DM_EVENT_POSTRENAME
27d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * 		  DM_EVENT_POSTSYMLINK
28d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * 		  DM_EVENT_POSTLINK
29d13d74bbf207c2d01598c6fef092a75b93b07c71vapier */
30d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <string.h>
31d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <stdio.h>
32d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <stdlib.h>
33d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <errno.h>
34d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <pthread.h>
35d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <unistd.h>
36d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <sys/stat.h>
37d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <sys/mount.h>
38d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <fcntl.h>
39d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include "dm_test.h"
40d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
41d13d74bbf207c2d01598c6fef092a75b93b07c71vapierpthread_t tid;
42d13d74bbf207c2d01598c6fef092a75b93b07c71vapierdm_sessid_t sid;
43d13d74bbf207c2d01598c6fef092a75b93b07c71vapierchar dmMsgBuf[4096];
44d13d74bbf207c2d01598c6fef092a75b93b07c71vapierchar command[4096];
45d13d74bbf207c2d01598c6fef092a75b93b07c71vapierchar *mountPt;
46d13d74bbf207c2d01598c6fef092a75b93b07c71vapierchar *deviceNm;
47d13d74bbf207c2d01598c6fef092a75b93b07c71vapierchar DummyFile[FILENAME_MAX];
48d13d74bbf207c2d01598c6fef092a75b93b07c71vapierchar DummyFile2[FILENAME_MAX];
49d13d74bbf207c2d01598c6fef092a75b93b07c71vapierchar DummySubdir[FILENAME_MAX];
50d13d74bbf207c2d01598c6fef092a75b93b07c71vapierchar DummySubdir2[FILENAME_MAX];
51d13d74bbf207c2d01598c6fef092a75b93b07c71vapierchar DummyLink[FILENAME_MAX];
52d13d74bbf207c2d01598c6fef092a75b93b07c71vapierchar DummySubdir2File[FILENAME_MAX];
53d13d74bbf207c2d01598c6fef092a75b93b07c71vapierchar DummySubdir2Subdir[FILENAME_MAX];
54d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
554bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak/* Variables for thread communications */
56d13d74bbf207c2d01598c6fef092a75b93b07c71vapierdm_eventtype_t eventExpected;
57d13d74bbf207c2d01598c6fef092a75b93b07c71vapierdm_eventtype_t eventReceived;
58d13d74bbf207c2d01598c6fef092a75b93b07c71vapierdm_response_t eventResponse;
59d13d74bbf207c2d01598c6fef092a75b93b07c71vapiervoid *hanp1, *hanp2, *ahanp1, *ahanp2;
60d13d74bbf207c2d01598c6fef092a75b93b07c71vapiersize_t hlen1, hlen2, ahlen1, ahlen2;
61354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaochar name1[FILENAME_MAX], name2[FILENAME_MAX], aname1[FILENAME_MAX],
62354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao    aname2[FILENAME_MAX];
63d13d74bbf207c2d01598c6fef092a75b93b07c71vapierdm_mode_t mode, amode;
64d13d74bbf207c2d01598c6fef092a75b93b07c71vapierint aretcode;
65d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
66d13d74bbf207c2d01598c6fef092a75b93b07c71vapiervoid *Thread(void *);
67d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
68d13d74bbf207c2d01598c6fef092a75b93b07c71vapierint main(int argc, char **argv)
69d13d74bbf207c2d01598c6fef092a75b93b07c71vapier{
70d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
71d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	char *varstr;
72354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	int rc;
73354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	int varStatus;
74d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	char *szSessionInfo = "dm_test session info";
75d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	dm_eventset_t events;
76d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	void *fshanp, *dhanp;
77d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	size_t fshlen, dhlen;
78d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
79d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMOPT_PARSE(argc, argv);
80d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMLOG_START();
81d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
82d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_ZERO(events);
83d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_MOUNT, events);
84bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
85d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/* CANNOT DO ANYTHING WITHOUT SUCCESSFUL INITIALIZATION!!! */
86d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if ((rc = dm_init_service(&varstr)) != 0) {
87354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_ERR,
88354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    "dm_init_service failed! (rc = %d, errno = %d)\n",
89354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    rc, errno);
90d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		DM_EXIT();
91354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	} else if ((rc = dm_create_session(DM_NO_SESSION, szSessionInfo, &sid))
92354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		   == -1) {
93354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_ERR,
94354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    "dm_create_session failed! (rc = %d, errno = %d)\n",
95354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    rc, errno);
96d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		DM_EXIT();
97354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	} else
98354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	    if ((rc =
99354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		 dm_set_disp(sid, DM_GLOBAL_HANP, DM_GLOBAL_HLEN, DM_NO_TOKEN,
100354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     &events, DM_EVENT_MAX)) == -1) {
101354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_ERR,
102354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    "dm_set_disp failed! (rc = %d, errno = %d)\n", rc,
103354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    errno);
104d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_destroy_session(sid);
105d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		DM_EXIT();
106d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	} else if ((rc = pthread_create(&tid, NULL, Thread, NULL)) != 0) {
107354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_ERR,
108354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    "pthread_create failed! (rc = %d, errno = %d)\n",
109354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    rc, errno);
110d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_destroy_session(sid);
111d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		DM_EXIT();
112d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	} else if ((rc = dmimpl_mount(&mountPt, &deviceNm)) == -1) {
113354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_ERR,
114354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    "dmimpl_mount failed! (rc = %d, errno = %d)\n", rc,
115354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    errno);
116d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_destroy_session(sid);
117d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		DM_EXIT();
118d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	} else {
119d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		sprintf(DummyFile, "%s/%s", mountPt, DUMMY_FILE);
120d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		sprintf(DummyFile2, "%s/%s", mountPt, DUMMY_FILE2);
121d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		sprintf(DummySubdir, "%s/%s", mountPt, DUMMY_SUBDIR);
122d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		sprintf(DummySubdir2, "%s/%s", mountPt, DUMMY_SUBDIR2);
123d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		sprintf(DummyLink, "%s/%s", mountPt, DUMMY_LINK);
124d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		sprintf(DummySubdir2File, "%s/%s", mountPt, DUMMY_SUBDIR2_FILE);
125354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		sprintf(DummySubdir2Subdir, "%s/%s", mountPt,
126354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DUMMY_SUBDIR2_SUBDIR);
127d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
128d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		remove(DummySubdir2File);
129d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		rmdir(DummySubdir2Subdir);
130d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		remove(DummyFile);
131d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		remove(DummyFile2);
132d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		unlink(DummyLink);
133d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		rmdir(DummySubdir);
134d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		rmdir(DummySubdir2);
135d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
136d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
137354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	DMLOG_PRINT(DMLVL_DEBUG,
138354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		    "Starting DMAPI asynchronous namespace event tests\n");
139bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
140d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
1414bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak	 *  First batch of tests will be with events enabled on file system,
142d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 *  so set up events on fs accordingly
143d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
144d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	rc = dm_path_to_fshandle(mountPt, &fshanp, &fshlen);
145d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (rc == -1) {
146354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_ERR,
147354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    "dm_path_to_handle(fs) failed! (rc = %d, errno = %d)\n",
148354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    rc, errno);
149d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_destroy_session(sid);
150d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		DM_EXIT();
151d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
152bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
153d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_ZERO(events);
154d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_PREUNMOUNT, events);
155d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_UNMOUNT, events);
156d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_CREATE, events);
157d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_POSTCREATE, events);
158d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_REMOVE, events);
159d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_POSTREMOVE, events);
160d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_RENAME, events);
161d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_POSTRENAME, events);
162d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_SYMLINK, events);
163d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_POSTSYMLINK, events);
164d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_LINK, events);
165d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_POSTLINK, events);
166354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	rc = dm_set_eventlist(sid, fshanp, fshlen, DM_NO_TOKEN, &events,
167354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			      DM_EVENT_MAX);
168d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (rc == -1) {
169354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_ERR,
170354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    "dm_set_eventlist(fs) failed! (rc = %d, errno = %d)\n",
171354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    rc, errno);
172d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_destroy_session(sid);
173d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		DM_EXIT();
174d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
175d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
176d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
177d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : mkdir - enabled on fs
178d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTCREATE
179d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
180d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(DIR_ASYNC_NAMESP_EVENT_BASE + 1)) {
181d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino1, ino2;
182d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
183d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
184d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTCREATE;
185d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
186d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
187d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
188d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation */
189d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
1904bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak		DMLOG_PRINT(DMLVL_DEBUG, "mkdir(%s)\n", DummySubdir);
191e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		rc = mkdir(DummySubdir, DUMMY_DIR_RW_MODE);
192354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_DEBUG, "mkdir(%s) returned %d\n", DummySubdir,
193354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    rc);
194d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
195354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if ((varStatus =
196354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		     DMVAR_CHKPASSEXP(0, rc, eventExpected,
197354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				      eventReceived)) == DMSTAT_PASS) {
198d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			struct stat statfs;
1992c28215423293e443469a07ae7011135d058b671Garrett Cooper
200d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = dm_handle_to_ino(ahanp1, ahlen1, &ino1);
201d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= dm_handle_to_ino(ahanp2, ahlen2, &ino2);
202d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= stat(DummySubdir, &statfs);
203354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if (rc == -1) {
204354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
205354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to obtain inode!\n");
206d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
207d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (ino1 != ROOT_INODE) {
208354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
209354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Parent handle NOT root! (%lld vs %d)\n",
210354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    ino1, ROOT_INODE);
211d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
212d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (ino2 != statfs.st_ino) {
213354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
214354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Entry handle NOT correct! (%lld vs %d)\n",
215354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    ino2, statfs.st_ino);
216d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
217d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (strcmp(aname1, DUMMY_SUBDIR) != 0) {
218354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
219354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Entry name NOT correct! (%s vs %s)\n",
220354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    aname1, DUMMY_SUBDIR);
221d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
222354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			} else if (dm_handle_cmp(hanp1, hlen1, ahanp1, ahlen1)
223354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				   != 0) {
224354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
225354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Parent handles NOT same!\n");
226d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
227d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (strcmp(name1, aname1) != 0) {
228354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
229354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Entry names NOT same! (%s vs %s)\n",
230354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    name1, aname1);
231d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
232d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (amode != statfs.st_mode) {
233354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
234354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Modes NOT same! (%d vs %d)\n",
235354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    amode, statfs.st_mode);
236d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
237d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (aretcode != 0) {
238354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
239354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Return codes NOT same! (%d vs %d)\n",
240354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    mode, amode);
241d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
242d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
243d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
244d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		DMVAR_END(varStatus);
245d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
246d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation clean up */
247d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
248d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		rc = rmdir(DummySubdir);
249d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
250d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
251354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
252354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to clean up variation! (errno = %d)\n",
253354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
254d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
255d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
256bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
257d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
258d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : rmdir - enabled on fs
259d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTREMOVE
260d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
261d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(DIR_ASYNC_NAMESP_EVENT_BASE + 2)) {
262d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino;
263d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		struct stat statfs;
264d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
265d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
266d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTREMOVE;
267d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
268d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
269d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
270e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		if ((rc = mkdir(DummySubdir, DUMMY_DIR_RW_MODE)) == -1) {
271d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* No clean up */
272d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if ((rc = stat(DummySubdir, &statfs)) == -1) {
273d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rmdir(DummySubdir);
274d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
275d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
276354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
277354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
278354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
279d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
280d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
281d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
282d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2834bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak			DMLOG_PRINT(DMLVL_DEBUG, "rmdir(%s)\n", DummySubdir);
284d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = rmdir(DummySubdir);
285354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "rmdir(%s) returned %d\n",
286354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, rc);
287d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
288354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
289354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
290354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
291d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(ahanp1, ahlen1, &ino);
292354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
293354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
294354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
295d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
296d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino != ROOT_INODE) {
297354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
298354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handle NOT root! (%lld vs %d)\n",
299354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino, ROOT_INODE);
300d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
301d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname1, DUMMY_SUBDIR) != 0) {
302354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
303354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Entry name NOT correct! (%s vs %s)\n",
304354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aname1, DUMMY_SUBDIR);
305d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
306354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
307354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
308354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp1, hlen1, ahanp1, ahlen1) != 0) {
309354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
310354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handles NOT same!\n");
311d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
312354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else if (strcmp(name1, aname1) != 0) {
313354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
314354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Entry names NOT same! (%s vs %s)\n",
315354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, aname1);
316d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
317d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (amode != statfs.st_mode) {
318354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
319354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Modes NOT same! (%d vs %d)\n",
320354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    amode, statfs.st_mode);
321d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
322d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (aretcode != 0) {
323354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
324354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Return codes NOT same! (%d vs %d)\n",
325354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    mode, amode);
326d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
327d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
328d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
329d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
330d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
331d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
332d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
333d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
334d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
335d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
336d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : mv - enabled on fs
337d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTRENAME
338d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
339d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(DIR_ASYNC_NAMESP_EVENT_BASE + 3)) {
340d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino1, ino2;
341d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
342d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
343d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTRENAME;
344d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
345d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
3464bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak		sprintf(command, "mv %s %s", DummySubdir, DummySubdir2);
347d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
348e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		rc = mkdir(DummySubdir, DUMMY_DIR_RW_MODE);
349d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
350354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
351354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
352354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
353d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
354d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
355d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
356d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
357354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "system(mv %s %s)\n",
358354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, DummySubdir2);
359d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = system(command);
360354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
361354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "system(mv %s %s) returned %d\n",
362354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, DummySubdir2, rc);
363d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
364354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
365354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
366354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
367d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(ahanp1, ahlen1, &ino1);
368d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(ahanp2, ahlen2, &ino2);
369354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
370354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
371354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
372d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
373d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino1 != ROOT_INODE) {
374354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
375354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handle NOT root! (%lld vs %d)\n",
376354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino1, ROOT_INODE);
377d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
378d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino2 != ROOT_INODE) {
379354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
380354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New parent handle NOT root! (%lld vs %d)\n",
381354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino2, ROOT_INODE);
382354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
383354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
384354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
385354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(ahanp1, ahlen1, ahanp2, ahlen2) != 0) {
386354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
387354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handle NOT equal to new parent handle!\n");
388354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
389354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
390354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
391354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp1, hlen1, ahanp1, ahlen1) != 0) {
392354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
393354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handles NOT same!\n");
394354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
395354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
396354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
397354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp2, hlen2, ahanp2, ahlen2) != 0) {
398354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
399354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New parent handles NOT same!\n");
400d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
401d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname1, DUMMY_SUBDIR) != 0) {
402354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
403354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old entry name NOT correct! (%s vs %s)\n",
404354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, DUMMY_SUBDIR);
405d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
406d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname2, DUMMY_SUBDIR2) != 0) {
407354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
408354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New entry name NOT correct! (%s vs %s)\n",
409354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, DUMMY_SUBDIR2);
410d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
411d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name1, aname1) != 0) {
412354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
413354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old entry name NOT same! (%s vs %s)\n",
414354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, aname1);
415d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
416d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name2, aname2) != 0) {
417354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
418354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New entry name NOT same! (%s vs %s)\n",
419354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, aname2);
420d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
421d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (aretcode != 0) {
422354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
423354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Return codes NOT same! (%d vs %d)\n",
424354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    mode, amode);
425d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
426d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
427d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
428d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
429d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
430d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
431d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
432d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = rmdir(DummySubdir2);
433d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
434d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
435354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
436354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
437354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
438d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
439d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
440d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
441d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
442d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
443d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : symlink - enabled on fs
444d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTSYMLINK
445d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
446d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(DIR_ASYNC_NAMESP_EVENT_BASE + 4)) {
447d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino1, ino2;
448d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
449d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
450d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTSYMLINK;
451d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
452d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
453d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
454e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		rc = mkdir(DummySubdir, DUMMY_DIR_RW_MODE);
455d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
456354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
457354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
458354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
459d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
460d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
461d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
462d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
463354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "symlink(%s, %s)\n",
464354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, DummySubdir2);
465d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = symlink(DummySubdir, DummySubdir2);
466354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
467354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "symlink(%s, %s) returned %d\n",
468354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, DummySubdir2, rc);
469d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
470354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
471354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
472354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
473d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				struct stat statfs;
474d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
475d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(ahanp1, ahlen1, &ino1);
476d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(ahanp2, ahlen2, &ino2);
477d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= lstat(DummySubdir2, &statfs);
478354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
479354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
480354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
481d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
482d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino1 != ROOT_INODE) {
483354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
484354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handle NOT root! (%lld vs %d)\n",
485354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino1, ROOT_INODE);
486d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
487354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else if (ino2 != statfs.st_ino) {
488354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
489354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Entry handle NOT correct! (%lld vs %d)\n",
490354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino2, statfs.st_ino);
491d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
492354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
493354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
494354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp1, hlen1, ahanp1, ahlen1) != 0) {
495354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
496354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handles NOT same!\n");
497d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
498d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname1, DUMMY_SUBDIR2) != 0) {
499354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
500354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Symlink entry name NOT correct! (%s vs %s)\n",
501354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aname1, DUMMY_SUBDIR2);
502d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
503d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname2, DummySubdir) != 0) {
504354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
505354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Symlink contents NOT correct! (%s vs %s)\n",
506354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aname2, DummySubdir);
507d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
508d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name1, aname1) != 0) {
509354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
510354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Symlink entry names NOT same! (%s vs %s)\n",
511354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, aname1);
512d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
513d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name2, aname2) != 0) {
514354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
515354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Symlink contents NOT same! (%s vs %s)\n",
516354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, aname2);
517d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
518d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (aretcode != 0) {
519354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
520354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Return codes NOT same! (%d vs %d)\n",
521354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    mode, amode);
522d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
523d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
524d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
525d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
526d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
527d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
528d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
529d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = unlink(DummySubdir2);
530d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= rmdir(DummySubdir);
531d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
532d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
533354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
534354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
535354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
536d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
537d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
538d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
539d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
540d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
541d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : link - enabled on fs
542d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTLINK
543d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
544d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(DIR_ASYNC_NAMESP_EVENT_BASE + 5)) {
5452c28215423293e443469a07ae7011135d058b671Garrett Cooper#ifdef DIRECTORY_LINKS
546d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino, ino1, ino2;
547d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		void *hanp;
548d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		size_t hlen;
549d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
550d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
551d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTLINK;
552d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
553d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
554d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
555e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		rc = mkdir(DummySubdir, DUMMY_DIR_RW_MODE);
556d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
557354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
558354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
559354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
560d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
561d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
562d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
563d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
564354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "link(%s, %s)\n", DummySubdir,
565354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyLink);
566d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = link(DummySubdir, DummyLink);
567354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "link(%s, %s) returned %d\n",
568354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, DummyLink, rc);
569d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
570354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
571354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
572354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
573d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(hanp1, hlen1, &ino1);
574d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(hanp2, hlen2, &ino2);
575d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(hanp, hlen, &ino);
576354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
577354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
578354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
579d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
580d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino1 != ROOT_INODE) {
581354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
582354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handle NOT root! (%d vs %d)\n",
583354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino1, ROOT_INODE);
584d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
585d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino2 != ino) {
586354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
587354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Source link handle NOT correct! (%d vs %d)\n",
588354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino2, ino);
589d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
590d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name1, DUMMY_LINK) != 0) {
591354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
592354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Target entry name NOT correct! (%s vs %s)\n",
593354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, DUMMY_LINK);
594d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
595d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
596d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
597d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
598d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
599d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
600d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
601d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = rmdir(DummySubdir);
602d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= unlink(DummyLink);
603d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
604354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
605354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
606354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
607d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
608d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			dm_handle_free(hanp, hlen);
609d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
610d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#else
611354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_WARN,
612354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    "Test case not built with DIRECTORY_LINKS defined\n");
6132c28215423293e443469a07ae7011135d058b671Garrett Cooper		DMVAR_SKIP();
614d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#endif
615d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
616d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
617d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
618d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : open - enabled on fs
619d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTCREATE
620d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
621d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(FILE_ASYNC_NAMESP_EVENT_BASE + 1)) {
622d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		int fd;
623d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino1, ino2;
624d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
625d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
626d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTCREATE;
627d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
628d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
629d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
630d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation */
631d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
6324bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak		DMLOG_PRINT(DMLVL_DEBUG, "open(%s)\n", DummyFile);
633e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		fd = open(DummyFile, O_RDWR | O_CREAT, DUMMY_FILE_RW_MODE);
634354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_DEBUG, "open(%s) returned %d\n", DummyFile,
635354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    rc);
636d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		rc = (fd == -1) ? -1 : 0;
637d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
638354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if ((varStatus =
639354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		     DMVAR_CHKPASSEXP(0, rc, eventExpected,
640354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				      eventReceived)) == DMSTAT_PASS) {
641d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			struct stat statfs;
6422c28215423293e443469a07ae7011135d058b671Garrett Cooper
643d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = dm_handle_to_ino(ahanp1, ahlen1, &ino1);
644d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= dm_handle_to_ino(ahanp2, ahlen2, &ino2);
645d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= stat(DummyFile, &statfs);
646354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if (rc == -1) {
647354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
648354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to obtain inode!\n");
649d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
650d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (ino1 != ROOT_INODE) {
651354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
652354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Parent handle NOT root! (%lld vs %d)\n",
653354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    ino1, ROOT_INODE);
654d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
655d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (ino2 != statfs.st_ino) {
656354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
657354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Entry handle NOT correct! (%lld vs %d)\n",
658354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    ino2, statfs.st_ino);
659d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
660d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (strcmp(aname1, DUMMY_FILE) != 0) {
661354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
662354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Entry name NOT correct! (%s vs %s)\n",
663354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    aname1, DUMMY_FILE);
664d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
665354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			} else if (dm_handle_cmp(hanp1, hlen1, ahanp1, ahlen1)
666354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				   != 0) {
667354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
668354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Parent handles NOT same!\n");
669d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
670d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (strcmp(name1, aname1) != 0) {
671354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
672354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Entry names NOT same! (%s vs %s)\n",
673354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    name1, aname1);
674d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
675d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (amode != statfs.st_mode) {
676354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
677354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Modes NOT same! (%d vs %d)\n",
678354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    amode, statfs.st_mode);
679d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
680d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (aretcode != 0) {
681354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
682354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Return codes NOT same! (%d vs %d)\n",
683354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    mode, amode);
684d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
685d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
686d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
687d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		DMVAR_END(varStatus);
688d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
689d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation clean up */
690d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
691d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		rc = close(fd);
692d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		rc |= remove(DummyFile);
693d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
694d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
695354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
696354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to clean up variation! (errno = %d)\n",
697354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
698d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
699d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
700bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
701d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
702d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : remove - enabled on fs
703d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTREMOVE
704d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
705d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(FILE_ASYNC_NAMESP_EVENT_BASE + 2)) {
706d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		int fd;
707d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino;
708d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		struct stat statfs;
709d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
710d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
711d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTREMOVE;
712d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
713d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
714d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
715354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if ((fd =
716354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		     open(DummyFile, O_RDWR | O_CREAT,
717354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			  DUMMY_FILE_RW_MODE)) == -1) {
718d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* No clean up */
719d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if (((rc = close(fd)) == -1) ||
720d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			   ((rc = stat(DummyFile, &statfs)) == -1)) {
721d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			remove(DummyFile);
722d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
723d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (fd == -1 || rc == -1) {
724354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
725354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
726354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
727d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
728d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
729d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
730d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
7314bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak			DMLOG_PRINT(DMLVL_DEBUG, "remove(%s)\n", DummyFile);
732d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = remove(DummyFile);
733354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "remove(%s) returned %d\n",
734354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyFile, rc);
735d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
736354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
737354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
738354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
739d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(ahanp1, ahlen1, &ino);
740354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
741354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
742354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
743d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
744d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino != ROOT_INODE) {
745354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
746354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handle NOT root! (%lld vs %d)\n",
747354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino, ROOT_INODE);
748d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
749d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname1, DUMMY_FILE) != 0) {
750354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
751354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Entry name NOT correct! (%s vs %s)\n",
752354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aname1, DUMMY_FILE);
753d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
754354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
755354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
756354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp1, hlen1, ahanp1, ahlen1) != 0) {
757354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
758354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handles NOT same!\n");
759d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
760354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else if (strcmp(name1, aname1) != 0) {
761354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
762354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Entry names NOT same! (%s vs %s)\n",
763354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, aname1);
764d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
765d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (amode != statfs.st_mode) {
766354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
767354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Modes NOT same! (%d vs %d)\n",
768354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    amode, statfs.st_mode);
769d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
770d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (aretcode != 0) {
771354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
772354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Return codes NOT same! (%d vs %d)\n",
773354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    mode, amode);
774d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
775d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
776d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
777d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
778d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
779d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
780d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
781d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
782d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
783d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
784d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : mv - enabled on fs
785d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTRENAME
786d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
787d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(FILE_ASYNC_NAMESP_EVENT_BASE + 3)) {
788d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		int fd;
789d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino1, ino2;
790d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
791d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
792d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTRENAME;
793d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
794d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
7954bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak		sprintf(command, "mv %s %s", DummyFile, DummyFile2);
796d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
797354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if ((fd =
798354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		     open(DummyFile, O_RDWR | O_CREAT,
799354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			  DUMMY_FILE_RW_MODE)) == -1) {
800d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* No clean up */
801d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if ((rc = close(fd)) == -1) {
802d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			remove(DummyFile);
803d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
804d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (fd == -1 || rc == -1) {
805354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
806354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
807354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
808d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
809d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
810d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
811d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
812354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "system(mv %s %s)\n",
813354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyFile, DummyFile2);
814d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = system(command);
815354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
816354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "system(mv %s %s) returned %d\n", DummyFile,
817354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyFile2, rc);
818d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
819354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
820354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
821354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
822d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(ahanp1, ahlen1, &ino1);
823d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(ahanp2, ahlen2, &ino2);
824354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
825354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
826354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
827d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
828d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino1 != ROOT_INODE) {
829354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
830354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handle NOT root! (%lld vs %d)\n",
831354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino1, ROOT_INODE);
832d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
833d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino2 != ROOT_INODE) {
834354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
835354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New parent handle NOT root! (%lld vs %d)\n",
836354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino2, ROOT_INODE);
837354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
838354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
839354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
840354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(ahanp1, ahlen1, ahanp2, ahlen2) != 0) {
841354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
842354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handle NOT equal to new parent handle!\n");
843354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
844354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
845354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
846354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp1, hlen1, ahanp1, ahlen1) != 0) {
847354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
848354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handles NOT same!\n");
849354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
850354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
851354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
852354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp2, hlen2, ahanp2, ahlen2) != 0) {
853354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
854354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New parent handles NOT same!\n");
855d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
856d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname1, DUMMY_FILE) != 0) {
857354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
858354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old entry name NOT correct! (%s vs %s)\n",
859354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, DUMMY_FILE);
860d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
861d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname2, DUMMY_FILE2) != 0) {
862354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
863354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New entry name NOT correct! (%s vs %s)\n",
864354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, DUMMY_FILE2);
865d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
866d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name1, aname1) != 0) {
867354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
868354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old entry name NOT same! (%s vs %s)\n",
869354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, aname1);
870d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
871d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name2, aname2) != 0) {
872354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
873354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New entry name NOT same! (%s vs %s)\n",
874354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, aname2);
875d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
876d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (aretcode != 0) {
877354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
878354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Return codes NOT same! (%d vs %d)\n",
879354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    mode, amode);
880d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
881d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
882d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
883d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
884d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
885d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
886d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
887d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = remove(DummyFile2);
888d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
889d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
890354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
891354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
892354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
893d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
894d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
895d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
896d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
897d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
898d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : symlink - enabled on fs
899d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTSYMLINK
900d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
901d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(FILE_ASYNC_NAMESP_EVENT_BASE + 4)) {
902d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		int fd;
903d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino1, ino2;
904d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
905d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
906d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTSYMLINK;
907d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
908d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
909d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
910354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if ((fd =
911354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		     open(DummyFile, O_RDWR | O_CREAT,
912354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			  DUMMY_FILE_RW_MODE)) == -1) {
913d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* No clean up */
914d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if ((rc = close(fd)) == -1) {
915d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			remove(DummyFile);
916d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
917d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (fd == -1 || rc == -1) {
918354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
919354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
920354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
921d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
922d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
923d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
924d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
925354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "symlink(%s, %s)\n", DummyFile,
926354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyLink);
927d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = symlink(DummyFile, DummyLink);
928354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
929354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "symlink(%s, %s) returned %d\n", DummyFile,
930354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyLink, rc);
931d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
932354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
933354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
934354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
935d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				struct stat statfs;
936d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
937d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(ahanp1, ahlen1, &ino1);
938d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(ahanp2, ahlen2, &ino2);
939d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= lstat(DummyLink, &statfs);
940354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
941354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
942354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
943d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
944d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino1 != ROOT_INODE) {
945354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
946354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handle NOT root! (%lld vs %d)\n",
947354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino1, ROOT_INODE);
948d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
949354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else if (ino2 != statfs.st_ino) {
950354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
951354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Entry handle NOT correct! (%lld vs %d)\n",
952354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino2, statfs.st_ino);
953d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
954354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
955354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
956354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp1, hlen1, ahanp1, ahlen1) != 0) {
957354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
958354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handles NOT same!\n");
959d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
960d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname1, DUMMY_LINK) != 0) {
961354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
962354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Symlink entry name NOT correct! (%s vs %s)\n",
963354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aname1, DUMMY_LINK);
964d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
965d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname2, DummyFile) != 0) {
966354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
967354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Symlink contents NOT correct! (%s vs %s)\n",
968354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aname2, DummyFile);
969d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
970d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name1, aname1) != 0) {
971354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
972354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Symlink entry names NOT same! (%s vs %s)\n",
973354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, aname1);
974d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
975d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name2, aname2) != 0) {
976354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
977354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Symlink contents NOT same! (%s vs %s)\n",
978354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, aname2);
979d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
980d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (aretcode != 0) {
981354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
982354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Return codes NOT same! (%d vs %d)\n",
983354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    mode, amode);
984d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
985d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
986d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
987d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
988d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
989d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
990d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
991d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = unlink(DummyLink);
992d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= remove(DummyFile);
993d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
994d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
995354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
996354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
997354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
998d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
999d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
1000d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
1001d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1002d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
1003d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : link - enabled on fs
1004d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTLINK
1005d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
1006d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(FILE_ASYNC_NAMESP_EVENT_BASE + 5)) {
1007d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino, ino1, ino2;
1008d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		void *hanp;
1009d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		size_t hlen;
1010d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		int fd;
1011d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1012d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
1013d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTLINK;
1014d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
1015d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
1016d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
1017354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if ((fd =
1018354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		     open(DummyFile, O_RDWR | O_CREAT,
1019354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			  DUMMY_FILE_RW_MODE)) == -1) {
1020d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* No clean up */
1021d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if ((rc = dm_fd_to_handle(fd, &hanp, &hlen)) == -1) {
1022d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			close(fd);
1023d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			remove(DummyFile);
1024d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
1025d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (fd == -1 || rc == -1) {
1026354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
1027354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
1028354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
1029d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
1030d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
1031d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
1032d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1033354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "link(%s, %s)\n", DummyFile,
1034354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyLink);
1035d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = link(DummyFile, DummyLink);
1036354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "link(%s, %s) returned %d\n",
1037354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyFile, DummyLink, rc);
1038d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1039354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
1040354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
1041354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
1042d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(hanp1, hlen1, &ino1);
1043d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(hanp2, hlen2, &ino2);
1044d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(hanp, hlen, &ino);
1045354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
1046354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1047354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
1048d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1049d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino1 != ROOT_INODE) {
1050354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1051354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handle NOT root! (%d vs %d)\n",
1052354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino1, ROOT_INODE);
1053d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1054d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino2 != ino) {
1055354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1056354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Source link handle NOT correct! (%d vs %d)\n",
1057354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino2, ino);
1058d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1059d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name1, DUMMY_LINK) != 0) {
1060354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1061354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Target entry name NOT correct! (%s vs %s)\n",
1062354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, DUMMY_LINK);
1063d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1064d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
1065d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
1066d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
1067d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1068d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
1069d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1070d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = close(fd);
1071d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= remove(DummyFile);
1072d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= remove(DummyLink);
1073d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
1074354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
1075354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
1076354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
1077d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
1078d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			dm_handle_free(hanp, hlen);
1079d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
1080d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
1081d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1082d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/* Wait for all pending messages to be handled */
1083d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	EVENT_DELIVERY_DELAY_LOOP;
1084d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1085d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
1086d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 *  Next batch of tests will be with events enabled on directory, so
1087d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 *  clear events on fs and set up events on dir accordingly
1088d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
1089d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	rc = dm_path_to_fshandle(mountPt, &fshanp, &fshlen);
1090d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (rc == -1) {
1091354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_ERR,
1092354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    "dm_path_to_handle failed! (rc = %d, errno = %d)\n",
1093354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    rc, errno);
1094d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_destroy_session(sid);
1095d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		DM_EXIT();
1096d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
1097bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
1098d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_ZERO(events);
1099d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_PREUNMOUNT, events);
1100d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_UNMOUNT, events);
1101354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	rc = dm_set_eventlist(sid, fshanp, fshlen, DM_NO_TOKEN, &events,
1102354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			      DM_EVENT_MAX);
1103d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (rc == -1) {
1104354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_ERR,
1105354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    "dm_set_eventlist(fs) failed! (rc = %d, errno = %d)\n",
1106354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    rc, errno);
1107d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_destroy_session(sid);
1108d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		DM_EXIT();
1109d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
1110d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1111d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	rc = dm_path_to_handle(mountPt, &dhanp, &dhlen);
1112d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (rc == -1) {
1113354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_ERR,
1114354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    "dm_path_to_handle failed! (rc = %d, errno = %d)\n",
1115354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    rc, errno);
1116d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_destroy_session(sid);
1117d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		DM_EXIT();
1118d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
1119d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1120d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_ZERO(events);
1121d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_CREATE, events);
1122d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_POSTCREATE, events);
1123d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_REMOVE, events);
1124d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_POSTREMOVE, events);
1125d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_RENAME, events);
1126d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_POSTRENAME, events);
1127d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_SYMLINK, events);
1128d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_POSTSYMLINK, events);
1129d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_LINK, events);
1130d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_SET(DM_EVENT_POSTLINK, events);
1131354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	rc = dm_set_eventlist(sid, dhanp, dhlen, DM_NO_TOKEN, &events,
1132354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			      DM_EVENT_MAX);
1133d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (rc == -1) {
1134354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_ERR,
1135354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    "dm_set_eventlist(dir) failed! (rc = %d, errno = %d)\n",
1136354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    rc, errno);
1137d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_destroy_session(sid);
1138d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		DM_EXIT();
1139d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
1140d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1141d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
1142d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : mkdir - enabled on directory
1143d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTCREATE
1144d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
1145d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(DIR_ASYNC_NAMESP_EVENT_BASE + 6)) {
1146d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino1, ino2;
1147d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1148d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
1149d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTCREATE;
1150d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
1151d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
1152d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1153d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation */
1154d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
11554bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak		DMLOG_PRINT(DMLVL_DEBUG, "mkdir(%s)\n", DummySubdir);
1156e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		rc = mkdir(DummySubdir, DUMMY_DIR_RW_MODE);
1157354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_DEBUG, "mkdir(%s) returned %d\n", DummySubdir,
1158354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    rc);
1159d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
1160354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if ((varStatus =
1161354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		     DMVAR_CHKPASSEXP(0, rc, eventExpected,
1162354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				      eventReceived)) == DMSTAT_PASS) {
1163d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			struct stat statfs;
11642c28215423293e443469a07ae7011135d058b671Garrett Cooper
1165d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = dm_handle_to_ino(ahanp1, ahlen1, &ino1);
1166d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= dm_handle_to_ino(ahanp2, ahlen2, &ino2);
1167d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= stat(DummySubdir, &statfs);
1168354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if (rc == -1) {
1169354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
1170354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to obtain inode!\n");
1171d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
1172d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (ino1 != ROOT_INODE) {
1173354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
1174354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Parent handle NOT root! (%lld vs %d)\n",
1175354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    ino1, ROOT_INODE);
1176d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
1177d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (ino2 != statfs.st_ino) {
1178354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
1179354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Entry handle NOT correct! (%lld vs %d)\n",
1180354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    ino2, statfs.st_ino);
1181d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
1182d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (strcmp(aname1, DUMMY_SUBDIR) != 0) {
1183354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
1184354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Entry name NOT correct! (%s vs %s)\n",
1185354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    aname1, DUMMY_SUBDIR);
1186d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
1187354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			} else if (dm_handle_cmp(hanp1, hlen1, ahanp1, ahlen1)
1188354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				   != 0) {
1189354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
1190354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Parent handles NOT same!\n");
1191d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
1192d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (strcmp(name1, aname1) != 0) {
1193354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
1194354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Entry names NOT same! (%s vs %s)\n",
1195354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    name1, aname1);
1196d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
1197d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (amode != statfs.st_mode) {
1198354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
1199354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Modes NOT same! (%d vs %d)\n",
1200354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    amode, statfs.st_mode);
1201d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
1202d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (aretcode != 0) {
1203354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
1204354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Return codes NOT same! (%d vs %d)\n",
1205354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    mode, amode);
1206d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
1207d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
1208d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
1209d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		DMVAR_END(varStatus);
1210d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1211d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation clean up */
1212d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
1213d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		rc = rmdir(DummySubdir);
1214d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
1215d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
1216354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
1217354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to clean up variation! (errno = %d)\n",
1218354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
1219d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
1220d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
1221bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
1222d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
1223d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : rmdir - enabled on directory
1224d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTREMOVE
1225d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
1226d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(DIR_ASYNC_NAMESP_EVENT_BASE + 7)) {
1227d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino;
1228d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		struct stat statfs;
1229d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1230d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
1231d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTREMOVE;
1232d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
1233d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
1234d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
1235e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		if ((rc = mkdir(DummySubdir, DUMMY_DIR_RW_MODE)) == -1) {
1236d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* No clean up */
1237d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if ((rc = stat(DummySubdir, &statfs)) == -1) {
1238d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rmdir(DummySubdir);
1239d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
1240d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
1241354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
1242354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
1243354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
1244d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
1245d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
1246d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
1247d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
12484bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak			DMLOG_PRINT(DMLVL_DEBUG, "rmdir(%s)\n", DummySubdir);
1249d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = rmdir(DummySubdir);
1250354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "rmdir(%s) returned %d\n",
1251354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, rc);
1252d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1253354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
1254354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
1255354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
1256d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(ahanp1, ahlen1, &ino);
1257354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
1258354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1259354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
1260d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1261d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino != ROOT_INODE) {
1262354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1263354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handle NOT root! (%lld vs %d)\n",
1264354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino, ROOT_INODE);
1265d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1266d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname1, DUMMY_SUBDIR) != 0) {
1267354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1268354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Entry name NOT correct! (%s vs %s)\n",
1269354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aname1, DUMMY_SUBDIR);
1270d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1271354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
1272354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
1273354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp1, hlen1, ahanp1, ahlen1) != 0) {
1274354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1275354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handles NOT same!\n");
1276d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1277354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else if (strcmp(name1, aname1) != 0) {
1278354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1279354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Entry names NOT same! (%s vs %s)\n",
1280354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, aname1);
1281d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1282d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (amode != statfs.st_mode) {
1283354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1284354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Modes NOT same! (%d vs %d)\n",
1285354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    amode, statfs.st_mode);
1286d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1287d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (aretcode != 0) {
1288354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1289354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Return codes NOT same! (%d vs %d)\n",
1290354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    mode, amode);
1291d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1292d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
1293d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
1294d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
1295d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1296d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
1297d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
1298d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
1299d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1300d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
1301d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : mv - enabled on source and destination directory
1302d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTRENAME
1303d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
1304d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(DIR_ASYNC_NAMESP_EVENT_BASE + 8)) {
1305d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino1, ino2;
1306d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1307d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
1308d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTRENAME;
1309d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
1310d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
13114bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak		sprintf(command, "mv %s %s", DummySubdir, DummySubdir2);
1312d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
1313e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		rc = mkdir(DummySubdir, DUMMY_DIR_RW_MODE);
1314d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
1315354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
1316354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
1317354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
1318d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
1319d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
1320d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
1321d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1322354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "system(mv %s %s)\n",
1323354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, DummySubdir2);
1324d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = system(command);
1325354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
1326354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "system(mv %s %s) returned %d\n",
1327354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, DummySubdir2, rc);
1328d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1329354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
1330354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
1331354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
1332d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(ahanp1, ahlen1, &ino1);
1333d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(ahanp2, ahlen2, &ino2);
1334354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
1335354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1336354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
1337d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1338d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino1 != ROOT_INODE) {
1339354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1340354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handle NOT root! (%lld vs %d)\n",
1341354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino1, ROOT_INODE);
1342d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1343d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino2 != ROOT_INODE) {
1344354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1345354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New parent handle NOT root! (%lld vs %d)\n",
1346354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino2, ROOT_INODE);
1347354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
1348354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
1349354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
1350354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(ahanp1, ahlen1, ahanp2, ahlen2) != 0) {
1351354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1352354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handle NOT equal to new parent handle!\n");
1353354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
1354354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
1355354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
1356354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp1, hlen1, ahanp1, ahlen1) != 0) {
1357354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1358354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handles NOT same!\n");
1359354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
1360354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
1361354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
1362354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp2, hlen2, ahanp2, ahlen2) != 0) {
1363354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1364354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New parent handles NOT same!\n");
1365d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1366d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname1, DUMMY_SUBDIR) != 0) {
1367354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1368354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old entry name NOT correct! (%s vs %s)\n",
1369354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, DUMMY_SUBDIR);
1370d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1371d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname2, DUMMY_SUBDIR2) != 0) {
1372354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1373354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New entry name NOT correct! (%s vs %s)\n",
1374354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, DUMMY_SUBDIR2);
1375d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1376d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name1, aname1) != 0) {
1377354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1378354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old entry name NOT same! (%s vs %s)\n",
1379354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, aname1);
1380d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1381d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name2, aname2) != 0) {
1382354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1383354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New entry name NOT same! (%s vs %s)\n",
1384354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, aname2);
1385d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1386d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (aretcode != 0) {
1387354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1388354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Return codes NOT same! (%d vs %d)\n",
1389354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    mode, amode);
1390d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1391d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
1392d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
1393d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
1394d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1395d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
1396d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1397d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = rmdir(DummySubdir2);
1398d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1399d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
1400354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
1401354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
1402354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
1403d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
1404d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
1405d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
1406d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1407d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
1408d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : mv - enabled on source directory
1409d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTRENAME
1410d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
1411d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(DIR_ASYNC_NAMESP_EVENT_BASE + 9)) {
1412d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		void *dhanp;
1413d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		size_t dhlen;
1414d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino1, ino2, dino;
1415d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1416d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
1417d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTRENAME;
1418d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
1419d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
14204bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak		sprintf(command, "mv %s %s", DummySubdir, DummySubdir2Subdir);
1421d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
1422e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		if ((rc = mkdir(DummySubdir, DUMMY_DIR_RW_MODE)) == -1) {
1423d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* No clean up */
1424e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		} else if ((rc = mkdir(DummySubdir2, DUMMY_DIR_RW_MODE)) == -1) {
1425d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rmdir(DummySubdir);
1426354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		} else
1427354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		    if ((rc =
1428354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			 dm_path_to_handle(DummySubdir2, &dhanp,
1429354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					   &dhlen)) == -1) {
1430d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rmdir(DummySubdir2);
1431d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rmdir(DummySubdir);
1432d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if ((rc = dm_handle_to_ino(dhanp, dhlen, &dino)) == -1) {
1433d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			dm_handle_free(dhanp, dhlen);
1434d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rmdir(DummySubdir2);
1435d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rmdir(DummySubdir);
1436d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
1437d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
1438354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
1439354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
1440354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
1441d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
1442d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
1443d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
1444d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1445354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "system(mv %s %s)\n",
1446354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, DummySubdir2Subdir);
1447d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = system(command);
1448354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
1449354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "system(mv %s %s) returned %d\n",
1450354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, DummySubdir2Subdir, rc);
1451d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1452354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
1453354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
1454354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
1455d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(ahanp1, ahlen1, &ino1);
1456d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(ahanp2, ahlen2, &ino2);
1457354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
1458354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1459354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
1460d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1461d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino1 != ROOT_INODE) {
1462354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1463354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handle NOT root! (%lld vs %d)\n",
1464354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino1, ROOT_INODE);
1465d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1466d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino2 != dino) {
1467354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1468354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New parent handle NOT correct! (%lld vs %d)\n",
1469354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino2, dino);
1470354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
1471354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
1472354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
1473354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp1, hlen1, ahanp1, ahlen1) != 0) {
1474354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1475354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handles NOT same!\n");
1476354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
1477354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
1478354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
1479354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp2, hlen2, ahanp2, ahlen2) != 0) {
1480354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1481354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New parent handles NOT same!\n");
1482d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1483d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname1, DUMMY_SUBDIR) != 0) {
1484354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1485354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old entry name NOT correct! (%s vs %s)\n",
1486354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, DUMMY_SUBDIR);
1487d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1488d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname2, DUMMY_SUBDIR) != 0) {
1489354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1490354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New entry name NOT correct! (%s vs %s)\n",
1491354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, DUMMY_SUBDIR);
1492d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1493d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name1, aname1) != 0) {
1494354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1495354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old entry name NOT same! (%s vs %s)\n",
1496354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, aname1);
1497d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1498d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name2, aname2) != 0) {
1499354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1500354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New entry name NOT same! (%s vs %s)\n",
1501354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, aname2);
1502d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1503d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (aretcode != 0) {
1504354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1505354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Return codes NOT same! (%d vs %d)\n",
1506354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    mode, amode);
1507d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1508d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
1509d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
1510d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
1511d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1512d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
1513d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1514d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = rmdir(DummySubdir2Subdir);
1515d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= rmdir(DummySubdir2);
1516d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1517d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
1518354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
1519354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
1520354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
1521d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
1522d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			dm_handle_free(dhanp, dhlen);
1523d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
1524d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
1525d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1526d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
1527d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : mv - enabled on destination directory
1528d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTRENAME
1529d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
1530d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(DIR_ASYNC_NAMESP_EVENT_BASE + 10)) {
1531d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		void *dhanp;
1532d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		size_t dhlen;
1533d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino1, ino2, dino;
1534d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1535d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
1536d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTRENAME;
1537d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
1538d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
15394bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak		sprintf(command, "mv %s %s", DummySubdir2Subdir, DummySubdir);
1540d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
1541e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		if ((rc = mkdir(DummySubdir2, DUMMY_DIR_RW_MODE)) == -1) {
1542d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* No clean up */
1543354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		} else if ((rc = mkdir(DummySubdir2Subdir, DUMMY_DIR_RW_MODE))
1544354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			   == -1) {
1545d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rmdir(DummySubdir2);
1546354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		} else
1547354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		    if ((rc =
1548354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			 dm_path_to_handle(DummySubdir2, &dhanp,
1549354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					   &dhlen)) == -1) {
1550d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rmdir(DummySubdir2Subdir);
1551d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rmdir(DummySubdir2);
1552d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if ((rc = dm_handle_to_ino(dhanp, dhlen, &dino)) == -1) {
1553d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			dm_handle_free(dhanp, dhlen);
1554d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rmdir(DummySubdir2Subdir);
1555d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rmdir(DummySubdir2);
1556d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
1557d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
1558354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
1559354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
1560354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
1561d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
1562d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
1563d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
1564d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1565354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "system(mv %s %s)\n",
1566354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir2Subdir, DummySubdir);
1567d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = system(command);
1568354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
1569354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "system(mv %s %s) returned %d\n",
1570354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir2Subdir, DummySubdir, rc);
1571d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1572354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
1573354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
1574354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
1575d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(ahanp1, ahlen1, &ino1);
1576d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(ahanp2, ahlen2, &ino2);
1577354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
1578354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1579354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
1580d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1581d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino1 != dino) {
1582354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1583354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handle NOT correct! (%lld vs %d)\n",
1584354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino1, dino);
1585d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1586d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino2 != ROOT_INODE) {
1587354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1588354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New parent handle NOT root! (%lld vs %d)\n",
1589354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino2, ROOT_INODE);
1590354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
1591354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
1592354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
1593354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp1, hlen1, ahanp1, ahlen1) != 0) {
1594354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1595354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handles NOT same!\n");
1596354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
1597354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
1598354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
1599354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp2, hlen2, ahanp2, ahlen2) != 0) {
1600354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1601354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New parent handles NOT same!\n");
1602d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1603d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname1, DUMMY_SUBDIR) != 0) {
1604354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1605354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old entry name NOT correct! (%s vs %s)\n",
1606354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, DUMMY_SUBDIR);
1607d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1608d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname2, DUMMY_SUBDIR) != 0) {
1609354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1610354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New entry name NOT correct! (%s vs %s)\n",
1611354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, DUMMY_SUBDIR);
1612d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1613d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name1, aname1) != 0) {
1614354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1615354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old entry name NOT same! (%s vs %s)\n",
1616354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, aname1);
1617d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1618d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name2, aname2) != 0) {
1619354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1620354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New entry name NOT same! (%s vs %s)\n",
1621354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, aname2);
1622d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1623d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (aretcode != 0) {
1624354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1625354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Return codes NOT same! (%d vs %d)\n",
1626354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    mode, amode);
1627d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1628d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
1629d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
1630d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
1631d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1632d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
1633d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1634d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = rmdir(DummySubdir2);
1635d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= rmdir(DummySubdir);
1636d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1637d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
1638354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
1639354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
1640354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
1641d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
1642d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			dm_handle_free(dhanp, dhlen);
1643d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
1644d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
1645d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1646d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
1647d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : symlink - enabled on directory
1648d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTSYMLINK
1649d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
1650d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(DIR_ASYNC_NAMESP_EVENT_BASE + 11)) {
1651d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino1, ino2;
1652d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1653d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
1654d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTSYMLINK;
1655d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
1656d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
1657d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
1658e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		rc = mkdir(DummySubdir, DUMMY_DIR_RW_MODE);
1659d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
1660354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
1661354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
1662354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
1663d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
1664d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
1665d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
1666d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1667354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "symlink(%s, %s)\n",
1668354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, DummySubdir2);
1669d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = symlink(DummySubdir, DummySubdir2);
1670354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
1671354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "symlink(%s, %s) returned %d\n",
1672354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, DummySubdir2, rc);
1673d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1674354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
1675354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
1676354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
1677d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				struct stat statfs;
1678d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1679d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(ahanp1, ahlen1, &ino1);
1680d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(ahanp2, ahlen2, &ino2);
1681d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= lstat(DummySubdir2, &statfs);
1682354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
1683354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1684354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
1685d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1686d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino1 != ROOT_INODE) {
1687354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1688354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handle NOT root! (%lld vs %d)\n",
1689354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino1, ROOT_INODE);
1690d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1691354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else if (ino2 != statfs.st_ino) {
1692354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1693354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Entry handle NOT correct! (%lld vs %d)\n",
1694354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino2, statfs.st_ino);
1695d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1696354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
1697354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
1698354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp1, hlen1, ahanp1, ahlen1) != 0) {
1699354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1700354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handles NOT same!\n");
1701d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1702d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname1, DUMMY_SUBDIR2) != 0) {
1703354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1704354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Symlink entry name NOT correct! (%s vs %s)\n",
1705354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aname1, DUMMY_SUBDIR2);
1706d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1707d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname2, DummySubdir) != 0) {
1708354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1709354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Symlink contents NOT correct! (%s vs %s)\n",
1710354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aname2, DummySubdir);
1711d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1712d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name1, aname1) != 0) {
1713354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1714354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Symlink entry names NOT same! (%s vs %s)\n",
1715354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, aname1);
1716d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1717d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name2, aname2) != 0) {
1718354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1719354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Symlink contents NOT same! (%s vs %s)\n",
1720354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, aname2);
1721d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1722d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (aretcode != 0) {
1723354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1724354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Return codes NOT same! (%d vs %d)\n",
1725354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    mode, amode);
1726d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1727d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
1728d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
1729d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
1730d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1731d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
1732d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1733d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = unlink(DummySubdir2);
1734d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= rmdir(DummySubdir);
1735d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1736d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
1737354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
1738354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
1739354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
1740d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
1741d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
1742d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
1743d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1744d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
1745d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : link - enabled on directory
1746d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTLINK
1747d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
1748d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(DIR_ASYNC_NAMESP_EVENT_BASE + 12)) {
17492c28215423293e443469a07ae7011135d058b671Garrett Cooper#ifdef DIRECTORY_LINKS
1750d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino, ino1, ino2;
1751d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		void *hanp;
1752d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		size_t hlen;
1753d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1754d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
1755d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTLINK;
1756d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
1757d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
1758d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
1759e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		rc = mkdir(DummySubdir, DUMMY_DIR_RW_MODE);
1760d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
1761354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
1762354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
1763354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
1764d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
1765d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
1766d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
1767d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1768354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "link(%s, %s)\n", DummySubdir,
1769354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyLink);
1770d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = link(DummySubdir, DummyLink);
1771354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "link(%s, %s) returned %d\n",
1772354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, DummyLink, rc);
1773d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1774354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
1775354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
1776354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
1777d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(hanp1, hlen1, &ino1);
1778d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(hanp2, hlen2, &ino2);
1779d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(hanp, hlen, &ino);
1780354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
1781354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1782354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
1783d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1784d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino1 != ROOT_INODE) {
1785354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1786354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handle NOT root! (%d vs %d)\n",
1787354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino1, ROOT_INODE);
1788d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1789d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino2 != ino) {
1790354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1791354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Source link handle NOT correct! (%d vs %d)\n",
1792354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino2, ino);
1793d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1794d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name1, DUMMY_LINK) != 0) {
1795354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1796354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Target entry name NOT correct! (%s vs %s)\n",
1797354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, DUMMY_LINK);
1798d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1799d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
1800d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
1801d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
1802d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1803d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
1804d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1805d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = rmdir(DummySubdir);
1806d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= unlink(DummyLink);
1807d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
1808354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
1809354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
1810354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
1811d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
1812d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			dm_handle_free(hanp, hlen);
1813d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
1814d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#else
1815354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_WARN,
1816354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    "Test case not built with DIRECTORY_LINKS defined\n");
18172c28215423293e443469a07ae7011135d058b671Garrett Cooper		DMVAR_SKIP();
1818d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#endif
1819d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
1820d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1821d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
1822d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : open - enabled on directory
1823d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTCREATE
1824d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
1825d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(FILE_ASYNC_NAMESP_EVENT_BASE + 6)) {
1826d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		int fd;
1827d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino1, ino2;
1828d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1829d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
1830d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTCREATE;
1831d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
1832d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
1833d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1834d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation */
1835d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
18364bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak		DMLOG_PRINT(DMLVL_DEBUG, "open(%s)\n", DummyFile);
1837e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		fd = open(DummyFile, O_RDWR | O_CREAT, DUMMY_FILE_RW_MODE);
1838354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_DEBUG, "open(%s) returned %d\n", DummyFile,
1839354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    rc);
1840d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		rc = (fd == -1) ? -1 : 0;
1841d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
1842354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if ((varStatus =
1843354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		     DMVAR_CHKPASSEXP(0, rc, eventExpected,
1844354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				      eventReceived)) == DMSTAT_PASS) {
1845d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			struct stat statfs;
18462c28215423293e443469a07ae7011135d058b671Garrett Cooper
1847d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = dm_handle_to_ino(ahanp1, ahlen1, &ino1);
1848d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= dm_handle_to_ino(ahanp2, ahlen2, &ino2);
1849d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= stat(DummyFile, &statfs);
1850354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if (rc == -1) {
1851354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
1852354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to obtain inode!\n");
1853d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
1854d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (ino1 != ROOT_INODE) {
1855354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
1856354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Parent handle NOT root! (%lld vs %d)\n",
1857354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    ino1, ROOT_INODE);
1858d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
1859d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (ino2 != statfs.st_ino) {
1860354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
1861354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Entry handle NOT correct! (%lld vs %d)\n",
1862354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    ino2, statfs.st_ino);
1863d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
1864d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (strcmp(aname1, DUMMY_FILE) != 0) {
1865354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
1866354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Entry name NOT correct! (%s vs %s)\n",
1867354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    aname1, DUMMY_FILE);
1868d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
1869354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			} else if (dm_handle_cmp(hanp1, hlen1, ahanp1, ahlen1)
1870354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				   != 0) {
1871354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
1872354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Parent handles NOT same!\n");
1873d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
1874d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (strcmp(name1, aname1) != 0) {
1875354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
1876354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Entry names NOT same! (%s vs %s)\n",
1877354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    name1, aname1);
1878d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
1879d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (amode != statfs.st_mode) {
1880354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
1881354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Modes NOT same! (%d vs %d)\n",
1882354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    amode, statfs.st_mode);
1883d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
1884d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			} else if (aretcode != 0) {
1885354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
1886354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Return codes NOT same! (%d vs %d)\n",
1887354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    mode, amode);
1888d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				varStatus = DMSTAT_FAIL;
1889d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
1890d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
1891d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		DMVAR_END(varStatus);
1892d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1893d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation clean up */
1894d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
1895d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		rc = close(fd);
1896d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		rc |= remove(DummyFile);
1897d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
1898d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
1899354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
1900354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to clean up variation! (errno = %d)\n",
1901354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
1902d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
1903d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
1904bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
1905d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
1906d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : remove - enabled on directory
1907d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTREMOVE
1908d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
1909d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(FILE_ASYNC_NAMESP_EVENT_BASE + 7)) {
1910d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		int fd;
1911d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino;
1912d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		struct stat statfs;
1913d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1914d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
1915d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTREMOVE;
1916d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
1917d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
1918d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
1919354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if ((fd =
1920354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		     open(DummyFile, O_RDWR | O_CREAT,
1921354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			  DUMMY_FILE_RW_MODE)) == -1) {
1922d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* No clean up */
1923d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if (((rc = close(fd)) == -1) ||
1924d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			   ((rc = stat(DummyFile, &statfs)) == -1)) {
1925d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			remove(DummyFile);
1926d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
1927d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (fd == -1 || rc == -1) {
1928354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
1929354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
1930354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
1931d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
1932d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
1933d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
1934d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
19354bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak			DMLOG_PRINT(DMLVL_DEBUG, "remove(%s)\n", DummyFile);
1936d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = remove(DummyFile);
1937354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "remove(%s) returned %d\n",
1938354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyFile, rc);
1939d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
1940354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
1941354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
1942354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
1943d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(ahanp1, ahlen1, &ino);
1944354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
1945354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1946354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
1947d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1948d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino != ROOT_INODE) {
1949354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1950354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handle NOT root! (%lld vs %d)\n",
1951354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino, ROOT_INODE);
1952d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1953d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname1, DUMMY_FILE) != 0) {
1954354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1955354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Entry name NOT correct! (%s vs %s)\n",
1956354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aname1, DUMMY_FILE);
1957d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1958354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
1959354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
1960354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp1, hlen1, ahanp1, ahlen1) != 0) {
1961354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1962354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handles NOT same!\n");
1963d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1964354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else if (strcmp(name1, aname1) != 0) {
1965354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1966354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Entry names NOT same! (%s vs %s)\n",
1967354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, aname1);
1968d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1969d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (amode != statfs.st_mode) {
1970354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1971354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Modes NOT same! (%d vs %d)\n",
1972354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    amode, statfs.st_mode);
1973d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1974d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (aretcode != 0) {
1975354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
1976354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Return codes NOT same! (%d vs %d)\n",
1977354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    mode, amode);
1978d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
1979d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
1980d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
1981d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
1982d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1983d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
1984d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
1985d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
1986d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1987d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
1988d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : mv - enabled on source and destination directory
1989d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTRENAME
1990d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
1991d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(FILE_ASYNC_NAMESP_EVENT_BASE + 8)) {
1992d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		int fd;
1993d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino1, ino2;
1994d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
1995d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
1996d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTRENAME;
1997d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
1998d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
19994bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak		sprintf(command, "mv %s %s", DummyFile, DummyFile2);
2000d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
2001354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if ((fd =
2002354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		     open(DummyFile, O_RDWR | O_CREAT,
2003354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			  DUMMY_FILE_RW_MODE)) == -1) {
2004d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* No clean up */
2005d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if ((rc = close(fd)) == -1) {
2006d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			remove(DummyFile);
2007d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2008d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (fd == -1 || rc == -1) {
2009354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2010354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
2011354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
2012d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
2013d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
2014d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
2015d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2016354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "system(mv %s %s)\n",
2017354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyFile, DummyFile2);
2018d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = system(command);
2019354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2020354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "system(mv %s %s) returned %d\n", DummyFile,
2021354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyFile2, rc);
2022d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2023354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
2024354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
2025354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
2026d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(ahanp1, ahlen1, &ino1);
2027d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(ahanp2, ahlen2, &ino2);
2028354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
2029354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2030354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
2031d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2032d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino1 != ROOT_INODE) {
2033354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2034354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handle NOT root! (%lld vs %d)\n",
2035354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino1, ROOT_INODE);
2036d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2037d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino2 != ROOT_INODE) {
2038354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2039354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New parent handle NOT root! (%lld vs %d)\n",
2040354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino2, ROOT_INODE);
2041354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
2042354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
2043354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
2044354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(ahanp1, ahlen1, ahanp2, ahlen2) != 0) {
2045354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2046354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handle NOT equal to new parent handle!\n");
2047354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
2048354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
2049354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
2050354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp1, hlen1, ahanp1, ahlen1) != 0) {
2051354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2052354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handles NOT same!\n");
2053354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
2054354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
2055354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
2056354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp2, hlen2, ahanp2, ahlen2) != 0) {
2057354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2058354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New parent handles NOT same!\n");
2059d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2060d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname1, DUMMY_FILE) != 0) {
2061354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2062354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old entry name NOT correct! (%s vs %s)\n",
2063354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, DUMMY_FILE);
2064d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2065d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname2, DUMMY_FILE2) != 0) {
2066354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2067354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New entry name NOT correct! (%s vs %s)\n",
2068354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, DUMMY_FILE2);
2069d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2070d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name1, aname1) != 0) {
2071354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2072354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old entry name NOT same! (%s vs %s)\n",
2073354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, aname1);
2074d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2075d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name2, aname2) != 0) {
2076354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2077354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New entry name NOT same! (%s vs %s)\n",
2078354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, aname2);
2079d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2080d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (aretcode != 0) {
2081354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2082354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Return codes NOT same! (%d vs %d)\n",
2083354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    mode, amode);
2084d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2085d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
2086d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
2087d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
2088d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2089d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
2090d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2091d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = remove(DummyFile2);
2092d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2093d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
2094354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
2095354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
2096354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
2097d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
2098d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2099d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
2100d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2101d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
2102d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : mv - enabled on source directory
2103d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTRENAME
2104d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
2105d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(FILE_ASYNC_NAMESP_EVENT_BASE + 9)) {
2106d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		int fd;
2107d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		void *dhanp;
2108d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		size_t dhlen;
2109d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino1, ino2, dino;
2110d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2111d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
2112d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTRENAME;
2113d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
2114d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
21154bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak		sprintf(command, "mv %s %s", DummyFile, DummySubdir2File);
2116d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
2117354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if ((fd =
2118354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		     open(DummyFile, O_RDWR | O_CREAT,
2119354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			  DUMMY_FILE_RW_MODE)) == -1) {
2120d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* No clean up */
2121d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if (((rc = close(fd)) == -1) ||
2122354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			   ((rc =
2123354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     mkdir(DummySubdir2, DUMMY_DIR_RW_MODE)) == -1)) {
2124d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			remove(DummyFile);
2125354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		} else
2126354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		    if ((rc =
2127354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			 dm_path_to_handle(DummySubdir2, &dhanp,
2128354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					   &dhlen)) == -1) {
2129d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rmdir(DummySubdir2);
2130d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			remove(DummyFile);
2131d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if ((rc = dm_handle_to_ino(dhanp, dhlen, &dino)) == -1) {
2132d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			dm_handle_free(dhanp, dhlen);
2133d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rmdir(DummySubdir2);
2134d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			remove(DummyFile);
2135d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2136d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (fd == -1 || rc == -1) {
2137354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2138354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
2139354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
2140d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
2141d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
2142d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
2143d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2144354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "system(mv %s %s)\n",
2145354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyFile, DummySubdir2File);
2146d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = system(command);
2147354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2148354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "system(mv %s %s) returned %d\n", DummyFile,
2149354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir2File, rc);
2150d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2151354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
2152354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
2153354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
2154d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(ahanp1, ahlen1, &ino1);
2155d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(ahanp2, ahlen2, &ino2);
2156354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
2157354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2158354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
2159d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2160d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino1 != ROOT_INODE) {
2161354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2162354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handle NOT root! (%lld vs %d)\n",
2163354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino1, ROOT_INODE);
2164d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2165d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino2 != dino) {
2166354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2167354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New parent handle NOT correct! (%lld vs %d)\n",
2168354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino2, dino);
2169354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
2170354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
2171354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
2172354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp1, hlen1, ahanp1, ahlen1) != 0) {
2173354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2174354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handles NOT same!\n");
2175354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
2176354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
2177354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
2178354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp2, hlen2, ahanp2, ahlen2) != 0) {
2179354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2180354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New parent handles NOT same!\n");
2181d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2182d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname1, DUMMY_FILE) != 0) {
2183354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2184354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old entry name NOT correct! (%s vs %s)\n",
2185354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, DUMMY_FILE);
2186d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2187d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname2, DUMMY_FILE) != 0) {
2188354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2189354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New entry name NOT correct! (%s vs %s)\n",
2190354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, DUMMY_FILE);
2191d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2192d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name1, aname1) != 0) {
2193354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2194354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old entry name NOT same! (%s vs %s)\n",
2195354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, aname1);
2196d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2197d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name2, aname2) != 0) {
2198354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2199354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New entry name NOT same! (%s vs %s)\n",
2200354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, aname2);
2201d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2202d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (aretcode != 0) {
2203354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2204354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Return codes NOT same! (%d vs %d)\n",
2205354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    mode, amode);
2206d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2207d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
2208d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
2209d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
2210d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2211d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
2212d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2213d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = remove(DummySubdir2File);
2214d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= rmdir(DummySubdir2);
2215d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2216d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
2217354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
2218354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
2219354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
2220d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
2221d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2222d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
2223d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2224d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
2225d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : mv - enabled on destination directory
2226d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTRENAME
2227d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
2228d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(FILE_ASYNC_NAMESP_EVENT_BASE + 10)) {
2229d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		int fd;
2230d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		void *dhanp;
2231d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		size_t dhlen;
2232d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino1, ino2, dino;
2233d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2234d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
2235d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTRENAME;
2236d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
2237d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
22384bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak		sprintf(command, "mv %s %s", DummySubdir2File, DummyFile);
2239d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
2240e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		if ((rc = mkdir(DummySubdir2, DUMMY_DIR_RW_MODE)) == -1) {
2241d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* No clean up */
2242354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		} else
2243354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		    if ((fd =
2244354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			 open(DummySubdir2File, O_RDWR | O_CREAT,
2245354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			      DUMMY_FILE_RW_MODE)) == -1) {
2246d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rmdir(DummySubdir2);
2247d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if ((rc = close(fd)) == -1) {
2248d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			remove(DummySubdir2File);
2249d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rmdir(DummySubdir2);
2250354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		} else
2251354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		    if ((rc =
2252354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			 dm_path_to_handle(DummySubdir2, &dhanp,
2253354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					   &dhlen)) == -1) {
2254d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			remove(DummySubdir2File);
2255d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rmdir(DummySubdir2);
2256d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if ((rc = dm_handle_to_ino(dhanp, dhlen, &dino)) == -1) {
2257d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			dm_handle_free(dhanp, dhlen);
2258d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			remove(DummySubdir2File);
2259d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rmdir(DummySubdir2);
2260d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2261d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (fd == -1 || rc == -1) {
2262354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2263354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
2264354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
2265d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
2266d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
2267d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
2268d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2269354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "system(mv %s %s)\n",
2270354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir2File, DummyFile);
2271d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = system(command);
2272354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2273354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "system(mv %s %s) returned %d\n",
2274354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir2File, DummyFile, rc);
2275d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2276354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
2277354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
2278354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
2279d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(ahanp1, ahlen1, &ino1);
2280d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(ahanp2, ahlen2, &ino2);
2281354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
2282354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2283354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
2284d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2285d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino1 != dino) {
2286354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2287354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handle NOT correct! (%lld vs %d)\n",
2288354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino1, dino);
2289d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2290d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino2 != ROOT_INODE) {
2291354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2292354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New parent handle NOT root! (%lld vs %d)\n",
2293354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino2, ROOT_INODE);
2294354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
2295354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
2296354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
2297354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp1, hlen1, ahanp1, ahlen1) != 0) {
2298354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2299354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old parent handles NOT same!\n");
2300354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					varStatus = DMSTAT_FAIL;
2301354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
2302354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
2303354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp2, hlen2, ahanp2, ahlen2) != 0) {
2304354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2305354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New parent handles NOT same!\n");
2306d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2307d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname1, DUMMY_FILE) != 0) {
2308354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2309354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old entry name NOT correct! (%s vs %s)\n",
2310354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, DUMMY_FILE);
2311d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2312d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname2, DUMMY_FILE) != 0) {
2313354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2314354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New entry name NOT correct! (%s vs %s)\n",
2315354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, DUMMY_FILE);
2316d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2317d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name1, aname1) != 0) {
2318354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2319354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Old entry name NOT same! (%s vs %s)\n",
2320354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, aname1);
2321d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2322d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name2, aname2) != 0) {
2323354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2324354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "New entry name NOT same! (%s vs %s)\n",
2325354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, aname2);
2326d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2327d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (aretcode != 0) {
2328354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2329354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Return codes NOT same! (%d vs %d)\n",
2330354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    mode, amode);
2331d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2332d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
2333d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
2334d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
2335d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2336d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
2337d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2338d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = remove(DummyFile);
2339d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= rmdir(DummySubdir2);
2340d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2341d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
2342354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
2343354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
2344354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
2345d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
2346d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2347d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
2348d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2349d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
2350d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : symlink - enabled on directory
2351d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTSYMLINK
2352d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
2353d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(FILE_ASYNC_NAMESP_EVENT_BASE + 11)) {
2354d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		int fd;
2355d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino1, ino2;
2356d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2357d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
2358d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTSYMLINK;
2359d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
2360d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
2361d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
2362354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if ((fd =
2363354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		     open(DummyFile, O_RDWR | O_CREAT,
2364354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			  DUMMY_FILE_RW_MODE)) == -1) {
2365d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* No clean up */
2366d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if ((rc = close(fd)) == -1) {
2367d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			remove(DummyFile);
2368d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2369d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (fd == -1 || rc == -1) {
2370354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2371354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
2372354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
2373d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
2374d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
2375d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
2376d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2377354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "symlink(%s, %s)\n", DummyFile,
2378354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyLink);
2379d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = symlink(DummyFile, DummyLink);
2380354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2381354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "symlink(%s, %s) returned %d\n", DummyFile,
2382354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyLink, rc);
2383d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2384354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
2385354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
2386354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
2387d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				struct stat statfs;
2388d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2389d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(ahanp1, ahlen1, &ino1);
2390d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(ahanp2, ahlen2, &ino2);
2391d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= lstat(DummyLink, &statfs);
2392354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
2393354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2394354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
2395d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2396d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino1 != ROOT_INODE) {
2397354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2398354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handle NOT root! (%lld vs %d)\n",
2399354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino1, ROOT_INODE);
2400d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2401354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else if (ino2 != statfs.st_ino) {
2402354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2403354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Entry handle NOT correct! (%lld vs %d)\n",
2404354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino2, statfs.st_ino);
2405d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2406354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				} else
2407354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    if (dm_handle_cmp
2408354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					(hanp1, hlen1, ahanp1, ahlen1) != 0) {
2409354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2410354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handles NOT same!\n");
2411d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2412d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname1, DUMMY_LINK) != 0) {
2413354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2414354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Symlink entry name NOT correct! (%s vs %s)\n",
2415354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aname1, DUMMY_LINK);
2416d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2417d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(aname2, DummyFile) != 0) {
2418354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2419354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Symlink contents NOT correct! (%s vs %s)\n",
2420354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aname2, DummyFile);
2421d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2422d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name1, aname1) != 0) {
2423354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2424354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Symlink entry names NOT same! (%s vs %s)\n",
2425354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, aname1);
2426d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2427d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name2, aname2) != 0) {
2428354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2429354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Symlink contents NOT same! (%s vs %s)\n",
2430354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2, aname2);
2431d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2432d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (aretcode != 0) {
2433354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2434354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Return codes NOT same! (%d vs %d)\n",
2435354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    mode, amode);
2436d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2437d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
2438d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
2439d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
2440d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2441d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
2442d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2443d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = unlink(DummyLink);
2444d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= remove(DummyFile);
2445d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2446d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
2447354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
2448354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
2449354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
2450d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
2451d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2452d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
2453d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2454d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
2455d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : link - enabled on directory
2456d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: DM_EVENT_POSTLINK
2457d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
2458d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(FILE_ASYNC_NAMESP_EVENT_BASE + 12)) {
2459d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_ino_t ino, ino1, ino2;
2460d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		void *hanp;
2461d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		size_t hlen;
2462d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		int fd;
2463d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2464d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
2465d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_POSTLINK;
2466d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
2467d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
2468d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
2469354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if ((fd =
2470354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		     open(DummyFile, O_RDWR | O_CREAT,
2471354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			  DUMMY_FILE_RW_MODE)) == -1) {
2472d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* No clean up */
2473d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if ((rc = dm_fd_to_handle(fd, &hanp, &hlen)) == -1) {
2474d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			close(fd);
2475d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			remove(DummyFile);
2476d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2477d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (fd == -1 || rc == -1) {
2478354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2479354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
2480354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
2481d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
2482d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
2483d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
2484d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2485354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "link(%s, %s)\n", DummyFile,
2486354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyLink);
2487d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = link(DummyFile, DummyLink);
2488354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "link(%s, %s) returned %d\n",
2489354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyFile, DummyLink, rc);
2490d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2491354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if ((varStatus =
2492354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			     DMVAR_CHKPASSEXP(0, rc, eventExpected,
2493354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      eventReceived)) == DMSTAT_PASS) {
2494d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc = dm_handle_to_ino(hanp1, hlen1, &ino1);
2495d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(hanp2, hlen2, &ino2);
2496d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				rc |= dm_handle_to_ino(hanp, hlen, &ino);
2497354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (rc == -1) {
2498354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2499354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Unable to obtain inode!\n");
2500d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2501d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino1 != ROOT_INODE) {
2502354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2503354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Parent handle NOT root! (%d vs %d)\n",
2504354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino1, ROOT_INODE);
2505d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2506d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (ino2 != ino) {
2507354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2508354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Source link handle NOT correct! (%d vs %d)\n",
2509354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ino2, ino);
2510d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2511d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				} else if (strcmp(name1, DUMMY_LINK) != 0) {
2512354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
2513354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Target entry name NOT correct! (%s vs %s)\n",
2514354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1, DUMMY_LINK);
2515d13d74bbf207c2d01598c6fef092a75b93b07c71vapier					varStatus = DMSTAT_FAIL;
2516d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				}
2517d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
2518d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_END(varStatus);
2519d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2520d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
2521d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2522d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = close(fd);
2523d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= remove(DummyFile);
2524d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= remove(DummyLink);
2525d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
2526354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
2527354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
2528354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
2529d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
2530d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			dm_handle_free(hanp, hlen);
2531d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2532d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
2533d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2534d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/* Wait for all pending messages to be handled */
2535d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	EVENT_DELIVERY_DELAY_LOOP;
2536d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2537d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
25384bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak	 *  Last batch of tests will be with events disabled, so clear events
2539d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 *  on dir
2540d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
2541d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMEV_ZERO(events);
2542354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	rc = dm_set_eventlist(sid, dhanp, dhlen, DM_NO_TOKEN, &events,
2543354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			      DM_EVENT_MAX);
2544d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (rc == -1) {
2545354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_ERR,
2546354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    "dm_set_eventlist(dir) failed! (rc = %d, errno = %d)\n",
2547354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    rc, errno);
2548d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		dm_destroy_session(sid);
2549d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		DM_EXIT();
2550d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
2551d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2552d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
2553d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : mkdir - disabled
2554d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: no event
2555d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
2556d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(DIR_ASYNC_NAMESP_EVENT_BASE + 13)) {
2557d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2558d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
2559d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_INVALID;
2560d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
2561d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
2562d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2563d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation */
2564d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
25654bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak		DMLOG_PRINT(DMLVL_DEBUG, "mkdir(%s)\n", DummySubdir);
2566e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		rc = mkdir(DummySubdir, DUMMY_DIR_RW_MODE);
2567354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_DEBUG, "mkdir(%s) returned %d\n", DummySubdir,
2568354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    rc);
2569d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
2570354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMVAR_END(DMVAR_CHKPASSEXP
2571354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			  (0, rc, eventExpected, eventReceived));
2572d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2573d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation clean up */
2574d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
2575d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		rc = rmdir(DummySubdir);
2576d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
2577d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
2578354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2579354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to clean up variation! (errno = %d)\n",
2580354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
2581d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2582d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
2583bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
2584d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
2585d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : rmdir - disabled
2586d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: no event
2587d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
2588d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(DIR_ASYNC_NAMESP_EVENT_BASE + 14)) {
2589d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2590d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
2591d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_INVALID;
2592d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
2593d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
2594d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
2595e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		rc = mkdir(DummySubdir, DUMMY_DIR_RW_MODE);
2596d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
2597354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2598354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
2599354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
2600d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
2601d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
2602d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
2603d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
26044bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak			DMLOG_PRINT(DMLVL_DEBUG, "rmdir(%s)\n", DummySubdir);
2605d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = rmdir(DummySubdir);
2606354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "rmdir(%s) returned %d\n",
2607354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, rc);
2608d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2609354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMVAR_END(DMVAR_CHKPASSEXP
2610354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				  (0, rc, eventExpected, eventReceived));
2611d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2612d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
2613d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2614d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
2615d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2616d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
2617d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : mv - disabled
2618d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: no event
2619d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
2620d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(DIR_ASYNC_NAMESP_EVENT_BASE + 15)) {
2621d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2622d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
2623d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_INVALID;
2624d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
2625d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
26264bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak		sprintf(command, "mv %s %s", DummySubdir, DummySubdir2);
2627d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
2628e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		rc = mkdir(DummySubdir, DUMMY_DIR_RW_MODE);
2629d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
2630354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2631354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
2632354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
2633d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
2634d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
2635d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
2636d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2637354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "system(mv %s %s)\n",
2638354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, DummySubdir2);
2639d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = system(command);
2640354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2641354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "system(mv %s %s) returned %d\n",
2642354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, DummySubdir2, rc);
2643d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2644354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMVAR_END(DMVAR_CHKPASSEXP
2645354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				  (0, rc, eventExpected, eventReceived));
2646d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2647d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
2648d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2649d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = rmdir(DummySubdir2);
2650d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2651d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
2652354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
2653354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
2654354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
2655d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
2656d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2657d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
2658d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2659d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
2660d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : symlink - disabled
2661d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: no event
2662d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
2663d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(DIR_ASYNC_NAMESP_EVENT_BASE + 16)) {
2664d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2665d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
2666d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_INVALID;
2667d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
2668d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
2669d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
2670e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		rc = mkdir(DummySubdir, DUMMY_DIR_RW_MODE);
2671d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
2672354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2673354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
2674354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
2675d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
2676d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
2677d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
2678d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2679354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "symlink(%s, %s)\n",
2680354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, DummySubdir2);
2681d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = symlink(DummySubdir, DummySubdir2);
2682354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2683354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "symlink(%s, %s) returned %d\n",
2684354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, DummySubdir2, rc);
2685d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2686354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMVAR_END(DMVAR_CHKPASSEXP
2687354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				  (0, rc, eventExpected, eventReceived));
2688d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2689d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
2690d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2691d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = unlink(DummySubdir2);
2692d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= rmdir(DummySubdir);
2693d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2694d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
2695354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
2696354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
2697354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
2698d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
2699d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2700d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
2701d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2702d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
2703d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : link - disabled
2704d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: no event
2705d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
2706d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(DIR_ASYNC_NAMESP_EVENT_BASE + 17)) {
27072c28215423293e443469a07ae7011135d058b671Garrett Cooper#ifdef DIRECTORY_LINKS
2708d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		void *hanp;
2709d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		size_t hlen;
2710d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2711d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
2712d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_INVALID;
2713d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
2714d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
2715d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
2716e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		rc = mkdir(DummySubdir, DUMMY_DIR_RW_MODE);
2717d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
2718354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2719354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
2720354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
2721d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
2722d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
2723d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
2724d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2725354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "link(%s, %s)\n", DummySubdir,
2726354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyLink);
2727d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = link(DummySubdir, DummyLink);
2728354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "link(%s, %s) returned %d\n",
2729354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummySubdir, DummyLink, rc);
2730d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2731354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMVAR_END(DMVAR_CHKPASSEXP
2732354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				  (0, rc, eventExpected, eventReceived));
2733d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2734d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
2735d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2736d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = rmdir(DummySubdir);
2737d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= unlink(DummyLink);
2738d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
2739354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
2740354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
2741354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
2742d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
2743d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			dm_handle_free(hanp, hlen);
2744d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2745d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#else
2746354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_WARN,
2747354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    "Test case not built with DIRECTORY_LINKS defined\n");
27482c28215423293e443469a07ae7011135d058b671Garrett Cooper		DMVAR_SKIP();
2749d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#endif
2750d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
2751d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2752d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
2753d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : open - disabled
2754d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: no event
2755d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
2756d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(FILE_ASYNC_NAMESP_EVENT_BASE + 13)) {
2757d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		int fd;
2758d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2759d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
2760d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_INVALID;
2761d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
2762d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
2763d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2764d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation */
2765d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
27664bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak		DMLOG_PRINT(DMLVL_DEBUG, "open(%s)\n", DummyFile);
2767e753fd7967c95651b952dd6fe67d2cb56478056esubrata_modak		fd = open(DummyFile, O_RDWR | O_CREAT, DUMMY_FILE_RW_MODE);
2768354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_DEBUG, "open(%s) returned %d\n", DummyFile,
2769354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    rc);
2770d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		rc = (fd == -1) ? -1 : 0;
2771d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
2772354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMVAR_END(DMVAR_CHKPASSEXP
2773354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			  (0, rc, eventExpected, eventReceived));
2774d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2775d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation clean up */
2776d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
2777d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		rc = close(fd);
2778d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		rc |= remove(DummyFile);
2779d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
2780d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc == -1) {
2781354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2782354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to clean up variation! (errno = %d)\n",
2783354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
2784d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2785d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
2786bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak
2787d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
2788d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : remove - disabled
2789d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: no event
2790d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
2791d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(FILE_ASYNC_NAMESP_EVENT_BASE + 14)) {
2792d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		int fd;
2793d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2794d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
2795d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_INVALID;
2796d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
2797d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
2798d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
2799354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if ((fd =
2800354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		     open(DummyFile, O_RDWR | O_CREAT,
2801354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			  DUMMY_FILE_RW_MODE)) == -1) {
2802d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* No clean up */
2803d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if ((rc = close(fd)) == -1) {
2804d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			remove(DummyFile);
2805d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2806d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (fd == -1 || rc == -1) {
2807354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2808354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
2809354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
2810d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
2811d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
2812d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
2813d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
28144bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak			DMLOG_PRINT(DMLVL_DEBUG, "remove(%s)\n", DummyFile);
2815d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = remove(DummyFile);
2816354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "remove(%s) returned %d\n",
2817354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyFile, rc);
2818d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2819354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMVAR_END(DMVAR_CHKPASSEXP
2820354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				  (0, rc, eventExpected, eventReceived));
2821d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2822d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
2823d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2824d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
2825d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2826d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
2827d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : mv - disabled
2828d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: no event
2829d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
2830d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(FILE_ASYNC_NAMESP_EVENT_BASE + 15)) {
2831d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		int fd;
2832d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2833d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
2834d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_INVALID;
2835d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
2836d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
28374bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak		sprintf(command, "mv %s %s", DummyFile, DummyFile2);
2838d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
2839354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if ((fd =
2840354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		     open(DummyFile, O_RDWR | O_CREAT,
2841354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			  DUMMY_FILE_RW_MODE)) == -1) {
2842d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* No clean up */
2843d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if ((rc = close(fd)) == -1) {
2844d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			remove(DummyFile);
2845d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2846d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (fd == -1 || rc == -1) {
2847354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2848354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
2849354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
2850d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
2851d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
2852d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
2853d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2854354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "system(mv %s %s)\n",
2855354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyFile, DummyFile2);
2856d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = system(command);
2857354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2858354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "system(mv %s %s) returned %d\n", DummyFile,
2859354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyFile2, rc);
2860d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2861354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMVAR_END(DMVAR_CHKPASSEXP
2862354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				  (0, rc, eventExpected, eventReceived));
2863d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2864d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
2865d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2866d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = remove(DummyFile2);
2867d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2868d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
2869354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
2870354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
2871354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
2872d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
2873d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2874d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
2875d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2876d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
2877d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : symlink - disabled
2878d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: no event
2879d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
2880d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(FILE_ASYNC_NAMESP_EVENT_BASE + 16)) {
2881d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		int fd;
2882d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2883d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
2884d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_INVALID;
2885d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
2886d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
2887d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
2888354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if ((fd =
2889354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		     open(DummyFile, O_RDWR | O_CREAT,
2890354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			  DUMMY_FILE_RW_MODE)) == -1) {
2891d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* No clean up */
2892d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if ((rc = close(fd)) == -1) {
2893d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			remove(DummyFile);
2894d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2895d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (fd == -1 || rc == -1) {
2896354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2897354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
2898354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
2899d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
2900d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
2901d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
2902d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2903354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "symlink(%s, %s)\n", DummyFile,
2904354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyLink);
2905d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = symlink(DummyFile, DummyLink);
2906354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2907354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "symlink(%s, %s) returned %d\n", DummyFile,
2908354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyLink, rc);
2909d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2910354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMVAR_END(DMVAR_CHKPASSEXP
2911354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				  (0, rc, eventExpected, eventReceived));
2912d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2913d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
2914d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2915d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = unlink(DummyLink);
2916d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= remove(DummyFile);
2917d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2918d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
2919354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
2920354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
2921354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
2922d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
2923d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2924d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
2925d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2926d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
2927d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * TEST    : link - disabled
2928d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 * EXPECTED: no event
2929d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	 */
2930d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (DMVAR_EXEC(FILE_ASYNC_NAMESP_EVENT_BASE + 17)) {
2931d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		void *hanp;
2932d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		size_t hlen;
2933d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		int fd;
2934d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2935d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Variation set up */
2936d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventExpected = DM_EVENT_INVALID;
2937d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventReceived = DM_EVENT_INVALID;
2938d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		eventResponse = DM_RESP_CONTINUE;
2939d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		EVENT_DELIVERY_DELAY;
2940354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if ((fd =
2941354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		     open(DummyFile, O_RDWR | O_CREAT,
2942354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			  DUMMY_FILE_RW_MODE)) == -1) {
2943d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* No clean up */
2944d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if ((rc = dm_fd_to_handle(fd, &hanp, &hlen)) == -1) {
2945d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			close(fd);
2946d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			remove(DummyFile);
2947d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2948d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (fd == -1 || rc == -1) {
2949354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
2950354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Unable to set up variation! (errno = %d)\n",
2951354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    errno);
2952d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMVAR_SKIP();
2953d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
2954d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation */
2955d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2956354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "link(%s, %s)\n", DummyFile,
2957354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyLink);
2958d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = link(DummyFile, DummyLink);
2959354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "link(%s, %s) returned %d\n",
2960354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DummyFile, DummyLink, rc);
2961d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2962354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMVAR_END(DMVAR_CHKPASSEXP
2963354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				  (0, rc, eventExpected, eventReceived));
2964d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2965d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* Variation clean up */
2966d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			EVENT_DELIVERY_DELAY;
2967d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc = close(fd);
2968d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= remove(DummyFile);
2969d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			rc |= remove(DummyLink);
2970d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
2971354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_DEBUG,
2972354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "Unable to clean up variation! (errno = %d)\n",
2973354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    errno);
2974d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
2975d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			dm_handle_free(hanp, hlen);
2976d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
2977d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
2978d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2979d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	rc = umount(mountPt);
2980d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (rc == -1) {
2981354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_ERR, "umount failed! (rc = %d, errno = %d)\n",
2982354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    rc, errno);
2983d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
2984d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2985d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	pthread_join(tid, NULL);
2986d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2987d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	rc = dm_destroy_session(sid);
2988d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	if (rc == -1) {
2989354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		DMLOG_PRINT(DMLVL_ERR,
2990354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    "dm_destroy_session failed! (rc = %d, errno = %d)\n",
2991354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    rc, errno);
2992d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
2993d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2994d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	DMLOG_STOP();
29952c28215423293e443469a07ae7011135d058b671Garrett Cooper
29962c28215423293e443469a07ae7011135d058b671Garrett Cooper	tst_exit();
2997d13d74bbf207c2d01598c6fef092a75b93b07c71vapier}
2998d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
2999d13d74bbf207c2d01598c6fef092a75b93b07c71vapiervoid *Thread(void *parm)
3000d13d74bbf207c2d01598c6fef092a75b93b07c71vapier{
3001d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	int rc;
3002d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	size_t dmMsgBufLen;
3003d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	dm_eventmsg_t *dmMsg;
3004d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	int bMounted = DM_FALSE;
3005d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	int type;
3006d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	dm_token_t token;
3007d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	dm_eventset_t events;
3008d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	dm_response_t response;
3009d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3010d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	do {
3011d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Loop until message received (wait could be interrupted) */
3012d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		do {
3013d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMLOG_PRINT(DMLVL_DEBUG, "Waiting for event...\n");
3014d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			dmMsgBufLen = 0;
3015d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3016354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			rc = dm_get_events(sid, 1, DM_EV_WAIT, sizeof(dmMsgBuf),
3017354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					   dmMsgBuf, &dmMsgBufLen);
3018354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
3019354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "... dm_get_events returned %d (errno %d)\n",
3020354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    rc, errno);
3021d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} while ((rc == -1) && (errno == EINTR) && (dmMsgBufLen == 0));
3022d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3023d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (rc) {
3024354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_ERR,
3025354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "dm_get_events failed with rc = %d, errno = %d\n",
3026354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    rc, errno);
3027d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			dm_destroy_session(sid);
3028d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DM_EXIT();
3029d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
3030354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			dmMsg = (dm_eventmsg_t *) dmMsgBuf;
3031d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			token = dmMsg->ev_token;
3032d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			type = dmMsg->ev_type;
3033d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3034d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMLOG_PRINT(DMLVL_DEBUG, "Received message %d\n", type);
3035d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
3036d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3037d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (type == DM_EVENT_MOUNT) {
3038d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* SPECIAL CASE: need to set disposition, events and response */
3039354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			dm_mount_event_t *me =
3040354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    DM_GET_VALUE(dmMsg, ev_data, dm_mount_event_t *);
3041d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			void *lhanp = DM_GET_VALUE(me, me_handle1, void *);
3042d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			size_t lhlen = DM_GET_LEN(me, me_handle1);
3043d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3044d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMLOG_PRINT(DMLVL_DEBUG, "Message is DM_EVENT_MOUNT\n");
3045d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMLOG_PRINT(DMLVL_DEBUG, "  Mode: %x\n", me->me_mode);
3046354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "  File system handle: %p\n",
3047354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    lhanp);
3048354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
3049354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "  File system handle length: %d\n", lhlen);
3050354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "  Mountpoint handle: %p\n",
3051354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DM_GET_VALUE(me, me_handle2, void *));
3052354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
3053354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "  Mountpoint handle length: %d\n",
3054354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DM_GET_LEN(me, me_handle2));
3055354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "  Mountpoint path: %s\n",
3056354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DM_GET_VALUE(me, me_name1, char *));
3057354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "  Media designator: %s\n",
3058354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DM_GET_VALUE(me, me_name2, char *));
3059354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "  Root handle: %p\n",
3060354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DM_GET_VALUE(me, me_roothandle, void *));
3061354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "  Root handle length: %d\n",
3062354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DM_GET_LEN(me, me_roothandle));
3063354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3064354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			bMounted = dm_handle_is_valid(lhanp, lhlen);
3065354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3066354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			rc = dm_request_right(sid, lhanp, lhlen, token,
3067354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      DM_RR_WAIT, DM_RIGHT_EXCL);
3068d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
3069354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
3070354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "dm_request_right failed! (rc = %d, errno = %d)\n",
3071354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    rc, errno);
3072d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				dm_destroy_session(sid);
3073d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				DM_EXIT();
3074d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
3075d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3076d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMEV_ZERO(events);
3077d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMEV_SET(DM_EVENT_PREUNMOUNT, events);
3078d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMEV_SET(DM_EVENT_UNMOUNT, events);
3079d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMEV_SET(DM_EVENT_CREATE, events);
3080d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMEV_SET(DM_EVENT_POSTCREATE, events);
3081d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMEV_SET(DM_EVENT_REMOVE, events);
3082d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMEV_SET(DM_EVENT_POSTREMOVE, events);
3083d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMEV_SET(DM_EVENT_RENAME, events);
3084d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMEV_SET(DM_EVENT_POSTRENAME, events);
3085d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMEV_SET(DM_EVENT_SYMLINK, events);
3086d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMEV_SET(DM_EVENT_POSTSYMLINK, events);
3087d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMEV_SET(DM_EVENT_LINK, events);
3088d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			DMEV_SET(DM_EVENT_POSTLINK, events);
3089354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			rc = dm_set_disp(sid, lhanp, lhlen, token, &events,
3090354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					 DM_EVENT_MAX);
3091d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
3092354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
3093354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "dm_set_disp failed! (rc = %d, errno = %d)\n",
3094354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    rc, errno);
3095d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				dm_destroy_session(sid);
3096d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				DM_EXIT();
3097d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
3098d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3099354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			rc = dm_release_right(sid, lhanp, lhlen, token);
3100d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (rc == -1) {
3101354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				DMLOG_PRINT(DMLVL_ERR,
3102354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    "dm_request_right failed! (rc = %d, errno = %d)\n",
3103354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    rc, errno);
3104d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				dm_destroy_session(sid);
3105d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				DM_EXIT();
3106d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
3107d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3108d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			response = DM_RESP_CONTINUE;
3109d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if (type == DM_EVENT_PREUNMOUNT) {
3110d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* SPECIAL CASE: need to set response */
3111354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			dm_namesp_event_t *nse =
3112354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    DM_GET_VALUE(dmMsg, ev_data, dm_namesp_event_t *);
3113354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3114354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
3115354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Message is DM_EVENT_PREUNMOUNT\n");
3116354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "  Unmount mode: %x\n",
3117354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    nse->ne_mode);
3118354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "  File system handle: %p\n",
3119354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DM_GET_VALUE(nse, ne_handle1, void *));
3120354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
3121354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "  File system handle length: %d\n",
3122354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DM_GET_LEN(nse, ne_handle1));
3123354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
3124354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "  Root directory handle: %p\n",
3125354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DM_GET_VALUE(nse, ne_handle2, void *));
3126354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
3127354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "  Root directory handle length: %d\n",
3128354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DM_GET_LEN(nse, ne_handle2));
3129d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3130d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			response = DM_RESP_CONTINUE;
3131d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else if (type == DM_EVENT_UNMOUNT) {
3132d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			/* SPECIAL CASE: need to set response and bMounted */
3133354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			dm_namesp_event_t *nse =
3134354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			    DM_GET_VALUE(dmMsg, ev_data, dm_namesp_event_t *);
3135354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3136354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
3137354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Message is DM_EVENT_UNMOUNT\n");
3138354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "  Unmount mode: %x\n",
3139354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    nse->ne_mode);
3140354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "  File system handle: %p\n",
3141354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DM_GET_VALUE(nse, ne_handle1, void *));
3142354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
3143354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "  File system handle length: %d\n",
3144354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    DM_GET_LEN(nse, ne_handle1));
3145354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG, "  Return code: %x\n",
3146354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    nse->ne_retcode);
3147d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			if (nse->ne_retcode == 0) {
3148d13d74bbf207c2d01598c6fef092a75b93b07c71vapier				bMounted = DM_FALSE;
3149d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
3150d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3151d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			response = DM_RESP_CONTINUE;
3152d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		} else {
3153d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			eventReceived = type;
3154d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			response = eventResponse;
3155d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3156d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			switch (type) {
3157d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			case DM_EVENT_CREATE:
3158354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				{
3159354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					dm_namesp_event_t *nse =
3160354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(dmMsg, ev_data,
3161354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 dm_namesp_event_t *);
3162354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					mode = nse->ne_mode;
3163354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					hanp1 =
3164354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(nse, ne_handle1,
3165354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 void *);
3166354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					hlen1 = DM_GET_LEN(nse, ne_handle1);
3167354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					strcpy(name1,
3168354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					       DM_GET_VALUE(nse, ne_name1,
3169354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							    char *));
3170354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3171354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3172354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Message is DM_EVENT_CREATE\n");
3173354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG, "  Mode: %x\n",
3174354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    mode);
3175354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3176354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Parent handle: %p\n",
3177354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    hanp1);
3178354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3179354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Parent handle length: %d\n",
3180354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    hlen1);
3181354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3182354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Entry name: %s\n",
3183354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1);
3184354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3185354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					break;
3186354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				}
3187d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3188d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			case DM_EVENT_POSTCREATE:
3189354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				{
3190354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					dm_namesp_event_t *nse =
3191354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(dmMsg, ev_data,
3192354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 dm_namesp_event_t *);
3193354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					amode = nse->ne_mode;
3194354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					ahanp1 =
3195354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(nse, ne_handle1,
3196354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 void *);
3197354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					ahlen1 = DM_GET_LEN(nse, ne_handle1);
3198354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					ahanp2 =
3199354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(nse, ne_handle2,
3200354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 void *);
3201354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					ahlen2 = DM_GET_LEN(nse, ne_handle2);
3202354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					strcpy(aname1,
3203354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					       DM_GET_VALUE(nse, ne_name1,
3204354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							    char *));
3205354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					aretcode = nse->ne_retcode;
3206354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3207354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3208354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Message is DM_EVENT_POSTCREATE\n");
3209354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG, "  Mode: %x\n",
3210354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    amode);
3211354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3212354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Parent handle: %p\n",
3213354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ahanp1);
3214354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3215354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Parent handle length: %d\n",
3216354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ahlen1);
3217354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3218354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Entry handle: %p\n",
3219354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ahanp2);
3220354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3221354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Entry handle length: %d\n",
3222354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ahlen2);
3223354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3224354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Entry name: %s\n",
3225354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aname1);
3226354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3227354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Return code: %x\n",
3228354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aretcode);
3229354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3230354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					response = DM_RESP_INVALID;
3231354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					break;
3232354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				}
3233d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3234d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			case DM_EVENT_REMOVE:
3235354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				{
3236354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					dm_namesp_event_t *nse =
3237354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(dmMsg, ev_data,
3238354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 dm_namesp_event_t *);
3239354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					mode = nse->ne_mode;
3240354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					hanp1 =
3241354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(nse, ne_handle1,
3242354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 void *);
3243354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					hlen1 = DM_GET_LEN(nse, ne_handle1);
3244354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					strcpy(name1,
3245354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					       DM_GET_VALUE(nse, ne_name1,
3246354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							    char *));
3247354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3248354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3249354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Message is DM_EVENT_REMOVE\n");
3250354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG, "  Mode: %x\n",
3251354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    mode);
3252354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3253354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Parent handle: %p\n",
3254354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    hanp1);
3255354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3256354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Parent handle length: %d\n",
3257354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    hlen1);
3258354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3259354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Entry name: %s\n",
3260354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1);
3261354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3262354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					break;
3263354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				}
3264d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3265d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			case DM_EVENT_POSTREMOVE:
3266354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				{
3267354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					dm_namesp_event_t *nse =
3268354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(dmMsg, ev_data,
3269354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 dm_namesp_event_t *);
3270354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					amode = nse->ne_mode;
3271354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					ahanp1 =
3272354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(nse, ne_handle1,
3273354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 void *);
3274354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					ahlen1 = DM_GET_LEN(nse, ne_handle1);
3275354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					strcpy(aname1,
3276354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					       DM_GET_VALUE(nse, ne_name1,
3277354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							    char *));
3278354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					aretcode = nse->ne_retcode;
3279354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3280354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3281354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Message is DM_EVENT_POSTREMOVE\n");
3282354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG, "  Mode: %x\n",
3283354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    amode);
3284354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3285354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Parent handle: %p\n",
3286354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ahanp1);
3287354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3288354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Parent handle length: %d\n",
3289354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ahlen1);
3290354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3291354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Entry name: %s\n",
3292354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aname1);
3293354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3294354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Return code: %x\n",
3295354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aretcode);
3296354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3297354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					response = DM_RESP_INVALID;
3298354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					break;
3299354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				}
3300d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3301d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			case DM_EVENT_RENAME:
3302354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				{
3303354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					dm_namesp_event_t *nse =
3304354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(dmMsg, ev_data,
3305354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 dm_namesp_event_t *);
3306354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					hanp1 =
3307354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(nse, ne_handle1,
3308354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 void *);
3309354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					hlen1 = DM_GET_LEN(nse, ne_handle1);
3310354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					hanp2 =
3311354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(nse, ne_handle2,
3312354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 void *);
3313354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					hlen2 = DM_GET_LEN(nse, ne_handle2);
3314354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					strcpy(name1,
3315354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					       DM_GET_VALUE(nse, ne_name1,
3316354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							    char *));
3317354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					strcpy(name2,
3318354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					       DM_GET_VALUE(nse, ne_name2,
3319354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							    char *));
3320354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3321354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3322354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Message is DM_EVENT_RENAME\n");
3323354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3324354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Old parent handle: %p\n",
3325354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    hanp1);
3326354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3327354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Old parent handle length: %d\n",
3328354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    hlen1);
3329354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3330354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  New parent handle: %p\n",
3331354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    hanp2);
3332354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3333354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  New parent handle length: %d\n",
3334354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    hlen2);
3335354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3336354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Old entry name: %s\n",
3337354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1);
3338354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3339354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  New entry name: %s\n",
3340354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2);
3341354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3342354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					break;
3343354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				}
3344d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3345d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			case DM_EVENT_POSTRENAME:
3346354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				{
3347354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					dm_namesp_event_t *nse =
3348354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(dmMsg, ev_data,
3349354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 dm_namesp_event_t *);
3350354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					ahanp1 =
3351354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(nse, ne_handle1,
3352354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 void *);
3353354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					ahlen1 = DM_GET_LEN(nse, ne_handle1);
3354354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					ahanp2 =
3355354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(nse, ne_handle2,
3356354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 void *);
3357354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					ahlen2 = DM_GET_LEN(nse, ne_handle2);
3358354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					strcpy(aname1,
3359354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					       DM_GET_VALUE(nse, ne_name1,
3360354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							    char *));
3361354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					strcpy(aname2,
3362354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					       DM_GET_VALUE(nse, ne_name2,
3363354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							    char *));
3364354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					aretcode = nse->ne_retcode;
3365354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3366354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3367354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Message is DM_EVENT_POSTRENAME\n");
3368354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3369354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Old parent handle: %p\n",
3370354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ahanp1);
3371354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3372354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Old parent handle length: %d\n",
3373354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ahlen1);
3374354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3375354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  New parent handle: %p\n",
3376354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ahanp2);
3377354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3378354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  New parent handle length: %d\n",
3379354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ahlen2);
3380354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3381354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Old entry name: %s\n",
3382354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aname1);
3383354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3384354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  New entry name: %s\n",
3385354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aname2);
3386354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3387354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Return code: %x\n",
3388354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aretcode);
3389354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3390354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					response = DM_RESP_INVALID;
3391354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					break;
3392354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				}
3393d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3394d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			case DM_EVENT_SYMLINK:
3395354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				{
3396354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					dm_namesp_event_t *nse =
3397354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(dmMsg, ev_data,
3398354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 dm_namesp_event_t *);
3399354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					hanp1 =
3400354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(nse, ne_handle1,
3401354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 void *);
3402354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					hlen1 = DM_GET_LEN(nse, ne_handle1);
3403354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					strcpy(name1,
3404354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					       DM_GET_VALUE(nse, ne_name1,
3405354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							    char *));
3406354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					strcpy(name2,
3407354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					       DM_GET_VALUE(nse, ne_name2,
3408354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							    char *));
3409354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3410354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3411354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Message is DM_EVENT_SYMLINK\n");
3412354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3413354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Parent handle: %p\n",
3414354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    hanp1);
3415354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3416354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Parent handle length: %d\n",
3417354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    hlen1);
3418354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3419354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Symlink entry name: %s\n",
3420354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1);
3421354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3422354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Symlink contents: %s\n",
3423354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name2);
3424354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3425354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					break;
3426354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				}
3427d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3428d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			case DM_EVENT_POSTSYMLINK:
3429354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				{
3430354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					dm_namesp_event_t *nse =
3431354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(dmMsg, ev_data,
3432354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 dm_namesp_event_t *);
3433354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					ahanp1 =
3434354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(nse, ne_handle1,
3435354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 void *);
3436354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					ahlen1 = DM_GET_LEN(nse, ne_handle1);
3437354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					ahanp2 =
3438354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(nse, ne_handle2,
3439354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 void *);
3440354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					ahlen2 = DM_GET_LEN(nse, ne_handle2);
3441354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					strcpy(aname1,
3442354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					       DM_GET_VALUE(nse, ne_name1,
3443354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							    char *));
3444354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					strcpy(aname2,
3445354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					       DM_GET_VALUE(nse, ne_name2,
3446354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							    char *));
3447354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					aretcode = nse->ne_retcode;
3448354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3449354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3450354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Message is DM_EVENT_POSTSYMLINK\n");
3451354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3452354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Parent handle: %p\n",
3453354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ahanp1);
3454354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3455354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Parent handle length: %d\n",
3456354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ahlen1);
3457354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3458354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Entry handle: %p\n",
3459354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ahanp2);
3460354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3461354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Entry handle length: %d\n",
3462354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ahlen2);
3463354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3464354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Symlink entry name: %s\n",
3465354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aname1);
3466354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3467354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Symlink contents: %s\n",
3468354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aname2);
3469354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3470354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Return code: %x\n",
3471354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aretcode);
3472354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3473354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					response = DM_RESP_INVALID;
3474354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					break;
3475354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				}
3476d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3477d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			case DM_EVENT_LINK:
3478354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				{
3479354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					dm_namesp_event_t *nse =
3480354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(dmMsg, ev_data,
3481354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 dm_namesp_event_t *);
3482354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					hanp1 =
3483354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(nse, ne_handle1,
3484354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 void *);
3485354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					hlen1 = DM_GET_LEN(nse, ne_handle1);
3486354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					hanp2 =
3487354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(nse, ne_handle2,
3488354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 void *);
3489354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					hlen2 = DM_GET_LEN(nse, ne_handle2);
3490354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					strcpy(name1,
3491354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					       DM_GET_VALUE(nse, ne_name1,
3492354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							    char *));
3493354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3494354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3495354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Message is DM_EVENT_LINK\n");
3496354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3497354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Parent handle: %p\n",
3498354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    hanp1);
3499354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3500354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Parent handle length: %d\n",
3501354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    hlen1);
3502354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3503354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Source link handle: %p\n",
3504354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    hanp2);
3505354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3506354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Source link handle length: %d\n",
3507354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    hlen2);
3508354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3509354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Target entry name: %s\n",
3510354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    name1);
3511354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3512354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					break;
3513354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				}
3514d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3515d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			case DM_EVENT_POSTLINK:
3516354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				{
3517354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					dm_namesp_event_t *nse =
3518354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(dmMsg, ev_data,
3519354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 dm_namesp_event_t *);
3520354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					ahanp1 =
3521354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(nse, ne_handle1,
3522354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 void *);
3523354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					ahlen1 = DM_GET_LEN(nse, ne_handle1);
3524354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					ahanp2 =
3525354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					    DM_GET_VALUE(nse, ne_handle2,
3526354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							 void *);
3527354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					ahlen2 = DM_GET_LEN(nse, ne_handle2);
3528354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					strcpy(aname1,
3529354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					       DM_GET_VALUE(nse, ne_name1,
3530354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao							    char *));
3531354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					aretcode = nse->ne_retcode;
3532354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3533354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3534354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Message is DM_EVENT_POSTLINK\n");
3535354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3536354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Parent handle: %p\n",
3537354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ahanp1);
3538354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3539354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Parent handle length: %d\n",
3540354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ahlen1);
3541354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3542354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Source link handle: %p\n",
3543354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ahanp2);
3544354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3545354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Source link handle length: %d\n",
3546354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    ahlen2);
3547354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3548354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Target entry name: %s\n",
3549354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aname1);
3550354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_DEBUG,
3551354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "  Return code: %x\n",
3552354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    aretcode);
3553354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao
3554354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					response = DM_RESP_INVALID;
3555354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					break;
3556354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				}
3557d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3558d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			default:
3559354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				{
3560354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					DMLOG_PRINT(DMLVL_ERR,
3561354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao						    "Message is unexpected!\n");
3562354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					response = DM_RESP_ABORT;
3563354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					break;
3564354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				}
3565d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			}
3566d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
3567d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3568d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		if (response != DM_RESP_INVALID) {
3569354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			DMLOG_PRINT(DMLVL_DEBUG,
3570354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    "Responding to message %d with %d\n", type,
3571354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				    response);
3572354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			rc = dm_respond_event(sid, token, response,
3573354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      response ==
3574354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      DM_RESP_ABORT ? ABORT_ERRNO : 0,
3575354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao					      0, NULL);
3576d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
3577d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	} while (bMounted);
3578d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
3579d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	pthread_exit(0);
3580ec6edca7aa42b6affd989ef91b5897f96795e40fChris Dearman}
3581