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