- make sure to clear all pointers when various structures are freed
- if mdc_close can't find the mdc_open_data, then it should expect the close
RPC to fail; if it doesn't, print a stern warning
- Adds replay-single test 32, testing both the case where the close() is the
RPC that detects the eviction (-EIO) and the case where the close() runs
afterwards (-ESTALE)
}
run_test 31 "open(O_CREAT) two, unlink one, |X| unlink one, close two (test mds_cleanup_orphans)"
+# tests for bug 2104; completion without crashing is success. The close is
+# stale, but we always return 0 for close, so the app never sees it.
+test_32() {
+ multiop $DIR/$tfile O_c &
+ pid1=$!
+ multiop $DIR/$tfile O_c &
+ pid2=$!
+ # give multiop a chance to open
+ sleep 1
+ mds_evict_client
+ kill -USR1 $pid1
+ kill -USR1 $pid2
+ return 0
+}
+run_test 32 "close() notices client eviction; close() after client eviction"
+
equals_msg test complete, cleaning up
cleanup