From 6497ede7ad4e9fc8e5a5a121bd600df896b7d9c6 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Thu, 11 Feb 2021 13:33:38 -0800 Subject: [PATCH] fstests: remove DMAPI tests Upstream XFS has never supported DMAPI, so remove the tests for this feature. Signed-off-by: Darrick J. Wong Acked-by: Christoph Hellwig Signed-off-by: Eryu Guan --- .gitignore | 79 - Makefile | 3 - common/dmapi | 31 - common/punch | 106 -- common/rc | 4 +- dmapi/Makefile | 16 - dmapi/README | 6 - dmapi/src/Makefile | 21 - dmapi/src/common/Makefile | 23 - dmapi/src/common/cmd/Makefile | 31 - dmapi/src/common/cmd/read_invis.c | 196 --- dmapi/src/common/cmd/set_region.c | 148 -- dmapi/src/common/cmd/set_return_on_destroy.c | 130 -- dmapi/src/common/cmd/write_invis.c | 175 --- dmapi/src/common/lib/Makefile | 31 - dmapi/src/common/lib/dmport.h | 859 ----------- dmapi/src/common/lib/find_session.c | 186 --- dmapi/src/common/lib/hsm.h | 166 --- dmapi/src/common/lib/print.c | 589 -------- dmapi/src/common/lib/stubs.c | 491 ------ dmapi/src/common/lib/util.c | 966 ------------ dmapi/src/sample_hsm/Makefile | 31 - dmapi/src/sample_hsm/README | 62 - dmapi/src/sample_hsm/migfind.c | 280 ---- dmapi/src/sample_hsm/migin.c | 411 ----- dmapi/src/sample_hsm/migout.c | 577 ------- dmapi/src/sample_hsm/mls.c | 320 ---- dmapi/src/sample_hsm/mrmean.c | 325 ---- dmapi/src/sample_hsm/wbee.c | 599 -------- dmapi/src/simple/Makefile | 32 - dmapi/src/simple/dm_create_session.c | 47 - dmapi/src/simple/dm_destroy_session.c | 45 - dmapi/src/simple/dm_find_eventmsg.c | 65 - dmapi/src/simple/dm_getall_sessions.c | 70 - dmapi/src/simple/dm_getall_tokens.c | 65 - dmapi/src/simple/dm_query_session.c | 59 - dmapi/src/suite1/Makefile | 18 - dmapi/src/suite1/cmd/Makefile | 54 - dmapi/src/suite1/cmd/create_userevent.c | 89 -- dmapi/src/suite1/cmd/dm_handle.c | 250 ---- dmapi/src/suite1/cmd/downgrade_right.c | 127 -- dmapi/src/suite1/cmd/fd_to_handle.c | 70 - dmapi/src/suite1/cmd/get_allocinfo.c | 358 ----- dmapi/src/suite1/cmd/get_config_events.c | 180 --- dmapi/src/suite1/cmd/get_dirattrs.c | 161 -- dmapi/src/suite1/cmd/get_dmattr.c | 125 -- dmapi/src/suite1/cmd/get_eventlist.c | 224 --- dmapi/src/suite1/cmd/get_events.c | 119 -- dmapi/src/suite1/cmd/get_fileattr.c | 152 -- dmapi/src/suite1/cmd/get_mountinfo.c | 134 -- dmapi/src/suite1/cmd/get_region.c | 121 -- dmapi/src/suite1/cmd/getall_disp.c | 122 -- dmapi/src/suite1/cmd/getall_dmattr.c | 132 -- dmapi/src/suite1/cmd/handle_to_fshandle.c | 76 - dmapi/src/suite1/cmd/handle_to_path.c | 137 -- dmapi/src/suite1/cmd/init_service.c | 52 - dmapi/src/suite1/cmd/link_test.c | 146 -- dmapi/src/suite1/cmd/make_rt_sparse.c | 136 -- dmapi/src/suite1/cmd/make_sparse.c | 90 -- dmapi/src/suite1/cmd/obj_ref_hold.c | 128 -- dmapi/src/suite1/cmd/obj_ref_query.c | 134 -- dmapi/src/suite1/cmd/obj_ref_rele.c | 128 -- dmapi/src/suite1/cmd/path_to_fshandle.c | 69 - dmapi/src/suite1/cmd/path_to_handle.c | 69 - dmapi/src/suite1/cmd/pending.c | 72 - dmapi/src/suite1/cmd/print_event.c | 1313 ---------------- dmapi/src/suite1/cmd/print_fshandle.c | 67 - dmapi/src/suite1/cmd/probe_hole.c | 113 -- .../src/suite1/cmd/probe_punch_xfsctl_hole.c | 186 --- dmapi/src/suite1/cmd/punch_hole.c | 108 -- dmapi/src/suite1/cmd/query_right.c | 131 -- dmapi/src/suite1/cmd/randomize_file.c | 132 -- dmapi/src/suite1/cmd/release_right.c | 128 -- dmapi/src/suite1/cmd/remove_dmattr.c | 105 -- dmapi/src/suite1/cmd/request_right.c | 153 -- dmapi/src/suite1/cmd/respond_event.c | 82 - dmapi/src/suite1/cmd/rwt.c | 172 --- dmapi/src/suite1/cmd/security_hole.c | 105 -- dmapi/src/suite1/cmd/security_hole2.c | 104 -- dmapi/src/suite1/cmd/set_disp.c | 165 -- dmapi/src/suite1/cmd/set_dmattr.c | 118 -- dmapi/src/suite1/cmd/set_eventlist.c | 162 -- dmapi/src/suite1/cmd/set_fileattr.c | 399 ----- dmapi/src/suite1/cmd/struct_test.c | 222 --- dmapi/src/suite1/cmd/sync_by_handle.c | 99 -- dmapi/src/suite1/cmd/test_assumption.c | 133 -- dmapi/src/suite1/cmd/upgrade_right.c | 128 -- dmapi/src/suite1/function_coverage | 70 - dmapi/src/suite2/DMAPI_aliases | 119 -- dmapi/src/suite2/Makefile | 18 - dmapi/src/suite2/README | 605 -------- dmapi/src/suite2/README_for_check_dmapi | 29 - dmapi/src/suite2/bindir/crttf | 15 - dmapi/src/suite2/bindir/ctf | 16 - dmapi/src/suite2/bindir/ls_to_copy | Bin 29696 -> 0 bytes dmapi/src/suite2/bindir/make_holey | 29 - dmapi/src/suite2/bindir/run_test | 523 ------- dmapi/src/suite2/bindir/stf | 13 - dmapi/src/suite2/bindir/test_allocinfo_1 | 70 - dmapi/src/suite2/bindir/test_allocinfo_2 | 71 - dmapi/src/suite2/create_cpio | 10 - dmapi/src/suite2/data/fail.dat | 90 -- dmapi/src/suite2/data/main.dat | 131 -- dmapi/src/suite2/data/nfs.dat | 146 -- dmapi/src/suite2/data/pending.dat | 62 - dmapi/src/suite2/data/pending_nfs.dat | 44 - dmapi/src/suite2/data/realtime.dat | 111 -- dmapi/src/suite2/data/smallq.dat | 78 - dmapi/src/suite2/data/standard.dat | 295 ---- dmapi/src/suite2/data/standard_nfs.dat | 219 --- dmapi/src/suite2/dist/README | 435 ------ dmapi/src/suite2/lib/errtest.h | 219 --- dmapi/src/suite2/menu_test | 329 ---- dmapi/src/suite2/src/Makefile | 37 - dmapi/src/suite2/src/check_dmapi.c | 247 --- dmapi/src/suite2/src/dm_test_daemon.c | 1327 ----------------- dmapi/src/suite2/src/invis_test.c | 232 --- dmapi/src/suite2/src/mm_fill.c | 64 - dmapi/src/suite2/src/mmap.c | 307 ---- dmapi/src/suite2/src/mmap_cp.c | 60 - dmapi/src/suite2/src/region_test.c | 139 -- dmapi/src/suite2/src/send_msg.c | 102 -- dmapi/src/suite2/src/test_bulkall.c | 310 ---- dmapi/src/suite2/src/test_bulkattr.c | 293 ---- dmapi/src/suite2/src/test_dmattr.c | 509 ------- dmapi/src/suite2/src/test_efault.c | 232 --- dmapi/src/suite2/src/test_eventlist.c | 458 ------ dmapi/src/suite2/src/test_fileattr.c | 698 --------- dmapi/src/suite2/src/test_hole.c | 359 ----- dmapi/src/suite2/src/test_invis.c | 448 ------ dmapi/src/suite2/src/test_region.c | 251 ---- dmapi/src/suite2/src/test_rights.c | 278 ---- tests/xfs/142 | 36 - tests/xfs/142.out | 232 --- tests/xfs/143 | 36 - tests/xfs/143.out | 98 -- tests/xfs/144 | 36 - tests/xfs/144.out | 245 --- tests/xfs/145 | 36 - tests/xfs/145.out | 36 - tests/xfs/146 | 43 - tests/xfs/146.out | 320 ---- tests/xfs/147 | 36 - tests/xfs/147.out | 29 - tests/xfs/150 | 47 - tests/xfs/150.out | 5 - tests/xfs/151 | 92 -- tests/xfs/151.out | 22 - tests/xfs/152 | 41 - tests/xfs/152.out | 10 - tests/xfs/153 | 48 - tests/xfs/153.out | 8 - tests/xfs/154 | 35 - tests/xfs/154.out | 21 - tests/xfs/155 | 67 - tests/xfs/155.out | 8 - tests/xfs/156 | 34 - tests/xfs/156.out | 1 - tests/xfs/157 | 36 - tests/xfs/157.out | 2 - tests/xfs/158 | 81 - tests/xfs/158.out | 6 - tests/xfs/159 | 48 - tests/xfs/159.out | 5 - tests/xfs/160 | 58 - tests/xfs/160.out | 11 - tests/xfs/161 | 47 - tests/xfs/161.out | 12 - tests/xfs/162 | 64 - tests/xfs/162.out | 12 - tests/xfs/163 | 48 - tests/xfs/163.out | 3 - tests/xfs/168 | 92 -- tests/xfs/168.out | 57 - tests/xfs/175 | 54 - tests/xfs/175.out | 63 - tests/xfs/176 | 60 - tests/xfs/176.out | 121 -- tests/xfs/177 | 65 - tests/xfs/177.out | 88 -- tests/xfs/185 | 64 - tests/xfs/185.out | 71 - tests/xfs/group | 25 - 183 files changed, 2 insertions(+), 28154 deletions(-) delete mode 100644 common/dmapi delete mode 100644 dmapi/Makefile delete mode 100644 dmapi/README delete mode 100644 dmapi/src/Makefile delete mode 100644 dmapi/src/common/Makefile delete mode 100644 dmapi/src/common/cmd/Makefile delete mode 100644 dmapi/src/common/cmd/read_invis.c delete mode 100644 dmapi/src/common/cmd/set_region.c delete mode 100644 dmapi/src/common/cmd/set_return_on_destroy.c delete mode 100644 dmapi/src/common/cmd/write_invis.c delete mode 100644 dmapi/src/common/lib/Makefile delete mode 100644 dmapi/src/common/lib/dmport.h delete mode 100644 dmapi/src/common/lib/find_session.c delete mode 100644 dmapi/src/common/lib/hsm.h delete mode 100644 dmapi/src/common/lib/print.c delete mode 100644 dmapi/src/common/lib/stubs.c delete mode 100644 dmapi/src/common/lib/util.c delete mode 100644 dmapi/src/sample_hsm/Makefile delete mode 100644 dmapi/src/sample_hsm/README delete mode 100644 dmapi/src/sample_hsm/migfind.c delete mode 100644 dmapi/src/sample_hsm/migin.c delete mode 100644 dmapi/src/sample_hsm/migout.c delete mode 100644 dmapi/src/sample_hsm/mls.c delete mode 100644 dmapi/src/sample_hsm/mrmean.c delete mode 100644 dmapi/src/sample_hsm/wbee.c delete mode 100644 dmapi/src/simple/Makefile delete mode 100644 dmapi/src/simple/dm_create_session.c delete mode 100644 dmapi/src/simple/dm_destroy_session.c delete mode 100644 dmapi/src/simple/dm_find_eventmsg.c delete mode 100644 dmapi/src/simple/dm_getall_sessions.c delete mode 100644 dmapi/src/simple/dm_getall_tokens.c delete mode 100644 dmapi/src/simple/dm_query_session.c delete mode 100644 dmapi/src/suite1/Makefile delete mode 100644 dmapi/src/suite1/cmd/Makefile delete mode 100644 dmapi/src/suite1/cmd/create_userevent.c delete mode 100644 dmapi/src/suite1/cmd/dm_handle.c delete mode 100644 dmapi/src/suite1/cmd/downgrade_right.c delete mode 100644 dmapi/src/suite1/cmd/fd_to_handle.c delete mode 100644 dmapi/src/suite1/cmd/get_allocinfo.c delete mode 100644 dmapi/src/suite1/cmd/get_config_events.c delete mode 100644 dmapi/src/suite1/cmd/get_dirattrs.c delete mode 100644 dmapi/src/suite1/cmd/get_dmattr.c delete mode 100644 dmapi/src/suite1/cmd/get_eventlist.c delete mode 100644 dmapi/src/suite1/cmd/get_events.c delete mode 100644 dmapi/src/suite1/cmd/get_fileattr.c delete mode 100644 dmapi/src/suite1/cmd/get_mountinfo.c delete mode 100644 dmapi/src/suite1/cmd/get_region.c delete mode 100644 dmapi/src/suite1/cmd/getall_disp.c delete mode 100644 dmapi/src/suite1/cmd/getall_dmattr.c delete mode 100644 dmapi/src/suite1/cmd/handle_to_fshandle.c delete mode 100644 dmapi/src/suite1/cmd/handle_to_path.c delete mode 100644 dmapi/src/suite1/cmd/init_service.c delete mode 100644 dmapi/src/suite1/cmd/link_test.c delete mode 100644 dmapi/src/suite1/cmd/make_rt_sparse.c delete mode 100644 dmapi/src/suite1/cmd/make_sparse.c delete mode 100644 dmapi/src/suite1/cmd/obj_ref_hold.c delete mode 100644 dmapi/src/suite1/cmd/obj_ref_query.c delete mode 100644 dmapi/src/suite1/cmd/obj_ref_rele.c delete mode 100644 dmapi/src/suite1/cmd/path_to_fshandle.c delete mode 100644 dmapi/src/suite1/cmd/path_to_handle.c delete mode 100644 dmapi/src/suite1/cmd/pending.c delete mode 100644 dmapi/src/suite1/cmd/print_event.c delete mode 100644 dmapi/src/suite1/cmd/print_fshandle.c delete mode 100644 dmapi/src/suite1/cmd/probe_hole.c delete mode 100644 dmapi/src/suite1/cmd/probe_punch_xfsctl_hole.c delete mode 100644 dmapi/src/suite1/cmd/punch_hole.c delete mode 100644 dmapi/src/suite1/cmd/query_right.c delete mode 100644 dmapi/src/suite1/cmd/randomize_file.c delete mode 100644 dmapi/src/suite1/cmd/release_right.c delete mode 100644 dmapi/src/suite1/cmd/remove_dmattr.c delete mode 100644 dmapi/src/suite1/cmd/request_right.c delete mode 100644 dmapi/src/suite1/cmd/respond_event.c delete mode 100644 dmapi/src/suite1/cmd/rwt.c delete mode 100644 dmapi/src/suite1/cmd/security_hole.c delete mode 100644 dmapi/src/suite1/cmd/security_hole2.c delete mode 100644 dmapi/src/suite1/cmd/set_disp.c delete mode 100644 dmapi/src/suite1/cmd/set_dmattr.c delete mode 100644 dmapi/src/suite1/cmd/set_eventlist.c delete mode 100644 dmapi/src/suite1/cmd/set_fileattr.c delete mode 100644 dmapi/src/suite1/cmd/struct_test.c delete mode 100644 dmapi/src/suite1/cmd/sync_by_handle.c delete mode 100644 dmapi/src/suite1/cmd/test_assumption.c delete mode 100644 dmapi/src/suite1/cmd/upgrade_right.c delete mode 100644 dmapi/src/suite1/function_coverage delete mode 100644 dmapi/src/suite2/DMAPI_aliases delete mode 100644 dmapi/src/suite2/Makefile delete mode 100644 dmapi/src/suite2/README delete mode 100644 dmapi/src/suite2/README_for_check_dmapi delete mode 100755 dmapi/src/suite2/bindir/crttf delete mode 100755 dmapi/src/suite2/bindir/ctf delete mode 100644 dmapi/src/suite2/bindir/ls_to_copy delete mode 100755 dmapi/src/suite2/bindir/make_holey delete mode 100755 dmapi/src/suite2/bindir/run_test delete mode 100755 dmapi/src/suite2/bindir/stf delete mode 100755 dmapi/src/suite2/bindir/test_allocinfo_1 delete mode 100755 dmapi/src/suite2/bindir/test_allocinfo_2 delete mode 100644 dmapi/src/suite2/create_cpio delete mode 100644 dmapi/src/suite2/data/fail.dat delete mode 100644 dmapi/src/suite2/data/main.dat delete mode 100644 dmapi/src/suite2/data/nfs.dat delete mode 100644 dmapi/src/suite2/data/pending.dat delete mode 100644 dmapi/src/suite2/data/pending_nfs.dat delete mode 100644 dmapi/src/suite2/data/realtime.dat delete mode 100644 dmapi/src/suite2/data/smallq.dat delete mode 100644 dmapi/src/suite2/data/standard.dat delete mode 100644 dmapi/src/suite2/data/standard_nfs.dat delete mode 100644 dmapi/src/suite2/dist/README delete mode 100644 dmapi/src/suite2/lib/errtest.h delete mode 100755 dmapi/src/suite2/menu_test delete mode 100644 dmapi/src/suite2/src/Makefile delete mode 100644 dmapi/src/suite2/src/check_dmapi.c delete mode 100644 dmapi/src/suite2/src/dm_test_daemon.c delete mode 100644 dmapi/src/suite2/src/invis_test.c delete mode 100644 dmapi/src/suite2/src/mm_fill.c delete mode 100644 dmapi/src/suite2/src/mmap.c delete mode 100644 dmapi/src/suite2/src/mmap_cp.c delete mode 100644 dmapi/src/suite2/src/region_test.c delete mode 100644 dmapi/src/suite2/src/send_msg.c delete mode 100644 dmapi/src/suite2/src/test_bulkall.c delete mode 100644 dmapi/src/suite2/src/test_bulkattr.c delete mode 100644 dmapi/src/suite2/src/test_dmattr.c delete mode 100644 dmapi/src/suite2/src/test_efault.c delete mode 100644 dmapi/src/suite2/src/test_eventlist.c delete mode 100644 dmapi/src/suite2/src/test_fileattr.c delete mode 100644 dmapi/src/suite2/src/test_hole.c delete mode 100644 dmapi/src/suite2/src/test_invis.c delete mode 100644 dmapi/src/suite2/src/test_region.c delete mode 100644 dmapi/src/suite2/src/test_rights.c delete mode 100755 tests/xfs/142 delete mode 100644 tests/xfs/142.out delete mode 100755 tests/xfs/143 delete mode 100644 tests/xfs/143.out delete mode 100755 tests/xfs/144 delete mode 100644 tests/xfs/144.out delete mode 100755 tests/xfs/145 delete mode 100644 tests/xfs/145.out delete mode 100755 tests/xfs/146 delete mode 100644 tests/xfs/146.out delete mode 100755 tests/xfs/147 delete mode 100644 tests/xfs/147.out delete mode 100755 tests/xfs/150 delete mode 100644 tests/xfs/150.out delete mode 100755 tests/xfs/151 delete mode 100644 tests/xfs/151.out delete mode 100755 tests/xfs/152 delete mode 100644 tests/xfs/152.out delete mode 100755 tests/xfs/153 delete mode 100644 tests/xfs/153.out delete mode 100755 tests/xfs/154 delete mode 100644 tests/xfs/154.out delete mode 100755 tests/xfs/155 delete mode 100644 tests/xfs/155.out delete mode 100755 tests/xfs/156 delete mode 100644 tests/xfs/156.out delete mode 100755 tests/xfs/157 delete mode 100644 tests/xfs/157.out delete mode 100755 tests/xfs/158 delete mode 100644 tests/xfs/158.out delete mode 100755 tests/xfs/159 delete mode 100644 tests/xfs/159.out delete mode 100755 tests/xfs/160 delete mode 100644 tests/xfs/160.out delete mode 100755 tests/xfs/161 delete mode 100644 tests/xfs/161.out delete mode 100755 tests/xfs/162 delete mode 100644 tests/xfs/162.out delete mode 100755 tests/xfs/163 delete mode 100644 tests/xfs/163.out delete mode 100755 tests/xfs/168 delete mode 100644 tests/xfs/168.out delete mode 100755 tests/xfs/175 delete mode 100644 tests/xfs/175.out delete mode 100755 tests/xfs/176 delete mode 100644 tests/xfs/176.out delete mode 100755 tests/xfs/177 delete mode 100644 tests/xfs/177.out delete mode 100755 tests/xfs/185 delete mode 100644 tests/xfs/185.out diff --git a/.gitignore b/.gitignore index f988a44a..03c03be5 100644 --- a/.gitignore +++ b/.gitignore @@ -178,85 +178,6 @@ /src/log-writes/replay-log /src/perf/*.pyc -# dmapi/ binaries -/dmapi/src/common/cmd/read_invis -/dmapi/src/common/cmd/set_region -/dmapi/src/common/cmd/set_return_on_destroy -/dmapi/src/common/cmd/write_invis -/dmapi/src/sample_hsm/migfind -/dmapi/src/sample_hsm/migin -/dmapi/src/sample_hsm/migout -/dmapi/src/sample_hsm/mls -/dmapi/src/sample_hsm/mrmean -/dmapi/src/sample_hsm/wbee -/dmapi/src/simple/dm_create_session -/dmapi/src/simple/dm_destroy_session -/dmapi/src/simple/dm_find_eventmsg -/dmapi/src/simple/dm_getall_sessions -/dmapi/src/simple/dm_getall_tokens -/dmapi/src/simple/dm_query_session -/dmapi/src/suite1/cmd/create_userevent -/dmapi/src/suite1/cmd/dm_handle -/dmapi/src/suite1/cmd/downgrade_right -/dmapi/src/suite1/cmd/fd_to_handle -/dmapi/src/suite1/cmd/get_allocinfo -/dmapi/src/suite1/cmd/get_config_events -/dmapi/src/suite1/cmd/get_dirattrs -/dmapi/src/suite1/cmd/get_dmattr -/dmapi/src/suite1/cmd/get_eventlist -/dmapi/src/suite1/cmd/get_events -/dmapi/src/suite1/cmd/get_fileattr -/dmapi/src/suite1/cmd/get_mountinfo -/dmapi/src/suite1/cmd/get_region -/dmapi/src/suite1/cmd/getall_disp -/dmapi/src/suite1/cmd/getall_dmattr -/dmapi/src/suite1/cmd/handle_to_fshandle -/dmapi/src/suite1/cmd/handle_to_path -/dmapi/src/suite1/cmd/init_service -/dmapi/src/suite1/cmd/link_test -/dmapi/src/suite1/cmd/make_sparse -/dmapi/src/suite1/cmd/obj_ref_hold -/dmapi/src/suite1/cmd/obj_ref_query -/dmapi/src/suite1/cmd/obj_ref_rele -/dmapi/src/suite1/cmd/path_to_fshandle -/dmapi/src/suite1/cmd/path_to_handle -/dmapi/src/suite1/cmd/pending -/dmapi/src/suite1/cmd/print_event -/dmapi/src/suite1/cmd/print_fshandle -/dmapi/src/suite1/cmd/probe_hole -/dmapi/src/suite1/cmd/probe_punch_xfsctl_hole -/dmapi/src/suite1/cmd/punch_hole -/dmapi/src/suite1/cmd/query_right -/dmapi/src/suite1/cmd/randomize_file -/dmapi/src/suite1/cmd/release_right -/dmapi/src/suite1/cmd/remove_dmattr -/dmapi/src/suite1/cmd/request_right -/dmapi/src/suite1/cmd/respond_event -/dmapi/src/suite1/cmd/rwt -/dmapi/src/suite1/cmd/set_disp -/dmapi/src/suite1/cmd/set_dmattr -/dmapi/src/suite1/cmd/set_eventlist -/dmapi/src/suite1/cmd/set_fileattr -/dmapi/src/suite1/cmd/struct_test -/dmapi/src/suite1/cmd/sync_by_handle -/dmapi/src/suite1/cmd/test_assumption -/dmapi/src/suite1/cmd/upgrade_right -/dmapi/src/suite2/src/dm_test_daemon -/dmapi/src/suite2/src/invis_test -/dmapi/src/suite2/src/mmap -/dmapi/src/suite2/src/region_test -/dmapi/src/suite2/src/send_msg -/dmapi/src/suite2/src/test_bulkall -/dmapi/src/suite2/src/test_bulkattr -/dmapi/src/suite2/src/test_dmattr -/dmapi/src/suite2/src/test_efault -/dmapi/src/suite2/src/test_eventlist -/dmapi/src/suite2/src/test_fileattr -/dmapi/src/suite2/src/test_hole -/dmapi/src/suite2/src/test_invis -/dmapi/src/suite2/src/test_region -/dmapi/src/suite2/src/test_rights - # Symlinked files /tests/generic/035.out /tests/generic/050.out diff --git a/Makefile b/Makefile index 9fd37e0c..48927bcd 100644 --- a/Makefile +++ b/Makefile @@ -39,9 +39,6 @@ endif LIB_SUBDIRS = include lib TOOL_SUBDIRS = ltp src m4 common -ifeq ($(HAVE_DMAPI), true) -TOOL_SUBDIRS += dmapi -endif export TESTS_DIR = tests SUBDIRS = $(LIB_SUBDIRS) $(TOOL_SUBDIRS) $(TESTS_DIR) diff --git a/common/dmapi b/common/dmapi deleted file mode 100644 index 5f7e56f7..00000000 --- a/common/dmapi +++ /dev/null @@ -1,31 +0,0 @@ -##/bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# dmapi functions - -# Commands relitive to dmapi qa - -DMAPI_QASUITE1_DIR=$here/dmapi/src/suite1/ -DMAPI_QASUITE2_DIR=$here/dmapi/src/suite2/ -DMAPI_COMMON_DIR=$here/dmapi/src/common/ - -DMAPI_LS_TO_COPY_PATH=$DMAPI_QASUITE2_DIR/bindir/ls_to_copy - -_dmapi_scratch_mount () { - if [ `echo "$MOUNT_OPTIONS" | grep -c dmapi` -gt 0 -o \ - `echo "$MOUNT_OPTIONS" | grep -c dmi` -gt 0 ] ; then - #already got dmapi options set - _try_scratch_mount - dmapi_mount_result=$? - else - _try_scratch_mount "-o dmapi,mtpt=$SCRATCH_MNT" - dmapi_mount_result=$? - fi - - if [ $dmapi_mount_result -ne 0 ] ; then - _notrun "Assuming DMAPI modules are not loaded" - fi -} - - diff --git a/common/punch b/common/punch index 391d4394..b6c337e7 100644 --- a/common/punch +++ b/common/punch @@ -4,9 +4,6 @@ # # common functions for excersizing hole punches with extent size hints etc. -# source dmap_scratch_mount etc. -. ./common/dmapi - _spawn_test_file() { echo "# spawning test file with $*" local blksize=$1 @@ -39,28 +36,6 @@ _spawn_test_file() { fi } -_do_punch() { - echo "# punching with $*" - # punch or bite the ear off $test_file to create a hole - local blksize=$1 - local punch_offset=`expr $2 \* $blksize` - local punch_size=`expr $3 \* $blksize` - local punch_type=$4 # u for unresvsp, d for dm_punch - local test_file=$5 - - if [ "$punch_type" == "u" ]; then - echo "+ hole punch using unresvsp" - $XFS_IO_PROG -f \ - -c "unresvsp $punch_offset $punch_size" \ - $test_file - fi - if [ "$punch_type" == "d" ]; then - echo "+ hole punch using dmapi punch_hole" - ${DMAPI_QASUITE1_DIR}cmd/punch_hole -o $punch_offset -l $punch_size \ - ${SCRATCH_MNT}/$test_file - fi -} - _do_write() { echo "# writing with $*" local blksize=$1 @@ -82,87 +57,6 @@ _do_bmap() { $test_file } -_test_punch() { - echo "# testing $* ..." - local blksize=$1 - # all points and sizes below are in terms of filesystem blocks - local extsize_hint_blks=$2 # extent size hint in FS blocks, 0=do not set - local file_size_blks=$3 # the file size in blocks - local punch_points_blks=( $4 ) # array of places to punch holes in the file - local punch_sizes_blks=( $5 ) # array of size of each punch in blocks - local punch_types=( $6 ) # array of u=unresvsp or d=dm_punch - local write_points_blks=( $7 ) # array of places to pwrite in the file - local write_sizes_blks=( $8 ) # array of size of each write - - local punch_write_order=( $9 ) # array of punch/write operation order - # e.g. "w p w w p" means: do 1st write... - # then 1st punch, 2nd & 3rd write, 2nd punch - local resvsp=${10} # if "noresv" then don't resvsp on file create - local filename=punch_test_file - - cd / - _scratch_unmount >/dev/null 2>&1 - - _scratch_mkfs_xfs -bsize=$blksize >/dev/null 2>&1 \ - || _fail "mkfs failed" - - local this_punch_type="" - local dmap_punch_used=0 - for this_punch_type in "${punch_types[@]}"; do - [ "$this_punch_type" == "d" ] && dmap_punch_used=1 - done - if [ $dmap_punch_used -ne 0 ]; then - # a punch type of dm_punch has been specified, do a dmapi mount - echo "+ mounting with dmapi enabled" - _dmapi_scratch_mount - else - # only unresvsp punch type is used, just do a normal mount - _scratch_mount - fi - - cd $SCRATCH_MNT - - # check a size is specified for each punch - [ ${#punch_points_blks[*]} -eq ${#punch_sizes_blks[*]} ] \ - || _fail "num punch points given does not equal num punch sizes" - - # check a type is specified for each punch - [ ${#punch_points_blks[*]} -eq ${#punch_types[*]} ] \ - || _fail "num punch points given does not equal num punch types" - - # check a size is specified for each write - [ ${#write_points_blks[*]} -eq ${#write_sizes_blks[*]} ] \ - || _fail "num write points given does not equal num write sizes" - - # check punch_write_order operations match number of punches + writes - local total_pw_operations=`expr ${#punch_points_blks[*]} + ${#write_points_blks[*]}` - [ $total_pw_operations -eq ${#punch_write_order[*]} ] \ - || _fail "punch_write_order ops doesn't match number of punches + writes" - - # create the file and setup extent size hint - _spawn_test_file $blksize $file_size_blks $extsize_hint_blks $filename $resvsp - - # do the writes and punches - local operation="" - local punch_index=0 - local write_index=0 - for operation in "${punch_write_order[@]}"; do - if [ "$operation" == "p" ]; then - _do_punch $blksize ${punch_points_blks[$punch_index]} \ - ${punch_sizes_blks[$punch_index]} ${punch_types[$punch_index]} \ - $filename - punch_index=`expr $punch_index + 1` - fi - if [ "$operation" == "w" ]; then - _do_write $blksize ${write_points_blks[$write_index]} \ - ${write_sizes_blks[$write_index]} $filename - write_index=`expr $write_index + 1` - fi - sync - _do_bmap $filename # print out the state of the file - done -} - _coalesce_extents() { block_size=$1 diff --git a/common/rc b/common/rc index 0ce3cb0d..aa9962c3 100644 --- a/common/rc +++ b/common/rc @@ -281,8 +281,8 @@ _mount_ops_filter() [ $last_index -gt 0 ] && shift $last_index local fs_escaped=$1 - echo $params | sed -e 's/dmapi/dmi/' \ - | $PERL_PROG -ne "s#mtpt=[^,|^\n|^\s]*#mtpt=$fs_escaped\1\2#; print;" + echo $params | \ + $PERL_PROG -ne "s#mtpt=[^,|^\n|^\s]*#mtpt=$fs_escaped\1\2#; print;" } diff --git a/dmapi/Makefile b/dmapi/Makefile deleted file mode 100644 index 88da5b30..00000000 --- a/dmapi/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0+ -# Copyright (C) 2011 SGI All Rights Reserved. -# -# -# -TOPDIR = .. - -include $(TOPDIR)/include/builddefs - -SUBDIRS = src - -default: $(SUBDIRS) - -include $(BUILDRULES) - -install: default diff --git a/dmapi/README b/dmapi/README deleted file mode 100644 index 259cdeed..00000000 --- a/dmapi/README +++ /dev/null @@ -1,6 +0,0 @@ - -The tests in this directory are a collection of suites that were developed -over the time the DMAPI spec was being created and when DMAPI was being -implemented on Irix. In many cases, each suite was built on an earlier suite. -Many of these tests have been ported to work with XFS/DMAPI on linux 2.4; many -are untouched from their Irix versions. diff --git a/dmapi/src/Makefile b/dmapi/src/Makefile deleted file mode 100644 index 6220b968..00000000 --- a/dmapi/src/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0+ -# Copyright (C) 2011 SGI All Rights Reserved. -# -# -# -TOPDIR = ../.. - -include $(TOPDIR)/include/builddefs - -LIB_SUBDIRS = common -TOOL_SUBDIRS = sample_hsm simple suite1 suite2 - -SUBDIRS = $(LIB_SUBDIRS) $(TOOL_SUBDIRS) - -default: $(SUBDIRS) - -$(TOOL_SUBDIRS): $(LIB_SUBDIRS) - -include $(BUILDRULES) - -install: default diff --git a/dmapi/src/common/Makefile b/dmapi/src/common/Makefile deleted file mode 100644 index 04413241..00000000 --- a/dmapi/src/common/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0+ -# Copyright (C) 2011 SGI All Rights Reserved. -# -# -# -TOPDIR = ../../.. - -include $(TOPDIR)/include/builddefs - -LIB_SUBDIRS = lib -TOOL_SUBDIRS = cmd - -SUBDIRS = $(LIB_SUBDIRS) $(TOOL_SUBDIRS) - -default: $(SUBDIRS) - -$(TOOL_SUBDIRS): $(LIB_SUBDIRS) - -include $(BUILDRULES) - -install: default - -install-dev: diff --git a/dmapi/src/common/cmd/Makefile b/dmapi/src/common/cmd/Makefile deleted file mode 100644 index 909f1393..00000000 --- a/dmapi/src/common/cmd/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0+ -# Copyright (C) 2011 SGI All Rights Reserved. -# -# -# -TOPDIR = ../../../.. - -include $(TOPDIR)/include/builddefs - -TARGETS = read_invis set_region set_return_on_destroy write_invis - -CFILES = $(TARGETS:=.c) -LDIRT = $(TARGETS) - -CFLAGS += -I.. -I/usr/include/xfs - -LLDLIBS = $(TOPDIR)/dmapi/src/common/lib/libdmtest.la $(LIBDM) - -default: depend $(TARGETS) - -depend: .dep - -include $(BUILDRULES) - -install install-dev: default - -$(TARGETS): - @echo " [CC] $@" - $(Q)$(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) - --include .dep diff --git a/dmapi/src/common/cmd/read_invis.c b/dmapi/src/common/cmd/read_invis.c deleted file mode 100644 index 4ea3c057..00000000 --- a/dmapi/src/common/cmd/read_invis.c +++ /dev/null @@ -1,196 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include - -#include -#include -#include -#include -#include -#include - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_read_invis(). The -command line is: - - read_invis [-o offset] [-l length] [-s sid] [-c char] \ - [-S storefile] {pathname|handle} - -where: -'offset' is the offset of the start of the write (0 is the default), -'length' is the length of the write in bytes (1 is the default), -'sid' is the session ID whose events you you are interested in. -'pathname' is the name of the file to be written. -'char' is ignored--it just allows read_invis and write_invis to have - interchangeable commandlines without having to fuss with the params. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-o offset] [-l length] " - "[-s sid] [-c char] " - "[-S storefile] {pathname|handle}\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - char *object = NULL; - dm_off_t offset = 0; - long long lltemp; - dm_size_t length = 1; - unsigned long long ulltemp; - char *bufp = NULL; - void *hanp; - size_t hlen; - dm_ssize_t rc; - char *name; - int opt; - int i; - char *storefile = NULL; - int storefd = 0; - int exit_status = 0; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "o:l:s:c:S:")) != EOF) { - switch (opt) { - case 'o': - sscanf(optarg, "%lld", &lltemp); - offset = (dm_off_t) lltemp; - break; - case 'l': - sscanf(optarg, "%llu", &ulltemp); - length = (dm_size_t) ulltemp; - break; - case 's': - sid = atol(optarg); - break; - case 'c': - /* This is a no-op, it just allows read_invis - * and write_invis to have interchangeable - * commandlines, without having to fuss with - * the params. - */ - break; - case 'S': - storefile = optarg; - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - object = argv[optind]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file's handle. */ - - if (opaque_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for %s\n", object); - exit(1); - } - - if (length > 0) { - /* In case it is a realtime file, align the buffer on a - sufficiently big boundary. - */ - if ((bufp = memalign(4096, length)) == NULL) { - fprintf(stderr, "malloc of %llu bytes failed\n", - (unsigned long long) length); - exit(1); - } - memset(bufp, '\0', length); - } - - if (storefile) { - off_t lret; - - if ((storefd = open(storefile, O_WRONLY|O_CREAT, 0777)) == -1) { - fprintf(stderr, "unable to open store file for write (%s), errno = %d\n", storefile, errno); - exit(1); - } - lret = lseek(storefd, offset, SEEK_SET); - if (lret < 0) { - fprintf(stderr, "unable to lseek(%s) to offset %lld, errno = %d\n", - storefile, (long long)lret, errno); - exit(1); - } - } - - rc = dm_read_invis(sid, hanp, hlen, DM_NO_TOKEN, offset, length, bufp); - - if (rc < 0) { - fprintf(stderr, "dm_read_invis failed, %s\n", strerror(errno)); - exit_status++; - } else if (rc != length) { - fprintf(stderr, "dm_read_invis expected to read %llu bytes, actually " - "read %lld\n", (unsigned long long) length, - (long long) rc); - exit_status++; - } - - if (storefile) { - ssize_t sret; - sret = write(storefd, bufp, rc); - if (sret < 0) { - fprintf(stderr, "unable to write to store file (%s), errno = %d\n", storefile, errno); - exit_status++; - } - else if (sret != rc) { - fprintf(stderr, "write(%s) returned %lld, expected %lld\n", - storefile, (long long)sret, (long long)rc); - exit_status++; - } - close(storefd); - } - else { - for (i = 0; i < rc; i++) { - if (isprint(bufp[i])) { - fprintf(stdout, "%c", bufp[i]); - } else { - fprintf(stdout, "\\%03d", bufp[i]); - } - } - } - dm_handle_free(hanp, hlen); - exit(exit_status); -} diff --git a/dmapi/src/common/cmd/set_region.c b/dmapi/src/common/cmd/set_region.c deleted file mode 100644 index c0ac28cc..00000000 --- a/dmapi/src/common/cmd/set_region.c +++ /dev/null @@ -1,148 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_set_region(). The -command line is: - - set_region [-n nelem] [-o offset] [-l length] [-s sid] {pathname|handle} [event...] - -where pathname is the name of a file, nelem is the number of regions to pass -in the call, offset is the offset of the start of -the managed region, and length is the length. sid is the session ID whose -events you you are interested in, and event is zero or more managed region -events to set. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - -static struct { - char *name; - int value; -} rg_events[3] = { - { "DM_REGION_READ", DM_REGION_READ }, - { "DM_REGION_WRITE", DM_REGION_WRITE }, - { "DM_REGION_TRUNCATE", DM_REGION_TRUNCATE } -}; -static int nevents = sizeof(rg_events)/sizeof(rg_events[0]); - - -static void -usage(void) -{ - int i; - - fprintf(stderr, "usage:\t%s [-n nelem] [-o offset] [-l length] " - "[-s sid] {pathname|handle} [event...]\n", Progname); - fprintf(stderr, "possible events are:\n"); - for (i = 0; i < nevents; i++) - fprintf(stderr, "%s (0x%x)\n", rg_events[i].name, rg_events[i].value); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_region_t region = { 0, 0, 0 }; - dm_sessid_t sid = DM_NO_SESSION; - char *object = NULL; - u_int exactflag; - u_int nelem = 1; - void *hanp; - size_t hlen; - char *name; - int opt; - int i; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "n:o:l:s:")) != EOF) { - switch (opt) { - case 'n': - nelem = atol(optarg); - break; - case 'o': - region.rg_offset = atol(optarg); - break; - case 'l': - region.rg_size = atol(optarg); - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 1 > argc) - usage(); - object = argv[optind++]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file's handle. */ - - if (opaque_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for %s\n", object); - exit(1); - } - - for (; optind < argc; optind++) { - if (strspn(argv[optind], "0123456789") == strlen(argv[optind])){ - region.rg_flags |= atol(argv[optind]); - continue; - } - for (i = 0; i < nevents; i++) { - if (!strcmp(argv[optind], rg_events[i].name)) - break; - } - if (i == nevents) { - fprintf(stderr, "invalid event %s\n", argv[optind]); - exit(1); - } - region.rg_flags |= rg_events[i].value; - } - - if (dm_set_region(sid, hanp, hlen, DM_NO_TOKEN, nelem, ®ion, - &exactflag)) { - fprintf(stderr, "dm_set_region failed, %s\n", - strerror(errno)); - exit(1); - } - fprintf(stdout, "exactflag is %s\n", - exactflag == DM_TRUE ? "True" : "False"); - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/common/cmd/set_return_on_destroy.c b/dmapi/src/common/cmd/set_return_on_destroy.c deleted file mode 100644 index 078cc937..00000000 --- a/dmapi/src/common/cmd/set_return_on_destroy.c +++ /dev/null @@ -1,130 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2002 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_set_return_on_destroy(). The -command line is: - - set_return_on_destroy [-F] [-s sid] [-t token] {pathname|fshandle} [attr] - -where pathname is the name of a file which resides in the filesystem of -interest. attr is the name of the DMAPI attribute; if none is specified, -then set-return-on-destroy will be disabled for the filesystem. -sid is the session ID whose attribute you are interested in setting. - -Use -F if you want the program to find the fshandle based on the pathname. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-F] [-s sid] [-t token] {pathname|fshandle} [attr]\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - dm_token_t token = DM_NO_TOKEN; - char *pathname; - dm_attrname_t *attrnamep = NULL; - dm_boolean_t enable = DM_FALSE; - void *hanp; - size_t hlen; - char *name; - int opt; - int Fflag = 0; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "Fs:t:")) != EOF) { - switch (opt) { - case 's': - sid = atol(optarg); - break; - case 't': - token = atol(optarg); - break; - case 'F': - Fflag++; - break; - case '?': - usage(); - } - } - if (optind == argc || optind + 2 < argc) - usage(); - pathname = argv[optind++]; - if (optind < argc) { - enable = DM_TRUE; - attrnamep = (dm_attrname_t *)argv[optind++]; - } - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - if (opaque_to_handle(pathname, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for %s\n", pathname); - exit(1); - } - - /* Get the file's handle. */ - - if (Fflag) { - void *fshanp; - size_t fshlen; - - if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen)) { - fprintf(stderr, "can't get filesystem handle for file %s, %s\n", - pathname, strerror(errno)); - exit(1); - } - dm_handle_free(hanp, hlen); - hanp = fshanp; - hlen = fshlen; - } - - if (dm_set_return_on_destroy(sid, hanp, hlen, token, - attrnamep, enable)) { - fprintf(stderr, "dm_set_return_on_destroy failed, %s\n", - strerror(errno)); - exit(1); - } - - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/common/cmd/write_invis.c b/dmapi/src/common/cmd/write_invis.c deleted file mode 100644 index aab74e8a..00000000 --- a/dmapi/src/common/cmd/write_invis.c +++ /dev/null @@ -1,175 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_write_invis(). The -command line is: - - write_invis [-c char] [-o offset] [-l length] [-s sid] \ - [-S storefile] {pathname|handle} - -where: -'char' is the character to use as a repeated pattern ('X' is the default), -'offset' is the offset of the start of the write (0 is the default), -'length' is the length of the write in bytes (1 is the default), -'sid' is the session ID whose events you you are interested in. -'pathname' is the name of the file to be written. - -DM_WRITE_SYNC is is not supported. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-c char] [-o offset] [-l length] " - "[-s sid] [-S storefile] {pathname|handle}\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - char *object = NULL; - dm_off_t offset = 0; - long long lltemp; - dm_size_t length = 1; - unsigned long long ulltemp; - u_char ch = 'X'; - void *bufp = NULL; - void *hanp; - size_t hlen; - dm_ssize_t rc; - char *name; - int opt; - char *storefile = NULL; - int storefd; - int exit_status = 0; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "c:o:l:s:S:")) != EOF) { - switch (opt) { - case 'c': - ch = *optarg; - break; - case 'o': - sscanf(optarg, "%lld", &lltemp); - offset = (dm_off_t) offset; - break; - case 'l': - sscanf(optarg, "%llu", &ulltemp); - length = (dm_size_t) ulltemp; - break; - case 's': - sid = atol(optarg); - break; - case 'S': - storefile = optarg; - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - object = argv[optind]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file's handle. */ - - if (opaque_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for %s\n", object); - exit(1); - } - - if (length > 0) { - /* In case it is a realtime file, align the buffer on a - sufficiently big boundary. - */ - if ((bufp = memalign(4096, length)) == NULL) { - fprintf(stderr, "malloc of %llu bytes failed\n", - (unsigned long long) length); - exit(1); - } - memset(bufp, ch, length); - } - - if (storefile) { - ssize_t sret; - size_t len; - - if ((storefd = open(storefile, O_RDONLY)) == -1) { - fprintf(stderr, "unable to open store file for read (%s), errno = %d\n", storefile, errno); - exit(1); - } - - len = length; - sret = read(storefd, bufp, len); - if (sret < 0) { - fprintf(stderr, "unable to read store file (%s), errno = %d\n", storefile, errno); - exit(1); - } - else if (sret != length) { - fprintf(stderr, "read(%s) returned %lld, expected %lld\n", - storefile, (long long)sret, (long long)length); - exit(1); - } - close(storefd); - } - - rc = dm_write_invis(sid, hanp, hlen, DM_NO_TOKEN, 0, offset, length, bufp); - - if (rc < 0) { - fprintf(stderr, "dm_write_invis failed, %s\n", strerror(errno)); - exit_status++; - } else if (rc != length) { - fprintf(stderr, "dm_write_invis expected to write %llu bytes, " - "actually wrote %lld\n", - (unsigned long long) length, (long long)rc); - exit_status++; - } - dm_handle_free(hanp, hlen); - exit(exit_status); -} diff --git a/dmapi/src/common/lib/Makefile b/dmapi/src/common/lib/Makefile deleted file mode 100644 index 463bf78b..00000000 --- a/dmapi/src/common/lib/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0+ -# Copyright (C) 2011 SGI All Rights Reserved. -# -# -# -TOPDIR = ../../../.. - -include $(TOPDIR)/include/builddefs - -LTLIBRARY = libdmtest.la - -LTLDFLAGS = -static - -LT_CURRENT = 1 -LT_REVISION = 0 -LT_AGE = 0 - -CFILES = find_session.c print.c stubs.c util.c -HFILES = hsm.h dmport.h - -CFLAGS += -I$(TOPDIR)/dmapi/src/common -I/usr/include/xfs - -default: depend $(LTLIBRARY) - -depend: .ltdep - -include $(BUILDRULES) - -install install-dev: default - --include .ltdep diff --git a/dmapi/src/common/lib/dmport.h b/dmapi/src/common/lib/dmport.h deleted file mode 100644 index 0aac506a..00000000 --- a/dmapi/src/common/lib/dmport.h +++ /dev/null @@ -1,859 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#ifndef _DMFSAPI_DMPORT_H -#define _DMFSAPI_DMPORT_H - -#ifdef __cplusplus -extern "C" { -#endif - -/************************************************************************** - * * - * DMF's use of DMAPI is based upon the X/Open document * - * Systems Management: Data Storage Managment (XDSM) API * - * dated February 1997. However, no implementation of DMAPI perfectly * - * matches the spec. Each implementation has some functions that it * - * didn't implement, non-standard functions that it added, differences * - * in function parameter types, return value types, number and order of * - * parameters, etc. There are also differences in the formats of some * - * of the DMAPI structures used by those functions. Finally, there are * - * many scalar values for which DMAPI assigned no particular size. For * - * example, a dm_fsid_t is 32 bits under Veritas and 64 bits under SGI. * - * * - * To hide the differences as much as possible, this include file tries * - * to shoehorn each DMAPI implementation into the XDSM mold as much as * - * possible. Functions which are not compatible with the XDSM spec are * - * redefined using wrapper routines to make them conform to the spec. * - * Functions which were not implemented have stubs defined which return * - * ENOSYS (see file stubs.c for all wrappers and stubs). In dmport.h, * - * missing structures and scalers are defined, incompatible typedefs are * - * redefined, etc. * - * * - * The goal is to reduce as much as possible the number of #ifdefs that * - * have to be added to DMF to handle specific DMAPI implementations. * - * Some #ifdefs may still be required because of semantic differences * - * between the XDSM spec definition and the actual implementation. * - * * - * Following all the implementation-specific definitions, dmport.h * - * includes a complete set of prototypes for all functions that are part * - * of the XDSM specification. This is done as a double-check. Should * - * any of the actual implementations change, the compiler should tip us * - * off by complaining about imcompatible function redefinitions. * - * * - **************************************************************************/ - - -/* ---------------- Veritas-specific hack documentation ----------------- - -The following functions have no prototypes in the Veritas include file -. They do not link either. - -extern int dm_handle_is_valid(void *, size_t); - - -The following functions have prototypes in , but -they do not link. - -extern int dm_getall_disp(dm_sessid_t, size_t, void *, size_t *); -extern int dm_getall_dmattr(dm_sessid_t, void *, size_t, - dm_token_t, size_t, void *, size_t *); - - -The following functions have no prototypes in but do link. - -extern int dm_obj_ref_hold(dm_sessid_t, dm_token_t, void *, size_t); -extern int dm_obj_ref_rele(dm_sessid_t, dm_token_t, void *, size_t); -extern int dm_obj_ref_query(dm_sessid_t, dm_token_t, void *, size_t); - - -The following Veritas prototypes are different in some way from the -spec prototypes, either in parameter types, return value types, or in -some semantic way. Look below to see the spec versions of the prototypes. - -extern int dm_downgrade_right(dm_sessid_t, void *, size_t, - dm_token_t, int, dm_right_t); -extern int dm_get_config_events(void *, size_t, u_int, - dm_eventset_t *, u_int *); -extern int dm_get_events(dm_sessid_t, u_int, int, size_t, void *, size_t *); -extern int dm_get_mountinfo(dm_sessid_t, dm_token_t, void *, size_t, - size_t, void *, size_t *); -extern int dm_init_service(void); -extern int dm_make_handle(dev_t , long, long, void **, size_t *); -extern int dm_make_fshandle(dev_t , void **, size_t *); -extern dev_t dm_handle_to_dev(void *, size_t); -extern long dm_handle_to_fgen(void *, size_t); -extern long dm_handle_to_ino(void *, size_t); -extern int dm_pending(dm_sessid_t, void *, size_t, dm_token_t, int); -extern dm_ssize_t dm_read_invis(dm_sessid_t, void *, size_t, - dm_token_t, dm_off_t, dm_ssize_t, void *); -extern dm_ssize_t dm_write_invis(dm_sessid_t, void *, size_t, - dm_token_t, dm_off_t, dm_ssize_t, void *, int); -extern int dm_request_right(dm_sessid_t, void *, size_t, - dm_token_t, int, dm_right_t); -extern int dm_set_inherit(dm_sessid_t, void *, size_t, - dm_token_t, dm_attrname_t *, u_int); -extern int dm_set_return_ondestroy(dm_sessid_t, void *, size_t, - dm_token_t, dm_attrname_t *, int); -extern int dm_upgrade_right(dm_sessid_t, void *, size_t, - dm_token_t, int, dm_right_t); -extern int dm_set_region(dm_sessid_t, void *, size_t, - dm_token_t, u_int, dm_region_t *, u_int *); -extern dm_ssize_t dm_sync_by_handle(dm_sessid_t, void *, size_t, dm_token_t); - - -The following Veritas prototype exists in but -does not appear in the spec. - -extern void dm_attach_event(dm_sessid_t, dm_token_t); - -The following functions exist in the Veritas library libdmi.a, but have no -prototypes within . Their function is unknown. - -dm_attach_event_nofork -dm_event_query -dm_event_valid -dm_get_disp -dm_set_resident -dmregion_compare -kdm_get_eventinfo -kdm_get_sessioninfo - --------------- end of Veritas-specific hack documentation --------------- */ - -#ifdef VERITAS_21 - -#include - -#include - -/* Rename functions whose prototypes clash with the XDSM standard. (Library - routines map from XDSM functions back to Veritas functions.) -*/ - -#define dm_downgrade_right xvfs_dm_downgrade_right -#define dm_fd_to_handle xvfs_dm_fd_to_handle -#define dm_get_events xvfs_dm_get_events -#define dm_get_mountinfo xvfs_dm_get_mountinfo -#define dm_handle_to_ino xvfs_dm_handle_to_ino -#define dm_init_service xvfs_dm_init_service -#define dm_make_fshandle xvfs_dm_make_fshandle -#define dm_make_handle xvfs_dm_make_handle -#define dm_path_to_fshandle xvfs_dm_path_to_fshandle -#define dm_path_to_handle xvfs_dm_path_to_handle -#define dm_pending xvfs_dm_pending -#define dm_read_invis xvfs_dm_read_invis -#define dm_write_invis xvfs_dm_write_invis -#define dm_request_right xvfs_dm_request_right -#define dm_set_inherit xvfs_dm_set_inherit -#define dm_set_region xvfs_dm_set_region -#define dm_sync_by_handle xvfs_dm_sync_by_handle -#define dm_upgrade_right xvfs_dm_upgrade_right - - -#define DM_ATTR_NAME_SIZE 8 -#undef DM_ATTRNAME_SIZE -#define DM_VER_STR_CONTENTS "Veritas DMAPI V1.0" - -#define DM_EV_WAIT 0x1 -#define DM_RR_WAIT 0x1 -#undef DM_WAIT -#undef DM_NOWAIT -#undef DM_EVENT_NOWAIT - -#define DM_CONFIG_INHERIT_ATTRIBS (DM_CONFIG_LOCK_UPGRADE + 1) -#undef DM_CONFIG_INHERIT -#define DM_CONFIG_MAX_HANDLE_SIZE (DM_CONFIG_INHERIT_ATTRIBS + 1) -#undef DM_CONFIG_MAX_FILE_HANDLE_SIZE -#define DM_CONFIG_MAX_ATTR_ON_DESTROY (DM_CONFIG_MAX_HANDLE_SIZE + 1) -#undef DM_CONFIG_MAX_ATTR_BYTES_ON_DESTROY -#define DM_CONFIG_OBJ_REF (DM_CONFIG_MAX_ATTR_ON_DESTROY + 1) -#define DM_CONFIG_DTIME_OVERLOAD (DM_CONFIG_OBJ_REF + 1) -#undef DM_CONFIG_MAX - -#define DM_AT_DTIME DM_AT_DTIMES - -/* In the dm_fileattr_t structure, Veritas used 'timeval' structures for all - the time fields while XDSM uses 'time_t' structures. Define some symbols - that can be used for the time fields with all implementation types. -*/ - -#define FA_ATIME fa_atime.tv_sec -#define FA_MTIME fa_atime.tv_sec -#define FA_CTIME fa_ctime.tv_sec -#define FA_DTIME fa_dtime.tv_sec - -#define DM_WRITE_SYNC 0x1 /* used in dm_write_invis() */ - -#define DM_UNMOUNT_FORCE 0x1 /* ne_mode field in dm_namesp_event_t */ - -/* Rename one event to match the XDSM standard. */ - -#define DM_EVENT_CLOSE (DM_EVENT_DESTROY + 1) -#undef DM_EVENT_CLOSED - -/* DM_EVENT_CANCEL is defined above DM_EVENT_MAX, and is unsupported. */ - -#undef DM_REGION_VALIDFLAG - -/* Add missing typedefs */ - -typedef u_int dm_boolean_t; -typedef dev_t dm_fsid_t; /* This could be made a uint64_t with work! */ -typedef long dm_igen_t; -typedef long dm_ino_t; -typedef u_int dm_sequence_t; - - -/* Define missing fields within the various event structures. */ - -#define ev_sequence ev_token /* for compilation only! Won't work! */ - -#define ds_handle te_handle /* fix fields in dm_destroy_event_t */ -#define ds_attrname te_attrname -#define ds_attrcopy te_attrdata - - -struct dm_cancel_event { /* define missing dm_cancel_event_t */ - dm_sequence_t ce_sequence; - dm_token_t ce_token; -}; -typedef struct dm_cancel_event dm_cancel_event_t; - - -struct dm_mount_event { /* define missing dm_mount_event_t */ - mode_t me_mode; - dm_vardata_t me_handle1; - dm_vardata_t me_handle2; - dm_vardata_t me_name1; - dm_vardata_t me_name2; - dm_vardata_t me_roothandle; -}; -typedef struct dm_mount_event dm_mount_event_t; - - -/* Add the missing dm_timestruct_t structure used by dm_pending. */ - -struct dm_timestruct { - time_t dm_tv_sec; - int dm_tv_nsec; -}; -typedef struct dm_timestruct dm_timestruct_t; - -#endif - - - -/* -------------------- SGI-specific hack documentation ------------------- - - There are various fields within DMAPI structures that are not supported. - Fill in this information someday. - - The following functions have prototypes defined in and have - entry points defined in libdm.so, but they are not actually implemented - within the kernel. They all return ENOSYS if called. - - dm_clear_inherit - dm_create_by_handle - dm_get_bulkall - dm_getall_inherit - dm_mkdir_by_handle - dm_set_inherit - dm_symlink_by_handle - - The DMAPI functions which deal with rights do not work as described in - the specification. While the functions exist and are callable, they - always return successfully without actually obtaining any locks within - the filesystem. - - dm_downgrade_right - dm_query_right - dm_release_right - dm_request_right - dm_upgrade_right - - The following non-standard SGI prototype is added to the DMAPI interface - so that real-time files may be migrated and recalled. - - dm_get_dioinfo - --------------- end of SGI-specific hack documentation --------------- */ - -#ifdef linux - -#include - -/* In the dm_fileattr_t structure, Veritas used 'timeval' structures for all - the time fields while XDSM uses 'time_t' structures. Define some symbols - that can be used for the time fields with all implementation types. -*/ - -#define FA_ATIME fa_atime -#define FA_MTIME fa_mtime -#define FA_CTIME fa_ctime -#define FA_DTIME fa_dtime - -#endif /* linux */ - -/* ----------------------- XDSM standard prototypes ----------------------- */ - -/* The following list provides the prototypes for all functions defined in - the DMAPI interface spec from X/Open (XDSM) dated February 1997. They - are here to force compiler errors in case the Veritas or SGI DMAPI - prototypes should ever change without our knowing about it. -*/ - -extern int -dm_clear_inherit( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - dm_attrname_t *attrnamep); - -extern int -dm_create_by_handle( - dm_sessid_t sid, - void *dirhanp, - size_t dirhlen, - dm_token_t token, - void *hanp, - size_t hlen, - char *cname); - -extern int -dm_create_session( - dm_sessid_t oldsid, - char *sessinfop, - dm_sessid_t *newsidp); - -extern int -dm_create_userevent( - dm_sessid_t sid, - size_t msglen, - void *msgdatap, - dm_token_t *tokenp); - -extern int -dm_destroy_session( - dm_sessid_t sid); - -extern int -dm_downgrade_right( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token); - -extern int -dm_fd_to_handle( - int fd, - void **hanpp, - size_t *hlenp); - -extern int -dm_find_eventmsg( - dm_sessid_t sid, - dm_token_t token, - size_t buflen, - void *bufp, - size_t *rlenp); - -extern int -dm_get_allocinfo( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - dm_off_t *offp, - u_int nelem, - dm_extent_t *extentp, - u_int *nelemp); - -extern int -dm_get_bulkall( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - u_int mask, - dm_attrname_t *attrnamep, - dm_attrloc_t *locp, - size_t buflen, - void *bufp, - size_t *rlenp); - -extern int -dm_get_bulkattr( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - u_int mask, - dm_attrloc_t *locp, - size_t buflen, - void *bufp, - size_t *rlenp); - -extern int -dm_get_config( - void *hanp, - size_t hlen, - dm_config_t flagname, - dm_size_t *retvalp); - -extern int -dm_get_config_events( - void *hanp, - size_t hlen, - u_int nelem, - dm_eventset_t *eventsetp, - u_int *nelemp); - -extern int -dm_get_dirattrs( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - u_int mask, - dm_attrloc_t *locp, - size_t buflen, - void *bufp, - size_t *rlenp); - -extern int -dm_get_dmattr( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - dm_attrname_t *attrnamep, - size_t buflen, - void *bufp, - size_t *rlenp); - -extern int -dm_get_eventlist( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - u_int nelem, - dm_eventset_t *eventsetp, - u_int *nelemp); - -extern int -dm_get_events( - dm_sessid_t sid, - u_int maxmsgs, - u_int flags, - size_t buflen, - void *bufp, - size_t *rlenp); - -extern int -dm_get_fileattr( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - u_int mask, - dm_stat_t *statp); - -extern int -dm_get_mountinfo( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - size_t buflen, - void *bufp, - size_t *rlenp); - -extern int -dm_get_region( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - u_int nelem, - dm_region_t *regbufp, - u_int *nelemp); - -extern int -dm_getall_disp( - dm_sessid_t sid, - size_t buflen, - void *bufp, - size_t *rlenp); - -extern int -dm_getall_dmattr( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - size_t buflen, - void *bufp, - size_t *rlenp); - -extern int -dm_getall_inherit( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - u_int nelem, - dm_inherit_t *inheritbufp, - u_int *nelemp); - -extern int -dm_getall_sessions( - u_int nelem, - dm_sessid_t *sidbufp, - u_int *nelemp); - -extern int -dm_getall_tokens( - dm_sessid_t sid, - u_int nelem, - dm_token_t *tokenbufp, - u_int *nelemp); - -extern int -dm_handle_cmp( - void *hanp1, - size_t hlen1, - void *hanp2, - size_t hlen2); - -extern void -dm_handle_free( - void *hanp, - size_t hlen); - -extern u_int -dm_handle_hash( - void *hanp, - size_t hlen); - -extern dm_boolean_t -dm_handle_is_valid( - void *hanp, - size_t hlen); - -extern int -dm_handle_to_fshandle( - void *hanp, - size_t hlen, - void **fshanpp, - size_t *fshlenp); - -extern int -dm_handle_to_fsid( - void *hanp, - size_t hlen, - dm_fsid_t *fsidp); - -extern int -dm_handle_to_igen( - void *hanp, - size_t hlen, - dm_igen_t *igenp); - -extern int -dm_handle_to_ino( - void *hanp, - size_t hlen, - dm_ino_t *inop); - -extern int -dm_handle_to_path( - void *dirhanp, - size_t dirhlen, - void *targhanp, - size_t targhlen, - size_t buflen, - char *pathbufp, - size_t *rlenp); - -extern int -dm_init_attrloc( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - dm_attrloc_t *locp); - -extern int -dm_init_service( - char **versionstrpp); - -extern int -dm_make_fshandle( - dm_fsid_t *fsidp, - void **hanpp, - size_t *hlenp); - -extern int -dm_make_handle( - dm_fsid_t *fsidp, - dm_ino_t *inop, - dm_igen_t *igenp, - void **hanpp, - size_t *hlenp); - -extern int -dm_mkdir_by_handle( - dm_sessid_t sid, - void *dirhanp, - size_t dirhlen, - dm_token_t token, - void *hanp, - size_t hlen, - char *cname); - -extern int -dm_move_event( - dm_sessid_t srcsid, - dm_token_t token, - dm_sessid_t targetsid, - dm_token_t *rtokenp); - -extern int -dm_obj_ref_hold( - dm_sessid_t sid, - dm_token_t token, - void *hanp, - size_t hlen); - -extern int -dm_obj_ref_query( - dm_sessid_t sid, - dm_token_t token, - void *hanp, - size_t hlen); - -extern int -dm_obj_ref_rele( - dm_sessid_t sid, - dm_token_t token, - void *hanp, - size_t hlen); - -extern int -dm_path_to_fshandle( - char *path, - void **hanpp, - size_t *hlenp); - -extern int -dm_path_to_handle( - char *path, - void **hanpp, - size_t *hlenp); - -extern int -dm_pending( - dm_sessid_t sid, - dm_token_t token, - dm_timestruct_t *delay); - -extern int -dm_probe_hole( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - dm_off_t off, - dm_size_t len, - dm_off_t *roffp, - dm_size_t *rlenp); - -extern int -dm_punch_hole( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - dm_off_t off, - dm_size_t len); - -extern int -dm_query_right( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - dm_right_t *rightp); - -extern int -dm_query_session( - dm_sessid_t sid, - size_t buflen, - void *bufp, - size_t *rlenp); - -extern dm_ssize_t -dm_read_invis( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - dm_off_t off, - dm_size_t len, - void *bufp); - -extern int -dm_release_right( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token); - -extern int -dm_remove_dmattr( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - int setdtime, - dm_attrname_t *attrnamep); - -extern int -dm_request_right( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - u_int flags, - dm_right_t right); - -extern int -dm_respond_event( - dm_sessid_t sid, - dm_token_t token, - dm_response_t response, - int reterror, - size_t buflen, - void *respbufp); - -extern int -dm_send_msg( - dm_sessid_t targetsid, - dm_msgtype_t msgtype, - size_t buflen, - void *bufp); - -extern int -dm_set_disp( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - dm_eventset_t *eventsetp, - u_int maxevent); - -extern int -dm_set_dmattr( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - dm_attrname_t *attrnamep, - int setdtime, - size_t buflen, - void *bufp); - -extern int -dm_set_eventlist( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - dm_eventset_t *eventsetp, - u_int maxevent); - -extern int -dm_set_fileattr( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - u_int mask, - dm_fileattr_t *attrp); - -extern int -dm_set_inherit( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - dm_attrname_t *attrnamep, - mode_t mode); - -extern int -dm_set_region( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - u_int nelem, - dm_region_t *regbufp, - dm_boolean_t *exactflagp); - -extern int -dm_set_return_on_destroy( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - dm_attrname_t *attrnamep, - dm_boolean_t enable); - -extern int -dm_symlink_by_handle( - dm_sessid_t sid, - void *dirhanp, - size_t dirhlen, - dm_token_t token, - void *hanp, - size_t hlen, - char *cname, - char *path); - -extern int -dm_sync_by_handle( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token); - -extern int -dm_upgrade_right( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token); - -extern dm_ssize_t -dm_write_invis( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - int flags, - dm_off_t off, - dm_size_t len, - void *bufp); - - -#ifdef __cplusplus -} -#endif - -#endif /* _DMFSAPI_DMPORT_H */ diff --git a/dmapi/src/common/lib/find_session.c b/dmapi/src/common/lib/find_session.c deleted file mode 100644 index 01a7af3b..00000000 --- a/dmapi/src/common/lib/find_session.c +++ /dev/null @@ -1,186 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include - -/******************************************************************************* -* -* NAME -* find_test_session - find or create a test DMAPI session. -* -* DESCRIPTION -* find_test_session() is used to find a test DMAPI session to -* use. There is only one test session per host; all test processes -* share the same session. If the session does not already exist, -* then the first process to call find_test_session() causes -* the session to be created. -* -* Note: It is possible for N different programs to call this routine -* at the same time. Each would find that a test session does not -* exist, and each one would then create a new test session. Since -* excess test sessions are not automatically released on death of -* process, we need to make sure that we don't leave such excess -* sessions around. So, after creating a session we go back and find -* the test session with the lowest session number. If it is ours, -* great; we are done. If not, then we must destroy our session -* and use the one with the lower session ID. There is still a risk -* here of creating a session and crashing before it can be removed -* again. To deal with this, the daemon will periodically remove all -* test sessions except for the one with the lowest ID value. -* -* RETURN VALUE -* None. -* -*******************************************************************************/ - -#define TEST_MSG "DMAPI test session" - -static int -session_compare( -const void *a, -const void *b) -{ - return(*((dm_sessid_t *)a) - *((dm_sessid_t *)b)); -} - -extern void -find_test_session( - dm_sessid_t *session) -{ - char buffer[DM_SESSION_INFO_LEN]; - dm_sessid_t *sidbuf = NULL; - dm_sessid_t new_session; - u_int allocelem = 0; - u_int nelem; - size_t rlen; - int error; - u_int i; - - /* Retrieve the list of all active sessions on the host. */ - - nelem = 100; /* a reasonable first guess */ - do { - if (allocelem < nelem) { - allocelem = nelem; - sidbuf = realloc(sidbuf, nelem * sizeof(*sidbuf)); - if (sidbuf == NULL) { - fprintf(stderr, "realloc of %lu bytes failed\n", - (unsigned long) nelem * sizeof(*sidbuf)); - exit(1); - } - } - error = dm_getall_sessions(allocelem, sidbuf, &nelem); - } while (error < 0 && errno == E2BIG); - - /* If an error occurred, translate it into something meaningful. */ - - if (error < 0) { - fprintf(stderr, "unexpected dm_getall_sessions failure, %s\n", - strerror(errno)); - free(sidbuf); - exit(1); - } - - /* We have the list of all active sessions. Scan the list looking - for an existing "test" session that we can use. The list must - first be sorted in case other processes happen to be creating test - sessions at the same time; we need to make sure that we pick the one - with the lowest session ID. - */ - - qsort(sidbuf, nelem, sizeof(sidbuf[0]), session_compare); - - for (i = 0; i < nelem; i++) { - error = dm_query_session(sidbuf[i], sizeof(buffer), - buffer, &rlen); - if (error < 0) { - fprintf(stderr, "unexpected dm_query_session " - "failure, %s\n", strerror(errno)); - free(sidbuf); - exit(1); - } - - if (!strncmp(buffer, TEST_MSG, strlen(TEST_MSG))) - break; - } - if (i < nelem) { - *session = (dm_sessid_t)sidbuf[i]; - free(sidbuf); - return; - } - - /* No test session exists, so we have to create one ourselves. */ - - if (dm_create_session(DM_NO_SESSION, TEST_MSG, &new_session) != 0) { - fprintf(stderr, "dm_create_session failed, %s\n", - strerror(errno)); - free(sidbuf); - exit(1); - } - - /* Now re-retrieve the list of active sessions. */ - - do { - if (allocelem < nelem) { - allocelem = nelem; - sidbuf = realloc(sidbuf, nelem * sizeof(*sidbuf)); - if (sidbuf == NULL) { - fprintf(stderr, "realloc of %lu bytes failed\n", - (unsigned long) nelem * sizeof(*sidbuf)); - exit(1); - } - } - error = dm_getall_sessions(allocelem, sidbuf, &nelem); - } while (error < 0 && errno == E2BIG); - - if (error < 0) { - fprintf(stderr, "dm_getall_sessions failed, %s\n", - strerror(errno)); - free(sidbuf); - exit(1); - } - - /* Sort the session ID list into ascending ID order, then find the - test session with the lowest session ID. We better find at - least one since we created one! - */ - - qsort(sidbuf, nelem, sizeof(sidbuf[0]), session_compare); - - for (i = 0; i < nelem; i++) { - error = dm_query_session(sidbuf[i], sizeof(buffer), - buffer, &rlen); - if (error < 0) { - fprintf(stderr, "dm_query_session failed, %s\n", - strerror(errno)); - free(sidbuf); - exit(1); - } - if (!strncmp(buffer, TEST_MSG, strlen(TEST_MSG))) - break; - } - if (i == nelem) { - fprintf(stderr, "can't find the session we created\n"); - free(sidbuf); - exit(1); - } - *session = (dm_sessid_t)sidbuf[i]; - free(sidbuf); - - /* If the session we are going to use is not the one we created, - then we need to get rid of the created one. - */ - - if (*session != new_session) { - if ((new_session) != 0) { - fprintf(stderr, "dm_destroy_session failed, %s\n", - strerror(errno)); - exit(1); - } - } -} diff --git a/dmapi/src/common/lib/hsm.h b/dmapi/src/common/lib/hsm.h deleted file mode 100644 index e09c1f98..00000000 --- a/dmapi/src/common/lib/hsm.h +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Defines and structures for our pseudo HSM example - * - * This code was written by Peter Lawthers, and placed in the public - * domain for use by DMAPI implementors and app writers. - * - * Standard disclaimer: - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef _LIB_HSM_H -#define _LIB_HSM_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#include -#include -#include -#include - -#include - -#define HANDLE_LEN 64 /* Swag for this example */ -#define HANDLE_STR ((HANDLE_LEN * 2) + 1) /* handle as ascii, plus null */ -#define IBUFSIZE 1024 /* input buffer size */ -#define CHUNKSIZE (1024*1024*4) /* write size */ -#define FENCEPOST_SIZE ((dm_size_t)(1024*8)) -#define ALL_AVAIL_MSGS 0 - -/* - * Actions to be performed by the worker bees - */ -#define RESTORE_FILE "-r" -#define INVAL_FILE "-i" - -#define WORKER_BEE "wbee" - - -/* - * Names of DM attribute used for storing location of a file's data. - * DM attributes are 8 bytes, including NULL. - */ - -#define DLOC_HAN "dhanloc" /* staging file handle */ -#define DLOC_HANLEN "dhanlen" /* staging handle length */ - -/* - * Default log file - */ -#define LOG_DEFAULT "/tmp/dmig_log" - -struct ev_name_to_value { - char *name; /* name of event */ - dm_eventtype_t value; /* value of event */ -}; - -extern struct ev_name_to_value ev_names[]; -extern int ev_namecnt; - - -struct rt_name_to_value { - char *name; /* name of right */ - dm_right_t value; /* value of right */ -}; - -extern struct rt_name_to_value rt_names[]; -extern int rt_namecnt; - - -extern void hantoa(void *hanp, size_t hlen, char *handle_str); -extern int atohan(char *handle_str, void **hanpp, size_t *hlenp); -extern void print_handle(void *hanp, size_t hlen); -extern void print_victim(void *hanp, size_t hlen, dm_off_t fsize); -extern void errno_msg(char *fmt, ...); -extern void err_msg(char *fmt, ...); -extern int setup_dmapi(dm_sessid_t *sid); -extern int get_dmchange(dm_sessid_t sid, void *hanp, size_t hlen, - dm_token_t token, u_int *change_start); -extern int save_filedata(dm_sessid_t sid, void *hanp, size_t hlen, - int stg_fd, dm_size_t fsize); -extern int restore_filedata(dm_sessid_t sid, void *hanp, size_t hlen, - dm_token_t token, void *stg_hanp, size_t stg_hlen, dm_off_t off); - -extern void find_test_session(dm_sessid_t *session); - -void -print_one_mount_event( - void *msg); - -int -print_one_message( - dm_eventmsg_t *msg); - -int -handle_message( - dm_sessid_t sid, - dm_eventmsg_t *msg); - -extern char *date_to_string( - time_t timeval); - -extern char *mode_to_string( - mode_t mode); - -extern mode_t field_to_mode( - mode_t mode); - -extern int validate_state( - dm_stat_t *dmstat, - char *pathname, - int report_errors); - -extern char *emask_to_string( - dm_eventset_t emask); - -extern char *xflags_to_string( - u_int xflags); - -extern void print_state( - dm_stat_t *dmstat); - -extern void print_line( - dm_stat_t *dmstat); - -extern dm_eventtype_t -ev_name_to_value( - char *name); - -extern char * -ev_value_to_name( - dm_eventtype_t event); - -extern int -rt_name_to_value( - char *name, - dm_right_t *rightp); - -extern char * -rt_value_to_name( - dm_right_t right); - -extern int -opaque_to_handle( - char *name, - void **hanpp, - size_t *hlenp); - -#ifdef __cplusplus -} -#endif - -#endif /* _LIB_HSM_H */ diff --git a/dmapi/src/common/lib/print.c b/dmapi/src/common/lib/print.c deleted file mode 100644 index f6c4a04b..00000000 --- a/dmapi/src/common/lib/print.c +++ /dev/null @@ -1,589 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include -#include -#include - -#include - -#include - -#include - - /* - * Define some standard formats for the printf statements below. - */ - -#define HDR "type=%s token=%d sequence=%d\n" -#define VALS "\t%s=%s\n" -#define VALD "\t%s=%d\n" -#define VALLLD "\t%s=%lld\n" - - -/* - Convert a mode_t field into a printable string. - - Returns non-zero if the mode_t is invalid. The string is - returned in *ptr, whether there is an error or not. -*/ - -int -format_mode( - mode_t mode, - char **ptr) -{ -static char modestr[100]; - char *typestr; - int error = 0; - - if (S_ISFIFO(mode)) typestr = "FIFO"; - else if(S_ISCHR (mode)) typestr = "Character Device"; - else if(S_ISBLK (mode)) typestr = "Block Device"; - else if(S_ISDIR (mode)) typestr = "Directory"; - else if(S_ISREG (mode)) typestr = "Regular File"; - else if(S_ISLNK (mode)) typestr = "Symbolic Link"; - else if(S_ISSOCK(mode)) typestr = "Socket"; - else { - typestr = ""; - error++; - } - - sprintf(modestr, "mode %06o: perm %c%c%c %c%c%c %c%c%c %c%c%c, type %s", - mode, - mode & S_ISUID ? 's':' ', - mode & S_ISGID ? 'g':' ', - mode & S_ISVTX ? 't':' ', - mode & S_IRUSR ? 'r':'-', - mode & S_IWUSR ? 'w':'-', - mode & S_IXUSR ? 'x':'-', - mode & S_IRGRP ? 'r':'-', - mode & S_IWGRP ? 'w':'-', - mode & S_IXGRP ? 'x':'-', - mode & S_IROTH ? 'r':'-', - mode & S_IWOTH ? 'w':'-', - mode & S_IXOTH ? 'x':'-', - typestr); - *ptr = modestr; - return(error); -} - - -void -print_one_mount_event( - void *msg) -{ - void *hanp1, *hanp2, *hanp3; - size_t hlen1, hlen2, hlen3; - char hans1[HANDLE_STR], hans2[HANDLE_STR], hans3[HANDLE_STR]; - void *namp1, *namp2; - size_t nlen1, nlen2; - char nams1[NAME_MAX + 1], nams2[NAME_MAX + 1]; - mode_t mode; - -#if VERITAS_21 - dm_namesp_event_t *msg_ne = (dm_namesp_event_t *)msg; - -/* - msg_ne = DM_GET_VALUE(msg, ev_data, dm_namesp_event_t *); -*/ - hanp1 = DM_GET_VALUE(msg_ne, ne_handle1, void *); - hlen1 = DM_GET_LEN (msg_ne, ne_handle1); - hanp2 = DM_GET_VALUE(msg_ne, ne_handle2, void *); - hlen2 = DM_GET_LEN (msg_ne, ne_handle2); - namp1 = DM_GET_VALUE(msg_ne, ne_name1, void *); - nlen1 = DM_GET_LEN (msg_ne, ne_name1); - namp2 = DM_GET_VALUE(msg_ne, ne_name2, void *); - nlen2 = DM_GET_LEN (msg_ne, ne_name2); - hanp3 = NULL; - hlen3 = 0; - mode = msg_ne->ne_mode; -#else - dm_mount_event_t *msg_me = (dm_mount_event_t *)msg; - - hanp1 = DM_GET_VALUE(msg_me, me_handle1, void *); - hlen1 = DM_GET_LEN(msg_me, me_handle1); - hanp2 = DM_GET_VALUE(msg_me, me_handle2, void *); - hlen2 = DM_GET_LEN(msg_me, me_handle2); - namp1 = DM_GET_VALUE(msg_me, me_name1, void *); - nlen1 = DM_GET_LEN(msg_me, me_name1); - namp2 = DM_GET_VALUE(msg_me, me_name2, void *); - nlen2 = DM_GET_LEN(msg_me, me_name2); - hanp3 = DM_GET_VALUE(msg_me, me_roothandle, void *); - hlen3 = DM_GET_LEN(msg_me, me_roothandle); - mode = msg_me->me_mode; -#endif /* VERITAS_21 */ - - if (hanp1 && hlen1) { - hantoa(hanp1, hlen1, hans1); - } else { - sprintf(hans1, "", hlen1); - } - if (hanp2 && hlen2) { - hantoa(hanp2, hlen2, hans2); - } else { - sprintf(hans2, "", hlen2); - } - if (hanp3 && hlen3) { - hantoa(hanp3, hlen3, hans3); - } else { - sprintf(hans3, "", hlen3); - } - if (namp1 && nlen1) { - strncpy(nams1, namp1, nlen1); - if (nlen1 != sizeof(nams1)) - nams1[nlen1] = '\0'; - } else { - sprintf(nams1, "", nlen1); - } - if (namp2 && nlen2) { - strncpy(nams2, namp2, nlen2); - if (nlen2 != sizeof(nams2)) - nams2[nlen2] = '\0'; - } else { - sprintf(nams2, "", nlen2); - } - - printf(VALS VALS VALS VALS VALS VALD, - "fs handle", hans1, - "mtpt handle", hans2, - "mtpt path", nams1, - "media desig", nams2, - "root handle", hans3, - "mode", mode); -} - - -static int -print_one_data_event( - dm_data_event_t *msg_de) -{ - char handle[HANDLE_STR]; - void *hanp; - size_t hlen; - - hanp = DM_GET_VALUE(msg_de, de_handle, void *); - hlen = DM_GET_LEN (msg_de, de_handle); - - if (hanp && hlen) { - hantoa(hanp, hlen, handle); - } else { - sprintf(handle, "", hlen); - } - - printf(VALS VALLLD VALLLD, - "file_handle", handle, - "offset", (long long) msg_de->de_offset, - "length", (long long) msg_de->de_length); - - return(0); -} - - -int -print_one_message( - dm_eventmsg_t *msg) -{ - int pkt_error = 0; - dm_namesp_event_t *msg_ne; - void *hanp1, *hanp2, *namp1, *namp2; - u_int hlen1, hlen2, nlen1, nlen2; - char hans1[HANDLE_STR], hans2[HANDLE_STR]; - char nams1[NAME_MAX + 1], nams2[NAME_MAX + 1]; - - /***** USER EVENTS *****/ - - if (msg->ev_type == DM_EVENT_USER) { - char *privp; - u_int plen, i; - - printf(HDR, - "user", msg->ev_token, msg->ev_sequence); - - /* print private data as ascii or hex if it exists DM_CONFIG_MAX_MESSAGE_DATA */ - - privp = DM_GET_VALUE(msg, ev_data, char *); - plen = DM_GET_LEN (msg, ev_data); - if (plen) { - for (i = 0; i < plen; i++) { - if (!isprint(privp[i]) && !isspace(privp[i])) - break; - } - if (i == plen - 1 && privp[i] == '\0') { - printf(VALS, - "privdata", privp); - } else { - printf("\t%-15s ", "privdata"); - for (i = 0; i < plen; i++) { - printf("%.2x", privp[i]); - } - printf("\n"); - } - } else { - printf(VALS, - "privdata", ""); - } - - /***** CANCEL EVENT *****/ - -/* Not implemented on SGI or Veritas */ - - } else if (msg->ev_type == DM_EVENT_CANCEL) { - dm_cancel_event_t *msg_ce; - - msg_ce = DM_GET_VALUE(msg, ev_data, dm_cancel_event_t *); - printf(HDR VALD VALD, - "cancel", msg->ev_token, msg->ev_sequence, - "sequence", msg_ce->ce_sequence, - "token", msg_ce->ce_token); - - /***** DATA EVENTS *****/ - - } else if (msg->ev_type == DM_EVENT_READ || - msg->ev_type == DM_EVENT_WRITE || - msg->ev_type == DM_EVENT_TRUNCATE) { - dm_data_event_t *msg_de; - - msg_de = DM_GET_VALUE(msg, ev_data, dm_data_event_t *); - - switch (msg->ev_type) { - case DM_EVENT_READ: - printf(HDR, "read", msg->ev_token, msg->ev_sequence); - break; - - case DM_EVENT_WRITE: - printf(HDR, "write", msg->ev_token, msg->ev_sequence); - break; - - case DM_EVENT_TRUNCATE: - printf(HDR, "truncate", msg->ev_token, - msg->ev_sequence); - break; - default: break; - } - print_one_data_event(msg_de); - - /***** DESTROY EVENT *****/ - - } else if (msg->ev_type == DM_EVENT_DESTROY) { - dm_destroy_event_t *msg_ds; - char attrname[DM_ATTR_NAME_SIZE + 1]; - u_char *copy; - u_int clen; - u_int i; - - msg_ds= DM_GET_VALUE(msg, ev_data, dm_destroy_event_t *); - hanp1 = DM_GET_VALUE(msg_ds, ds_handle, void *); - hlen1 = DM_GET_LEN (msg_ds, ds_handle); - if (hanp1 && hlen1) { - hantoa(hanp1, hlen1, hans1); - } else { - sprintf(hans1, "", hlen1); - } - if (msg_ds->ds_attrname.an_chars[0] != '\0') { - strncpy(attrname, (char *)msg_ds->ds_attrname.an_chars, sizeof(attrname)); - } else { - strcpy(attrname, ""); - } - printf(HDR VALS VALS, - "destroy", msg->ev_token, msg->ev_sequence, - "handle", hans1, - "attrname", attrname); - copy = DM_GET_VALUE(msg_ds, ds_attrcopy, u_char *); - clen = DM_GET_LEN (msg_ds, ds_attrcopy); - if (copy && clen) { - printf("\t%-15s ", "attrcopy"); - for (i = 0; i < clen; i++) { - printf("%.2x", copy[i]); - } - printf("\n"); - } else { - printf(VALS, "attrcopy", ""); - } - - /***** MOUNT EVENT *****/ - - } else if (msg->ev_type == DM_EVENT_MOUNT) { - void *msg_body; - - printf(HDR, "mount", msg->ev_token, msg->ev_sequence); -#if !VERITAS_21 - msg_body = DM_GET_VALUE(msg, ev_data, dm_mount_event_t *); -#else /* VERITAS_21 */ - msg_body = DM_GET_VALUE(msg, ev_data, dm_namesp_event_t *); -#endif /* VERITAS_21 */ - print_one_mount_event(msg_body); - - /***** NAMESPACE EVENTS *****/ - - } else { - char *type; - - msg_ne = DM_GET_VALUE(msg, ev_data, dm_namesp_event_t *); - hanp1 = DM_GET_VALUE(msg_ne, ne_handle1, void *); - hlen1 = DM_GET_LEN (msg_ne, ne_handle1); - hanp2 = DM_GET_VALUE(msg_ne, ne_handle2, void *); - hlen2 = DM_GET_LEN (msg_ne, ne_handle2); - namp1 = DM_GET_VALUE(msg_ne, ne_name1, void *); - nlen1 = DM_GET_LEN (msg_ne, ne_name1); - namp2 = DM_GET_VALUE(msg_ne, ne_name2, void *); - nlen2 = DM_GET_LEN (msg_ne, ne_name2); - - if (hanp1 && hlen1) { - hantoa(hanp1, hlen1, hans1); - } - if (hanp2 && hlen2) { - hantoa(hanp2, hlen2, hans2); - } - if (namp1 && nlen1) { - strncpy(nams1, namp1, nlen1); - if (nlen1 != sizeof(nams1)) - nams1[nlen1] = '\0'; - } - if (namp2 && nlen2) { - strncpy(nams2, namp2, nlen2); - if (nlen2 != sizeof(nams2)) - nams2[nlen2] = '\0'; - } - - if (msg->ev_type == DM_EVENT_PREUNMOUNT || - msg->ev_type == DM_EVENT_UNMOUNT) { - if (msg_ne->ne_mode == 0) { - type = "NOFORCE"; -#if !VERITAS_21 - } else if (msg_ne->ne_mode == DM_UNMOUNT_FORCE) { -#else - } else if (msg_ne->ne_mode > 0) { -#endif - type = "FORCE"; - } else { - type = "UNKNOWN"; - pkt_error++; - } - } else if (msg->ev_type == DM_EVENT_CREATE || - msg->ev_type == DM_EVENT_POSTCREATE || - msg->ev_type == DM_EVENT_REMOVE || - msg->ev_type == DM_EVENT_POSTREMOVE) { - if (format_mode(msg_ne->ne_mode, &type)) { - pkt_error++; - } - } - - switch(msg->ev_type) { - - case DM_EVENT_PREUNMOUNT: - printf(HDR VALS VALS VALS, - "preunmount", msg->ev_token, msg->ev_sequence, - "fs handle", hans1, - "root dir", hans2, - "unmount mode", type); - break; - - case DM_EVENT_UNMOUNT: - printf(HDR VALS VALS VALD, - "unmount", msg->ev_token, msg->ev_sequence, - "fs handle", hans1, - "unmount mode", type, - "retcode", msg_ne->ne_retcode); - break; - - case DM_EVENT_NOSPACE: - printf(HDR VALS, - "nospace", msg->ev_token, msg->ev_sequence, - "fs handle", hans1); - break; - - case DM_EVENT_DEBUT: /* not supported on SGI */ - printf(HDR VALS, - "debut", msg->ev_token, msg->ev_sequence, - "object", hans1); - break; - - case DM_EVENT_CREATE: - printf(HDR VALS VALS VALS, - "create", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "name", nams1, - "mode bits", type); - break; - - case DM_EVENT_POSTCREATE: - printf(HDR VALS VALS VALS VALS VALD, - "postcreate", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "new object", hans2, - "name", nams1, - "mode bits", type, - "retcode", msg_ne->ne_retcode); - break; - - case DM_EVENT_REMOVE: - printf(HDR VALS VALS VALS, - "remove", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "name", nams1, - "mode bits", type); - break; - - case DM_EVENT_POSTREMOVE: - printf(HDR VALS VALS VALS VALD, - "postremove", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "name", nams1, - "mode bits", type, - "retcode", msg_ne->ne_retcode); - break; - - case DM_EVENT_RENAME: - printf(HDR VALS VALS VALS VALS, - "rename", msg->ev_token, msg->ev_sequence, - "old parent", hans1, - "new parent", hans2, - "old name", nams1, - "new name", nams2); - break; - - case DM_EVENT_POSTRENAME: - printf(HDR VALS VALS VALS VALS VALD, - "postrename", msg->ev_token, msg->ev_sequence, - "old parent", hans1, - "new parent", hans2, - "old name", nams1, - "new name", nams2, - "retcode", msg_ne->ne_retcode); - break; - - case DM_EVENT_SYMLINK: - printf(HDR VALS VALS VALS, - "symlink", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "name", nams1, - "contents", nams2); - break; - - case DM_EVENT_POSTSYMLINK: - printf(HDR VALS VALS VALS VALS VALD, - "postsymlink", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "new object", hans2, - "name", nams1, - "contents", nams2, - "retcode", msg_ne->ne_retcode); - break; - - case DM_EVENT_LINK: - printf(HDR VALS VALS VALS, - "link", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "source", hans2, - "name", nams1); - break; - - case DM_EVENT_POSTLINK: - printf(HDR VALS VALS VALS VALD, - "postlink", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "source", hans2, - "name", nams1, - "retcode", msg_ne->ne_retcode); - break; - - case DM_EVENT_ATTRIBUTE: - printf(HDR VALS, - "attribute", msg->ev_token, msg->ev_sequence, - "object", hans1); - break; - - case DM_EVENT_CLOSE: /* not supported on SGI */ - printf(HDR VALS, - "close", msg->ev_token, msg->ev_sequence, - "object", hans1); - break; - - default: - pkt_error++; - printf(HDR VALD, - "", msg->ev_token, msg->ev_sequence, - "ev_type", msg->ev_type); - break; - } - } - return(pkt_error); -} - - -int -handle_message( - dm_sessid_t sid, - dm_eventmsg_t *msg) -{ - dm_response_t response; - int respond, respcode; - int error = 0; - - if (print_one_message(msg)) - error++; - - /* Set the defaults for responding to events. */ - - respond = 1; - response = DM_RESP_CONTINUE; - respcode = 0; - - /***** USER EVENTS *****/ - - switch (msg->ev_type) { - case DM_EVENT_USER: - if (msg->ev_token == DM_INVALID_TOKEN) - respond = 0; - break; - - case DM_EVENT_CANCEL: - case DM_EVENT_DESTROY: - case DM_EVENT_POSTCREATE: - case DM_EVENT_POSTREMOVE: - case DM_EVENT_POSTRENAME: - case DM_EVENT_POSTSYMLINK: - case DM_EVENT_POSTLINK: - case DM_EVENT_ATTRIBUTE: - case DM_EVENT_CLOSE: - respond = 0; - break; - - case DM_EVENT_MOUNT: - case DM_EVENT_READ: - case DM_EVENT_WRITE: - case DM_EVENT_TRUNCATE: - case DM_EVENT_PREUNMOUNT: - case DM_EVENT_UNMOUNT: - case DM_EVENT_DEBUT: - case DM_EVENT_CREATE: - case DM_EVENT_REMOVE: - case DM_EVENT_RENAME: - case DM_EVENT_SYMLINK: - case DM_EVENT_LINK: - break; - - case DM_EVENT_NOSPACE: - response = DM_RESP_ABORT; - respcode = ENOSPC; - break; - - default: - if (msg->ev_token == DM_INVALID_TOKEN) - respond = 0; - break; - } - - /* Respond to those messages which require a response. */ - - if (respond) { - if (dm_respond_event(sid, msg->ev_token, response, respcode, 0, 0)) { - errno_msg("Can't respond to event"); - } - } - return(error); -} diff --git a/dmapi/src/common/lib/stubs.c b/dmapi/src/common/lib/stubs.c deleted file mode 100644 index c6588a0b..00000000 --- a/dmapi/src/common/lib/stubs.c +++ /dev/null @@ -1,491 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - - -/* See dmport.h for a description of why all these wrapper routines are - necessary. Because SGI defines stub routines for all functions it didn't - implement, no SGI-specific wrappers are required. -*/ - - -#ifdef VERITAS_21 - -/* The Veritas version of dm_downgrade_right has two additional parameters - not defined in the XDSM spec. Provide values that make dm_downgrade_right - work according to the spec. -*/ - -extern int -xvfs_dm_downgrade_right( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token) -{ -#undef dm_downgrade_right - return(dm_downgrade_right(sid, hanp, hlen, token, 0, DM_RIGHT_SHARED)); -} - - -/* The last byte in a Veritas handle is a 'pad' byte which they don't bother - to initialize to zero. As a result, you can't do binary compares of - two handles to see if they are the same. This stub (along with others) - forces the pad byte to zero so that binary compares are possible -*/ - -extern int -xvfs_dm_fd_to_handle( - int fd, - void **hanpp, - size_t *hlenp) -{ -#undef dm_fd_to_handle - int rc; - - if ((rc = dm_fd_to_handle(fd, hanpp, hlenp)) == 0) { - if (*hlenp == 16) { - char *cp = (char *)*hanpp; - cp[15] = '\0'; - } - } - return(rc); -} - - -/* The Veritas version of dm_get_config_events has a slightly different name. -*/ - -extern int -dm_get_config_events( - void *hanp, - size_t hlen, - u_int nelem, - dm_eventset_t *eventsetp, - u_int *nelemp) -{ - return(dm_get_config_event(hanp, hlen, nelem, eventsetp, nelemp)); -} - - -/* In version 2.1 uflags was defined as 'int nowait', so a value of zero in - this field means that the caller wants to wait. In XDSM this was reversed, - where if the bottom bit of uflags is set then the caller wants to wait. - This routine makes the conversion. -*/ - -extern int -xvfs_dm_get_events( - dm_sessid_t sid, - u_int maxmsgs, - u_int uflags, - size_t buflen, - void *bufp, - size_t *rlenp) -{ -#undef dm_get_events - int nowait = 1; - - if (uflags & DM_EV_WAIT) - nowait = 0; - - return(dm_get_events(sid, maxmsgs, nowait, buflen, bufp, rlenp)); -} - - -/* The Veritas version of dm_get_mountinfo has the parameters in a different - order than in the XDSM spec. Hide this in the wrapper. -*/ - -extern int -xvfs_dm_get_mountinfo( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - size_t buflen, - void *bufp, - size_t *rlenp) -{ -#undef dm_get_mountinfo - return(dm_get_mountinfo(sid, token, hanp, hlen, buflen, bufp, rlenp)); -} - - -/* Veritas does not support the dm_getall_disp function. Furthermore, their - dm_dispinfo_t structure is missing the _link field that is needed for the - DM_STEP_TO_NEXT() macro to work. -*/ - -extern int -dm_getall_disp( - dm_sessid_t sid, - size_t buflen, - void *bufp, - size_t *rlenp) -{ - return(ENOSYS); -} - - -/* Veritas does not support the dm_getall_dmattr function. Furthermore, their - dm_attrlist_t structure is missing the _link field that is needed for the - DM_STEP_TO_NEXT() macro to work. -*/ - -extern int -dm_getall_dmattr( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - size_t buflen, - void *bufp, - size_t *rlenp) -{ - return(ENOSYS); -} - - -/* Veritas does not support dm_handle_is_valid. We emulate it by checking - fields which have known values, as DMF uses this a lot. -*/ - -extern dm_boolean_t -dm_handle_is_valid( - void *hanp, - size_t hlen) -{ - char *cp = (char *)hanp; - - if (hlen != 16) { - return(DM_FALSE); - } - if (cp[15] != '\0') { - return(DM_FALSE); - } - switch (cp[14]) { - case 1: - case 2: - case 4: - break; - default: - return(DM_FALSE); - } - switch (cp[13]) { - case 0: - case 1: - break; - default: - return(DM_FALSE); - } - return(DM_TRUE); -} - - -/* Veritas uses a dev_t for their dm_fsid_t, and named their routines - accordingly. Hide this in the wrapper. Note that a dev_t is 32 bits - and the SGI dm_fsid_t is defined to be a uint64_t. If this gets to - be a problem (e.g. %x verus %llx), the Veritas dm_fsid_t could be made - to match SGI with a little casting here and there. -*/ - -extern int -dm_handle_to_fsid( - void *hanp, - size_t hlen, - dm_fsid_t *fsidp) -{ - dev_t dev; - - dev = dm_handle_to_dev(hanp, hlen); - *fsidp = (dm_fsid_t)dev; - return(0); -} - - -/* The Veritas dm_handle_to_fgen returns a long which is really the - file's generation number. dm_igen_t is typedef'd to be a long also, - so the cast here is safe. -*/ - -extern int -dm_handle_to_igen( - void *hanp, - size_t hlen, - dm_igen_t *igenp) -{ -#undef dm_handle_to_igen - long igen; - - igen = (dm_igen_t)dm_handle_to_fgen(hanp, hlen); - *igenp = (dm_igen_t)igen; - return(0); -} - - -/* Veritas uses a long for their dm_ino_t, which is really an ino_t. - Hide this in the wrapper. Note that a ino_t is 32 bits and the SGI - dm_ino_t is defined to be a uint64_t. If this gets to be a problem - (e.g. %x verus %llx), the Veritas dm_ino_t could be made to match SGI - with a little casting here and there. -*/ - - -extern int -xvfs_dm_handle_to_ino( - void *hanp, - size_t hlen, - dm_ino_t *inop) -{ -#undef dm_handle_to_ino - long ino; - - ino = (dm_ino_t)dm_handle_to_ino(hanp, hlen); - *inop = (dm_ino_t)ino; - return(0); -} - - -/* Version 2.1 of the spec did not specify the versionstrpp parameter. This - code makes the routine appear to work correctly to the caller, but it - is not really able to do the runtime check that the parameter is - supposed to provide. -*/ - -extern int -xvfs_dm_init_service( - char **versionstrpp) -{ -#undef dm_init_service - *versionstrpp = DM_VER_STR_CONTENTS; - return(dm_init_service()); -} - - -extern int -xvfs_dm_make_fshandle( - dm_fsid_t *fsidp, - void **hanpp, - size_t *hlenp) -{ -#undef dm_make_fshandle - dev_t dev; - - dev = (dev_t)*fsidp; - return(dm_make_fshandle(dev, hanpp, hlenp)); -} - - -extern int -xvfs_dm_make_handle( - dm_fsid_t *fsidp, - dm_ino_t *inop, - dm_igen_t *igenp, - void **hanpp, - size_t *hlenp) -{ -#undef dm_make_handle - dev_t dev; - long ino; - long igen; - - dev = (dev_t)*fsidp; - ino = (long)*inop; - igen = (long)*igenp; - return(dm_make_handle(dev, ino, igen, hanpp, hlenp)); -} - - -/* The last byte in a Veritas handle is a 'pad' byte which they don't bother - to initialize to zero. As a result, you can't do binary compares of - two handles to see if they are the same. This stub (along with others) - forces the pad byte to zero so that binary compares are possible -*/ - -extern int -xvfs_dm_path_to_fshandle( - char *path, - void **fshanpp, - size_t *fshlenp) -{ -#undef dm_path_to_fshandle - int rc; - - if ((rc = dm_path_to_fshandle(path, fshanpp, fshlenp)) == 0) { - if (*fshlenp == 16) { - char *cp = (char *)*fshanpp; - cp[15] = '\0'; - } - } - return(rc); -} - - -/* The last byte in a Veritas handle is a 'pad' byte which they don't bother - to initialize to zero. As a result, you can't do binary compares of - two handles to see if they are the same. This stub (along with others) - forces the pad byte to zero so that binary compares are possible -*/ - -extern int -xvfs_dm_path_to_handle( - char *path, - void **hanpp, - size_t *hlenp) -{ -#undef dm_path_to_handle - int rc; - - if ((rc = dm_path_to_handle(path, hanpp, hlenp)) == 0) { - if (*hlenp == 16) { - char *cp = (char *)*hanpp; - cp[15] = '\0'; - } - } - return(rc); -} - - -/* Veritas has a prototype for this function even though it is not - implemented. -*/ - -extern int -xvfs_dm_pending( - dm_sessid_t sid, - dm_token_t token, - dm_timestruct_t *delay) -{ -#undef dm_pending - return(ENOSYS); -} - - -extern int -xvfs_dm_read_invis( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - dm_off_t off, - dm_size_t len, - void *bufp) -{ -#undef dm_read_invis - return(dm_read_invis(sid, hanp, hlen, token, off, (dm_ssize_t)len, bufp)); -} - - -/* In version 2.1 uflags was defined as 'int nowait', so a value of zero in - this field means that the caller wants to wait. In XDSM this was reversed, - where if the bottom bit of uflags is set then the caller wants to wait. - This routine makes the conversion. -*/ - -extern int -xvfs_dm_request_right( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - u_int uflags, - dm_right_t right) -{ -#undef dm_request_right - int nowait = 1; - - if (uflags & DM_RR_WAIT) - nowait = 0; - return(dm_request_right(sid, hanp, hlen, token, nowait, right)); -} - - -extern int -xvfs_dm_set_inherit( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - dm_attrname_t *attrnamep, - mode_t mode) -{ -#undef dm_set_inherit - return(dm_set_inherit(sid, hanp, hlen, token, attrnamep, (u_int)mode)); -} - - -extern int -xvfs_dm_set_region( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - u_int nelem, - dm_region_t *regbufp, - dm_boolean_t *exactflagp) -{ -#undef dm_set_region - return(dm_set_region(sid, hanp, hlen, token, nelem, regbufp, (u_int *)exactflagp)); -} - - -extern int -dm_set_return_on_destroy( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - dm_attrname_t *attrnamep, - dm_boolean_t enable) -{ - return(dm_set_return_ondestroy(sid, hanp, hlen, token, attrnamep, (int)enable)); -} - - -extern int -xvfs_dm_sync_by_handle( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token) -{ -#undef dm_sync_by_handle - return((int)dm_sync_by_handle(sid, hanp, hlen, token)); -} - -extern int -xvfs_dm_upgrade_right( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token) -{ -#undef dm_upgrade_right - return(dm_upgrade_right(sid, hanp, hlen, token, 0, DM_RIGHT_EXCL)); -} - - -extern int -xvfs_dm_write_invis( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - int flags, - dm_off_t off, - dm_size_t len, - void *bufp) -{ -#undef dm_write_invis - return(dm_write_invis(sid, hanp, hlen, token, off, (dm_ssize_t)len, bufp, flags)); -} - -#endif diff --git a/dmapi/src/common/lib/util.c b/dmapi/src/common/lib/util.c deleted file mode 100644 index 8a256b31..00000000 --- a/dmapi/src/common/lib/util.c +++ /dev/null @@ -1,966 +0,0 @@ -/* - * Utility routines - * - * This code was written by Peter Lawthers, and placed in the public - * domain for use by DMAPI implementors and app writers. - * - * Standard disclaimer: - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include -#include - -#include -#include -#include - -#include - -#include -#include -#ifdef linux -#include -#define S_IAMB (S_IRWXU|S_IRWXG|S_IRWXO) -#endif - -#define S_MASK (S_ISUID|S_ISGID|S_ISVTX|S_IAMB) - -extern char *Progname; -extern int errno; - -void err_msg(char *, ...); -void errno_msg(char *, ...); - -struct ev_name_to_value ev_names[] = { - { "DM_EVENT_CANCEL", DM_EVENT_CANCEL }, - { "DM_EVENT_MOUNT", DM_EVENT_MOUNT }, - { "DM_EVENT_PREUNMOUNT", DM_EVENT_PREUNMOUNT }, - { "DM_EVENT_UNMOUNT", DM_EVENT_UNMOUNT }, - { "DM_EVENT_DEBUT", DM_EVENT_DEBUT }, - { "DM_EVENT_CREATE", DM_EVENT_CREATE }, - { "DM_EVENT_CLOSE", DM_EVENT_CLOSE }, - { "DM_EVENT_POSTCREATE", DM_EVENT_POSTCREATE }, - { "DM_EVENT_REMOVE", DM_EVENT_REMOVE }, - { "DM_EVENT_POSTREMOVE", DM_EVENT_POSTREMOVE }, - { "DM_EVENT_RENAME", DM_EVENT_RENAME }, - { "DM_EVENT_POSTRENAME", DM_EVENT_POSTRENAME }, - { "DM_EVENT_LINK", DM_EVENT_LINK }, - { "DM_EVENT_POSTLINK", DM_EVENT_POSTLINK }, - { "DM_EVENT_SYMLINK", DM_EVENT_SYMLINK }, - { "DM_EVENT_POSTSYMLINK", DM_EVENT_POSTSYMLINK }, - { "DM_EVENT_READ", DM_EVENT_READ }, - { "DM_EVENT_WRITE", DM_EVENT_WRITE }, - { "DM_EVENT_TRUNCATE", DM_EVENT_TRUNCATE }, - { "DM_EVENT_ATTRIBUTE", DM_EVENT_ATTRIBUTE }, - { "DM_EVENT_DESTROY", DM_EVENT_DESTROY }, - { "DM_EVENT_NOSPACE", DM_EVENT_NOSPACE }, - { "DM_EVENT_USER", DM_EVENT_USER } -}; - -int ev_namecnt = sizeof(ev_names) / sizeof(ev_names[0]); - -dm_eventtype_t -ev_name_to_value( - char *name) -{ - int i; - - for (i = 0; i < ev_namecnt; i++) { - if (!strcmp(name, ev_names[i].name)) - return(ev_names[i].value); - } - return(DM_EVENT_INVALID); -} - -char * -ev_value_to_name( - dm_eventtype_t event) -{ - static char buffer[100]; - int i; - - for (i = 0; i < ev_namecnt; i++) { - if (event == ev_names[i].value) - return(ev_names[i].name); - } - sprintf(buffer, "Unknown Event Number %d\n", event); - return(buffer); -} - - - -struct rt_name_to_value rt_names[] = { - { "DM_RIGHT_NULL", DM_RIGHT_NULL }, - { "DM_RIGHT_SHARED", DM_RIGHT_SHARED }, - { "DM_RIGHT_EXCL", DM_RIGHT_EXCL } -}; - -int rt_namecnt = sizeof(rt_names) / sizeof(rt_names[0]); - -int -rt_name_to_value( - char *name, - dm_right_t *rightp) -{ - int i; - - for (i = 0; i < rt_namecnt; i++) { - if (!strcmp(name, rt_names[i].name)) { - *rightp = rt_names[i].value; - return(0); - } - } - return(1); -} - - -char * -rt_value_to_name( - dm_right_t right) -{ - int i; - - for (i = 0; i < rt_namecnt; i++) { - if (right == rt_names[i].value) - return(rt_names[i].name); - } - return(NULL); -} - - -/* - * Convert a handle from (possibly) binary to ascii. - */ -void -hantoa( - void *hanp, - size_t hlen, - char *handle_str) -{ - int i; - u_char *cp; - - cp = (u_char *)hanp; - for (i=0;i HANDLE_LEN * 2){ - return(EBADF); - } - - while (*handle_str && *(handle_str + 1)) { - if (i == HANDLE_LEN){ - return(EBADF); - } - if( ! (isxdigit(*handle_str) && (isxdigit(*(handle_str +1))))) { - return(EBADF); - } - cur_char[0] = *handle_str; - cur_char[1] = *(handle_str + 1); - cur_char[2] = '\0'; - num = strtol(cur_char, (char **)0, 16); - handle[i++] = num & 0xff; - handle_str += 2; - } - if (*handle_str){ - return(EBADF); - } - *hlenp = i; - if ((*hanpp = malloc(*hlenp)) == NULL) - return(ENOMEM); - memcpy(*hanpp, handle, *hlenp); - return(0); -} - - -int -opaque_to_handle( - char *name, - void **hanpp, - size_t *hlenp) -{ - if (atohan(name, hanpp, hlenp)) { - /* not a handle */ - } else if (dm_handle_is_valid(*hanpp, *hlenp) == DM_FALSE) { - dm_handle_free(*hanpp, *hlenp); - /* not a handle */ - } else { - return(0); - } - - /* Perhaps it is a pathname */ - - if (dm_path_to_handle(name, hanpp, hlenp)) { - return(errno); - } - return(0); -} - - -void -print_handle( - void *hanp, - size_t hlen) -{ - char handle_str[HANDLE_STR]; - - if (hlen > HANDLE_LEN) { - printf("-- invalid hlen length %zd --\n", hlen); - return; - } - - printf("print_handle: "); - printf("%zd\t", hlen); - hantoa(hanp, hlen, handle_str); - printf("%s\n ", handle_str); -} - -void -print_victim( - void *hanp, - size_t hlen, - dm_off_t fsize) -{ - char handle_str[HANDLE_STR]; - - if (hlen > HANDLE_LEN) { - printf("-- invalid length --\n"); - return; - } - - printf("%zd\t", hlen); - hantoa(hanp, hlen, handle_str); - printf("%s ", handle_str); - printf("\t%lld \n", (long long) fsize); -} - - -/* - * Print out a simple error message, and include the errno - * string with it. - */ -void -errno_msg(char *fmt, ...) -{ - va_list ap; - int old_errno; - - old_errno = errno; - fprintf(stderr, "%s: ", Progname); - - va_start(ap, fmt ); - vfprintf(stderr, fmt, ap); - va_end(ap); - - errno = old_errno; - perror("\n\tError"); -} - -/* - * Print out a simple error message - */ -void -err_msg(char *fmt, ...) -{ - va_list ap; - - fprintf(stderr, "%s: ", Progname); - - va_start(ap, fmt ); - vfprintf(stderr, fmt, ap); - va_end(ap); - -} - - -/* - * Initialize the interface to the DMAPI - */ -int -setup_dmapi(dm_sessid_t *sidp) -{ - char *cp; - - if (dm_init_service(&cp) == -1) { - err_msg("%s/%d: Can't init dmapi\n", __FILE__, __LINE__); - return(1); - } - if (strcmp(cp, DM_VER_STR_CONTENTS)) { - err_msg("%s/%d: Compiled for a different version\n", __FILE__, __LINE__); - return(1); - } - - find_test_session(sidp); - return(0); -} - -/* - * Get the file's change indicator - */ -int -get_dmchange( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - u_int *change_start) -{ - int error; - dm_stat_t statbuf; - - - error = dm_get_fileattr(sid, hanp, hlen, token, DM_AT_CFLAG, &statbuf); - if (error == -1) { - errno_msg("%s/%d: Can't stat file (%d)", __FILE__, __LINE__, errno); - return(1); - } - *change_start = statbuf.dt_change; - return(0); -} - - -/* - * Write a file's data to the staging file. We write the file out - * in 4meg chunks. - */ -int -save_filedata( - dm_sessid_t sid, - void *hanp, - size_t hlen, - int stg_fd, - dm_size_t fsize) -{ - char *filebuf; - int i, nbufs; - int retval; - dm_ssize_t nread, lastbuf; - ssize_t nwrite; - dm_off_t off; - - nbufs = fsize / CHUNKSIZE; - off = 0; - retval = 0; - filebuf = malloc(CHUNKSIZE); - if (filebuf == NULL) { - err_msg("%s/%d: Can't alloc memory for file buffer\n", __FILE__, __LINE__); - goto out; - } - - for (i = 0; idt_dev != statb.st_dev) { - if (report_errors) { - fprintf(stdout, "ERROR:dmstat->dt_dev 0x%llx, " - "statb.st_dev 0x%llx\n", - (unsigned long long) dmstat->dt_dev, - (unsigned long long) statb.st_dev); - } - errors++; - } - if (dmstat->dt_ino != statb.st_ino) { - if (report_errors) { - fprintf(stdout, "ERROR:dmstat->dt_ino %llx, " - "statb.st_ino %llx\n", - (unsigned long long) dmstat->dt_ino, - (unsigned long long) statb.st_ino); - } - errors++; - } - if ((dmstat->dt_mode & S_IFMT) != field_to_mode(statb.st_mode)) { - if (report_errors) { - fprintf(stdout, "ERROR:dmstat->dt_mode (mode) %s, " - "statb.st_mode (mode) %s\n", - mode_to_string(dmstat->dt_mode), - mode_to_string(field_to_mode(statb.st_mode))); - } - errors++; - } - if ((dmstat->dt_mode & S_MASK) != (statb.st_mode & S_MASK)) { - if (report_errors) { - fprintf(stdout, "ERROR:dmstat->dt_mode (perm) 0%o, " - "statb.st_mode (perm) 0%o\n", - dmstat->dt_mode & S_MASK, - statb.st_mode & S_MASK); - } - errors++; - } - if (dmstat->dt_nlink != statb.st_nlink) { - if (report_errors) { - fprintf(stdout, "ERROR:dmstat->dt_nlink %u, " - "statb.st_nlink %u\n", - (unsigned int) dmstat->dt_nlink, - (unsigned int) statb.st_nlink); - } - errors++; - } - if (dmstat->dt_uid != statb.st_uid) { - if (report_errors) { - fprintf(stdout, "ERROR:dmstat->dt_uid %d, " - "statb.st_uid %d\n", dmstat->dt_uid, - statb.st_uid); - } - errors++; - } - if (dmstat->dt_gid != statb.st_gid) { - if (report_errors) { - fprintf(stdout, "ERROR:dmstat->dt_gid %d, " - "statb.st_gid %d\n", dmstat->dt_gid, - statb.st_gid); - } - errors++; - } - if (dmstat->dt_rdev != statb.st_rdev) { - if (report_errors) { - fprintf(stdout, "ERROR:dmstat->dt_rdev 0x%llx, " - "statb.st_rdev 0x%llx\n", - (unsigned long long) dmstat->dt_rdev, - (unsigned long long) statb.st_rdev); - } - errors++; - } - if (dmstat->dt_size != statb.st_size) { - if (report_errors) { - fprintf(stdout, "ERROR:dmstat->dt_size %lld, " - "statb.st_size %lld\n", - (long long) dmstat->dt_size, - (long long) statb.st_size); - } - errors++; - } - if (dmstat->dt_atime != statb.st_atime) { - if (report_errors) { - fprintf(stdout, "ERROR:dmstat->dt_atime %ld, " - "statb.st_atime %ld\n", dmstat->dt_atime, - statb.st_atime); - } - errors++; - } - if (dmstat->dt_mtime != statb.st_mtime) { - if (report_errors) { - fprintf(stdout, "ERROR:dmstat->dt_mtime %ld, " - "statb.st_mtime %ld\n", dmstat->dt_mtime, - statb.st_mtime); - } - errors++; - } - if (dmstat->dt_ctime != statb.st_ctime) { - if (report_errors) { - fprintf(stdout, "ERROR:dmstat->dt_ctime %ld, " - "statb.st_ctime %ld\n", dmstat->dt_ctime, - statb.st_ctime); - } - errors++; - } - if (dmstat->dt_dtime != statb.st_ctime) { - if (report_errors) { - fprintf(stdout, "ERROR:dmstat->dt_dtime %ld, " - "statb.st_ctime %ld\n", dmstat->dt_dtime, - statb.st_ctime); - } - errors++; - } - if (dmstat->dt_blksize != statb.st_blksize) { - if (report_errors) { - fprintf(stdout, "ERROR:dmstat->dt_blksize %d, " - "statb.st_blksize %ld\n", dmstat->dt_blksize, - statb.st_blksize); - } - errors++; - } - if (dmstat->dt_blocks != statb.st_blocks) { - if (report_errors) { - fprintf(stdout, "ERROR:dmstat->dt_blocks %lld, " - "statb.st_blocks %lld\n", - (long long) dmstat->dt_blocks, - (long long) statb.st_blocks); - } - errors++; - } - - if (errors && report_errors) - fprintf(stdout, "There were %d differences\n", errors); - return(errors); -} - - -extern char * -date_to_string( - time_t timeval) -{ -static char buffer[21]; - char *tmstr; - - if (timeval == (time_t)0) { - strcpy(buffer, "0"); - } else { - tmstr = asctime(localtime(&timeval)); - tmstr += 4; - strncpy(buffer, tmstr, 20); - buffer[20] = '\0'; - } - return(buffer); -} - - -extern char * -mode_to_string( - mode_t mode) -{ -static char buffer[256]; - - switch (mode & S_IFMT) { - - case S_IFBLK: - return("S_IFBLK"); - - case S_IFREG: - return("S_IFREG"); - - case S_IFDIR: - return("S_IFDIR"); - - case S_IFCHR: - return("S_IFCHR"); - - case S_IFIFO: - return("S_IFIFO"); - - case S_IFLNK: - return("S_IFLNK"); - - case S_IFSOCK: - return("S_IFSOCK"); - - default: - sprintf(buffer, "Invalid mode 0%o", mode & S_IFMT); - return(buffer); - } -} - - -extern char * -emask_to_string( - dm_eventset_t emask) -{ -static char buffer[256]; - char *name; - int len = 0; - int i; - - for (i = 0; i < 32; i++) { - if (!DMEV_ISSET(i, emask)) - continue; - - switch (i) { - case DM_EVENT_CREATE: - name = "DM_EVENT_CREATE"; - break; - case DM_EVENT_POSTCREATE: - name = "DM_EVENT_POSTCREATE"; - break; - case DM_EVENT_REMOVE: - name = "DM_EVENT_REMOVE"; - break; - case DM_EVENT_POSTREMOVE: - name = "DM_EVENT_POSTREMOVE"; - break; - case DM_EVENT_RENAME: - name = "DM_EVENT_RENAME"; - break; - case DM_EVENT_POSTRENAME: - name = "DM_EVENT_POSTRENAME"; - break; - case DM_EVENT_LINK: - name = "DM_EVENT_LINK"; - break; - case DM_EVENT_POSTLINK: - name = "DM_EVENT_POSTLINK"; - break; - case DM_EVENT_SYMLINK: - name = "DM_EVENT_SYMLINK"; - break; - case DM_EVENT_POSTSYMLINK: - name = "DM_EVENT_POSTSYMLINK"; - break; - case DM_EVENT_READ: - name = "DM_EVENT_READ"; - break; - case DM_EVENT_WRITE: - name = "DM_EVENT_WRITE"; - break; - case DM_EVENT_TRUNCATE: - name = "DM_EVENT_TRUNCATE"; - break; - case DM_EVENT_ATTRIBUTE: - name = "DM_EVENT_ATTRIBUTE"; - break; - case DM_EVENT_DESTROY: - name = "DM_EVENT_DESTROY"; - break; - default: - fprintf(stderr, "Unknown event type %d\n", i); - exit(1); - } - sprintf(buffer + len, "%c%s", (len ? '|' : '('), name); - len = strlen(buffer); - } - - if (len == 0) { - sprintf(buffer, "(none)"); - } else { - sprintf(buffer + len, ")"); - } - return(buffer); -} - - -#if defined(linux) - -extern char * -xflags_to_string( - u_int xflags) -{ -static char buffer[256]; - int len = 0; - - if (xflags & ~(DM_XFLAG_REALTIME|DM_XFLAG_PREALLOC|DM_XFLAG_HASATTR)) { - sprintf(buffer, "Invalid xflags 0%o", xflags); - return(buffer); - } - - if (xflags & DM_XFLAG_REALTIME) { - sprintf(buffer + len, "%cREALTIME", (len ? '|' : '(')); - len = strlen(buffer); - } - if (xflags & DM_XFLAG_PREALLOC) { - sprintf(buffer + len, "%cPREALLOC", (len ? '|' : '(')); - len = strlen(buffer); - } - if (xflags & DM_XFLAG_HASATTR) { - sprintf(buffer + len, "%cHASATTR", (len ? '|' : '(')); - len = strlen(buffer); - } - if (len == 0) { - sprintf(buffer, "(none)"); - } else { - sprintf(buffer + len, ")"); - } - return(buffer); -} - -#endif - - -extern void -print_state( - dm_stat_t *dmstat) -{ - /* Print all the stat block fields. */ - - fprintf(stdout, "dt_dev 0x%llx\n", - (unsigned long long) dmstat->dt_dev); - fprintf(stdout, "dt_ino %llx\n", - (unsigned long long) dmstat->dt_ino); - fprintf(stdout, "dt_mode (type) %s\n", - mode_to_string(dmstat->dt_mode)); - fprintf(stdout, "dt_mode (perm) 0%o\n", dmstat->dt_mode & S_MASK); - fprintf(stdout, "dt_nlink %d\n", dmstat->dt_nlink); - fprintf(stdout, "dt_uid %d\n", dmstat->dt_uid); - fprintf(stdout, "dt_gid %d\n", dmstat->dt_gid); - fprintf(stdout, "dt_rdev 0x%llx\n", - (unsigned long long) dmstat->dt_rdev); - fprintf(stdout, "dt_size %lld\n", - (unsigned long long) dmstat->dt_size); - - fprintf(stdout, "dt_atime %s\n", - date_to_string(dmstat->dt_atime)); - fprintf(stdout, "dt_mtime %s\n", - date_to_string(dmstat->dt_mtime)); - fprintf(stdout, "dt_ctime %s\n", - date_to_string(dmstat->dt_ctime)); - - fprintf(stdout, "dt_blksize %d\n", dmstat->dt_blksize); - fprintf(stdout, "dt_blocks %lld\n", (long long) dmstat->dt_blocks); - -#if defined(linux) - fprintf(stdout, "dt_xfs_igen %d\n", dmstat->dt_xfs_igen); - fprintf(stdout, "dt_xfs_xflags %s\n", - xflags_to_string(dmstat->dt_xfs_xflags)); - fprintf(stdout, "dt_xfs_extsize %d\n", dmstat->dt_xfs_extsize); - fprintf(stdout, "dt_xfs_extents %d\n", dmstat->dt_xfs_extents); - fprintf(stdout, "dt_xfs_aextents %d\n", dmstat->dt_xfs_aextents); -#endif - - fputc('\n', stdout); - - /* Print all other fields. */ - - fprintf(stdout, "emask %s\n", - emask_to_string(dmstat->dt_emask)); - fprintf(stdout, "nevents %d\n", dmstat->dt_nevents); - fprintf(stdout, "pmanreg %d\n", dmstat->dt_pmanreg); - fprintf(stdout, "pers %d\n", dmstat->dt_pers); - fprintf(stdout, "dt_dtime %s\n", - date_to_string(dmstat->dt_dtime)); - fprintf(stdout, "change %d\n", dmstat->dt_change); -} - - -extern void -print_line( - dm_stat_t *dmstat) -{ - fprintf(stdout, "0x%llx|", (unsigned long long) dmstat->dt_dev); - fprintf(stdout, "%llx|", (unsigned long long) dmstat->dt_ino); - fprintf(stdout, "%s|", mode_to_string(dmstat->dt_mode)); - fprintf(stdout, "0%o|", dmstat->dt_mode & S_MASK); - fprintf(stdout, "%d|", dmstat->dt_nlink); - fprintf(stdout, "%d|", dmstat->dt_uid); - fprintf(stdout, "%d|", dmstat->dt_gid); - fprintf(stdout, "0x%llx|", (unsigned long long) dmstat->dt_rdev); - fprintf(stdout, "%lld|", (long long) dmstat->dt_size); - - fprintf(stdout, "%s|", date_to_string(dmstat->dt_atime)); - fprintf(stdout, "%s|", date_to_string(dmstat->dt_mtime)); - fprintf(stdout, "%s|", date_to_string(dmstat->dt_ctime)); - - fprintf(stdout, "%d|", dmstat->dt_blksize); - fprintf(stdout, "%lld|", (long long) dmstat->dt_blocks); - - fprintf(stdout, "%d|", dmstat->dt_xfs_igen); - fprintf(stdout, "%s|", xflags_to_string(dmstat->dt_xfs_xflags)); - fprintf(stdout, "%d|", dmstat->dt_xfs_extsize); - fprintf(stdout, "%d|", dmstat->dt_xfs_extents); - fprintf(stdout, "%d|", dmstat->dt_xfs_aextents); - - /* Print all other fields. */ - - fprintf(stdout, "%s|", emask_to_string(dmstat->dt_emask)); - fprintf(stdout, "%d|", dmstat->dt_nevents); - fprintf(stdout, "%d|", dmstat->dt_pmanreg); - fprintf(stdout, "%d|", dmstat->dt_pers); - fprintf(stdout, "%s|", date_to_string(dmstat->dt_dtime)); - fprintf(stdout, "%d", dmstat->dt_change); - - fputc('\n', stdout); -} diff --git a/dmapi/src/sample_hsm/Makefile b/dmapi/src/sample_hsm/Makefile deleted file mode 100644 index 3c812fd4..00000000 --- a/dmapi/src/sample_hsm/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0+ -# Copyright (C) 2011 SGI All Rights Reserved. -# -# -# -TOPDIR = ../../.. - -include $(TOPDIR)/include/builddefs - -TARGETS = migfind migin migout mls mrmean wbee - -CFILES = $(TARGETS:=.c) -LDIRT = $(TARGETS) - -CFLAGS += -I$(TOPDIR)/dmapi/src/common -I/usr/include/xfs - -LLDLIBS = $(TOPDIR)/dmapi/src/common/lib/libdmtest.la $(LIBDM) - -default: depend $(TARGETS) - -depend: .dep - -include $(BUILDRULES) - -install install-dev: default - -$(TARGETS): - @echo " [CC] $@" - $(Q)$(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) - --include .dep diff --git a/dmapi/src/sample_hsm/README b/dmapi/src/sample_hsm/README deleted file mode 100644 index 0648f81e..00000000 --- a/dmapi/src/sample_hsm/README +++ /dev/null @@ -1,62 +0,0 @@ -The files in this directory comprise a simple HSM example that uses -the DMAPI. These files are distributed in the hope that they will be -useful, but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. These programs -have been tested on an SGI platform (as of April 1995) and found -to be suitably functional; however, there is no guarantee that they -do, in fact, provide the functationality that is advertised. This -is a long winded way of saying they probably have bugs; if you -find 'em, fix 'em. - -Okay, now that we have the disclaimers out of the way, here are the details. - - migfind - ======= -This will find all files of a specified size, and print out the handles. -It is normally used like this: - migfind -s 800k /migfs >& cand_file - -This example will find all files greater than 800K in the /migfs filesystem, -and put the handles (converted to ascii) in the file 'cand_file'. The output -consists of three fields per line: - handle length filehandle file size in bytes - - migout - ====== -migout reads a list of handles as created by migfind, and migrates -the files data. The data is stored in files that are located in -another directory. The usage is - migout /dmapi_fs/stagedir < cand_file - -This will all the files specified by handle in 'cand_file', and -put their data in files located under the directory /dmapi_fs/stagedir'. -The staging directory must be on a filesystem that supports -the dmapi; the reason for this is to allow for a simplification -in the code that stores the location of the data as a DM attribute -(file handles are easier than path names). - - migin - ===== -This daemon waits for DMAPI events and dispatches worker bees -to actually stage the data in. The usage is: - migin -l dmapi_log /migfs -migin will fork/exec a 'wbee' to either bring the data back from -the staging directory, or to invalidate the file. - - -Other programs: -There are a couple of other programs in this directory. - - mrmean - ====== -Simplist cleanup/debugging tool that will print information about -the active sessions. If desired, it can also respond to outstanding -events and destroy sessions that may have been left around from -a process exiting unexpectedly. - - mls - === -Simple ls type program to display information about a file, such -as the managed region info, allocation info, event lists, and -file handle. - diff --git a/dmapi/src/sample_hsm/migfind.c b/dmapi/src/sample_hsm/migfind.c deleted file mode 100644 index 95b6d6d5..00000000 --- a/dmapi/src/sample_hsm/migfind.c +++ /dev/null @@ -1,280 +0,0 @@ -/* - * Simple utility to find all files above a certain size in - * a filesystem. The output is to stdout, and is of the form: - * filehandle length filehandle file size in bytes - * - * The list is not sorted in any way. - * - * This code was written by Peter Lawthers, and placed in the public - * domain for use by DMAPI implementors and app writers. - * - * Standard disclaimer: - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -#include -#include -#include -#include -#include -#include - -#include - -#include - -#define NUMLEN 16 /* arbitrary max len of input size */ -#define MAX_K (((u_int)LONG_MAX) / 1024) -#define MAX_M (((u_int)LONG_MAX) / (1024*1024)) - - - -extern char *optarg; -extern int optind, optopt, opterr; -char *Progname; - -extern void print_victim(void *, size_t, dm_off_t); -extern void err_msg(char *, ...); -extern void errno_msg(char *, ...); - -int setup_dmapi(dm_sessid_t *); -int scan_fs(dm_sessid_t, void *, size_t, dm_off_t); -int verify_size(char *, dm_off_t *); -void usage(char *); - -void -usage( - char *prog) -{ - fprintf(stderr, "Usage: %s ", prog); - fprintf(stderr, " [-s file threshold]"); - fprintf(stderr, " filesystem\n"); -} - -/* - * Convert an input string on the form 10m or 128K to something reasonable - */ -int -verify_size( - char *str, - dm_off_t *sizep) -{ - char *cp; - dm_off_t size; - - if (strlen(str) > NUMLEN) { - printf("Size %s is invalid \n", str); - return(1); - } - - size = strtol(str,0,0); - if (size < 0 || size >= LONG_MAX ) { - printf("Size %lld is invalid \n", (long long) size); - return(1); - } - - cp = str; - while (isdigit(*cp)) - cp++; - if (*cp == 'k' || *cp == 'K') { - if ( size >= (u_int) MAX_K) { - printf("Size %lld is invalid\n", (long long) size); - return(1); - } - size *= 1024; - } else if (*cp == 'm' || *cp == 'M') { - if ( size >= (u_int) MAX_M) { - printf("Size %lld is invalid\n", (long long) size); - return(1); - } - size *= (1024*1024); - } - *sizep = size; - return(0); -} - - - -int -main( - int argc, - char *argv[]) -{ - - int c; - int error; - dm_off_t size; - char *fsname; - dm_sessid_t sid; - void *fs_hanp; - size_t fs_hlen; - char *sizep = "0"; - - - Progname = argv[0]; - size = 0; - - while ((c = getopt(argc, argv, "s:")) != EOF) { - switch (c) { - case 's': - sizep = optarg; - break; - - case '?': - default: - usage(Progname); - exit(1); - } - } - if (optind >= argc) { - usage(Progname); - exit(1); - } - /* - * Verify the input size string is legit - */ - error = verify_size(sizep, &size); - if (error) - exit(1); - - fsname = argv[optind]; - - /* - * Now we have our filesystem name and possibly a size threshold - * to look for. Init the dmapi, and get a filesystem handle so - * we can scan the filesystem - */ - error = setup_dmapi(&sid); - if (error) - exit(1); - - if (dm_path_to_fshandle(fsname, &fs_hanp, &fs_hlen) == -1) { - errno_msg("Can't get filesystem handle"); - exit(1); - } - - - - /* - * Get the attributes of all files in the filesystem - */ - error = scan_fs(sid, fs_hanp, fs_hlen, size); - if (error) - exit(1); - - - /* - * We're done, so we can shut down our session. - */ - if (dm_destroy_session(sid) == -1) { - errno_msg("Can't close session"); - exit(1); - } - - return(0); - -} - -/* - * Get the attributes for all the files in a filesystem in bulk, - * and print out the handles and sizes of any that meet our target - * criteria. - * - * We are not interested in file names; if we were, then we would - * have to do a dm_get_dirattrs() on each directroy, then use - * dm_handle_to_path() to get the pathname. - */ -int -scan_fs( - dm_sessid_t sid, - void *fs_hanp, - size_t fs_hlen, - dm_off_t target_size) -{ - u_int mask; /* attributes to scan for */ - dm_stat_t *dm_statbuf, *sbuf; /* attributes buffer */ - dm_attrloc_t locp; /* opaque location in fs */ - size_t rlenp; /* ret length of stat info */ - size_t buflen; /* length of stat buffer */ - void *hanp; /* file handle */ - size_t hlen; /* file handle */ - int more; /* loop terminator */ - int error; - - - /* - * Size the stat buffer to return info on 1K files at a time - */ - buflen = sizeof(dm_stat_t) * 1024; -#ifdef VERITAS_21 - if (buflen > 65536) - buflen = 65536; -#endif - dm_statbuf = (dm_stat_t *)calloc(1, buflen); - if (dm_statbuf == NULL) { - err_msg("Can't get memory for stat buffer"); - return(1); - } - - - /* - * Initialize the offset opaque offset cookie that - * we use in successive calls to dm_get_bulkattr() - */ - error = dm_init_attrloc(sid, fs_hanp, fs_hlen, DM_NO_TOKEN, &locp); - if (error == -1) { - errno_msg("%s/%d: Can't initialize offset cookie (%d)", __FILE__, __LINE__, errno); - free(dm_statbuf); - return(1); - } - - /* - * Set our stat mask so that we'll only get the normal stat(2) - * info and the file's handle - */ - mask = DM_AT_HANDLE | DM_AT_STAT; - do { - more = dm_get_bulkattr(sid, fs_hanp, fs_hlen, DM_NO_TOKEN, - mask, &locp, buflen, dm_statbuf, &rlenp); - if (more == -1) { - errno_msg("%s/%d: Can't get bulkattr for filesystem", __FILE__, __LINE__, errno); - break; - } - - /* - * Walk through the stat buffer and pull out files - * that are of interest - * - * The stat buffer is variable length, so we must - * use the DM_STEP_TO_NEXT macro to access each individual - * dm_stat_t structure in the returned buffer. - */ - sbuf = dm_statbuf; - while (sbuf != NULL) { - if (S_ISREG(sbuf->dt_mode) && - sbuf->dt_size >= target_size) { - hanp = DM_GET_VALUE(sbuf, dt_handle, void *); - hlen = DM_GET_LEN(sbuf, dt_handle); - - print_victim(hanp, hlen, sbuf->dt_size); - } - sbuf = DM_STEP_TO_NEXT(sbuf, dm_stat_t *); - } - } while (more == 1); - - free(dm_statbuf); - if (more == -1) - return(1); - - return(0); -} - diff --git a/dmapi/src/sample_hsm/migin.c b/dmapi/src/sample_hsm/migin.c deleted file mode 100644 index ff2166ce..00000000 --- a/dmapi/src/sample_hsm/migin.c +++ /dev/null @@ -1,411 +0,0 @@ -/* - * Master migration daemon - * - * The master migration daemon waits for events on a file and - * spawns a child process to handle the event - * - * This code was written by Peter Lawthers, and placed in the public - * domain for use by DMAPI implementors and app writers. - * - * Standard disclaimer: - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include - -extern char *optarg; -extern int optind, optopt, opterr; -extern int errno; -char *Progname; -int Verbose; -dm_sessid_t sid = DM_NO_SESSION; - -extern int setup_dmapi(dm_sessid_t *); -extern void err_msg(char *, ...); -extern void errno_msg(char *, ...); - -void event_loop(dm_sessid_t); -int set_events(dm_sessid_t, void *, size_t); -int mk_daemon(char *); -void spawn_kid(dm_sessid_t, dm_token_t, char *); -void migin_exit(int); -void usage(char *); -void setup_signals(); - - -void -usage( - char *prog) -{ - fprintf(stderr, "Usage: %s ", prog); - fprintf(stderr, " <-v verbose> "); - fprintf(stderr, " <-l logfile> "); - fprintf(stderr, "filesystem \n"); -} - - -int -main( - int argc, - char *argv[]) -{ - - int c; - int error; - char *fsname, *logfile; - void *fs_hanp; - size_t fs_hlen; - - - Progname = argv[0]; - fsname = NULL; - logfile = NULL; - - while ((c = getopt(argc, argv, "vl:")) != EOF) { - switch (c) { - case 'v': - Verbose = 1; - break; - case 'l': - logfile = optarg; - break; - case '?': - default: - usage(Progname); - exit(1); - } - } - if (optind >= argc) { - usage(Progname); - exit(1); - } - fsname = argv[optind]; - if (fsname == NULL) { - usage(Progname); - exit(1); - } - /* - * If no logfile name is specified, we'll just send - * all output to some file in /tmp - */ - if (logfile == NULL) - logfile = LOG_DEFAULT; - - - /* - * Turn ourselves into a daemon - */ - if (!Verbose){ - error = mk_daemon(logfile); - if (error) - exit(1); - } - setup_signals(); - - /* - * Now we have our filesystem name and possibly a size threshold - * to look for. Init the dmapi, and get a filesystem handle so - * we can set up our events - */ - error = setup_dmapi(&sid); - if (error) - exit(1); - - if (dm_path_to_fshandle(fsname, &fs_hanp, &fs_hlen) == -1) { - errno_msg("Can't get filesystem handle"); - exit(1); - } - - - /* - * Set the event disposition so that our session will receive - * the managed region events (read, write, and truncate) - */ - error = set_events(sid, fs_hanp, fs_hlen); - if (error) - exit(1); - - - /* - * Now wait forever for messages, spawning kids to - * do the actual work - */ - event_loop(sid); - return(0); -} - -/* - * Main event loop processing - */ -void -event_loop( - dm_sessid_t sid) -{ - void *msgbuf; - size_t bufsize, rlen; - int error; - dm_eventmsg_t *msg; - - /* - * We take a swag at a buffer size. If it's wrong, we can - * always resize it - */ - bufsize = sizeof(dm_eventmsg_t) + sizeof(dm_data_event_t) + HANDLE_LEN; - bufsize *= 16; - msgbuf = (void *)malloc(bufsize); - if (msgbuf == NULL) { - err_msg("Can't allocate memory for buffer\n"); - goto out; - } - - for (;;) { - error = dm_get_events(sid, ALL_AVAIL_MSGS, DM_EV_WAIT, bufsize, - msgbuf, &rlen); - if (error == -1) { - if (errno == E2BIG) { - free(msgbuf); - msgbuf = (void *)malloc(rlen); - if (msgbuf == NULL) { - err_msg("Can't resize msg buffer\n"); - goto out; - } - continue; - } - errno_msg("Error getting events from DMAPI"); - goto out; - } - - /* - * Walk thru the message buffer, pull out each individual - * message, and dispatch the messages to child processes - * with the sid, token, and data. The children will - * respond to the events. - */ - msg = (dm_eventmsg_t *)msgbuf; - while (msg != NULL ) { - if (Verbose) { - fprintf(stderr, "Received %s, token %d\n", - (msg->ev_type == DM_EVENT_READ ? "read" : - (msg->ev_type == DM_EVENT_WRITE ? "write" : "trunc")), msg->ev_token); - } - switch (msg->ev_type) { - - case DM_EVENT_READ: - spawn_kid(sid, msg->ev_token, RESTORE_FILE); - break; - - case DM_EVENT_WRITE: - case DM_EVENT_TRUNCATE: - spawn_kid(sid, msg->ev_token, INVAL_FILE); - break; - - default: - err_msg("Invalid msg type %d\n", msg->ev_type); - break; - } - msg = DM_STEP_TO_NEXT(msg, dm_eventmsg_t *); - } - } -out: - if (msgbuf != NULL) - free(msgbuf); - - migin_exit(0); -} - -/* - * Fork and exec our worker bee to work on the file. If - * there is any error in fork/exec'ing the file, we have to - * supply the error return to the event. Once the child gets - * started, they will respond to the event for us. - */ -void -spawn_kid( - dm_sessid_t sid, - dm_token_t token, - char *action) -{ - pid_t pid; - char sidbuf[10]; - char tokenbuf[10]; - - pid = fork(); - if (pid == 0) { - /* - * We're in the child. Try and exec the worker bee - */ - sprintf(sidbuf, "%d", sid); - sprintf(tokenbuf, "%d", token); - if (Verbose) { - fprintf(stderr, "execl(%s, %s, %s, -s, %s, -t, %s, 0)\n", - WORKER_BEE, WORKER_BEE, action, sidbuf, - tokenbuf); - } - execlp("./"WORKER_BEE, WORKER_BEE, action, "-s", sidbuf, - "-t", tokenbuf, NULL); - errno_msg("execlp of worker bee failed"); - (void)dm_respond_event(sid, token, DM_RESP_ABORT, - errno, 0, 0); - exit(1); - } - - if (pid < 0) { - err_msg("Can't fork worker bee\n"); - (void)dm_respond_event(sid, token, DM_RESP_ABORT, errno, - 0, 0); - return; - } - return; - -} - - -/* - * Set the event disposition of the managed region events - */ -int -set_events( - dm_sessid_t sid, - void *fs_hanp, - size_t fs_hlen) -{ - dm_eventset_t eventlist; - - DMEV_ZERO(eventlist); - DMEV_SET(DM_EVENT_READ, eventlist); - DMEV_SET(DM_EVENT_WRITE, eventlist); - DMEV_SET(DM_EVENT_TRUNCATE, eventlist); - - if (dm_set_disp(sid, fs_hanp, fs_hlen, DM_NO_TOKEN, &eventlist, - DM_EVENT_MAX) == -1) - { - errno_msg("Can't set event disposition"); - return(1); - } - return(0); -} - - - - -/* - * Dissassociate ourselves from our tty, and close all files - */ -int -mk_daemon( - char *logfile) -{ - int fd; - int i; - struct rlimit lim; - pid_t pid; - - if ((pid = fork()) == -1) - return (-1); - if (pid) - exit(0); - - (void) setsid(); - - (void) chdir("/"); - - /* - * Determine how many open files we've got and close - * then all - */ - if (getrlimit(RLIMIT_NOFILE, &lim) < 0 ) { - errno_msg("Can't determine max number of open files"); - return(1); - } - for (i=0; i 0) - ; - - fprintf(stdout, "\n"); - - - /* - * XXXX FIXME XXX - * - * Should do a set_disp to 0 and then drain the session - * queue as well. On the SGI, we'll need to make the - * filesystem handle global so that we can get at it - */ - - error = dm_destroy_session(sid); - if (error == -1) { - errno_msg("Can't shut down session\n"); - } - - exit(0); -} - diff --git a/dmapi/src/sample_hsm/migout.c b/dmapi/src/sample_hsm/migout.c deleted file mode 100644 index d2e8b788..00000000 --- a/dmapi/src/sample_hsm/migout.c +++ /dev/null @@ -1,577 +0,0 @@ -/* - * Simple utility to migrate a group of specified files. - * The unsorted input is from migfind, and is of the form: - * filehandle length filehandle file size - * - * The data for each file will be stored in another file located - * in a different directory. This 'staging directory' should be on - * another filesystem. The staging file will be named the same as - * the file handle. This simple-minded scheme suffices, since we're - * not interested in showing any media management in this example. - * - * ASSUMPTIONS: - * Persistent managed regions are supported - * Persistent DM attributes are supported - * - * - * This code was written by Peter Lawthers, and placed in the public - * domain for use by DMAPI implementors and app writers. - * - * Standard disclaimer: - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include -#include -#include - -#include -#include -#include -#include - -#include - -extern char *optarg; -extern int optind, optopt, opterr; -char *Progname; -int Verbose; - -int mig_files(dm_sessid_t, char *); -int mk_nonrez(dm_sessid_t, void *, size_t, dm_token_t, dm_off_t); -int set_mrgns(dm_sessid_t, void *, size_t, dm_token_t, dm_off_t, - dm_off_t *); -void clear_mrgns(dm_sessid_t, void *, dm_size_t, dm_token_t); -int lock_file(dm_sessid_t, void *, size_t, dm_right_t, dm_token_t *); -void unlock_file(dm_sessid_t, dm_token_t); -int get_dmchange(dm_sessid_t, void *, size_t, dm_token_t, u_int *); -int create_stgfile(char *, void *, size_t, char *, int *); -int setup_dmapi(dm_sessid_t *); -int save_filedata(dm_sessid_t, void *, size_t, int, dm_size_t); -int extract_fields(char *, char *, size_t *, dm_size_t *); -int save_dataloc(dm_sessid_t, void *, size_t, dm_token_t, char *); - -void usage(char *); - -void -usage( - char *prog) -{ - fprintf(stderr, "Usage: %s ", prog); - fprintf(stderr, " <-v verbose> "); - fprintf(stderr, "\n"); -} - - -int -main( - int argc, - char *argv[]) -{ - - int c; - int error; - char *stage_dir; - dm_sessid_t sid; - - - error = 0; - Progname = argv[0]; - stage_dir = NULL; - - while ((c = getopt(argc, argv, "v")) != EOF) { - switch (c) { - case 'v': - Verbose++; - break; - - case '?': - default: - usage(Progname); - exit(1); - } - } - if (optind >= argc) { - usage(Progname); - exit(1); - } - stage_dir = argv[optind]; - if (stage_dir == NULL) { - usage(Progname); - exit(1); - } - - /* - * Init the dmapi, and get a session. - */ - error = setup_dmapi(&sid); - if (error) - exit(1); - - /* - * Migrate all the files given to us via stdin - */ - error = mig_files(sid, stage_dir); - - - if (dm_destroy_session(sid)) - errno_msg("Can't shut down session, line=%d, errno=%d", __LINE__, errno); - - return(error); -} - -/* - * Migrate all the files given in stdin - */ - -int -mig_files( - dm_sessid_t sid, - char *stage_dir) -{ - void *hanp; - size_t hlen; - dm_size_t fsize; - int error; - u_int change_start, change_end; - int stg_fd; /* staging file descriptor */ - dm_off_t off; /* starting offset */ - dm_token_t token; /* file token */ - char ibuf[IBUFSIZE]; - char handle_buf[HANDLE_LEN]; - char stgpath[MAXPATHLEN]; - - /* - * Read all the lines in std input and migrate each file. - * This simple-minded migout does no batching, sorting, or - * anything else that a real HSM might do. - */ - while (fgets(ibuf, IBUFSIZE, stdin) != NULL) { - error = extract_fields(ibuf, handle_buf, &hlen, &fsize); - if (error) { - err_msg("%s/%d: mangled input line, '%s' ", __FILE__, __LINE__, ibuf); - continue; - } - hanp = (void *)handle_buf; - if (Verbose) { - print_handle(hanp, hlen); - } - - /* - * Create and open the file in the staging directory. - */ - error = create_stgfile(stage_dir, hanp, hlen, stgpath, &stg_fd); - if (error) - continue; - - /* - * Get the file's DMAPI change indicator so that we - * can tell if it changed (either via a data mod, or - * a DM attribute update) while we are staging it out - */ - error = get_dmchange(sid, hanp, hlen, DM_NO_TOKEN, - &change_start); - if (error) { - close(stg_fd); - continue; - } - - /* - * Write all the file's data to our file in the - * staging directory. In a real HSM, the data would - * be copied off to tertiary storage somewhere. - * - * The staging file descriptor will be closed for us - * in all cases. - */ - error = save_filedata(sid, hanp, hlen, stg_fd, fsize); - if (error) - continue; - - - /* - * Get exclusive access to the file so we can blow - * away its data - */ - error = lock_file(sid, hanp, hlen, DM_RIGHT_EXCL, &token); - if (error) { - err_msg("Can't get exclusive access to file, ignoring"); - continue; - } - - /* - * Make sure the file did not change - */ - error = get_dmchange(sid, hanp, hlen, token, &change_end); - if (error) { - unlock_file(sid, token); - continue; - } - if (change_start != change_end) { - unlock_file(sid, token); - err_msg("File changed during stageout, ignoring"); - continue; - } - - /* - * Save the location of the data (the staging file) - * in a private DM attribute so that we can get the - * file back in the future - */ - error = save_dataloc(sid, hanp, hlen, token, stgpath); - if (error) { - err_msg("Can't save location of file data"); - unlock_file(sid, token); - continue; - } - - - /* - * Set up the managed regions on the file so that - * a foray past the fencepost will cause an event to - * be generated. - */ - error = set_mrgns(sid, hanp, hlen, token, fsize, &off); - if (error) { - unlock_file(sid, token); - err_msg("Can't set managed regions"); - continue; - } - - /* - * Now we can safely blow away the data. - */ - error = mk_nonrez(sid, hanp, hlen, token, off); - if (error) { - clear_mrgns(sid, hanp, hlen, token); - } - - /* - * Unlock the file, which releases the token - */ - unlock_file(sid, token); - - } - - return(0); -} - - -/* - * Remove the data for a file - */ -int -mk_nonrez( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - dm_off_t off) -{ - int error; - - error = dm_punch_hole(sid, hanp, hlen, token, off, 0); - if (error == -1) { - errno_msg("Can't punch hole in file, line=%d, errno=%d", __LINE__, errno); - return(1); - } - return(0); -} - - -/* - * Set up the managed regions on a file. We try to leave some of the - * file resident; the actual amount left on-disk is dependent - * on the rounding enforced by the DMAPI implementation. - */ -int -set_mrgns( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - dm_off_t fsize, - dm_off_t *start_off) -{ - dm_off_t rroff; - dm_size_t rlenp; - dm_region_t rgn; - u_int exact_flag; - int error; - - if (fsize > FENCEPOST_SIZE) { - error = dm_probe_hole(sid, hanp, hlen, token, FENCEPOST_SIZE, 0, - &rroff, &rlenp); - if (error == -1) { - errno_msg("Can't probe hole in file, line=%d, errno=%d", __LINE__, errno); - return(1); - } - } else { - rroff = 0; - } - *start_off = rroff; - - /* - * Now we know what the DMAPI and filesystem will support with - * respect to rounding of holes. We try to set our managed region - * to begin at this offset and continue to the end of the file. - * We set the event mask so that we'll trap on all events that - * occur in the managed region. - * - * Note that some implementations may not be able to support - * a managed region that starts someplace other than the beginning - * of the file. If we really cared, we could check the exact_flag. - */ - rgn.rg_offset = rroff; - rgn.rg_size = 0; - rgn.rg_flags = DM_REGION_READ | DM_REGION_WRITE | DM_REGION_TRUNCATE; - error = dm_set_region(sid, hanp, hlen, token, 1, &rgn, &exact_flag); - if (error == -1) { - errno_msg("Can't set managed region, line=%d, errno=%d", __LINE__, errno); - return(1); - } - return(0); -} - - -/* - * Clear a managed region on a file - */ -void -clear_mrgns( - dm_sessid_t sid, - void *hanp, - dm_size_t hlen, - dm_token_t token) -{ - dm_region_t rgn; - u_int exact_flag; - int error; - - rgn.rg_offset = 0; - rgn.rg_size = 0; - rgn.rg_flags = DM_REGION_NOEVENT; - error = dm_set_region(sid, hanp, hlen, token, 1, &rgn, &exact_flag); - if (error) - errno_msg("Can't clear managed regions from file, line=%d, errno=%d", __LINE__, errno); - - return; -} - - -/* - * File rights are accessed via a token. The token must be associated - * with a synchronous event message. So, to obtain either shared or - * exclusive rights to a file, we first associate a token with a message, - * and then request our desired right - */ -int -lock_file( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_right_t right, - dm_token_t *token) -{ - int error; - - error = dm_create_userevent(sid, (size_t)0, (void *)0, token); - if (error == -1) { - errno_msg("Can't create user event for token context, line=%d, errno=%d", __LINE__, errno); - return(1); - } - error = dm_request_right(sid, hanp, hlen, *token, DM_RR_WAIT, right); - if (error == -1) { - errno_msg("Can't get requested right for token, line=%d, errno=%d", __LINE__, errno); - return(1); - } - return(0); -} - - -/* - * Release the lock on a file - */ -void -unlock_file( - dm_sessid_t sid, - dm_token_t token) -{ - int error; - - error = dm_respond_event(sid, token, DM_RESP_CONTINUE, 0, 0, 0); - if (error == -1) - errno_msg("Can't respond to event and release token, line=%d, errno=%d", __LINE__, errno); - - return; -} - - -int -create_stgfile( - char *stage_dir, - void *hanp, - size_t hlen, - char *path, - int *stg_fd) -{ - char handle_str[HANDLE_STR]; - - if (hlen > HANDLE_LEN) { - err_msg("Handle length (%d) too long for file", hlen); - return(1); - } - - strcpy(path, stage_dir); - strcat(path, "/"); - hantoa(hanp, hlen, handle_str); - - /* - * Concat the ascii representation of the file handle - * (which is two times longer than the binary version) - * onto the staging path name - */ - strncat(path, (char *)handle_str, hlen*2); - - if ( (*stg_fd = open(path, O_RDWR | O_CREAT, 0644)) < 0) { - errno_msg("Can't open file %s, line=%d, errno=%d\n", path, __LINE__, errno); - return(1); - } - - return(0); -} - - -/* - * Extract the three fields from the input line. THe input is of - * the form - * filehandle length filehandle file size - * - * The length of the file handle is expected to be less than 64 bytes. - */ -int -extract_fields( - char *ibuf, - char *handle_buf, - size_t *hlen, - dm_size_t *fsize) -{ - char *cp, *start; - size_t len; - char *hanp; - char *hanpp=NULL; - - /* - * Skip any leading white space, and check the length - * of the file handle - */ - cp = ibuf; - while (!isalnum(*cp)) - cp++; - - start = cp; - while (isalnum(*cp)) - cp++; - *cp = '\0'; - - len = strtol(start, 0, 0); - if (len > HANDLE_LEN) { - err_msg("%s/%d: Handle length %d too long in input line", __FILE__, __LINE__, len); - return(1); - } - - *hlen = len; - - /* - * Skip over white space, and extract the file handle - */ - while (!isalnum(*cp)) - cp++; - hanp = cp; - - /* - * Skip over the ascii length of the file handle, and - * then extract the file's length - */ - cp += len*2; - *cp = '\0'; - - atohan( hanp, (void**)&hanpp, &len ); - memcpy( handle_buf, hanpp, len); - free( hanpp ); - - /* skip over white space */ - while (!isalnum(*cp)) - cp++; - - /* read file length */ - start = cp; - while (isalnum(*cp)) - cp++; - *cp = '\0'; - - *fsize = strtol(start, 0, 0); - - return(0); - -} - - -/* - * Save the location of the file's data so that we can find - * it again when we're staging the file back in. Rather than store - * the full pathname of the staging file, we just store the handle. - * This means the staging dir must be on a filesystem that supports - * the DMAPI. - */ -int -save_dataloc( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - char *stgpath) -{ - void *stg_hanp; - size_t stg_hlen; - int error; - dm_attrname_t hanp_attrname; - dm_attrname_t hlen_attrname; - - if (dm_path_to_handle(stgpath, &stg_hanp, &stg_hlen) == -1) { - errno_msg("Can't get handle for path %s, line=%d, errno=%d", stgpath, __LINE__, errno); - return(1); - } - - /* - * Since handles are in two parts, they become two attributes. - * This can be useful, since we can extract the length - * separately when we stage the file back in - */ - memcpy((void *)&hanp_attrname.an_chars[0], DLOC_HAN, DM_ATTR_NAME_SIZE); - error = dm_set_dmattr(sid, hanp, hlen, token, &hanp_attrname, - 0, stg_hlen, stg_hanp); - if (error == -1) { - errno_msg("Can't set DM attr of staging filehandle, line=%d, errno=%d",__LINE__, errno); - return(1); - } - - memcpy((void *)&hlen_attrname.an_chars[0], DLOC_HANLEN, DM_ATTR_NAME_SIZE); - error = dm_set_dmattr(sid, hanp, hlen, token, &hlen_attrname, - 0, sizeof(stg_hlen), (void *)&stg_hlen); - if (error == -1) { - errno_msg("Can't set DM attr of staging filehandle length, line=%d, errno=%d", __LINE__, errno); - return(1); - } - return(0); -} diff --git a/dmapi/src/sample_hsm/mls.c b/dmapi/src/sample_hsm/mls.c deleted file mode 100644 index 10d89958..00000000 --- a/dmapi/src/sample_hsm/mls.c +++ /dev/null @@ -1,320 +0,0 @@ -/* - * Simple util to print out DMAPI info about a file - * - * This code was written by Peter Lawthers, and placed in the public - * domain for use by DMAPI implementors and app writers. - * - * Standard disclaimer: - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include -#include -#include - -#include -#include -#include -#include - -#include - -#define MAX_RGNS 8 /* Arbitrary for this release */ -#define NUM_EXTENTS 4 - -extern char *optarg; -extern int optind, optopt, opterr; -char *Progname; - -void usage(char *); -int mr_info(dm_sessid_t, void *, size_t); -int alloc_info(dm_sessid_t, void *, size_t); -int event_info(dm_sessid_t, void *, size_t); -int handle_info(dm_sessid_t, void *, size_t); - -extern int setup_dmapi(dm_sessid_t *); -extern void errno_msg(char *, ...); -extern void print_handle(void *, size_t); - - -void -usage( - char *prog) -{ - fprintf(stderr, "Usage: %s filename \n ", prog); - fprintf(stderr, "\t-m managed region info\n"); - fprintf(stderr, "\t-a allocation info\n"); - fprintf(stderr, "\t-e event info\n"); - fprintf(stderr, "\t-h handle\n"); -} - - -int -main( - int argc, - char *argv[]) -{ - int c; - int error; - int mr_flag, alloc_flag, handle_flag, event_flag; - void *hanp; - size_t hlen; - char *filename; - dm_sessid_t sid; - - - Progname = argv[0]; - mr_flag = alloc_flag = handle_flag = event_flag = 0; - - while ((c = getopt(argc, argv, "maeh")) != EOF) { - switch (c) { - case 'm': - mr_flag = 1; - break; - case 'a': - alloc_flag = 1; - break; - case 'e': - event_flag = 1; - break; - case 'h': - handle_flag = 1; - break; - case '?': - default: - usage(Progname); - exit(1); - } - } - if (optind >= argc) { - usage(Progname); - exit(1); - } - filename = argv[optind]; - if (filename == NULL) { - usage(Progname); - exit(1); - } - - - /* - * Set up our link to the DMAPI, and get a handle for - * the file we want to query - */ - error = setup_dmapi(&sid); - if (error) - exit(1); - - if (dm_path_to_handle(filename, &hanp, &hlen) == -1) { - printf("Can't get handle for path %s", filename); - error = 1; - goto out; - } - - printf("File %s:\n", filename); - if (mr_flag) { - error = mr_info(sid, hanp, hlen); - if (error) { - error = 1; - goto out; - } - } - if (alloc_flag) { - error = alloc_info(sid, hanp, hlen); - if (error) { - error = 1; - goto out; - } - } - if (event_flag) { - error = event_info(sid, hanp, hlen); - if (error) { - error = 1; - goto out; - } - } - if (handle_flag) { - error = handle_info(sid, hanp, hlen); - if (error) { - error = 1; - goto out; - } - } - -out: - if (dm_destroy_session(sid)) { - errno_msg("Can't shut down session"); - error = 1; - } - - return(error); -} - -/* - * Get the complete list of all managed regions for a file. For now, - * we know that most implementations only support a small number of - * regions, so we don't handle the E2BIG error here. - */ -int -mr_info( - dm_sessid_t sid, - void *hanp, - size_t hlen) -{ - u_int i; - u_int ret; - dm_region_t rgn[MAX_RGNS]; - - memset((char *)&rgn, 0, (sizeof(dm_region_t) * MAX_RGNS)); - if (dm_get_region(sid, hanp, hlen, DM_NO_TOKEN, MAX_RGNS, rgn, &ret)) { - errno_msg("Can't get list of managed regions"); - return(1); - } - printf("\n"); - for (i=0; i -#include -#include -#include - -#include - -#include -#include - -extern char *optarg; -extern int optind, opterr, optopt; -extern int errno; - -int Verbose; -char *Progname; - -extern void err_msg(char *, ...); -extern void errno_msg(char *, ...); - -int get_sessions(dm_sessid_t **, u_int *); -int get_tokens(dm_sessid_t, dm_token_t **, u_int *); -void print_session(dm_sessid_t); -void print_tokens(dm_sessid_t); -void kill_session(dm_sessid_t); - -void -usage(char *s) -{ - fprintf(stderr, "Usage: %s \n", s); - fprintf(stderr, "\t-t list tokens\n"); - fprintf(stderr, "\t-l list sessions\n"); - fprintf(stderr, "\t-k kill sessions\n"); - fprintf(stderr, "\t-s \n"); - fprintf(stderr, "\t-v verbose (for kill)\n"); -} - -int -main( - int argc, - char *argv[]) -{ - int c; - int error; - u_int i, nsids; - int list_flag, kill_flag, token_flag, sid_flag; - dm_sessid_t *sidbuf, *sidp, onesid; - char *cp; - - - Progname = argv[0]; - list_flag = sid_flag = kill_flag = token_flag = 0; - - while ((c = getopt(argc, argv, "vlkts:")) != EOF) { - switch (c) { - case 'l': - list_flag = 1; - break; - case 'k': - kill_flag = 1; - break; - case 't': - token_flag = 1; - break; - case 's': - if (sscanf(optarg, "%d", &onesid) <=0 ) { - err_msg("Can't convert sid %s", optarg); - exit(2); - } - sid_flag = 1; - break; - case 'v': - Verbose = 1; - break; - case '?': - default: - usage(Progname); - exit(1); - } - } - if (!list_flag && !sid_flag && !kill_flag && !token_flag) { - usage(Progname); - exit(1); - } - - if (dm_init_service(&cp) == -1) { - err_msg("Can't init dmapi"); - return(1); - } - if (strcmp(cp, DM_VER_STR_CONTENTS)) { - err_msg("Compiled for a different version"); - return(1); - } - - - /* - * Get the list of all sessions in the system - */ - error = get_sessions(&sidbuf, &nsids); - if (error) - exit(1); - - /* - * Walk through the list of sessions do what is right - */ - sidp = sidbuf; - for (i=0; i -#include -#include -#include - -#include -#include -#include -#include - -#include - -extern char *optarg; -extern int optind, optopt, opterr; -extern int errno; -char *Progname; -int Verbose; - -extern int restore_filedata(dm_sessid_t, void *, size_t, dm_token_t, - void *, size_t, dm_off_t); -extern int get_dmchange(dm_sessid_t, void *, size_t, dm_token_t, u_int *); -extern int setup_dmapi(dm_sessid_t *); -extern void err_msg(char *, ...); -extern void errno_msg(char *, ...); - -int stagein_file(dm_sessid_t, dm_token_t, dm_eventmsg_t *); -int inval_file(dm_sessid_t, dm_token_t, dm_eventmsg_t *); -int check_lockstate(dm_sessid_t, void *, size_t, dm_token_t); -int clear_mrgns(dm_sessid_t, void *, size_t, dm_token_t); -int find_msg(dm_sessid_t, dm_token_t, dm_eventmsg_t **); -int get_stghandle(dm_sessid_t, void *, size_t, dm_token_t, void **, - size_t *); -void usage(char *); - - - -void -usage( - char *prog) -{ - fprintf(stderr, "Usage: %s ", prog); - fprintf(stderr, " <-i invalidate file> "); - fprintf(stderr, " <-r restore file> "); - fprintf(stderr, "[-s sid] [-t token] \n"); -} - - -int -main( - int argc, - char *argv[]) -{ - - dm_eventmsg_t *msgheader; - char *sid_str, *token_str; - dm_sessid_t sid; - dm_token_t token; - int c; - int error; - int restore_flag, inval_flag; - char *cp; - - Progname = argv[0]; - sid_str = NULL; - token_str = NULL; - restore_flag = 0; - inval_flag = 0; - - while ((c = getopt(argc, argv, "s:t:ri")) != EOF) { - switch (c) { - case 'r': - restore_flag++; - break; - - case 'i': - inval_flag++; - break; - - case 's': - sid_str = optarg; - break; - - case 't': - token_str = optarg; - break; - - case '?': - default: - usage(Progname); - exit(1); - } - } - if (optind < argc) { - usage(Progname); - exit(1); - } - if (sid_str == NULL || token_str == NULL) { - usage(Progname); - exit(1); - } - if ((restore_flag > 0) && (inval_flag > 0)) { - usage(Progname); - exit(1); - } - - if (sscanf(sid_str, "%d", &sid) <= 0) { - err_msg("Can't convert sid"); - exit(1); - } - if (sscanf(token_str, "%d", &token) <= 0) { - err_msg("Can't convert token"); - exit(1); - } - - /* - * Now we have our session and token. We just need to - * let the DMAPI know we exist so we can use the interface. - * We don't need to create a session since we'll be using - * the session of our parent. - */ - error = dm_init_service(&cp); - if (error == -1) { - errno_msg("Can't init DMAPI"); - exit(1); - } - if (strcmp(cp, DM_VER_STR_CONTENTS)) { - err_msg("Compiled for a different version"); - exit(1); - } - - /* - * Find the message our caller wants us to handle - */ - error = find_msg(sid, token, &msgheader); - if (error) - exit(1); - - /* - * Now service the particular event type - */ - if (restore_flag) - error = stagein_file(sid, token, msgheader); - else - error = inval_file(sid, token, msgheader); - - return(error); -} - - -/* - * Find the data event message that correponds to the token. - * - * RETURNS: - * A pointer to malloc'd memory that contains the message - * we're supposed to handle in the 'msgheader' param. - */ -int -find_msg( - dm_sessid_t sid, - dm_token_t token, - dm_eventmsg_t **msgheader) -{ - void *buf; - size_t buflen, rlen; - int error; - - /* - * Malloc a buffer that we think is large enough for - * the common message header and the event specific part. - * If it's not large enough, we can always resize it. - */ - buflen = sizeof(dm_eventmsg_t) + sizeof(dm_data_event_t) + HANDLE_LEN; - buf = (void *)malloc(buflen); - if (buf == NULL) { - err_msg("Can't alloc memory for event buffer"); - return(1); - } - - error = dm_find_eventmsg(sid, token, buflen, buf, &rlen); - if (error == -1) { - if (errno != E2BIG) { - free(buf); - errno_msg("Can't obtain message from token"); - return(1); - } - free(buf); - buflen = rlen; - buf = (void *)malloc(buflen); - if (buf == NULL) { - err_msg("Can't resize event buffer"); - return(1); - } - error = dm_find_eventmsg(sid, token, buflen, buf, &rlen); - if (error == -1) { - errno_msg("Can't get message with resized buffer"); - return(1); - } - } - - *msgheader = (dm_eventmsg_t *)buf; - return(0); -} - - -/* - * Check the lock state associated with the file. If the token - * does not reference exclusive access, try to upgrade our lock. - * If we can't upgrade, drop the lock and start over - */ -int -check_lockstate( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token) -{ - int error; - dm_right_t right; - u_int change_start, change_end; - - error = dm_query_right(sid, hanp, hlen, token, &right); - if (error == -1) { - errno_msg("Can't query file access rights"); - return(1); - } -#if defined(linux) - /* - * There are no access rights on the SGI. 1 means it's - * there. - */ - if (right == DM_RIGHT_SHARED) - return 0; -#endif - - if (right != DM_RIGHT_EXCL) { - error = dm_request_right(sid, hanp, hlen, token, 0, - DM_RIGHT_EXCL); - if (error == -1) { - if (errno != EAGAIN) { - errno_msg("Can't upgrade lock"); - return(1); - } - error = get_dmchange(sid, hanp, hlen, token, - &change_start); - if (error) - return(1); - - - error = dm_release_right(sid, hanp, hlen, token); - if (error == -1) { - errno_msg("Can't release file access rights"); - return(1); - } - error = dm_request_right(sid, hanp, hlen, token, - DM_RR_WAIT, DM_RIGHT_EXCL); - if (error == -1) { - errno_msg("Can't get exclusive right to file"); - return(1); - } - - /* - * If the file changed while we slept, then someone - * must have modified the file - */ - error = get_dmchange(sid, hanp, hlen, token, - &change_end); - if (error == -1) - return(1); - - if (change_start != change_end) { - err_msg("File changed while waiting for lock"); - return(1); - } - } - } - return(0); -} - - -/* - * Stage in the data for a file - */ -int -stagein_file( - dm_sessid_t sid, - dm_token_t token, - dm_eventmsg_t *msgheader) -{ - - void *stg_hanp, *hanp; - size_t stg_hlen, hlen; - int error, ret_errno; - dm_response_t reply; - dm_data_event_t *msg; - - /* - * Extract the event-specific info from the message header, - * then get the file handle. - */ - msg = DM_GET_VALUE(msgheader, ev_data, dm_data_event_t *); - hanp = DM_GET_VALUE(msg, de_handle, void *); - hlen = DM_GET_LEN(msg, de_handle); - - /* - * Check our permissions. We need exclusive access to the - * file to stage it back in. - */ - error = check_lockstate(sid, hanp, hlen, token); - if (error) - goto out; - - /* - * get the staging file handle from it's DM attributes - */ - stg_hanp = NULL; - error = get_stghandle(sid, hanp, hlen, token, &stg_hanp, &stg_hlen); - if (error) - goto out; - - /* - * We keep the exclusive lock held for the *entire* duration - * of the stagein. This is not required, but just quick and - * [sl]easy. For a large file, it is typically better to release - * the lock, and have a sliding window of managed regions to allow - * people to consume the data as it is being read in. - */ - error = restore_filedata(sid, hanp, hlen, token, stg_hanp, stg_hlen, - msg->de_offset); - if (error) - goto out; - - /* - * Now that the data is restored, and while we still have exclusive - * access to the file, clear the managed regions. - */ - error = clear_mrgns(sid, hanp, hlen, token); - if (error) - goto out; - -out: - if (stg_hanp) - free((char *)stg_hanp); - - /* - * Figure out what our response to the event will be. Once - * we've responded to the event, the token is no longer valid. - * On error, we pick the (less than helpful) errno EIO to signal - * to the user that something went wrong. - */ - if (error) { - reply = DM_RESP_ABORT; - ret_errno = EIO; - } else { - reply = DM_RESP_CONTINUE; - ret_errno = 0; - } - (void)dm_respond_event(sid, token, reply, ret_errno, 0, 0); - - return(ret_errno); - -} - -/* - * Turn off event monitoring for a file. In a real HSM, we would - * probably want to either invalidate the file's data on - * tertiary storage, or start some aging process so that it will - * eventually go away. - * - * The assumption is that for write and truncate events, the file - * data is about to be invalidated. - */ -int -inval_file( - dm_sessid_t sid, - dm_token_t token, - dm_eventmsg_t *msgheader) -{ - dm_data_event_t *msg; - void *hanp; - size_t hlen; - int error, ret_errno; - dm_response_t reply; - - /* - * Extract the event-specific info from the message header, - * then get the file handle. - */ - msg = DM_GET_VALUE(msgheader, ev_data, dm_data_event_t *); - hanp = DM_GET_VALUE(msg, de_handle, void *); - hlen = DM_GET_LEN(msg, de_handle); - - /* - * Check our permissions. We need exclusive access to the - * file to clear our managed regions. - */ - error = check_lockstate(sid, hanp, hlen, token); - if (error) - goto out; - - /* - * Clear all the managed regions for the file. - */ - error = clear_mrgns(sid, hanp, hlen, token); - -out: - /* - * Figure out what our response to the event will be. Once - * we've responded to the event, the token is no longer valid. - * On error, we pick the (less than helpful) errno EIO to signal - * to the user that something went wrong. - */ - if (error) { - reply = DM_RESP_ABORT; - ret_errno = EIO; - } else { - reply = DM_RESP_CONTINUE; - ret_errno = 0; - } - (void)dm_respond_event(sid, token, reply, ret_errno, 0, 0); - - return(ret_errno); -} - -/* - * Clear all of the managed regions for a file. - */ -int -clear_mrgns( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token) -{ - dm_region_t *rgn, *sv_rgn; - u_int nregions, nret; - u_int exact_flag; - int i; - int error, retval; - - /* - * We take a guess first and assume there is only one managed - * region per file. There should'nt be more than this, but - * it never hurts to check, since we want to make sure that - * all regions are turned off. - * - * The main purpose of this is to demonstrate the use of the - * E2BIG paradigm. - */ - retval = 1; - nregions = 1; - rgn = (dm_region_t *)malloc(nregions * sizeof(dm_region_t)); - if (rgn == NULL) { - err_msg("Can't allocate memory for region buffers"); - goto out; - } - - error = dm_get_region(sid, hanp, hlen, token, nregions, rgn, &nret); - if (error == -1) { - if (errno != E2BIG) { - errno_msg("Can't get list of managed regions for file"); - goto out; - } - - /* - * Now we know how many managed regions there are, so we can - * resize our buffer - */ - nregions = nret; - free(rgn); - rgn = (dm_region_t *)malloc(nregions * sizeof(dm_region_t)); - if (rgn == NULL) { - err_msg("Can't resize region buffers"); - goto out; - } - error = dm_get_region(sid, hanp, hlen, token, nregions, rgn, - &nret); - if (error == -1) { - errno_msg("Can't get list of managed regions for file"); - goto out; - } - } - - sv_rgn = rgn; - - /* - * Clear all the managed regions - */ - for (i=0; irg_offset = 0; - rgn->rg_size = 0; - rgn->rg_flags = DM_REGION_NOEVENT; - rgn++; - } - rgn = sv_rgn; - - error = dm_set_region(sid, hanp, hlen, token, nregions, rgn, - &exact_flag); - if (error == -1) { - errno_msg("Can't clear list of managed regions for file"); - } - retval = 0; - -out: - if (rgn != NULL) - free(rgn); - - return(retval); -} - - -/* - * Extract the staging file handle from a file's DM attributes - */ -int -get_stghandle( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - void **stg_hanp, - size_t *stg_hlen) -{ - void *han_buf; - size_t han_len; - int error; - size_t rlen; - dm_attrname_t hanp_attrname; - dm_attrname_t hlen_attrname; - - /* - * First get the length of the file handle, so we - * can size our buffer correctly - */ - memcpy((void *)&hlen_attrname.an_chars[0], DLOC_HANLEN, DM_ATTR_NAME_SIZE); - error = dm_get_dmattr(sid, hanp, hlen, token, &hlen_attrname, - sizeof(size_t), &han_len, &rlen); - if (error == -1) { - /* - * On any error, even E2BIG, we bail since the size of - * the file handle should be a constant - */ - errno_msg("Can't get size of staging file handle"); - return(1); - } - if (rlen != sizeof(size_t)) { - err_msg("File handle length component incorrect"); - return(1); - } - - /* - * Malloc space for our staging file handle, and - * extract it from our DM attributes - */ - han_buf = (void *)malloc(han_len); - if (han_buf == NULL) { - err_msg("Can't alloc memory for file handle"); - return(1); - } - - memcpy((void *)&hanp_attrname.an_chars[0], DLOC_HAN, DM_ATTR_NAME_SIZE); - error = dm_get_dmattr(sid, hanp, hlen, token, &hanp_attrname, - han_len, han_buf, &rlen); - if (error == -1) { - errno_msg("Can't get staging file handle"); - free(han_buf); - return(1); - } - if (rlen != han_len) { - err_msg("File handle is incorrect length"); - free(han_buf); - return(1); - } - *stg_hanp = han_buf; - *stg_hlen = han_len; - return(0); -} - diff --git a/dmapi/src/simple/Makefile b/dmapi/src/simple/Makefile deleted file mode 100644 index 7c418321..00000000 --- a/dmapi/src/simple/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0+ -# Copyright (C) 2011 SGI All Rights Reserved. -# -# -# -TOPDIR = ../../.. - -include $(TOPDIR)/include/builddefs - -TARGETS = dm_create_session dm_destroy_session dm_find_eventmsg \ - dm_getall_sessions dm_getall_tokens dm_query_session - -CFILES = $(TARGETS:=.c) -LDIRT = $(TARGETS) - -CFLAGS += -I$(TOPDIR)/dmapi/src/common -I/usr/include/xfs - -LLDLIBS = $(LIBDM) - -default: depend $(TARGETS) - -depend: .dep - -include $(BUILDRULES) - -install install-dev: default - -$(TARGETS): - @echo " [CC] $@" - $(Q)$(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) - --include .dep diff --git a/dmapi/src/simple/dm_create_session.c b/dmapi/src/simple/dm_create_session.c deleted file mode 100644 index ec76888e..00000000 --- a/dmapi/src/simple/dm_create_session.c +++ /dev/null @@ -1,47 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ -#include -#include -#include -#include -#ifdef linux -#include -#endif - -int -main( int argc, char **argv ) -{ - extern char *optarg; - int c; - int ret; - dm_sessid_t oldsid = DM_NO_SESSION; - dm_sessid_t newsid = 0; - char *sessinfo = "test1"; - char *versionstr; - - while( (c = getopt(argc, argv, "hs:i:")) != -1 ) { - switch(c){ - case 's': - oldsid = atoi( optarg ); - break; - case 'i': - sessinfo = optarg; - break; - case 'h': - fprintf(stderr, "Usage: %s [-s oldsid] [-i sessinfo_txt]\n", argv[0]); - exit(2); - } - } - - if( dm_init_service( &versionstr ) < 0 ) - exit(1); - - ret = dm_create_session( oldsid, sessinfo, &newsid); - printf( "ret=%d\n", ret ); - printf( "newsid=%d\n", newsid ); - exit(0); -} - diff --git a/dmapi/src/simple/dm_destroy_session.c b/dmapi/src/simple/dm_destroy_session.c deleted file mode 100644 index 1a6da4b9..00000000 --- a/dmapi/src/simple/dm_destroy_session.c +++ /dev/null @@ -1,45 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ -#include -#include -#include -#include -#ifdef linux -#include -#endif - -int -main( int argc, char **argv ) -{ - extern char *optarg; - int c; - int ret; - dm_sessid_t sid = 0; - char *versionstr; - - while( (c = getopt(argc, argv, "hs:")) != -1 ) { - switch(c){ - case 's': - sid = atoi( optarg ); - break; - case 'h': - fprintf(stderr, "Usage: %s <-s sid>\n", argv[0] ); - exit(2); - } - } - - if( sid == 0 ){ - fprintf(stderr, "%s: must specify -s\n", argv[0] ); - exit(1); - } - - if( dm_init_service( &versionstr ) < 0 ) - exit(1); - - ret = dm_destroy_session( sid ); - printf( "ret=%d\n", ret ); - exit(0); -} diff --git a/dmapi/src/simple/dm_find_eventmsg.c b/dmapi/src/simple/dm_find_eventmsg.c deleted file mode 100644 index 0765eb0f..00000000 --- a/dmapi/src/simple/dm_find_eventmsg.c +++ /dev/null @@ -1,65 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ -#include -#include -#include -#include -#ifdef linux -#include -#endif - -int -main( int argc, char **argv ) -{ - extern char *optarg; - int c; - int ret; - dm_sessid_t sid = 0; - dm_token_t token = 0; - dm_eventmsg_t msg; - size_t rlen; - int buflen = sizeof(dm_eventmsg_t) + 100; - char *versionstr; - - while( (c = getopt(argc, argv, "hs:t:l:q")) != -1 ) { - switch(c){ - case 's': - sid = atoi( optarg ); - break; - case 't': - token = atoi( optarg ); - break; - case 'l': - buflen = atoi( optarg ); - break; - case 'q': - printf("dm_eventmsg_t=%zd\n", sizeof(dm_eventmsg_t) ); - exit(0); - case 'h': - fprintf(stderr, "Usage: %s <-s sid> <-t token> [-l buflen]\n", argv[0]); - fprintf(stderr, " %s -q\n", argv[0]); - exit(2); - } - } - - if( sid == 0 ){ - fprintf(stderr, "%s: must specify -s\n", argv[0] ); - exit(1); - } - - if( token == 0 ){ - fprintf(stderr, "%s: must specify -t\n", argv[0] ); - exit(1); - } - - if( dm_init_service( &versionstr ) < 0 ) - exit(1); - - ret = dm_find_eventmsg( sid, token, buflen, &msg, &rlen ); - printf( "ret=%d\n", ret ); - printf( "rlen=%zd\n", rlen ); - exit(0); -} diff --git a/dmapi/src/simple/dm_getall_sessions.c b/dmapi/src/simple/dm_getall_sessions.c deleted file mode 100644 index d762f756..00000000 --- a/dmapi/src/simple/dm_getall_sessions.c +++ /dev/null @@ -1,70 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ -#include -#include -#include -#include -#include -#include -#ifdef linux -#include -#endif - -int -main( int argc, char **argv ) -{ - extern char *optarg; - int c; - int ret; - dm_sessid_t *sidbuf; - u_int nelem = 100; - u_int rnelem = 0; - int i; - char *versionstr; - int anyway = 0; /* attempt to show this many elements anyway, - * even if it looks like nothing was returned. - */ - - while( (c = getopt(argc, argv, "hn:x:")) != -1 ) { - switch(c){ - case 'n': - nelem = atoi( optarg ); - break; - case 'x': - anyway = atoi( optarg ); - break; - case 'h': - fprintf(stderr, "Usage: %s [-n nelem]\n", argv[0]); - exit(2); - } - } - - if( (sidbuf = malloc( sizeof(*sidbuf) * nelem )) == NULL ){ - fprintf(stderr, "%s: malloc failed\n", argv[0] ); - exit(1); - } - - memset( sidbuf, 0, sizeof(*sidbuf) * nelem ); - - if( dm_init_service( &versionstr ) < 0 ) - exit(1); - - ret = dm_getall_sessions( nelem, sidbuf, &rnelem ); - printf( "ret=%d\n", ret ); - printf( "rnelem=%d\n", rnelem ); - - /* user wants us to try to show a specific number of elements */ - if( anyway > 0 ) - rnelem = anyway; - - printf("sids=\""); - for( i = 0; i < rnelem; i++ ){ - printf("%d ", sidbuf[i]); - } - printf("\"\n"); - exit(0); -} - diff --git a/dmapi/src/simple/dm_getall_tokens.c b/dmapi/src/simple/dm_getall_tokens.c deleted file mode 100644 index de813c7f..00000000 --- a/dmapi/src/simple/dm_getall_tokens.c +++ /dev/null @@ -1,65 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ -#include -#include -#include -#include -#include -#ifdef linux -#include -#endif - -int -main( int argc, char **argv ) -{ - extern char *optarg; - int c; - int ret; - dm_token_t *tokenbuf; - u_int nelem = 100; - u_int rnelem = 0; - dm_sessid_t sid = 0; - int i; - char *versionstr; - - while( (c = getopt(argc, argv, "hs:n:")) != -1 ) { - switch(c){ - case 's': - sid = atoi( optarg ); - break; - case 'n': - nelem = atoi( optarg ); - break; - case 'h': - fprintf(stderr, "Usage: %s <-s sid> [-n nelem]\n", argv[0]); - exit(2); - } - } - - if( sid == 0 ){ - fprintf(stderr, "%s: must specify -s\n", argv[0] ); - exit(1); - } - - if( (tokenbuf = malloc( sizeof(dm_token_t) * nelem )) == NULL ){ - fprintf(stderr, "%s: malloc failed\n", argv[0] ); - exit(1); - } - - if( dm_init_service( &versionstr ) < 0 ) - exit(1); - - ret = dm_getall_tokens( sid, nelem, tokenbuf, &rnelem ); - printf( "ret=%d\n", ret ); - printf( "rnelem=%d\n", rnelem ); - - printf("tokens=\""); - for( i = 0; i < rnelem; i++ ){ - printf("%d ", (int)*(tokenbuf+i)); - } - printf("\"\n"); - exit(0); -} diff --git a/dmapi/src/simple/dm_query_session.c b/dmapi/src/simple/dm_query_session.c deleted file mode 100644 index 795418f0..00000000 --- a/dmapi/src/simple/dm_query_session.c +++ /dev/null @@ -1,59 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ -#include -#include -#include -#include -#ifdef linux -#include -#endif - -int -main( int argc, char **argv ) -{ - extern char *optarg; - int c; - int ret; - char *sessinfo; - size_t rlen = 0; - dm_sessid_t sid = 0; - int buflen = 100; - char *versionstr; - - while( (c = getopt(argc, argv, "hs:l:")) != -1 ) { - switch(c){ - case 's': - sid = atoi( optarg ); - break; - case 'l': - buflen = atoi( optarg ); - break; - case 'h': - fprintf(stderr, "Usage: %s <-s sid> [-l buflen]\n", argv[0]); - exit(2); - } - } - - if( sid == 0 ){ - fprintf(stderr, "%s: must specify -s\n", argv[0] ); - exit(1); - } - - if( (sessinfo = malloc( sizeof(char*) * buflen )) == NULL ){ - fprintf(stderr, "%s: malloc failed\n", argv[0] ); - exit(1); - } - - if( dm_init_service( &versionstr ) < 0 ) - exit(1); - - ret = dm_query_session( sid, buflen, sessinfo, &rlen ); - printf( "ret=%d\n", ret ); - printf( "rlen=%zd\n", rlen ); - if( ret != -1 ) - printf( "sessinfo=%s\n", sessinfo ); - exit(0); -} diff --git a/dmapi/src/suite1/Makefile b/dmapi/src/suite1/Makefile deleted file mode 100644 index 3bfaf7a5..00000000 --- a/dmapi/src/suite1/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0+ -# Copyright (C) 2011 SGI All Rights Reserved. -# -# -# -TOPDIR = ../../.. - -include $(TOPDIR)/include/builddefs - -SUBDIRS = cmd - -default: $(SUBDIRS) - -include $(BUILDRULES) - -install: default - -install-dev: diff --git a/dmapi/src/suite1/cmd/Makefile b/dmapi/src/suite1/cmd/Makefile deleted file mode 100644 index f185a7aa..00000000 --- a/dmapi/src/suite1/cmd/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0+ -# Copyright (C) 2011 SGI All Rights Reserved. -# -# -# -TOPDIR = ../../../.. - -include $(TOPDIR)/include/builddefs - -# things needing -ldm -lhandle -ldmtest -DM_TARGS = test_assumption get_eventlist set_eventlist set_disp \ - get_region get_dmattr set_dmattr remove_dmattr \ - probe_hole probe_punch_xfsctl_hole punch_hole \ - get_fileattr sync_by_handle getall_dmattr \ - set_fileattr path_to_handle path_to_fshandle \ - get_mountinfo getall_disp get_events dm_handle \ - handle_to_fshandle get_config_events get_allocinfo \ - create_userevent request_right release_right \ - upgrade_right query_right downgrade_right \ - obj_ref_hold obj_ref_rele obj_ref_query print_event \ - get_dirattrs - -# things needing -ldm -lhandle -NT_TARGS = fd_to_handle handle_to_path init_service pending \ - print_fshandle respond_event - -# things needing -ldm -ldmtest -NTDM_TARGS = make_sparse randomize_file rwt struct_test - -# things left out for some reason... -UNUSED_TARGS = make_rt_sparse security_hole2 security_hole - -TARGETS = $(DM_TARGS) $(NT_TARGS) $(NTDM_TARGS) link_test - -CFILES = $(TARGETS:=.c) -LDIRT = $(TARGETS) - -CFLAGS += -I$(TOPDIR)/dmapi/src/common -I/usr/include/xfs - -LLDLIBS = $(TOPDIR)/dmapi/src/common/lib/libdmtest.la $(LIBDM) - -default: depend $(TARGETS) - -depend: .dep - -include $(BUILDRULES) - -install install-dev: default - -$(TARGETS): - @echo " [CC] $@" - $(Q)$(LTLINK) $@.c -o $@ $(CFLAGS) $(LDFLAGS) $(LDLIBS) - --include .dep diff --git a/dmapi/src/suite1/cmd/create_userevent.c b/dmapi/src/suite1/cmd/create_userevent.c deleted file mode 100644 index 23faf894..00000000 --- a/dmapi/src/suite1/cmd/create_userevent.c +++ /dev/null @@ -1,89 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function create_userevent(). The -command line is: - - create_userevent [-s sid] string - -where string is the msgdata to be stored in the event. -sid is the session ID to use for the event. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-s sid] string\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - char *string; - dm_token_t token; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "s:")) != EOF) { - switch (opt) { - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - string = argv[optind++]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - if (dm_create_userevent(sid, strlen(string)+ 1, string, &token)) { - fprintf(stderr, "dm_create_userevent failed, %s\n", - strerror(errno)); - exit(1); - } - - fprintf(stdout, "New token %d\n", token); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/dm_handle.c b/dmapi/src/suite1/cmd/dm_handle.c deleted file mode 100644 index 2ba7239d..00000000 --- a/dmapi/src/suite1/cmd/dm_handle.c +++ /dev/null @@ -1,250 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include -#include - -#include -#include - -#include - -#include - -/*--------------------------------------------------------------------------- - -Test program used to test all the DMAPI functions in dm_handle.c. The -command line is: - - dm_handle pathname - -where pathname is the name of a file. If any function fails, an error message -containing the work ERROR will be written to stderr. - -Tested DMAPI functions are: - dm_fd_to_handle - dm_handle_cmp - dm_handle_free - dm_handle_hash - dm_handle_is_valid - dm_handle_to_fshandle - dm_handle_to_fsid - dm_handle_to_ino - dm_handle_to_igen - dm_make_handle - dm_make_fshandle - dm_path_to_handle - dm_path_to_fshandle - -----------------------------------------------------------------------------*/ - - -char *Progname; - - - -int -main( - int argc, - char **argv) -{ - char *pathname; - char *name; - void *hanp1, *hanp2, *hanp3, *fshanp1, *fshanp2, *fshanp3; - size_t hlen1, hlen2, hlen3, fshlen1, fshlen2, fshlen3; - u_int hash1, hash2, hash3, fshash1, fshash2, fshash3; - dm_fsid_t fsid; - dm_ino_t ino; - dm_igen_t igen; - char buffer[100]; - char buffer1[100]; - char fsbuffer1[100]; - char buffer2[100]; - char fsbuffer2[100]; - char buffer3[100]; - char fsbuffer3[100]; - int fd; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - if (argc != 2) { - fprintf(stderr, "usage: %s path\n", argv[0]); - exit(1); - } - pathname = argv[1]; - - (void)dm_init_service(&name); - - if (dm_path_to_handle(pathname, &hanp1, &hlen1) != 0) { - fprintf(stderr, "dm_path_to_handle failed, %s\n", - strerror(errno)); - exit(1); - } - hash1 = dm_handle_hash(hanp1, hlen1); - hantoa(hanp1, hlen1, buffer1); - fprintf(stdout, " han1: hash %u value %s (dm_path_to_handle)\n", - hash1, buffer1); - if (dm_handle_is_valid(hanp1, hlen1) == DM_FALSE) { - fprintf(stderr, "ERROR: han1 is not valid\n"); - } - - if (dm_path_to_fshandle(pathname, &fshanp1, &fshlen1) != 0) { - fprintf(stderr, "dm_path_to_fshandle failed, %s\n", - strerror(errno)); - exit(1); - } - fshash1 = dm_handle_hash(fshanp1, fshlen1); - hantoa(fshanp1, fshlen1, fsbuffer1); - fprintf(stdout, "fshan1: hash %u value %s (dm_path_to_fshandle\n", - fshash1, fsbuffer1); - if (dm_handle_is_valid(fshanp1, fshlen1) == DM_FALSE) { - fprintf(stderr, "ERROR: fshan1 is not valid\n"); - } - - if ((fd = open(pathname, O_RDONLY)) < 0) { - fprintf(stderr, "open of %s failed, %s\n", pathname, - strerror(errno)); - exit(1); - } - if (dm_fd_to_handle(fd, &hanp2, &hlen2) != 0) { - fprintf(stderr, "dm_fd_to_handle failed, %s\n", - strerror(errno)); - exit(1); - } - (void)close(fd); - hash2 = dm_handle_hash(hanp2, hlen2); - hantoa(hanp2, hlen2, buffer2); - fprintf(stdout, " han2: hash %u value %s (dm_fd_to_handle)\n", - hash2, buffer2); - if (dm_handle_is_valid(hanp2, hlen2) == DM_FALSE) { - fprintf(stderr, "ERROR: han2 is not valid\n"); - } - - if (dm_handle_to_fshandle(hanp2, hlen2, &fshanp2, &fshlen2) != 0) { - fprintf(stderr, "dm_handle_to_fshandle failed, %s\n", - strerror(errno)); - exit(1); - } - fshash2 = dm_handle_hash(fshanp2, fshlen2); - hantoa(fshanp2, fshlen2, fsbuffer2); - fprintf(stdout, "fshan2: hash %u value %s (dm_handle_to_fshandle)\n", - fshash2, fsbuffer2); - if (dm_handle_is_valid(fshanp2, fshlen2) == DM_FALSE) { - fprintf(stderr, "ERROR: fshan2 is not valid\n"); - } - - if (dm_handle_cmp(hanp1, hlen1, hanp2, hlen2)) { - fprintf(stderr, "ERROR: han1 and han2 differ in dm_handle_cmp\n"); - } - if (strcmp(buffer1, buffer2)) { - fprintf(stderr, "ERROR: han1 and han2 differ in strcmp\n"); - } - if (hash1 != hash2) { - fprintf(stderr, "ERROR: hash1 and hash2 differ\n"); - } - - if (dm_handle_cmp(fshanp1, fshlen1, fshanp2, fshlen2)) { - fprintf(stderr, "ERROR: fshan1 and fshan2 differ in dm_handle_cmp\n"); - } - if (strcmp(fsbuffer1, fsbuffer2)) { - fprintf(stderr, "ERROR: fshan1 and fshan2 differ in strcmp\n"); - } - if (fshash1 != fshash2) { - fprintf(stderr, "ERROR: fshash1 and fshash2 differ\n"); - } - - /* Break the handle into its component parts and display them. Use - hantoa() instead of printing the parts directly because some are - 32 bits on Veritas and 64 bits on SGI. - */ - - if (dm_handle_to_fsid(hanp1, hlen1, &fsid) != 0) { - fprintf(stderr, "dm_handle_to_fsid failed, %s\n", - strerror(errno)); - exit(1); - } - hantoa(&fsid, sizeof(fsid), buffer); - fprintf(stdout, "fsid %s (dm_handle_to_fsid)\n", buffer); - - if (dm_handle_to_ino(hanp1, hlen1, &ino) != 0) { - fprintf(stderr, "dm_handle_to_ino failed, %s\n", - strerror(errno)); - exit(1); - } - hantoa(&ino, sizeof(ino), buffer); - fprintf(stdout, "ino %s (dm_handle_to_ino)\n", buffer); - - if (dm_handle_to_igen(hanp1, hlen1, &igen) != 0) { - fprintf(stderr, "dm_handle_to_igen failed, %s\n", - strerror(errno)); - exit(1); - } - hantoa(&igen, sizeof(igen), buffer); - fprintf(stdout, "igen %s (dm_handle_to_igen)\n", buffer); - - /* Now use the parts to remake the handle and verify we get the same - answer. - */ - - if (dm_make_handle(&fsid, &ino, &igen, &hanp3, &hlen3) != 0) { - fprintf(stderr, "dm_make_handle failed, %s\n", - strerror(errno)); - exit(1); - } - hash3 = dm_handle_hash(hanp3, hlen3); - hantoa(hanp3, hlen3, buffer3); - fprintf(stdout, " han3: hash %u value %s (dm_make_handle)\n", - hash3, buffer3); - if (dm_handle_is_valid(hanp3, hlen3) == DM_FALSE) { - fprintf(stderr, "ERROR: han3 is not valid\n"); - } - - if (dm_handle_cmp(hanp1, hlen1, hanp3, hlen3)) { - fprintf(stderr, "ERROR: hanp1 and hanp3 differ in dm_handle_cmp\n"); - } - if (strcmp(buffer1, buffer3)) { - fprintf(stderr, "ERROR: hanp1 and hanp3 differ in strcmp\n"); - } - if (hash1 != hash3) { - fprintf(stderr, "ERROR: hash1 and hash3 differ\n"); - } - - if (dm_make_fshandle(&fsid, &fshanp3, &fshlen3) != 0) { - fprintf(stderr, "dm_make_fshandle failed, %s\n", - strerror(errno)); - exit(1); - } - fshash3 = dm_handle_hash(fshanp3, fshlen3); - hantoa(fshanp3, fshlen3, fsbuffer3); - fprintf(stdout, "fshan3: hash %u value %s (dm_make_fshandle)\n", - fshash3, fsbuffer3); - if (dm_handle_is_valid(fshanp3, fshlen3) == DM_FALSE) { - fprintf(stderr, "ERROR: fshan3 is not valid\n"); - } - - if (dm_handle_cmp(fshanp1, fshlen1, fshanp3, fshlen3)) { - fprintf(stderr, "ERROR: fshan1 and fshan3 differ in dm_handle_cmp\n"); - } - if (strcmp(fsbuffer1, fsbuffer3)) { - fprintf(stderr, "ERROR: fshan1 and fshan3 differ in strcmp\n"); - } - if (fshash1 != fshash3) { - fprintf(stderr, "ERROR: fshash1 and fshash3 differ\n"); - } - - dm_handle_free(hanp1, hlen1); - dm_handle_free(hanp2, hlen2); - dm_handle_free(hanp3, hlen3); - dm_handle_free(fshanp1, fshlen1); - dm_handle_free(fshanp2, fshlen2); - dm_handle_free(fshanp3, fshlen3); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/downgrade_right.c b/dmapi/src/suite1/cmd/downgrade_right.c deleted file mode 100644 index d8ddfbbd..00000000 --- a/dmapi/src/suite1/cmd/downgrade_right.c +++ /dev/null @@ -1,127 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_downgrade_right(). The -command line is: - - downgrade_right {-F} [-s sid] token {pathname|handle} - -where: --F - when a pathname is specified, -F indicates that its filesystem handle - should be used rather than its file object handle. -sid - is the dm_sessid_t to use rather than the default test session. -token - is the dm_token_t to use. -{pathname|handle} - is either a handle, or is the pathname of a file whose handle is - to be used. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-F] [-s sid] token {pathname|handle}\n", - Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - dm_token_t token; - char *object; - void *hanp; - size_t hlen; - int Fflag = 0; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "Fs:")) != EOF) { - switch (opt) { - case 'F': - Fflag++; - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 2 != argc) - usage(); - token = atol(argv[optind++]); - object = argv[optind]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file or filesystem's handle. */ - - if (opaque_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle from %s\n", object); - exit(1); - } - if (Fflag) { - void *fshanp; - size_t fshlen; - - if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen)) { - fprintf(stderr, "can't get filesystem handle from %s\n", - object); - exit(1); - } - dm_handle_free(hanp, hlen); - hanp = fshanp; - hlen = fshlen; - } - - if (dm_downgrade_right(sid, hanp, hlen, token)) { - fprintf(stderr, "dm_downgrade_right failed, %s\n", - strerror(errno)); - return(1); - } - - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/fd_to_handle.c b/dmapi/src/suite1/cmd/fd_to_handle.c deleted file mode 100644 index fa6895f7..00000000 --- a/dmapi/src/suite1/cmd/fd_to_handle.c +++ /dev/null @@ -1,70 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -/* Given a file object's pathname, print the object's handle. */ - -#include -#include - -#include -#include -#include -#include - -#include - -#include - -char *Progname; - -static void -hantoa( - void *hanp, - size_t hlen, - char *handle_str) -{ - u_char *cp= (u_char *)hanp; - int i; - - for (i = 0;i < hlen; i++, handle_str += 2) - sprintf(handle_str, "%.2x", *cp++); - *handle_str = '\0'; -} - -int -main( - int argc, - char **argv) -{ - char *name; - void *hanp; - size_t hlen; - char buffer[100]; - int fd; - - if (argc != 2) { - fprintf(stderr, "usage: %s path\n", argv[0]); - exit(1); - } - Progname = argv[0]; - - (void)dm_init_service(&name); - - if ((fd = open(argv[1], O_RDONLY)) < 0) { - fprintf(stderr, "open of %s failed, %s\n", argv[1], - strerror(errno)); - exit(1); - } - if (dm_fd_to_handle(fd, &hanp, &hlen) != 0) { - fprintf(stderr, "dm_fd_to_handle failed, %s\n", - strerror(errno)); - exit(1); - } - hantoa(hanp, hlen, buffer); - - fprintf(stdout, "handle %s, path %s\n", buffer, argv[1]); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/get_allocinfo.c b/dmapi/src/suite1/cmd/get_allocinfo.c deleted file mode 100644 index 9dc9a717..00000000 --- a/dmapi/src/suite1/cmd/get_allocinfo.c +++ /dev/null @@ -1,358 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include -#include - -#include -#include -#include - -#include - -#include - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_get_allocinfo(). The -command line is: - - get_allocinfo [-D] [-n nelem] [-o offp] [-s sid] pathname - -where pathname is the name of a file, 'offp' is a byte offset from the -beginning of the file where you want to start dumping, and 'nelem' allows -you to specify how many extent structures to use in each dm_get_allocinfo -call. - -The code checks the returned extents as much as possible for errors. -It detects bad ex_type values, verifies that there is always a trailing -hole at the end of the file, that the ex_offset of each extent matches the -ex_offset+ex_length of the previous extent, and that ex_offset+ex_length -is always an even multiple of 512. It verifies that all ex_offset values -after the first fall on a 512-byte boundary. It verifies that the '*offp' -value returned by dm_get_allocinfo() is 0 at the end of the file, and -equals ex_offset+ex_length of the last extent if not at the end of the file. -Any error is reported to stderr, and the program then terminates with a -non-zero exit status. - -The program produces output similar to xfs_bmap in order to make comparison -easier. Here is some sample output. - -f1: offset 1 - rc 0, nelemp 17 - 0: [0..127]: resv [1..511] - -Line 1 gives the name of the file and the byte offset within the file where -the dump started. Line 2 appears once for each dm_get_allocinfo() call, -giving the return value (rc) and the number of extents which were returned. -Line 3 is repeated once for each extent. The first field "0:" is the extent -number. The second field "[0..127]:" give the starting and ending block for -the extent in 512-byte units. The third field is either "resv" to indicate -allocated space or "hole" if the extent is a hole. The fourth field -"[1..511]" only appears if the dump did not start with byte zero of the -first block. In that case, the first number shows the actual byte offset -within the block (1 in this case). The second number should always be -511 since we always dump to the end of a block. - -Possible tests --------------- - -Dump some holey files and compare the output of this program with xfs_bmap. - -Produce a file with holes, and perform the following tests using just one -extent (-e 1). - Dump extents from beginning of the file. - Dump from byte 1 of the file. - Dump from the last byte of the first extent. - Dump from the first byte of the second extent. - Dump from the middle of the second extent. - Dump the first byte of the last extent. - Dump the last byte of the last extent. - Dump the first byte after the last extent. - Dump starting at an offset way past the end of the file. - -Produce a fragmented file with many adjacent DM_EXTENT_RES extents. - Repeat the above tests. - -Produce a GRIO file with holes. - Repeat the above tests. - -Run the following shell script. - -#!/bin/ksh - -# Dump the same holey file $max times, each time using one less extent -# structure than the previous time. The grep and diff code -# checks to make sure that you get the same answer each time, no matter -# how many extents you use. If all is okay, The only messages you will -# see are the "trial $num" messages. - -max=20 # should be bigger than the number extents in the file - -num=$max -while [ $num -gt 0 ] -do - echo "trial $num" - ./test_alloc -e $num f1 | grep '\[' > x.$num - if [ $num -lt $max ] - then - diff x.$num x.$max - fi - num=`expr $num - 1` -done - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - -static int print_alloc(dm_sessid_t sid, void* hanp, size_t hlen, - char *pathname, dm_off_t startoff, u_int nelem); - -char *Progname; -int Dflag = 0; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-D] [-n nelem] [-o off] [-s sid] " - "pathname\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - dm_off_t startoff = 0; /* starting offset */ - u_int nelem = 100; - char *pathname; - void *hanp; - size_t hlen; - dm_stat_t sbuf; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "Dn:o:s:")) != EOF) { - switch(opt) { - case 'D': - Dflag++; - break; - case 'n': - nelem = atol(optarg); - break; - case 'o': - startoff = atoll(optarg); - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - pathname = argv[optind]; - - if (dm_init_service(&name)) { - fprintf(stderr, "dm_init_service failed, %s\n", - strerror(errno)); - exit(1); - } - - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file's handle and verify that it is a regular file. */ - - if (dm_path_to_handle(pathname, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for %s\n", pathname); - exit(1); - } - if (dm_get_fileattr(sid, hanp, hlen, DM_NO_TOKEN, DM_AT_STAT, &sbuf)) { - fprintf(stderr, "dm_get_fileattr failed\n"); - exit(1); - } - if (!S_ISREG(sbuf.dt_mode)) { - fprintf(stderr, "%s is not a regular file\n", pathname); - exit(1); - } - - /* Print the allocation. */ - - if (print_alloc(sid, hanp, hlen, pathname, startoff, nelem)) - exit(1); - - dm_handle_free(hanp, hlen); - exit(0); -} - - -static int -print_alloc( - dm_sessid_t sid, - void *hanp, - size_t hlen, - char *pathname, - dm_off_t startoff, - u_int nelem) -{ - dm_off_t endoff; - dm_extent_t *extent; - u_int nelemp; - u_int num = 0; - u_int i; - char *type = NULL; - int rc; - - fprintf(stdout, "%s: starting offset %lld\n", pathname, - (long long) startoff); - - /* Allocate space for the number of extents requested by the user. */ - - if ((extent = malloc(nelem * sizeof(*extent))) == NULL) { - fprintf(stderr, "can't malloc extent structures\n"); - return(1); - } - - rc = 1; - endoff = startoff; - - while (rc != 0) { - rc = dm_get_allocinfo(sid, hanp, hlen, DM_NO_TOKEN, &startoff, - nelem, extent, &nelemp); - - if (rc < 0) { - fprintf(stderr, "dm_get_allocinfo failed, %s\n", - strerror(errno)); - return(1); - } - - fprintf(stdout, "\treturned %d, nelemp %d\n", rc, nelemp); - if (Dflag && nelemp) - fprintf(stdout, " ex_type ex_offset ex_length\n"); - - /* Note: it is possible for nelemp to be zero! */ - - for (i = 0; i < nelemp; i++) { - /* The extent must either be reserved space or a hole. - */ - - switch (extent[i].ex_type) { - case DM_EXTENT_RES: - type = "resv"; - break; - case DM_EXTENT_HOLE: - type = "hole"; - break; - default: - fprintf(stderr, "invalid extent type %d\n", - extent[i].ex_type); - return(1); - } - - if (!Dflag) { - fprintf(stdout, "\t%d: [%lld..%lld]: %s", num, - (long long) extent[i].ex_offset / 512, - (long long) (extent[i].ex_offset + - extent[i].ex_length - 1) / 512, type); - if ((extent[i].ex_offset % 512 != 0) || - (endoff % 512 != 0)) { - fprintf(stdout, "\t[%lld..%lld]\n", - (long long) extent[i].ex_offset % 512, - (long long) (endoff-1) % 512); - } else { - fprintf(stdout, "\n"); - } - } else { - fprintf(stdout, "%5s %13lld %13lld\n", - type, (long long) extent[i].ex_offset, - (long long) extent[i].ex_length); - } - - /* The ex_offset of the first extent should match the - 'startoff' specified by the caller. The ex_offset - in subsequent extents should always match - (ex_offset + ex_length) of the previous extent, - and should always start on a 512 byte boundary. - */ - - if (extent[i].ex_offset != endoff) { - fprintf(stderr, "new extent (%lld)is not " - "adjacent to previous one (%lld)\n", - (long long) extent[i].ex_offset, - (long long) endoff); - return(1); - } - if (num && (extent[i].ex_offset % 512) != 0) { - fprintf(stderr, "non-initial ex_offset (%lld) " - "is not a 512-byte multiple\n", - (long long) extent[i].ex_offset); - return(1); - } - - /* Non-initial extents should have ex_length values - that are an even multiple of 512. The initial - extent should be a multiple of 512 less the offset - into the starting 512-byte block. - */ - - if (((extent[i].ex_offset % 512) + extent[i].ex_length) % 512 != 0) { - fprintf(stderr, "ex_length is incorrect based " - "upon the ex_offset\n"); - return(1); - } - - endoff = extent[i].ex_offset + extent[i].ex_length; - num++; /* count of extents printed */ - } - - /* If not yet at end of file, the startoff parameter should - match the ex_offset plus ex_length of the last extent - retrieved. - */ - - if (rc && startoff != endoff) { - fprintf(stderr, "startoff is %lld, should be %lld\n", - (long long) startoff, (long long) endoff); - return(1); - } - - /* If we are at end of file, the last extent should be a - hole. - */ - - if (!rc && type && strcmp(type, "hole")) { - fprintf(stderr, "file didn't end with a hole\n"); - return(1); - } - } - - /* At end of file, startoff should always equal zero. */ - - if (startoff != 0) { - fprintf(stderr, "ERROR: startoff was not zero at end of file\n"); - return(1); - } - return(0); -} diff --git a/dmapi/src/suite1/cmd/get_config_events.c b/dmapi/src/suite1/cmd/get_config_events.c deleted file mode 100644 index 9c8a1cd6..00000000 --- a/dmapi/src/suite1/cmd/get_config_events.c +++ /dev/null @@ -1,180 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_get_config_events(). The -command line is: - - get_config_events [-n nelem] handle - -where handle is the handle of a file or filesystem, and nelem is the value -to use for the nelem parameter to dm_get_eventlist(). - -----------------------------------------------------------------------------*/ - -extern int optind; -extern char *optarg; - - -char *Progname; - - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-n nelem] handle\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - u_int nelem = DM_EVENT_MAX; - char *han_str; - dm_eventset_t eventset; - void *hanp; - size_t hlen; - u_int nelemp; - char *name; - int error; - int opt; - int i; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "n:")) != EOF) { - switch (opt) { - case 'n': - nelem = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - han_str = argv[optind]; - if ((error = atohan(han_str, &hanp, &hlen)) != 0) { - fprintf(stderr, "atohan() failed, %s\n", strerror(error)); - return(1); - } - - if (dm_init_service(&name)) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - return(1); - } - - DMEV_ZERO(eventset); - - if (dm_get_config_events(hanp, hlen, nelem, &eventset, &nelemp)) { - fprintf(stderr, "dm_get_config_events failed, %s\n", - strerror(errno)); - return(1); - } - - fprintf(stdout, "Events supported (0x%llx), nelemp %d:\n", - (unsigned long long) eventset, nelemp); - - for (i = 0; i < nelemp; i++) { - if (!DMEV_ISSET(i, eventset)) - continue; - switch (i) { - case DM_EVENT_CANCEL: - fprintf(stdout, "DM_EVENT_CANCEL"); - break; - case DM_EVENT_MOUNT: - fprintf(stdout, "DM_EVENT_MOUNT"); - break; - case DM_EVENT_PREUNMOUNT: - fprintf(stdout, "DM_EVENT_PREUNMOUNT"); - break; - case DM_EVENT_UNMOUNT: - fprintf(stdout, "DM_EVENT_UNMOUNT"); - break; - case DM_EVENT_DEBUT: - fprintf(stdout, "DM_EVENT_DEBUT"); - break; - case DM_EVENT_CREATE: - fprintf(stdout, "DM_EVENT_CREATE"); - break; - case DM_EVENT_CLOSE: - fprintf(stdout, "DM_EVENT_CLOSE"); - break; - case DM_EVENT_POSTCREATE: - fprintf(stdout, "DM_EVENT_POSTCREATE"); - break; - case DM_EVENT_REMOVE: - fprintf(stdout, "DM_EVENT_REMOVE"); - break; - case DM_EVENT_POSTREMOVE: - fprintf(stdout, "DM_EVENT_POSTREMOVE"); - break; - case DM_EVENT_RENAME: - fprintf(stdout, "DM_EVENT_RENAME"); - break; - case DM_EVENT_POSTRENAME: - fprintf(stdout, "DM_EVENT_POSTRENAME"); - break; - case DM_EVENT_LINK: - fprintf(stdout, "DM_EVENT_LINK"); - break; - case DM_EVENT_POSTLINK: - fprintf(stdout, "DM_EVENT_POSTLINK"); - break; - case DM_EVENT_SYMLINK: - fprintf(stdout, "DM_EVENT_SYMLINK"); - break; - case DM_EVENT_POSTSYMLINK: - fprintf(stdout, "DM_EVENT_POSTSYMLINK"); - break; - case DM_EVENT_READ: - fprintf(stdout, "DM_EVENT_READ"); - break; - case DM_EVENT_WRITE: - fprintf(stdout, "DM_EVENT_WRITE"); - break; - case DM_EVENT_TRUNCATE: - fprintf(stdout, "DM_EVENT_TRUNCATE"); - break; - case DM_EVENT_ATTRIBUTE: - fprintf(stdout, "DM_EVENT_ATTRIBUTE"); - break; - case DM_EVENT_DESTROY: - fprintf(stdout, "DM_EVENT_DESTROY"); - break; - case DM_EVENT_NOSPACE: - fprintf(stdout, "DM_EVENT_NOSPACE"); - break; - case DM_EVENT_USER: - fprintf(stdout, "DM_EVENT_USER"); - break; - case DM_EVENT_MAX: - fprintf(stdout, "DM_EVENT_23"); - break; - } - fprintf(stdout, " (%d)\n", i); - } - - dm_handle_free(hanp, hlen); - return(0); -} diff --git a/dmapi/src/suite1/cmd/get_dirattrs.c b/dmapi/src/suite1/cmd/get_dirattrs.c deleted file mode 100644 index e82f4c54..00000000 --- a/dmapi/src/suite1/cmd/get_dirattrs.c +++ /dev/null @@ -1,161 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include -#include - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_get_dirattrs(). The -command line is: - - get_dirattrs [-b buflen] [-l loc] [-s sid] dirpath - -where dirpath is the name of a directory, buflen is the size of the buffer -to use in the call, loc is a starting location, and sid is the session ID -whose attributes you are interested in. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-b buflen] [-l loc] [-s sid] [-1] [-q] dirpath\n", - Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - dm_attrloc_t loc = 0; - char *dirpath; - char buffer[100]; - void *bufp; - size_t buflen = 10000; - u_int mask; - size_t rlenp; - void *hanp; - size_t hlen; - char *name; - int opt; - int ret; - int oneline = 0; - int quiet = 0; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "b:l:s:1q")) != EOF) { - switch (opt) { - case 'b': - buflen = atol(optarg); - break; - case 'l': - loc = atol(optarg); - break; - case 's': - sid = atol(optarg); - break; - case '1': - oneline = 1; - break; - case 'q': - quiet = 1; - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - dirpath = argv[optind++]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the directory's handle. */ - - if (dm_path_to_handle(dirpath, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for file %s, %s\n", - dirpath, strerror(errno)); - exit(1); - } - - if ((bufp = malloc(buflen == 0 ? 1 : buflen)) == NULL) { - fprintf(stderr, "malloc failed, %s\n", strerror(errno)); - exit(1); - } - - mask = DM_AT_HANDLE|DM_AT_EMASK|DM_AT_PMANR|DM_AT_PATTR|DM_AT_DTIME|DM_AT_CFLAG|DM_AT_STAT; - - do { - memset(bufp, 0, buflen); - if ((ret = dm_get_dirattrs(sid, hanp, hlen, DM_NO_TOKEN, mask, - &loc, buflen, bufp, &rlenp)) < 0) { - fprintf(stderr, "dm_get_dirattrs failed, %s\n", - strerror(errno)); - exit(1); - } - if (!quiet) { - fprintf(stdout, "ret = %d, rlenp is %zd, loc is %lld\n", - ret, rlenp, (long long) loc); - } - if (rlenp > 0) { - dm_stat_t *statp; - - statp = (dm_stat_t *)bufp; - while (statp != NULL) { - - hantoa((char *)statp + statp->dt_handle.vd_offset, - statp->dt_handle.vd_length, buffer); - if (oneline) { - fprintf(stdout, "%s %s\n", - (char *)statp + statp->dt_compname.vd_offset, - buffer); - } - else { - fprintf(stdout, "handle %s\n", buffer); - fprintf(stdout, "name %s\n", - (char *)statp + statp->dt_compname.vd_offset); - print_line(statp); - } - - statp = DM_STEP_TO_NEXT(statp, dm_stat_t *); - } - } - else if ((ret == 1) && (rlenp == 0) && (!quiet)) { - fprintf(stderr, "buflen is too short to hold anything\n"); - exit(1); - } - } while (ret != 0); - - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/get_dmattr.c b/dmapi/src/suite1/cmd/get_dmattr.c deleted file mode 100644 index e4c03f8f..00000000 --- a/dmapi/src/suite1/cmd/get_dmattr.c +++ /dev/null @@ -1,125 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_get_dmattr(). The -command line is: - - get_dmattr [-b buflen] [-s sid] [-t token] {pathname|handle} attr - -where pathname is the name of a file, buflen is the size of the buffer to use -in the call, attr is the name of the DMAPI attribute, and sid is the session ID -whose attributes you you are interested in. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-b buflen] [-s sid] [-t token] " - "{pathname|handle} attr\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - dm_token_t token = DM_NO_TOKEN; - char *object; - dm_attrname_t *attrnamep; - void *bufp = NULL; - size_t buflen = 10000; - size_t rlenp; - void *hanp; - size_t hlen; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "b:s:t:")) != EOF) { - switch (opt) { - case 'b': - buflen = atol(optarg); - break; - case 's': - sid = atol(optarg); - break; - case 't': - token = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 2 != argc) - usage(); - object = argv[optind++]; - attrnamep = (dm_attrname_t *)argv[optind]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file's handle. */ - - if (opaque_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for %s\n", object); - exit(1); - } - - if (buflen > 0) { - if ((bufp = malloc(buflen)) == NULL) { - fprintf(stderr, "malloc failed, %s\n", strerror(errno)); - exit(1); - } - } - - if (dm_get_dmattr(sid, hanp, hlen, token, attrnamep, buflen, - bufp, &rlenp)) { - if (errno == E2BIG) { - fprintf(stderr, "dm_get_dmattr buffer too small, " - "should be %zd bytes\n", rlenp); - } else { - fprintf(stderr, "dm_get_dmattr failed, %s\n", - strerror(errno)); - } - exit(1); - } - fprintf(stdout, "rlenp is %zd, value is '%s'\n", rlenp, (char*)bufp); - - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/get_eventlist.c b/dmapi/src/suite1/cmd/get_eventlist.c deleted file mode 100644 index 9bfaef00..00000000 --- a/dmapi/src/suite1/cmd/get_eventlist.c +++ /dev/null @@ -1,224 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_get_eventlist(). The -command line is: - - get_eventlist [-F] [-n nelem] [-s sid] [-t token] {pathname|handle} - -where: -{pathname|handle} - is the pathname of a file or filesystem or a handle. --n nelem - is the value to use for the nelem parameter to dm_get_eventlist(). --s sid - is the dm_sessid_t to use in place of the default test session. --t token - is the dm_token_t to use in place of DM_NO_TOKEN. --F - is used when a pathname is specified to indicate that you want its - filesystem handle, not its file handle. - -----------------------------------------------------------------------------*/ - -extern int optind; -extern char *optarg; - - -char *Progname; - - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-F] [-n nelem] [-s sid] [-t token] " - "{pathname|handle}\n", - Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - dm_token_t token = DM_NO_TOKEN; - u_int nelem = DM_EVENT_MAX; - char *object; - dm_eventset_t eventset; - void *hanp; - size_t hlen; - u_int nelemp; - char *name; - int Fflag = 0; - int error; - int opt; - int i; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "Fn:s:t:")) != EOF) { - switch (opt) { - case 'F': - Fflag++; - break; - case 'n': - nelem = atol(optarg); - break; - case 's': - sid = atol(optarg); - break; - case 't': - token = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - object = argv[optind]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - - if ((error = opaque_to_handle(object, &hanp, &hlen)) != 0) { - fprintf(stderr, "can't get a handle from %s, %s\n", - object, strerror(error)); - return(1); - } - - if (Fflag) { - void *fshanp; - size_t fshlen; - - if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen)) { - fprintf(stderr, "can't get filesystem handle from %s\n", - object); - exit(1); - } - dm_handle_free(hanp, hlen); - hanp = fshanp; - hlen = fshlen; - } - - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - DMEV_ZERO(eventset); - - if (dm_get_eventlist(sid, hanp, hlen, token, nelem, - &eventset, &nelemp)) { - fprintf(stderr, "dm_get_eventlist failed, %s\n", - strerror(errno)); - return(1); - } - - fprintf(stdout, "Events on object %s (0x%llx), nelemp %d:\n", - object, (unsigned long long) eventset, nelemp); - - for (i = 0; i < nelemp; i++) { - if (!DMEV_ISSET(i, eventset)) - continue; - switch (i) { - case DM_EVENT_CANCEL: - fprintf(stdout, "DM_EVENT_CANCEL"); - break; - case DM_EVENT_MOUNT: - fprintf(stdout, "DM_EVENT_MOUNT"); - break; - case DM_EVENT_PREUNMOUNT: - fprintf(stdout, "DM_EVENT_PREUNMOUNT"); - break; - case DM_EVENT_UNMOUNT: - fprintf(stdout, "DM_EVENT_UNMOUNT"); - break; - case DM_EVENT_DEBUT: - fprintf(stdout, "DM_EVENT_DEBUT"); - break; - case DM_EVENT_CREATE: - fprintf(stdout, "DM_EVENT_CREATE"); - break; - case DM_EVENT_CLOSE: - fprintf(stdout, "DM_EVENT_CLOSE"); - break; - case DM_EVENT_POSTCREATE: - fprintf(stdout, "DM_EVENT_POSTCREATE"); - break; - case DM_EVENT_REMOVE: - fprintf(stdout, "DM_EVENT_REMOVE"); - break; - case DM_EVENT_POSTREMOVE: - fprintf(stdout, "DM_EVENT_POSTREMOVE"); - break; - case DM_EVENT_RENAME: - fprintf(stdout, "DM_EVENT_RENAME"); - break; - case DM_EVENT_POSTRENAME: - fprintf(stdout, "DM_EVENT_POSTRENAME"); - break; - case DM_EVENT_LINK: - fprintf(stdout, "DM_EVENT_LINK"); - break; - case DM_EVENT_POSTLINK: - fprintf(stdout, "DM_EVENT_POSTLINK"); - break; - case DM_EVENT_SYMLINK: - fprintf(stdout, "DM_EVENT_SYMLINK"); - break; - case DM_EVENT_POSTSYMLINK: - fprintf(stdout, "DM_EVENT_POSTSYMLINK"); - break; - case DM_EVENT_READ: - fprintf(stdout, "DM_EVENT_READ"); - break; - case DM_EVENT_WRITE: - fprintf(stdout, "DM_EVENT_WRITE"); - break; - case DM_EVENT_TRUNCATE: - fprintf(stdout, "DM_EVENT_TRUNCATE"); - break; - case DM_EVENT_ATTRIBUTE: - fprintf(stdout, "DM_EVENT_ATTRIBUTE"); - break; - case DM_EVENT_DESTROY: - fprintf(stdout, "DM_EVENT_DESTROY"); - break; - case DM_EVENT_NOSPACE: - fprintf(stdout, "DM_EVENT_NOSPACE"); - break; - case DM_EVENT_USER: - fprintf(stdout, "DM_EVENT_USER"); - break; - case DM_EVENT_MAX: - fprintf(stdout, "DM_EVENT_23"); - break; - } - fprintf(stdout, " (%d)\n", i); - } - - dm_handle_free(hanp, hlen); - return(0); -} diff --git a/dmapi/src/suite1/cmd/get_events.c b/dmapi/src/suite1/cmd/get_events.c deleted file mode 100644 index b2f947d7..00000000 --- a/dmapi/src/suite1/cmd/get_events.c +++ /dev/null @@ -1,119 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2005 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_get_events(). The -command line is: - - get_events [-b buflen] [-m maxmsgs] [-f] sid - -where buflen is the size of the buffer to use, maxmsgs is the number of messages -to read, -f, if selected, is DM_EV_WAIT, and sid is the session ID -whose dispositions you are interested in. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-b buflen] [-m maxmsgs] [-f] sid\n", - Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_eventmsg_t *msg; - dm_sessid_t sid; - u_int flags = 0; - void *bufp = NULL; - size_t buflen = 10000; - u_int maxmsgs = 1; - size_t rlenp; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "b:m:f")) != EOF) { - switch (opt) { - case 'b': - buflen = atol(optarg); - break; - case 'm': - maxmsgs = atol(optarg); - break; - case 'f': - flags = DM_EV_WAIT; - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - sid = atol(argv[optind]); - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - - if (buflen > 0) { - if ((bufp = malloc(buflen)) == NULL) { - fprintf(stderr, "malloc failed, %s\n", strerror(errno)); - exit(1); - } - } - - if (dm_get_events(sid, maxmsgs, flags, buflen, bufp, &rlenp)) { - if (errno == E2BIG) { - fprintf(stderr, "dm_get_events buffer too small, " - "should be %zd bytes\n", rlenp); - } else { - fprintf(stderr, "dm_get_events failed, (%d)%s\n", - errno, strerror(errno)); - } - exit(1); - } - fprintf(stdout, "rlenp=%zd\n", rlenp); - - if (rlenp == 0) - return(0); - - msg = bufp; - while (msg != NULL) { - print_one_message(msg); - msg = DM_STEP_TO_NEXT(msg, dm_eventmsg_t *); - } - return(0); -} diff --git a/dmapi/src/suite1/cmd/get_fileattr.c b/dmapi/src/suite1/cmd/get_fileattr.c deleted file mode 100644 index 85d09244..00000000 --- a/dmapi/src/suite1/cmd/get_fileattr.c +++ /dev/null @@ -1,152 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2002 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include -#include - -#include - -#include -#include - -extern int optind; -extern int opterr; -extern char *optarg; - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "Usage: %s [-a|-A] [-s sid] [-t token] {pathname|handle}\n", - Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - dm_token_t token = DM_NO_TOKEN; -#if 0 - char buffer[500]; -#endif - void *hanp; - size_t hlen; - dm_stat_t dmstat; - char *pathname_obj; - int a_flag = 0; - char *name; - int opt; - int validate = 0; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - opterr = 0; - while ((opt = getopt(argc, argv, "Aas:t:v")) != EOF) { - switch (opt) { - case 'A': - a_flag = 2; - break; - case 'a': - a_flag = 1; - break; - case 's': - sid = atol(optarg); - break; - case 't': - token = atol(optarg); - break; - case 'v': - validate = 1; - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) { - usage(); - } - pathname_obj = argv[optind]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file's handle or convert the external handle. */ - - if (opaque_to_handle(pathname_obj, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for %s\n", pathname_obj); - exit(1); - } - - if (!a_flag) { - fprintf(stdout, "path/handle %s\n", pathname_obj); - - /* Get the file's state, print it, then verify it against - what is in the file's stat block. - */ - - if (dm_get_fileattr(sid, hanp, hlen, token, - DM_AT_EMASK|DM_AT_PMANR|DM_AT_PATTR|DM_AT_DTIME|DM_AT_CFLAG|DM_AT_STAT, - &dmstat)) { - fprintf(stderr, "dm_get_fileattr failed, %s\n", - strerror(errno)); - exit(1); - } - - print_state(&dmstat); - if(validate) - (void)validate_state(&dmstat, pathname_obj, 1); -#if 0 - } else { - if ((rc = filesys_bulkscan_init(pathname, &scanp)) != 0) { - fprintf(stderr, "filesys_bulkscan failed, %s\n", - fileio_err_image(rc)); - exit(1); - } - for (;;) { - rc = filesys_bulkscan_read(scanp, &fhandle, &fullstat); - if (rc != FILEIO_NOERROR) - break; - - (void)fhandle_to_buffer(&fhandle, buffer, sizeof(buffer)); - if (a_flag == 1) { - fprintf(stdout, "handle %s\n", buffer); - print_state(&fullstat); - fprintf(stdout, "--------------------------\n"); - } else { - fprintf(stdout, "%s|", buffer); - print_line(&fullstat); - } - } - - if (rc != FILEIO_ENDOFSCAN) { - fprintf(stderr, "filesys_bulkscan_read failed, %s\n", - fileio_err_image(rc)); - exit(1); - } - if ((rc = filesys_bulkscan_close(&scanp)) != 0) { - fprintf(stderr, "filesys_bulkscan_close failed, %s\n", - fileio_err_image(rc)); - exit(1); - } -#endif - } - exit(0); -} diff --git a/dmapi/src/suite1/cmd/get_mountinfo.c b/dmapi/src/suite1/cmd/get_mountinfo.c deleted file mode 100644 index 55bef1ab..00000000 --- a/dmapi/src/suite1/cmd/get_mountinfo.c +++ /dev/null @@ -1,134 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include -#include - -#include -#include - -#include - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_get_mountinfo(). The -command line is: - - get_mountinfo [-b buflen] [-s sid] pathname - -where pathname is the name of a file, buflen is the size of the buffer to use -in the call, and sid is the session ID whose attributes you are interested in. - -----------------------------------------------------------------------------*/ - - /* - * Define some standard formats for the printf statements below. - */ - -#define HDR "%s: token %d sequence %d\n" -#define VALS "\t%-15s %s\n" -#define VALD "\t%-15s %d\n" -#define VALLLD "\t%-15s %ld\n" - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-b buflen] [-s sid] pathname\n", - Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - char *pathname; - void *bufp = NULL; - size_t buflen = 10000; - size_t rlenp; - void *fshanp; - size_t fshlen; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "b:s:")) != EOF) { - switch (opt) { - case 'b': - buflen = atol(optarg); - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - pathname = argv[optind++]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file's handle. */ - - if (dm_path_to_fshandle(pathname, &fshanp, &fshlen)) { - fprintf(stderr, "can't get fshandle for file %s, %s\n", - pathname, strerror(errno)); - exit(1); - } - - if (buflen > 0) { - if ((bufp = malloc(buflen)) == NULL) { - fprintf(stderr, "malloc failed, %s\n", strerror(errno)); - exit(1); - } - } - - if (dm_get_mountinfo(sid, fshanp, fshlen, DM_NO_TOKEN, buflen, - bufp, &rlenp)) { - if (errno == E2BIG) { - fprintf(stderr, "dm_get_mountinfo buffer too small, " - "should be %zd bytes\n", rlenp); - } else { - fprintf(stderr, "dm_get_mountinfo failed, %s\n", - strerror(errno)); - } - exit(1); - } - fprintf(stdout, "rlenp is %zd\n", rlenp); - print_one_mount_event(bufp); - - dm_handle_free(fshanp, fshlen); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/get_region.c b/dmapi/src/suite1/cmd/get_region.c deleted file mode 100644 index 47f3d0d2..00000000 --- a/dmapi/src/suite1/cmd/get_region.c +++ /dev/null @@ -1,121 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_set_region(). The -command line is: - - get_region [-n nelem] [-s sid] {pathname|handle} - -where pathname is the name of a file, nelem is the number of regions to pass -in the call, and sid is the session ID whose events you you are interested in. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-n nelem] [-s sid] {pathname|handle}\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - dm_region_t *regbufp = NULL; - char *object = NULL; - u_int nelemp; - u_int nelem = 1; - void *hanp; - size_t hlen; - char *name; - int opt; - int i; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "n:s:")) != EOF) { - switch (opt) { - case 'n': - nelem = atol(optarg); - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - object = argv[optind++]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file's handle. */ - - if (opaque_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for %s\n", object); - exit(1); - } - - if (nelem > 0) { - if ((regbufp = calloc(nelem, sizeof(*regbufp))) == NULL) { - fprintf(stderr, "calloc failed, %s\n", strerror(errno)); - exit(1); - } - } - - if (dm_get_region(sid, hanp, hlen, DM_NO_TOKEN, nelem, regbufp, - &nelemp)) { - fprintf(stderr, "dm_get_region failed, %s\n", - strerror(errno)); - exit(1); - } - fprintf(stdout, "%d regions\n", nelemp); - - for (i = 0; i < nelemp; i++) { - fprintf(stdout, "offset %lld, size %llu, flags 0x%x\n", - (long long) regbufp[i].rg_offset, - (unsigned long long) regbufp[i].rg_size, - regbufp[i].rg_flags); - } - - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/getall_disp.c b/dmapi/src/suite1/cmd/getall_disp.c deleted file mode 100644 index 32ce6a76..00000000 --- a/dmapi/src/suite1/cmd/getall_disp.c +++ /dev/null @@ -1,122 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_getall_disp(). The -command line is: - - getall_disp [-b buflen] sid - -where buflen is the size of the buffer to use, and sid is the session ID -whose dispositions you you are interested in. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-b buflen] sid\n", - Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_dispinfo_t *disp; - dm_sessid_t sid; - void *bufp = NULL; - size_t buflen = 10000; - void *hanp; - size_t hlen; - char hans1[HANDLE_STR]; - size_t rlenp; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "b:")) != EOF) { - switch (opt) { - case 'b': - buflen = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - sid = atol(argv[optind]); - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - - if (buflen > 0) { - if ((bufp = malloc(buflen)) == NULL) { - fprintf(stderr, "malloc failed, %s\n", strerror(errno)); - exit(1); - } - } - - if (dm_getall_disp(sid, buflen, bufp, &rlenp)) { - if (errno == E2BIG) { - fprintf(stderr, "dm_getall_disp buffer too small, " - "should be %zd bytes\n", rlenp); - } else { - fprintf(stderr, "dm_getall_disp failed, %s\n", - strerror(errno)); - } - exit(1); - } - fprintf(stdout, "rlenp is %zd\n", rlenp); - if (rlenp == 0) - return(0); - - disp = bufp; - while (disp != NULL) { - hanp = DM_GET_VALUE(disp, di_fshandle, void *); - hlen = DM_GET_LEN(disp, di_fshandle); - if (hanp && hlen) { - hantoa(hanp, hlen, hans1); - } else { - sprintf(hans1, "", hlen); - } - printf("%-15s %s dm_eventset_t 0%llo\n", - "fshandle", hans1, - (unsigned long long) disp->di_eventset); - - disp = DM_STEP_TO_NEXT(disp, dm_dispinfo_t *); - } - return(0); -} diff --git a/dmapi/src/suite1/cmd/getall_dmattr.c b/dmapi/src/suite1/cmd/getall_dmattr.c deleted file mode 100644 index 758b8c41..00000000 --- a/dmapi/src/suite1/cmd/getall_dmattr.c +++ /dev/null @@ -1,132 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_getall_dmattr(). The -command line is: - - getall_dmattr [-b buflen] [-s sid] pathname - -where pathname is the name of a file, buflen is the size of the buffer to use -in the call, and sid is the session ID whose attributes you are interested in. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-b buflen] [-s sid] pathname\n", - Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - char *pathname; - void *bufp; - size_t buflen = 10000; - size_t rlenp; - void *hanp; - size_t hlen; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "b:s:")) != EOF) { - switch (opt) { - case 'b': - buflen = atol(optarg); - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - pathname = argv[optind++]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file's handle. */ - - if (dm_path_to_handle(pathname, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for file %s, %s\n", - pathname, strerror(errno)); - exit(1); - } - - if ((bufp = malloc(buflen == 0 ? 1 : buflen)) == NULL) { - fprintf(stderr, "malloc failed, %s\n", strerror(errno)); - exit(1); - } - - if (dm_getall_dmattr(sid, hanp, hlen, DM_NO_TOKEN, buflen, - bufp, &rlenp)) { - if (errno == E2BIG) { - fprintf(stderr, "dm_getall_dmattr buffer too small, " - "should be %zd bytes\n", rlenp); - } else { - fprintf(stderr, "dm_getall_dmattr failed, %s\n", - strerror(errno)); - } - exit(1); - } - fprintf(stdout, "rlenp is %zd\n", rlenp); - if (rlenp > 0) { - dm_attrlist_t *attrlist; - - fprintf(stdout, "DMAPI attributes are:\n"); - - attrlist = (dm_attrlist_t *)bufp; - while (attrlist != NULL) { - fprintf(stdout, "Name: %s, length %d, value '%s'\n", - attrlist->al_name.an_chars, - DM_GET_LEN(attrlist, al_data), - DM_GET_VALUE(attrlist, al_data, char *)); - - attrlist = DM_STEP_TO_NEXT(attrlist, dm_attrlist_t *); - } - } - - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/handle_to_fshandle.c b/dmapi/src/suite1/cmd/handle_to_fshandle.c deleted file mode 100644 index 405e6b6e..00000000 --- a/dmapi/src/suite1/cmd/handle_to_fshandle.c +++ /dev/null @@ -1,76 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -/* Given an object's handle, print the filesystem handle. */ - -#include - -#include - -/*--------------------------------------------------------------------------- - -Test program used to test dm_handle_to_fshandle(). The command line is: - - handle_to_fshandle handle - -where handle is an object's handle. - -----------------------------------------------------------------------------*/ - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s handle\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - char *han_str; - char *name; - void *hanp, *fshanp; - size_t hlen, fshlen; - char buffer[100]; - int error; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - if (argc != 2) - usage(); - han_str = argv[1]; - - (void)dm_init_service(&name); - - if ((error = atohan(han_str, &hanp, &hlen)) != 0) { - fprintf(stderr, "atohan() failed, %s\n", strerror(error)); - return(1); - } - - if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen) != 0) { - fprintf(stderr, "dm_handle_to_fshandle failed, %s\n", - strerror(errno)); - return(1); - } - hantoa(fshanp, fshlen, buffer); - fprintf(stdout, "%s\n", buffer); - - dm_handle_free(hanp, hlen); - dm_handle_free(fshanp, fshlen); - return(0); -} diff --git a/dmapi/src/suite1/cmd/handle_to_path.c b/dmapi/src/suite1/cmd/handle_to_path.c deleted file mode 100644 index 749eed1f..00000000 --- a/dmapi/src/suite1/cmd/handle_to_path.c +++ /dev/null @@ -1,137 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2002 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include -#include -#include -#include - -#include -#include - -#include -#ifdef linux -#include -#include -#endif - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_handle_to_path(). The -command line is: - - handle_to_path [-b buflen] {dirpath|dirhandle} {objpath|objhandle} - -There are two parameters. The first is the pathname of a directory, -and the second is the pathname of a file, directory, or symbolic link -within that directory. The second parameter can also be the same as -the first if you want to specify "." (this is how EMASS uses it). -Pathnames can either be relative or full. - -buflen is the size of the buffer to use in the call. - -This program will return the full pathname of the object which is the -second parameter using the dm_handle_to_path() function. - -The program should work successfully for files, directories, and -symbolic links, and does not have to work for any other type of -object. It doesn't have to work across mount points. There shouldn't -be any "/." crud on the end of the returned pathname either. - -----------------------------------------------------------------------------*/ - -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-b buflen] {dirpath|dirhandle} {objpath|objhandle}\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - char *dirpath; - char *objpath; - void *hanp1, *hanp2; - size_t hlen1, hlen2; - void *pathbufp; - size_t buflen = 1024; - size_t rlenp; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "b:")) != EOF) { - switch (opt) { - case 'b': - buflen = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 2 != argc) - usage(); - dirpath = argv[optind++]; - objpath = argv[optind]; - - if (dm_init_service(&name)) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - return(1); - } - - if (opaque_to_handle(dirpath, &hanp1, &hlen1)) { - fprintf(stderr, "can't get handle for dir %s\n", dirpath); - exit(1); - } - - if (opaque_to_handle(objpath, &hanp2, &hlen2)) { - fprintf(stderr, "can't get handle for obj %s\n", objpath); - exit(1); - } - - if ((pathbufp = malloc(buflen == 0 ? 1 : buflen)) == NULL) { - fprintf(stderr, "malloc failed\n"); - return(1); - } - - if (dm_handle_to_path(hanp1, hlen1, hanp2, hlen2, - buflen, pathbufp, &rlenp)) { - if (errno == E2BIG) { - fprintf(stderr, "dm_handle_to_path buffer too small, " - "should be %zd bytes\n", rlenp); - } else { - fprintf(stderr, "dm_handle_to_path failed, (%d) %s\n", - errno, strerror(errno)); - } - return(1); - } - fprintf(stderr, "rlenp is %zd, pathbufp is %s\n", rlenp, (char*)pathbufp); - if (strlen(pathbufp) + 1 != rlenp) { - fprintf(stderr, "rlenp is %zd, should be %zd\n", rlenp, - strlen(pathbufp) + 1); - return(1); - } - exit(0); -} diff --git a/dmapi/src/suite1/cmd/init_service.c b/dmapi/src/suite1/cmd/init_service.c deleted file mode 100644 index a010c4b9..00000000 --- a/dmapi/src/suite1/cmd/init_service.c +++ /dev/null @@ -1,52 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include - -/*--------------------------------------------------------------------------- - -Test program used to test dm_init_service(). The command line is: - - init_service - -----------------------------------------------------------------------------*/ - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - char *name; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - if (argc != 1) - usage(); - - (void)dm_init_service(&name); - fprintf(stdout, "%s\n", name); - - return(0); -} diff --git a/dmapi/src/suite1/cmd/link_test.c b/dmapi/src/suite1/cmd/link_test.c deleted file mode 100644 index fab1b4f1..00000000 --- a/dmapi/src/suite1/cmd/link_test.c +++ /dev/null @@ -1,146 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include -#include - -/* - The variable 'flags' was used with two different meanings within - the spec. Sometimes it was an int, and sometimes a u_int. I - changed all the u_int references to use the new symbol uflags. - - The variable 'rlenp' was also used with two different meanings; - sometimes size_t, and sometimes dm_size_t. I introduced the new - symbol 'dmrlenp' for the dm_size_t cases. -*/ - -char *Progname; - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = 0, oldsid = 0, targetsid = 0; - dm_sessid_t *newsidp = NULL, *sidbufp = NULL; - dm_token_t token = 0, *tokenp = NULL; - dm_token_t *rtokenp = NULL, *tokenbufp = NULL; - dm_attrname_t *attrnamep = NULL; - dm_off_t off = 0, *offp = NULL, *roffp = NULL; - dm_extent_t *extentp = NULL; - dm_inherit_t *inheritbufp = NULL; - dm_stat_t *statp = NULL; - dm_size_t len = 0, *dmrlenp = NULL, *retvalp = NULL; - dm_attrloc_t *locp = NULL; - dm_eventset_t *eventsetp = NULL; - dm_config_t flagname = DM_CONFIG_INVALID; - dm_region_t *regbufp = NULL; - dm_response_t response = DM_RESP_INVALID; - dm_right_t right = DM_RIGHT_NULL, *rightp = NULL; - dm_igen_t igen, *igenp = NULL; - dm_msgtype_t msgtype = DM_MSGTYPE_INVALID; - dm_fileattr_t *attrp = NULL; - dm_boolean_t enable = 0, *exactflagp = NULL; - dm_timestruct_t *delay = NULL; - mode_t mode = 0; - size_t hlen = 0, dirhlen = 0, hlen1 = 0, hlen2 = 0; - size_t targhlen = 0, *fshlenp = NULL, *hlenp = NULL; - size_t msglen = 0, buflen = 0, *rlenp = NULL; - u_int nelem = 0, mask = 0, maxmsgs = 0, uflags = 0; - u_int *nelemp = NULL, maxevent = 0; - void *hanp = NULL, *dirhanp = NULL; - void *hanp1 = NULL, *hanp2 = NULL, *targhanp = NULL; - void *msgdatap = NULL, *bufp = NULL, **hanpp = NULL; - void *respbufp = NULL, **fshanpp = NULL; - dm_fsid_t fsid, *fsidp = NULL; - dm_ino_t ino, *inop = NULL; - char *cname = NULL, *sessinfop = NULL; - char *path = NULL, *pathbufp = NULL, **versionstrpp = NULL; - int flags = 0, fd = 0, setdtime = 0, reterror = 0; - -/* Definitions per the prototypes in dmport.h, in the same order. */ - - dm_clear_inherit(sid, hanp, hlen, token, attrnamep); - dm_create_by_handle(sid, dirhanp, dirhlen, token, - hanp, hlen, cname); - dm_create_session(oldsid, sessinfop, newsidp); - dm_create_userevent(sid, msglen, msgdatap, tokenp); - dm_destroy_session(sid); - dm_downgrade_right(sid, hanp, hlen, token); - dm_fd_to_handle(fd, hanpp, hlenp); - dm_find_eventmsg(sid, token, buflen, bufp, rlenp); - dm_get_allocinfo(sid, hanp, hlen, - token, offp, nelem, extentp, nelemp); - dm_get_bulkall(sid, hanp, hlen, token, mask, attrnamep, - locp, buflen, bufp, rlenp); - dm_get_bulkattr(sid, hanp, hlen, token, mask, locp, buflen, - bufp, rlenp); - dm_get_config(hanp, hlen, flagname, retvalp); - dm_get_config_events(hanp, hlen, nelem, eventsetp, nelemp); - dm_get_dirattrs(sid, hanp, hlen, token, mask, locp, buflen, - bufp, rlenp); - dm_get_dmattr(sid, hanp, hlen, token, attrnamep, buflen, - bufp, rlenp); - dm_get_eventlist(sid, hanp, hlen, token, nelem, eventsetp, nelemp); - dm_get_events(sid, maxmsgs, flags, buflen, bufp, rlenp); - dm_get_fileattr(sid, hanp, hlen, token, mask, statp); - dm_get_mountinfo(sid, hanp, hlen, token, buflen, bufp, rlenp); - dm_get_region(sid, hanp, hlen, token, nelem, regbufp, nelemp); - dm_getall_disp(sid, buflen, bufp, rlenp); - dm_getall_dmattr(sid, hanp, hlen, token, buflen, bufp, rlenp); - dm_getall_inherit(sid, hanp, hlen, - token, nelem, inheritbufp, nelemp); - dm_getall_sessions(nelem, sidbufp, nelemp); - dm_getall_tokens(sid, nelem, tokenbufp, nelemp); - dm_handle_cmp(hanp1, hlen1, hanp2, hlen2); - dm_handle_free(hanp, hlen); - dm_handle_hash(hanp, hlen); - dm_handle_is_valid(hanp, hlen); - dm_handle_to_fshandle(hanp, hlen, fshanpp, fshlenp); - dm_handle_to_fsid(hanp, hlen, fsidp); - dm_handle_to_igen(hanp, hlen, igenp); - dm_handle_to_ino(hanp, hlen, inop); - dm_handle_to_path(dirhanp, dirhlen, targhanp, targhlen, - buflen, pathbufp, rlenp); - dm_init_attrloc(sid, hanp, hlen, token, locp); - dm_init_service(versionstrpp); - dm_make_handle(&fsid, &ino, &igen, hanpp, hlenp); - dm_make_fshandle(&fsid, hanpp, hlenp); - dm_mkdir_by_handle(sid, dirhanp, dirhlen, token, - hanp, hlen, cname); - dm_move_event(sid, token, targetsid, rtokenp); - dm_obj_ref_hold(sid, token, hanp, hlen); - dm_obj_ref_query(sid, token, hanp, hlen); - dm_obj_ref_rele(sid, token, hanp, hlen); - dm_path_to_fshandle(path, hanpp, hlenp); - dm_path_to_handle(path, hanpp, hlenp); - dm_pending(sid, token, delay); - dm_probe_hole(sid, hanp, hlen, token, off, len, roffp, dmrlenp); - dm_punch_hole(sid, hanp, hlen, token, off, len); - dm_query_right(sid, hanp, hlen, token, rightp); - dm_query_session(sid, buflen, bufp, rlenp); - dm_read_invis(sid, hanp, hlen, token, off, len, bufp); - dm_release_right(sid, hanp, hlen, token); - dm_remove_dmattr(sid, hanp, hlen, token, setdtime, attrnamep); - dm_request_right(sid, hanp, hlen, token, uflags, right); - dm_respond_event(sid, token, response, reterror, buflen, respbufp); - dm_send_msg(sid, msgtype, buflen, bufp); - dm_set_disp(sid, hanp, hlen, token, eventsetp, maxevent); - dm_set_dmattr(sid, hanp, hlen, - token, attrnamep, setdtime, buflen, bufp); - dm_set_eventlist(sid, hanp, hlen, token, eventsetp, maxevent); - dm_set_fileattr(sid, hanp, hlen, token, mask, attrp); - dm_set_inherit(sid, hanp, hlen, token, attrnamep, mode); - dm_set_region(sid, hanp, hlen, token, nelem, regbufp, exactflagp); - dm_set_return_on_destroy(sid, hanp, hlen, - token, attrnamep, enable); - dm_symlink_by_handle(sid, dirhanp, dirhlen, token, - hanp, hlen, cname, path); - dm_sync_by_handle(sid, hanp, hlen, token); - dm_upgrade_right(sid, hanp, hlen, token); - dm_write_invis(sid, hanp, hlen, flags, token, off, len, bufp); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/make_rt_sparse.c b/dmapi/src/suite1/cmd/make_rt_sparse.c deleted file mode 100644 index 13fd3676..00000000 --- a/dmapi/src/suite1/cmd/make_rt_sparse.c +++ /dev/null @@ -1,136 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -/* - * Create file with XFS_XFLAG_REALTIME set. - */ - -#include -#include -#include -#include -#include -#include - - -/* Note: In order to figure out the filesystem geometry, you have to run this - program as root. Creating the file itself can be done by anyone. -*/ - - -static char * prog; - -static void -Usage(void) -{ - fprintf(stderr,"Usage: %s filename\n", prog); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - struct xfs_fsop_geom geom; - struct fsxattr fsx; - struct dioattr dio; - char *pathname; - u_int buflen; - char *buf; - ssize_t offset; - ssize_t count; - int fd; - int i; - - if (prog = strrchr(argv[0], '/')) { - *prog++; - } else { - prog = argv[0]; - } - - if (argc != 2) - Usage(); - pathname = argv[1]; - - /* Create the file. */ - - if ((fd = open(pathname, O_RDWR|O_CREAT|O_EXCL|O_DIRECT, 0600)) < 0) { - fprintf(stderr,"%s: Cannot open %s, %s\n", prog, - pathname, strerror(errno)); - exit(1); - } - - /* Determine the filesystem's realtime partition geometry. */ - - if (syssgi(SGI_XFS_FSOPERATIONS, fd, XFS_FS_GEOMETRY, NULL, &geom)) { - fprintf(stderr,"%s: syssgi(,XFS_FS_GEOMETRY) failed, %s\n", - prog, strerror(errno)); - exit(1); - } - - /* Make the file a realtime file. */ - - fsx.fsx_xflags = 1; /*XFS_XFLAG_REALTIME*/ - fsx.fsx_extsize = 4 * geom.blocksize * geom.rtextsize; - if (fcntl(fd, F_FSSETXATTR, &fsx) < 0) { - fprintf(stderr,"%s: fcntl(,F_FSSETXATTR) failed, %s\n", prog, - strerror(errno)); - exit(1); - } - - /* Obtain the direct I/O parameters. */ - - if (fcntl(fd, F_DIOINFO, &dio) < 0) { - fprintf(stderr,"%s: fcntl(,F_DIOINFO) failed,%s\n", - prog, strerror(errno)); - exit(1); - } - fprintf(stdout, "%s: file %s direct io requirements.\n", prog, - pathname); - fprintf(stdout, "%7d memory alignment.\n", dio.d_mem); - fprintf(stdout, "%7d minimum io size.\n", dio.d_miniosz); - fprintf(stdout, "%7d maximum io size.\n", dio.d_maxiosz); - - if (fcntl(fd, F_FSGETXATTR, &fsx) < 0) { - fprintf(stderr,"%s: fcntl(,F_FSGETXATTR) failed, %s\n", prog, - strerror(errno)); - exit(1); - } - fprintf(stdout, "%7d realtime extent size.\n", fsx.fsx_extsize); - - /* Malloc and zero a buffer to use for writes. */ - - buflen = dio.d_miniosz; - if ((buf = memalign(dio.d_mem, buflen)) == NULL) { - fprintf(stderr,"%s: memalign(%d,%d) returned NULL\n", - prog, dio.d_mem, buflen); - exit(1); - } - memset(buf, '\0', buflen); - - for (i = 0; i < 10; i += 2) { - offset = i * fsx.fsx_extsize; - if (lseek(fd, offset, SEEK_SET) < 0) { - fprintf(stderr, "seek to %d failed, %s\n", offset, - strerror(errno)); - exit(1); - } - if ((count = write(fd, buf, buflen)) < 0) { - fprintf(stderr, "write of %d bytes failed at offset " - "%d, , %s\n", buflen, offset, strerror(errno)); - exit(1); - } - if (count != buflen) { - fprintf(stderr, "expected to write %d bytes at offset " - "%d, actually wrote %d\n", buflen, offset, - count); - exit(1); - } - } - exit(0); -} diff --git a/dmapi/src/suite1/cmd/make_sparse.c b/dmapi/src/suite1/cmd/make_sparse.c deleted file mode 100644 index 76bc7b24..00000000 --- a/dmapi/src/suite1/cmd/make_sparse.c +++ /dev/null @@ -1,90 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -/* - * - */ - -#include - -#include -#include -#include -#include -#include - -#include -#include - -char * Progname; - - -static void -Usage(void) -{ - fprintf(stderr,"Usage: %s filename\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - char *pathname; - u_int buflen; - char *buf; - ssize_t offset; - ssize_t count; - int fd; - int i; - - Progname = argv[0]; - - if (argc != 2) - Usage(); - pathname = argv[1]; - - /* Create the file and make it a regular file. */ - - if ((fd = open(pathname, O_RDWR|O_CREAT|O_EXCL, 0600)) < 0) { - fprintf(stderr,"%s: Cannot open %s, %s\n", Progname, - pathname, strerror(errno)); - exit(1); - } - - /* Malloc and zero a buffer to use for writes. */ - - buflen = 1; - if ((buf = malloc(buflen)) == NULL) { - fprintf(stderr,"%s: malloc(%d) returned NULL\n", - Progname, buflen); - exit(1); - } - memset(buf, '\0', buflen); - - for (i = 0; i < 200; i += 2) { - offset = i * 65536; - if (lseek(fd, offset, SEEK_SET) < 0) { - fprintf(stderr, "seek to %zd failed, %s\n", offset, - strerror(errno)); - exit(1); - } - if ((count = write(fd, buf, buflen)) < 0) { - fprintf(stderr, "write of %d bytes failed at offset " - "%zd, , %s\n", buflen, offset, strerror(errno)); - exit(1); - } - if (count != buflen) { - fprintf(stderr, "expected to write %d bytes at offset " - "%zd, actually wrote %zd\n", buflen, offset, - count); - exit(1); - } - } - exit(0); -} diff --git a/dmapi/src/suite1/cmd/obj_ref_hold.c b/dmapi/src/suite1/cmd/obj_ref_hold.c deleted file mode 100644 index 0fb2a79b..00000000 --- a/dmapi/src/suite1/cmd/obj_ref_hold.c +++ /dev/null @@ -1,128 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_obj_ref_hold(). The -command line is: - - obj_ref_hold {-F} [-s sid] token {pathname|handle} - -where: --F - when a pathname is specified, -F indicates that its filesystem handle - should be used rather than its file object handle. -sid - is the dm_sessid_t to use rather than the default test session. -token - is the dm_token_t to use. -{pathname|handle} - is either a handle, or is the pathname of a file whose handle is - to be used. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-F] [-s sid] token {pathname|handle}\n", - Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - dm_token_t token; - char *object; - void *hanp; - size_t hlen; - int Fflag = 0; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "Fs:")) != EOF) { - switch (opt) { - case 'F': - Fflag++; - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 2 != argc) - usage(); - token = atol(argv[optind++]); - object = argv[optind]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file or filesystem's handle. */ - - if (opaque_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle from %s\n", object); - exit(1); - } - if (Fflag) { - void *fshanp; - size_t fshlen; - - if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen)) { - fprintf(stderr, "can't get filesystem handle from %s\n", - object); - exit(1); - } - dm_handle_free(hanp, hlen); - hanp = fshanp; - hlen = fshlen; - } - - if (dm_obj_ref_hold(sid, token, hanp, hlen)) { - fprintf(stderr, "dm_obj_ref_hold failed, %s\n", - strerror(errno)); - return(1); - } - - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/obj_ref_query.c b/dmapi/src/suite1/cmd/obj_ref_query.c deleted file mode 100644 index 34deb62c..00000000 --- a/dmapi/src/suite1/cmd/obj_ref_query.c +++ /dev/null @@ -1,134 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_obj_ref_query(). The -command line is: - - obj_ref_query {-F} [-s sid] token {pathname|handle} - -where: --F - when a pathname is specified, -F indicates that its filesystem handle - should be used rather than its file object handle. -sid - is the dm_sessid_t to use rather than the default test session. -token - is the dm_token_t to use. -{pathname|handle} - is either a handle, or is the pathname of a file whose handle is - to be used. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-F] [-s sid] token {pathname|handle}\n", - Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - dm_token_t token; - char *object; - void *hanp; - size_t hlen; - int Fflag = 0; - char *name; - int error; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "Fs:")) != EOF) { - switch (opt) { - case 'F': - Fflag++; - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 2 != argc) - usage(); - token = atol(argv[optind++]); - object = argv[optind]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file or filesystem's handle. */ - - if (opaque_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle from %s\n", object); - exit(1); - } - if (Fflag) { - void *fshanp; - size_t fshlen; - - if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen)) { - fprintf(stderr, "can't get filesystem handle from %s\n", - object); - exit(1); - } - dm_handle_free(hanp, hlen); - hanp = fshanp; - hlen = fshlen; - } - - if ((error = dm_obj_ref_query(sid, token, hanp, hlen)) < 0) { - fprintf(stderr, "dm_obj_ref_query failed, %s\n", - strerror(errno)); - return(1); - } - - if (error == 1) { - fprintf(stdout, "there is a hold\n"); - } else { - fprintf(stdout, "there is no hold\n"); - } - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/obj_ref_rele.c b/dmapi/src/suite1/cmd/obj_ref_rele.c deleted file mode 100644 index 31a3d679..00000000 --- a/dmapi/src/suite1/cmd/obj_ref_rele.c +++ /dev/null @@ -1,128 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_obj_ref_rele(). The -command line is: - - obj_ref_rele {-F} [-s sid] token {pathname|handle} - -where: --F - when a pathname is specified, -F indicates that its filesystem handle - should be used rather than its file object handle. -sid - is the dm_sessid_t to use rather than the default test session. -token - is the dm_token_t to use. -{pathname|handle} - is either a handle, or is the pathname of a file whose handle is - to be used. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-F] [-s sid] token {pathname|handle}\n", - Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - dm_token_t token; - char *object; - void *hanp; - size_t hlen; - int Fflag = 0; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "Fs:")) != EOF) { - switch (opt) { - case 'F': - Fflag++; - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 2 != argc) - usage(); - token = atol(argv[optind++]); - object = argv[optind]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file or filesystem's handle. */ - - if (opaque_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle from %s\n", object); - exit(1); - } - if (Fflag) { - void *fshanp; - size_t fshlen; - - if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen)) { - fprintf(stderr, "can't get filesystem handle from %s\n", - object); - exit(1); - } - dm_handle_free(hanp, hlen); - hanp = fshanp; - hlen = fshlen; - } - - if (dm_obj_ref_rele(sid, token, hanp, hlen)) { - fprintf(stderr, "dm_obj_ref_rele failed, %s\n", - strerror(errno)); - return(1); - } - - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/path_to_fshandle.c b/dmapi/src/suite1/cmd/path_to_fshandle.c deleted file mode 100644 index eef9de7a..00000000 --- a/dmapi/src/suite1/cmd/path_to_fshandle.c +++ /dev/null @@ -1,69 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -/* Given a file object's pathname, print the filesystem handle. */ - -#include - -#include - -/*--------------------------------------------------------------------------- - -Test program used to test dm_path_to_fshandle(). The command line is: - - path_to_fshandle pathname - -where pathname is the name of a file, directory, or symlink. - -----------------------------------------------------------------------------*/ - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s pathname\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - char *pathname; - char *name; - void *fshanp; - size_t fshlen; - char buffer[100]; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - if (argc != 2) - usage(); - pathname = argv[1]; - - (void)dm_init_service(&name); - - if (dm_path_to_fshandle(pathname, &fshanp, &fshlen) != 0) { - fprintf(stderr, "dm_path_to_fshandle failed, %s\n", - strerror(errno)); - return(1); - } - hantoa(fshanp, fshlen, buffer); - fprintf(stdout, "%s\n", buffer); - - dm_handle_free(fshanp, fshlen); - return(0); -} diff --git a/dmapi/src/suite1/cmd/path_to_handle.c b/dmapi/src/suite1/cmd/path_to_handle.c deleted file mode 100644 index b2d3d9da..00000000 --- a/dmapi/src/suite1/cmd/path_to_handle.c +++ /dev/null @@ -1,69 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -/* Given a file object's pathname, print the object's handle. */ - -#include - -#include - -/*--------------------------------------------------------------------------- - -Test program used to test dm_path_to_handle(). The command line is: - - path_to_handle pathname - -where pathname is the name of a file, directory, or symlink. - -----------------------------------------------------------------------------*/ - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s pathname\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - char *pathname; - char *name; - void *hanp; - size_t hlen; - char buffer[100]; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - if (argc != 2) - usage(); - pathname = argv[1]; - - (void)dm_init_service(&name); - - if (dm_path_to_handle(pathname, &hanp, &hlen) != 0) { - fprintf(stderr, "dm_path_to_handle failed, %s\n", - strerror(errno)); - return(1); - } - hantoa(hanp, hlen, buffer); - fprintf(stdout, "%s\n", buffer); - - dm_handle_free(hanp, hlen); - return(0); -} diff --git a/dmapi/src/suite1/cmd/pending.c b/dmapi/src/suite1/cmd/pending.c deleted file mode 100644 index 81e0697d..00000000 --- a/dmapi/src/suite1/cmd/pending.c +++ /dev/null @@ -1,72 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_pending(). The -command line is: - - pending sid token - -where sid is the session ID whose event you are responding to. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s sid token\n", - Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid; - char *name; - dm_token_t token; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - if (argc != 3) - usage(); - - sid = atol(argv[1]); - token = atol(argv[2]); - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - - if (dm_pending(sid, token, NULL)) { - fprintf(stderr, "dm_pending failed, %s\n", strerror(errno)); - exit(1); - } - exit(0); -} diff --git a/dmapi/src/suite1/cmd/print_event.c b/dmapi/src/suite1/cmd/print_event.c deleted file mode 100644 index 266119c7..00000000 --- a/dmapi/src/suite1/cmd/print_event.c +++ /dev/null @@ -1,1313 +0,0 @@ - - -/* - * eventloop.c - * - * Joseph Jackson - * 25-Jun-1996 - * - * Monitor all events for a file system. - * When one arrives, print a message with all the details. - * If the message is synchronous, always reply with DM_RESP_CONTINUE - * (This program doesn't perform any real file system or HSM work.) - * - * This is a simplification of the "migin.c" example program. - * The original code was by Peter Lawthers: - * This code was written by Peter Lawthers, and placed in the public - * domain for use by DMAPI implementors and app writers. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - - /* - * Define some standard formats for the printf statements below. - */ - -#define HDR "%s: token %d sequence %d\n" -#define VALS "\t%-15s %s\n" -#define VALD "\t%-15s %d\n" -#define VALLLD "\t%-15s %lld\n" - -extern int optind; -extern int errno; - -void usage (char *); -int main (int, char **); -static void event_loop (dm_sessid_t, int); -int handle_message (dm_sessid_t, dm_eventmsg_t *); -static int format_mode(mode_t mode, char **ptr); -static int get_fs_handle (char *, void **, size_t *); -static int set_disposition(dm_sessid_t, void *, size_t); -static int set_disp_global(dm_sessid_t); -static int set_events (dm_sessid_t, void *, size_t); -static int clear_events (dm_sessid_t, void *, size_t); -int finish_responding(dm_sessid_t); -int establish_handler(void); -void exit_handler (int); - -static int -clear_region_event( - dm_sessid_t sid, - u_int event, - void *hanp, - size_t hlen, - char *hans1); - -/* - * Keep these global so the exit_handler and err_msg routines can get to them - */ -char *Progname; -int Sleep = 0; -int Verbose; -dm_sessid_t sid = 0; -dm_sessid_t oldsid = 0; -char *fsname; -int register_new_mnts = 0; -int rwt_bit_clear = 1; /* Clear read/write/trunc bit before - * responding to event; reset all other - * bits. - */ -int dmf_events = 0; /* Use only those events that DMF uses */ - -void -usage( - char *prog) -{ - fprintf(stderr, "Usage: %s ", prog); - fprintf(stderr, " <-S oldsid> <-v> <-s sleep> <-R> <-N> <-D> "); - fprintf(stderr, "filesystem \n"); -} - - -int -main( - int argc, - char *argv[]) -{ - - int c; - int error; - void *fs_hanp; - size_t fs_hlen; - - -/* Progname = argv[0];*/ Progname = "print_event"; - fsname = NULL; - - while ((c = getopt(argc, argv, "vs:S:RND")) != EOF) { - switch (c) { - case 's': - Sleep = atoi(optarg); - break; - case 'R': - register_new_mnts = 1; - break; - case 'D': - dmf_events = 1; - break; - case 'N': - rwt_bit_clear = 0; - break; - case 'S': - oldsid = atoi(optarg); - break; - case 'v': - Verbose = 1; - break; - case '?': - default: - usage(Progname); - exit(1); - } - } - if (optind >= argc) { - usage(Progname); - exit(1); - } - fsname = argv[optind]; - if (fsname == NULL) { - usage(Progname); - exit(1); - } - - /* - * Establish an exit handler - */ - error = establish_handler(); - if (error) - exit(1); - - /* - * Init the dmapi, and get a filesystem handle so - * we can set up our events - */ - - if (oldsid) { - sid = oldsid; - } else { - error = setup_dmapi(&sid); - if (error) - exit(1); - } - - error = get_fs_handle(fsname, &fs_hanp, &fs_hlen); - if (error) - goto cleanup; - - /* - * Set the event disposition so that our session will receive - * all the events for the given file system - */ - error = set_disp_global(sid); - if (error) - goto cleanup; - error = set_disposition(sid, fs_hanp, fs_hlen); - if (error) - goto cleanup; - - /* - * Enable monitoring for all events in the given file system - */ - error = set_events(sid, fs_hanp, fs_hlen); - if (error) - goto cleanup; - - /* - * Now sit in an infinite loop, reporting on any events that occur. - * The program is exited after a signal through exit_handler(). - */ - printf("\n"); - event_loop(sid, 1 /*waitflag*/); - - /* - * If we get here, cleanup after the event_loop failure - */ - cleanup: - exit_handler(0); - return(1); -} - - -/* - * Main event loop processing - * - * The waitflag argument is set to 1 when we call this from main(). - * In this case, continuously process incoming events, - * blocking if there are none available. - * In the exit_handler(), call this routine with waitflag=0. - * Just try to read the events once in this case with no blocking. - */ - -static void -event_loop( - dm_sessid_t sid, - int waitflag) -{ - void *msgbuf; - size_t bufsize; - int error; - dm_eventmsg_t *msg; - int count; - - /* - * We take a swag at a buffer size. If it's wrong, we can - * always resize it - */ - - bufsize = sizeof(dm_eventmsg_t) + sizeof(dm_data_event_t) + HANDLE_LEN; - bufsize *= 50; - msgbuf = (void *)malloc(bufsize); - if (msgbuf == NULL) { - err_msg("Can't allocate memory for buffer"); - return; - } - - for (;;) { - error = dm_get_events(sid, ALL_AVAIL_MSGS, - waitflag ? DM_EV_WAIT:0, bufsize, msgbuf, &bufsize); - if (error) { - if (errno == EAGAIN) { - if (waitflag) - continue; - break; - } - if (errno == E2BIG) { - free(msgbuf); - msgbuf = (void *)malloc(bufsize); - if (msgbuf == NULL) { - err_msg("Can't resize msg buffer"); - return; - } - continue; - } - errno_msg("Error getting events from DMAPI (%d)", errno); - break; - } - - /* - * Walk through the message buffer, pull out each individual - * message, and dispatch the messages to handle_message(), - * which will respond to the events. - */ - - count = 0; - msg = (dm_eventmsg_t *)msgbuf; - while (msg != NULL ) { - count++; - error = handle_message(sid, msg); - if (error) { - free(msgbuf); - return; - } - msg = DM_STEP_TO_NEXT(msg, dm_eventmsg_t *); - } - if (count != 1 && Verbose) { - err_msg("Found %d events in one call to " - "dm_get_events\n", count); - } - } - if (msgbuf != NULL) - free(msgbuf); -} - - -void -print_one_mount_event( - void *msg) -{ - void *hanp1, *hanp2, *hanp3; - size_t hlen1, hlen2, hlen3; - char hans1[HANDLE_STR], hans2[HANDLE_STR], hans3[HANDLE_STR]; - void *namp1, *namp2; - size_t nlen1, nlen2; - char nams1[NAME_MAX + 1], nams2[NAME_MAX + 1]; - mode_t mode; - -#if VERITAS_21 - dm_namesp_event_t *msg_ne = (dm_namesp_event_t *)msg; - -/* - msg_ne = DM_GET_VALUE(msg, ev_data, dm_namesp_event_t *); -*/ - hanp1 = DM_GET_VALUE(msg_ne, ne_handle1, void *); - hlen1 = DM_GET_LEN (msg_ne, ne_handle1); - hanp2 = DM_GET_VALUE(msg_ne, ne_handle2, void *); - hlen2 = DM_GET_LEN (msg_ne, ne_handle2); - namp1 = DM_GET_VALUE(msg_ne, ne_name1, void *); - nlen1 = DM_GET_LEN (msg_ne, ne_name1); - namp2 = DM_GET_VALUE(msg_ne, ne_name2, void *); - nlen2 = DM_GET_LEN (msg_ne, ne_name2); - hanp3 = NULL; - hlen3 = 0; - mode = msg_ne->ne_mode; -#else - dm_mount_event_t *msg_me = (dm_mount_event_t *)msg; - - hanp1 = DM_GET_VALUE(msg_me, me_handle1, void *); - hlen1 = DM_GET_LEN(msg_me, me_handle1); - hanp2 = DM_GET_VALUE(msg_me, me_handle2, void *); - hlen2 = DM_GET_LEN(msg_me, me_handle2); - namp1 = DM_GET_VALUE(msg_me, me_name1, void *); - nlen1 = DM_GET_LEN(msg_me, me_name1); - namp2 = DM_GET_VALUE(msg_me, me_name2, void *); - nlen2 = DM_GET_LEN(msg_me, me_name2); - hanp3 = DM_GET_VALUE(msg_me, me_roothandle, void *); - hlen3 = DM_GET_LEN(msg_me, me_roothandle); - mode = msg_me->me_mode; -#endif /* VERITAS_21 */ - - if (hanp1 && hlen1) { - hantoa(hanp1, hlen1, hans1); - } else { - sprintf(hans1, "", hlen1); - } - if (hanp2 && hlen2) { - hantoa(hanp2, hlen2, hans2); - } else { - sprintf(hans2, "", hlen2); - } - if (hanp3 && hlen3) { - hantoa(hanp3, hlen3, hans3); - } else { - sprintf(hans3, "", hlen3); - } - if (namp1 && nlen1) { - strncpy(nams1, namp1, nlen1); - if (nlen1 != sizeof(nams1)) - nams1[nlen1] = '\0'; - } else { - sprintf(nams1, "", nlen1); - } - if (namp2 && nlen2) { - strncpy(nams2, namp2, nlen2); - if (nlen2 != sizeof(nams2)) - nams2[nlen2] = '\0'; - } else { - sprintf(nams2, "", nlen2); - } - - printf(VALS VALS VALS VALS VALS VALD, - "fs handle", hans1, - "mtpt handle", hans2, - "mtpt path", nams1, - "media desig", nams2, - "root handle", hans3, - "mode", mode); -} - - -/* - * First, weed out the events which return interesting structures. - * If it's not one of those, unpack the dm_namesp_event structure - * and display the contents. - */ -int -handle_message( - dm_sessid_t sid, - dm_eventmsg_t *msg) -{ - int pkt_error = 0; - int error; - dm_response_t response; - int respond, respcode; - dm_namesp_event_t *msg_ne; -#if !VERITAS_21 - dm_mount_event_t *msg_me; -#endif - void *hanp1, *hanp2, *namp1, *namp2; - u_int hlen1, hlen2, nlen1, nlen2; - char hans1[HANDLE_STR], hans2[HANDLE_STR]; - char nams1[NAME_MAX + 1], nams2[NAME_MAX + 1]; - - /* - * Set the defaults for responding to events - */ - respond = 1; - response = DM_RESP_CONTINUE; - respcode = 0; - - /***** USER EVENTS *****/ - - if (msg->ev_type == DM_EVENT_USER) { - char *privp; - u_int plen, i; - - printf(HDR, - "user", msg->ev_token, msg->ev_sequence); - - /* print private data as ascii or hex if it exists DM_CONFIG_MAX_MESSAGE_DATA */ - - privp = DM_GET_VALUE(msg, ev_data, char *); - plen = DM_GET_LEN (msg, ev_data); - if (plen) { - for (i = 0; i < plen; i++) { - if (!isprint(privp[i]) && !isspace(privp[i])) - break; - } - if (i == plen - 1 && privp[i] == '\0') { - printf(VALS, - "privdata", privp); - } else { - printf("\t%-15s ", "privdata"); - for (i = 0; i < plen; i++) { - printf("%.2x", privp[i]); - } - printf("\n"); - } - } else { - printf(VALS, - "privdata", ""); - } - - if (msg->ev_token == DM_INVALID_TOKEN) /* async dm_send_msg event */ - respond = 0; - } - - /***** CANCEL EVENT *****/ - -/* Not implemented on SGI or Veritas */ - - else if (msg->ev_type == DM_EVENT_CANCEL) { - dm_cancel_event_t *msg_ce; - - msg_ce = DM_GET_VALUE(msg, ev_data, dm_cancel_event_t *); - printf(HDR VALD VALD, - "cancel", msg->ev_token, msg->ev_sequence, - "sequence", msg_ce->ce_sequence, - "token", msg_ce->ce_token); - respond = 0; - } - - /***** DATA EVENTS *****/ - - else if (msg->ev_type == DM_EVENT_READ || - msg->ev_type == DM_EVENT_WRITE || - msg->ev_type == DM_EVENT_TRUNCATE) { - dm_data_event_t *msg_de; - - msg_de = DM_GET_VALUE(msg, ev_data, dm_data_event_t *); - hanp1 = DM_GET_VALUE(msg_de, de_handle, void *); - hlen1 = DM_GET_LEN (msg_de, de_handle); - if (hanp1 && hlen1) { - hantoa(hanp1, hlen1, hans1); - if (rwt_bit_clear) { - u_int rgflag; - switch(msg->ev_type) { - /* DM_EVENT_* and DM_REGION_* are different values, ug */ - case DM_EVENT_READ: - rgflag = DM_REGION_READ; - break; - case DM_EVENT_WRITE: - rgflag = DM_REGION_WRITE; - break; - case DM_EVENT_TRUNCATE: - rgflag = DM_REGION_TRUNCATE; - break; - default: - err_msg("unexpected event type (%d)\n", msg->ev_type); - rgflag = DM_REGION_NOEVENT; - break; - } - clear_region_event(sid, rgflag, hanp1, hlen1, hans1); - } - } else { - sprintf(hans1, "", hlen1); - } - - switch(msg->ev_type) { - - case DM_EVENT_READ: - printf(HDR VALS VALLLD VALLLD, - "read", msg->ev_token, msg->ev_sequence, - "file handle", hans1, - "offset", (long long) msg_de->de_offset, - "length", (long long) msg_de->de_length); - break; - - case DM_EVENT_WRITE: - printf(HDR VALS VALLLD VALLLD, - "write", msg->ev_token, msg->ev_sequence, - "file handle", hans1, - "offset", (long long) msg_de->de_offset, - "length", (long long) msg_de->de_length); - break; - - case DM_EVENT_TRUNCATE: - printf(HDR VALS VALLLD VALLLD, - "truncate", msg->ev_token, msg->ev_sequence, - "file handle", hans1, - "offset", (long long) msg_de->de_offset, - "length", (long long) msg_de->de_length); - break; - default: break; - } - } /* RWT */ - - /***** DESTROY EVENT *****/ - - else if (msg->ev_type == DM_EVENT_DESTROY) { - dm_destroy_event_t *msg_ds; - char attrname[DM_ATTR_NAME_SIZE + 1]; - u_char *copy; - u_int clen; - u_int i; - - msg_ds= DM_GET_VALUE(msg, ev_data, dm_destroy_event_t *); - hanp1 = DM_GET_VALUE(msg_ds, ds_handle, void *); - hlen1 = DM_GET_LEN (msg_ds, ds_handle); - if (hanp1 && hlen1) { - hantoa(hanp1, hlen1, hans1); - } else { - sprintf(hans1, "", hlen1); - } - if (msg_ds->ds_attrname.an_chars[0] != '\0') { - strncpy(attrname, (char *)msg_ds->ds_attrname.an_chars, sizeof(attrname)); - attrname[DM_ATTR_NAME_SIZE] = '\0'; /* terminate the string */ - } else { - strcpy(attrname, ""); - } - printf(HDR VALS VALS, - "destroy", msg->ev_token, msg->ev_sequence, - "handle", hans1, - "attrname", attrname); - copy = DM_GET_VALUE(msg_ds, ds_attrcopy, u_char *); - clen = DM_GET_LEN (msg_ds, ds_attrcopy); - if (copy && clen) { - printf("\t%-15s ", "attrcopy"); - for (i = 0; i < clen; i++) { - printf("%.2x", copy[i]); - } - printf("\n"); - } else { - printf(VALS, "attrcopy", ""); - } - respond = 0; - } - - /***** MOUNT EVENT *****/ - - else if (msg->ev_type == DM_EVENT_MOUNT) { - printf(HDR, "mount", msg->ev_token, msg->ev_sequence); -#if !VERITAS_21 - msg_me = DM_GET_VALUE(msg, ev_data, dm_mount_event_t *); - hanp1 = DM_GET_VALUE(msg_me, me_handle1, void *); - hlen1 = DM_GET_LEN(msg_me, me_handle1); - - print_one_mount_event(msg_me); - - if (register_new_mnts) { - if (set_disposition(sid, hanp1, hlen1) == 0) - set_events(sid, hanp1, hlen1); - } - -#else /* VERITAS_21 */ - msg_ne = DM_GET_VALUE(msg, ev_data, dm_namesp_event_t *); - print_one_mount_event(msg_ne); -#endif /* VERITAS_21 */ - - } - - /***** NAMESPACE EVENTS *****/ - - else { - char *type = NULL; - - msg_ne = DM_GET_VALUE(msg, ev_data, dm_namesp_event_t *); - hanp1 = DM_GET_VALUE(msg_ne, ne_handle1, void *); - hlen1 = DM_GET_LEN (msg_ne, ne_handle1); - hanp2 = DM_GET_VALUE(msg_ne, ne_handle2, void *); - hlen2 = DM_GET_LEN (msg_ne, ne_handle2); - namp1 = DM_GET_VALUE(msg_ne, ne_name1, void *); - nlen1 = DM_GET_LEN (msg_ne, ne_name1); - namp2 = DM_GET_VALUE(msg_ne, ne_name2, void *); - nlen2 = DM_GET_LEN (msg_ne, ne_name2); - - if (hanp1 && hlen1) { - hantoa(hanp1, hlen1, hans1); - } - if (hanp2 && hlen2) { - hantoa(hanp2, hlen2, hans2); - } - if (namp1 && nlen1) { - strncpy(nams1, namp1, nlen1); - if (nlen1 != sizeof(nams1)) - nams1[nlen1] = '\0'; - } - if (namp2 && nlen2) { - strncpy(nams2, namp2, nlen2); - if (nlen2 != sizeof(nams2)) - nams2[nlen2] = '\0'; - } - - if (msg->ev_type == DM_EVENT_PREUNMOUNT || - msg->ev_type == DM_EVENT_UNMOUNT) { - if (msg_ne->ne_mode == 0) { - type = "NOFORCE"; -#if !VERITAS_21 - } else if (msg_ne->ne_mode == DM_UNMOUNT_FORCE) { -#else - } else if (msg_ne->ne_mode > 0) { -#endif - type = "FORCE"; - } else { - type = "UNKNOWN"; - pkt_error++; - } - } else if (msg->ev_type == DM_EVENT_CREATE || - msg->ev_type == DM_EVENT_POSTCREATE || - msg->ev_type == DM_EVENT_REMOVE || - msg->ev_type == DM_EVENT_POSTREMOVE) { - if (format_mode(msg_ne->ne_mode, &type)) { - pkt_error++; - } - } - - switch(msg->ev_type) { - - case DM_EVENT_PREUNMOUNT: - printf(HDR VALS VALS VALS, - "preunmount", msg->ev_token, msg->ev_sequence, - "fs handle", hans1, - "root dir", hans2, - "unmount mode", type); - break; - - case DM_EVENT_UNMOUNT: - printf(HDR VALS VALS VALD, - "unmount", msg->ev_token, msg->ev_sequence, - "fs handle", hans1, - "unmount mode", type, - "retcode", msg_ne->ne_retcode); - break; - - case DM_EVENT_NOSPACE: - printf(HDR VALS, - "nospace", msg->ev_token, msg->ev_sequence, - "fs handle", hans1); - response = DM_RESP_ABORT; - respcode = ENOSPC; - break; - - case DM_EVENT_DEBUT: /* not supported on SGI */ - printf(HDR VALS, - "debut", msg->ev_token, msg->ev_sequence, - "object", hans1); - break; - - case DM_EVENT_CREATE: - printf(HDR VALS VALS VALS, - "create", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "name", nams1, - "mode bits", type); - break; - - case DM_EVENT_POSTCREATE: - printf(HDR VALS VALS VALS VALS VALD, - "postcreate", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "new object", hans2, - "name", nams1, - "mode bits", type, - "retcode", msg_ne->ne_retcode); - respond = 0; - clear_region_event(sid, 0, hanp2, hlen2, hans2); - break; - - case DM_EVENT_REMOVE: - printf(HDR VALS VALS VALS, - "remove", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "name", nams1, - "mode bits", type); - break; - - case DM_EVENT_POSTREMOVE: - printf(HDR VALS VALS VALS VALD, - "postremove", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "name", nams1, - "mode bits", type, - "retcode", msg_ne->ne_retcode); - respond = 0; - break; - - case DM_EVENT_RENAME: - printf(HDR VALS VALS VALS VALS, - "rename", msg->ev_token, msg->ev_sequence, - "old parent", hans1, - "new parent", hans2, - "old name", nams1, - "new name", nams2); - break; - - case DM_EVENT_POSTRENAME: - printf(HDR VALS VALS VALS VALS VALD, - "postrename", msg->ev_token, msg->ev_sequence, - "old parent", hans1, - "new parent", hans2, - "old name", nams1, - "new name", nams2, - "retcode", msg_ne->ne_retcode); - respond = 0; - break; - - case DM_EVENT_SYMLINK: - printf(HDR VALS VALS VALS, - "symlink", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "name", nams1, - "contents", nams2); - break; - - case DM_EVENT_POSTSYMLINK: - printf(HDR VALS VALS VALS VALS VALD, - "postsymlink", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "new object", hans2, - "name", nams1, - "contents", nams2, - "retcode", msg_ne->ne_retcode); - respond = 0; - break; - - case DM_EVENT_LINK: - printf(HDR VALS VALS VALS, - "link", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "source", hans2, - "name", nams1); - break; - - case DM_EVENT_POSTLINK: - printf(HDR VALS VALS VALS VALD, - "postlink", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "source", hans2, - "name", nams1, - "retcode", msg_ne->ne_retcode); - respond = 0; - break; - - case DM_EVENT_ATTRIBUTE: - printf(HDR VALS, - "attribute", msg->ev_token, msg->ev_sequence, - "object", hans1); - respond = 0; - break; - - case DM_EVENT_CLOSE: /* not supported on SGI */ - printf(HDR VALS, - "close", msg->ev_token, msg->ev_sequence, - "object", hans1); - respond = 0; - break; - - default: - pkt_error++; - printf(HDR VALD, - "", msg->ev_token, msg->ev_sequence, - "ev_type", msg->ev_type); - if (msg->ev_token == DM_INVALID_TOKEN) - respond = 0; - break; - } - } - - /* - * Now respond to those messages which require a response - */ - if (respond) { - error = dm_respond_event(sid, msg->ev_token, response, respcode, 0, 0); - if (error) { - errno_msg("Can't respond to event"); - return error; - } - if (Sleep) { - err_msg("Sleeping for %d seconds!\n", Sleep); - sleep(Sleep); - } - } - - return 0; -} - - -/* - Convert a mode_t field into a printable string. - - Returns non-zero if the mode_t is invalid. The string is - returned in *ptr, whether there is an error or not. -*/ - -static int -format_mode( - mode_t mode, - char **ptr) -{ -static char modestr[100]; - char *typestr; - int error = 0; - - if (S_ISFIFO(mode)) typestr = "FIFO"; - else if(S_ISCHR (mode)) typestr = "Character Device"; - else if(S_ISBLK (mode)) typestr = "Block Device"; - else if(S_ISDIR (mode)) typestr = "Directory"; - else if(S_ISREG (mode)) typestr = "Regular File"; - else if(S_ISLNK (mode)) typestr = "Symbolic Link"; - else if(S_ISSOCK(mode)) typestr = "Socket"; - else { - typestr = ""; - error++; - } - - sprintf(modestr, "mode %06o: perm %c%c%c %c%c%c %c%c%c %c%c%c, type %s", - mode, - mode & S_ISUID ? 's':' ', - mode & S_ISGID ? 'g':' ', - mode & S_ISVTX ? 't':' ', - mode & S_IRUSR ? 'r':'-', - mode & S_IWUSR ? 'w':'-', - mode & S_IXUSR ? 'x':'-', - mode & S_IRGRP ? 'r':'-', - mode & S_IWGRP ? 'w':'-', - mode & S_IXGRP ? 'x':'-', - mode & S_IROTH ? 'r':'-', - mode & S_IWOTH ? 'w':'-', - mode & S_IXOTH ? 'x':'-', - typestr); - *ptr = modestr; - return(error); -} - - -static int -get_fs_handle( - char *fsname, - void **fs_hanpp, - size_t *fs_hlenp) -{ - char hans[HANDLE_STR]; - - if (dm_path_to_fshandle(fsname, fs_hanpp, fs_hlenp) == -1) { - errno_msg("Can't get filesystem handle"); - return 1; - } - if (Verbose) { - hantoa(*fs_hanpp, *fs_hlenp, hans); - err_msg("File system handle for %s: %s\n", fsname, hans); - } - return 0; -} - - -/* - Set the event disposition for this filesystem to include all valid - DMAPI events so that we receive all events for this filesystem. - Also set DM_EVENT_MOUNT disposition for the global handle. - It does not make sense to specify DM_EVENT_USER in the disposition - mask since a session is always unconditionally registered for these - events. - - Returns non-zero on error. -*/ - -static int -set_disp_global( - dm_sessid_t sid) -{ - dm_eventset_t eventlist; - - if (Verbose) { - err_msg("Setting event disposition to send all " - "mount events to this session\n"); - } - - /* DM_EVENT_MOUNT must be sent in a separate request using the global - handle. If we ever support more than one filesystem at a time, this - request should be moved out of this routine to a place where it is - issued just once. - */ - - DMEV_ZERO(eventlist); - DMEV_SET(DM_EVENT_MOUNT, eventlist); - - if (dm_set_disp(sid, DM_GLOBAL_HANP, DM_GLOBAL_HLEN, DM_NO_TOKEN, - &eventlist, DM_EVENT_MAX) == -1) { - errno_msg("Can't set event disposition for mount"); - return(1); - } - - return(0); -} - - -static int -set_disposition( - dm_sessid_t sid, - void *fs_hanp, - size_t fs_hlen) -{ - dm_eventset_t eventlist; - - if (Verbose) { - err_msg("Setting event disposition to send all " - "events to this session\n"); - } - - DMEV_ZERO(eventlist); - - /* File system administration events. */ - - DMEV_SET(DM_EVENT_PREUNMOUNT, eventlist); - DMEV_SET(DM_EVENT_UNMOUNT, eventlist); - DMEV_SET(DM_EVENT_NOSPACE, eventlist); - - /* While DM_EVENT_DEBUT is optional, it appears that the spec always - lets it be specified in a dm_set_disp call; its just that the - event will never be seen on some platforms. - */ - - DMEV_SET(DM_EVENT_DEBUT, eventlist); - - - /* Namespace events. */ - - DMEV_SET(DM_EVENT_CREATE, eventlist); - DMEV_SET(DM_EVENT_POSTCREATE, eventlist); - DMEV_SET(DM_EVENT_REMOVE, eventlist); - DMEV_SET(DM_EVENT_POSTREMOVE, eventlist); - DMEV_SET(DM_EVENT_RENAME, eventlist); - DMEV_SET(DM_EVENT_POSTRENAME, eventlist); - DMEV_SET(DM_EVENT_LINK, eventlist); - DMEV_SET(DM_EVENT_POSTLINK, eventlist); - DMEV_SET(DM_EVENT_SYMLINK, eventlist); - DMEV_SET(DM_EVENT_POSTSYMLINK, eventlist); - - /* Managed region data events. */ - - DMEV_SET(DM_EVENT_READ, eventlist); - DMEV_SET(DM_EVENT_WRITE, eventlist); - DMEV_SET(DM_EVENT_TRUNCATE, eventlist); - - /* Metadata events. */ - - DMEV_SET(DM_EVENT_ATTRIBUTE, eventlist); -#if !defined(VERITAS_21) && !defined(linux) - DMEV_SET(DM_EVENT_CANCEL, eventlist); /* not supported on SGI */ -#endif -#if !defined(linux) - DMEV_SET(DM_EVENT_CLOSE, eventlist); /* not supported on SGI */ -#endif - DMEV_SET(DM_EVENT_DESTROY, eventlist); - - /* Pseudo-events. */ - - /* DM_EVENT_USER - always enabled - causes EINVAL if specified */ - - if (dm_set_disp(sid, fs_hanp, fs_hlen, DM_NO_TOKEN, - &eventlist, DM_EVENT_MAX) == -1) { - errno_msg("Can't set event disposition for filesystem"); - return(1); - } - return(0); -} - - -/* - Enable event generation on each valid filesystem-based DMAPI event - within the given file system. - - Returns non-zero on errors. -*/ - -static int -set_events( - dm_sessid_t sid, - void *fs_hanp, - size_t fs_hlen) -{ - dm_eventset_t eventlist; - - if (Verbose) { - if (dmf_events) { - err_msg("Setting event list to enable all " - "DMF-supported events " - "for this file system\n"); - } - else { - err_msg("Setting event list to enable all events " - "for this file system\n"); - } - } - DMEV_ZERO(eventlist); - - /* File system administration events. */ - - /* DM_EVENT_MOUNT - always enabled on the global handle - causes - EINVAL if specified. - */ - DMEV_SET(DM_EVENT_PREUNMOUNT, eventlist); - DMEV_SET(DM_EVENT_UNMOUNT, eventlist); - DMEV_SET(DM_EVENT_NOSPACE, eventlist); - /* DM_EVENT_DEBUT - always enabled - causes EINVAL if specified. */ - - /* Namespace events. */ - - DMEV_SET(DM_EVENT_CREATE, eventlist); - DMEV_SET(DM_EVENT_POSTCREATE, eventlist); - DMEV_SET(DM_EVENT_REMOVE, eventlist); - DMEV_SET(DM_EVENT_POSTREMOVE, eventlist); - DMEV_SET(DM_EVENT_RENAME, eventlist); - DMEV_SET(DM_EVENT_POSTRENAME, eventlist); - DMEV_SET(DM_EVENT_LINK, eventlist); - DMEV_SET(DM_EVENT_POSTLINK, eventlist); - DMEV_SET(DM_EVENT_SYMLINK, eventlist); - DMEV_SET(DM_EVENT_POSTSYMLINK, eventlist); - - /* Managed region data events. These are not settable by - dm_set_eventlist on a filesystem basis. They are meant - to be set using dm_set_region on regular files only. - However, in the SGI implementation, they are filesystem-settable. - Since this is useful for testing purposes, do it. - */ - - /* DM_EVENT_READ */ - /* DM_EVENT_WRITE */ - /* DM_EVENT_TRUNCATE */ - - /* Metadata events. */ - - DMEV_SET(DM_EVENT_ATTRIBUTE, eventlist); -#if !defined(VERITAS_21) && !defined(linux) - DMEV_SET(DM_EVENT_CANCEL, eventlist); /* not supported on SGI */ -#endif -#if !defined(linux) - DMEV_SET(DM_EVENT_CLOSE, eventlist); /* not supported on SGI */ -#endif - DMEV_SET(DM_EVENT_DESTROY, eventlist); - - /* Did we want just the DMF events? */ - if (dmf_events) { - DMEV_ZERO(eventlist); - DMEV_SET(DM_EVENT_UNMOUNT, eventlist); - DMEV_SET(DM_EVENT_DESTROY, eventlist); - } - - /* Pseudo-events. */ - - /* DM_EVENT_USER - always enabled - causes EINVAL if specified */ - - if (dm_set_eventlist(sid, fs_hanp, fs_hlen, DM_NO_TOKEN, - &eventlist, DM_EVENT_MAX) == -1) { - errno_msg("Can't set event list"); - return(1); - } - return(0); -} - - -/* - Disable monitoring for all events in the DMAPI for the given - file system. This is done before exiting so that future - operations won't hang waiting for their events to be handled. - - Returns non-zero on errors. -*/ - -static int -clear_events( - dm_sessid_t sid, - void *fs_hanp, - size_t fs_hlen) -{ - dm_eventset_t eventlist; - - if (Verbose) { - err_msg("Clearing event list to disable all events " - "for this filesystem\n"); - } - DMEV_ZERO(eventlist); - - if (dm_set_eventlist(sid, fs_hanp, fs_hlen, DM_NO_TOKEN, - &eventlist, DM_EVENT_MAX) == -1) { - errno_msg("Can't clear event list"); - return(1); - } - return(0); -} - - - -static int -clear_region_event( - dm_sessid_t sid, - u_int event, - void *hanp, - size_t hlen, - char *hans1) -{ - dm_region_t region = { 0, 0, 0 }; - u_int nelem = 1; - u_int exactflag; - - region.rg_flags = DM_REGION_READ|DM_REGION_WRITE|DM_REGION_TRUNCATE; - region.rg_flags &= ~event; - - if (Verbose) { - err_msg("Clearing region mask 0x%x for file %s\n", - (int)event, hans1); - err_msg("Setting region mask 0x%x\n", region.rg_flags); - } - - if (dm_set_region(sid, hanp, hlen, DM_NO_TOKEN, nelem, ®ion, - &exactflag)) { - errno_msg("Can't set region event"); - return(1); - } - return(0); -} - - -/* - * Respond to any events which haven't been handled yet. - * dm_getall_tokens provides a list of tokens for the outstanding events. - * dm_find_eventmsg uses the token to lookup the corresponding message. - * The message is passed to handle_message() for normal response processing. - */ -int -finish_responding( - dm_sessid_t sid) -{ - int error = 0; - u_int nbytes, ntokens = 0, ret_ntokens, i; - dm_token_t *tokenbuf = NULL, *tokenptr; - size_t buflen = 0, ret_buflen; - char *msgbuf = NULL; - dm_eventmsg_t *msg; - - if (Verbose) - err_msg("Responding to any outstanding delivered event messages\n"); - - /* - * Initial sizes for the token and message buffers - */ - ret_buflen = 16 * (sizeof(dm_eventmsg_t) + sizeof(dm_data_event_t) - + HANDLE_LEN); - ret_ntokens = 16; - - /* - * The E2BIG dance... - * Take a guess at how large to make the buffer, starting with ret_ntokens. - * If the routine returns E2BIG, use the returned size and try again. - * If we're already using the returned size, double it and try again. - */ - do { - dm_token_t *tmpbuf; - ntokens = (ntokens != ret_ntokens) ? ret_ntokens : ntokens*2; - nbytes = ntokens * (sizeof(dm_token_t) + sizeof(dm_vardata_t)); - tmpbuf = realloc(tokenbuf, nbytes); - if (tmpbuf == NULL) { - err_msg("Can't malloc %d bytes for tokenbuf\n", nbytes); - error = 1; - goto out; - } - tokenbuf = tmpbuf; - error = dm_getall_tokens(sid, ntokens, tokenbuf, &ret_ntokens); - } while (error && errno == E2BIG); - - if (error) { - errno_msg("Can't get all outstanding tokens"); - goto out; - } - - tokenptr = tokenbuf; - for (i = 0; i < ret_ntokens; i++) { - if (Verbose) - err_msg("Responding to outstanding event for token %d\n",(int)*tokenptr); - - /* - * The E2BIG dance reprise... - */ - do { - char *tmpbuf; - buflen = (buflen != ret_buflen) ? ret_buflen : buflen * 2; - tmpbuf = realloc(msgbuf, buflen); - if (tmpbuf == NULL) { - err_msg("Can't malloc %d bytes for msgbuf\n", buflen); - error = 1; - goto out; - } - msgbuf = tmpbuf; - error = dm_find_eventmsg(sid, *tokenptr, buflen, msgbuf, &ret_buflen); - } while (error && errno == E2BIG); - if (error) { - errno_msg("Can't find the event message for token %d", (int)*tokenptr); - goto out; - } - - msg = (dm_eventmsg_t *) msgbuf; - while (msg != NULL) { - error = handle_message(sid, msg); - if (error) - goto out; - msg = DM_STEP_TO_NEXT(msg, dm_eventmsg_t *); - } - - tokenptr++; - } - - out: - if (tokenbuf) - free(tokenbuf); - if (msgbuf) - free(msgbuf); - return error; -} - - -/* - * Establish an exit handler since we run in an infinite loop - */ -int -establish_handler(void) -{ - struct sigaction act; - - /* - * Set up signals so that we can wait for spawned children - */ - act.sa_handler = exit_handler; - act.sa_flags = 0; - sigemptyset(&act.sa_mask); - - (void)sigaction(SIGHUP, &act, NULL); - (void)sigaction(SIGINT, &act, NULL); - (void)sigaction(SIGQUIT, &act, NULL); - (void)sigaction(SIGTERM, &act, NULL); - (void)sigaction(SIGUSR1, &act, NULL); - (void)sigaction(SIGUSR1, &act, NULL); - (void)sigaction(SIGUSR2, &act, NULL); - - return(0); -} - - -/* - * Exit gracefully - * - * Stop events from being generated for the given file system - * Respond to any events that were delivered but unanswered - * (the event loop may have been in the middle of taking care of the event) - * Try getting any undelivered events but don't block if none are there - * (the file system may have generated an event after we killed dm_get_events) - * Shutdown the session using the global "sid" variable. - */ -void -exit_handler(int x) -{ - int error; - void *fs_hanp; - size_t fs_hlen; - - if (Verbose) - printf("\n"), - err_msg("Exiting...\n"); - - error = get_fs_handle(fsname, &fs_hanp, &fs_hlen); - - if (!error) { - error = clear_events(sid, fs_hanp, fs_hlen); - if (error) - /* just keep going */ ; - } - - error = finish_responding(sid); - if (error) - /* just keep going */ ; - - err_msg("Processing any undelivered event messages\n"); - event_loop(sid, 0 /*waitflag*/); - - err_msg("Shutting down the session\n"); - if (sid != 0) { - error = dm_destroy_session(sid); - if (error == -1) { - errno_msg("Can't shut down session - use 'mrmean -kv' to clean up!"); - } - } - - exit(0); -} diff --git a/dmapi/src/suite1/cmd/print_fshandle.c b/dmapi/src/suite1/cmd/print_fshandle.c deleted file mode 100644 index d85cd280..00000000 --- a/dmapi/src/suite1/cmd/print_fshandle.c +++ /dev/null @@ -1,67 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -/* Given a file pathname, print the filesystem handle and the uuid_t for - the filesystem that contains the file. -*/ - -#include -#include -#include -#include -#include -#include -#include - -char *Progname; - -static void -hantoa( - void *hanp, - size_t hlen, - char *handle_str) -{ - u_char *cp= (u_char *)hanp; - int i; - - for (i = 0;i < hlen; i++, handle_str += 2) - sprintf(handle_str, "%.2x", *cp++); - *handle_str = '\0'; -} - -int -main( - int argc, - char **argv) -{ - char *name; - int fd; - void *fshanp; - size_t fshlen; - char buffer[100]; - - if (argc != 2) { - fprintf(stderr, "usage: %s path\n", argv[0]); - exit(1); - } - Progname = argv[0]; - (void)dm_init_service(&name); - - if (dm_path_to_fshandle(argv[1], &fshanp, &fshlen) != 0) { - fprintf(stderr, "dm_path_to_fshandle failed, %s\n", - strerror(errno)); - } - hantoa(fshanp, fshlen, buffer); - - if ((fd = open(argv[1], O_RDONLY)) < 0) { - fprintf(stderr, "Open of %s failed, %s\n", argv[1], - strerror(errno)); - exit(1); - } - fprintf(stdout, "fshandle %s, %s\n", - buffer, argv[1]); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/probe_hole.c b/dmapi/src/suite1/cmd/probe_hole.c deleted file mode 100644 index 1090e775..00000000 --- a/dmapi/src/suite1/cmd/probe_hole.c +++ /dev/null @@ -1,113 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_probe_hole(). The -command line is: - - probe_hole [-o offset] [-l length] [-s sid] pathname - -where pathname is the name of a file, offset is the offset of the start of -the proposed punch, and length is the length of the punch. sid is the -session ID whose events you you are interested in. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-o offset] [-l length] " - "[-s sid] pathname\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - char *pathname = NULL; - dm_off_t offset = 0; - dm_size_t length = 0; - dm_off_t roffp; - dm_size_t rlenp; - void *hanp; - size_t hlen; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "o:l:s:")) != EOF) { - switch (opt) { - case 'o': - offset = atol(optarg); - break; - case 'l': - length = atol(optarg); - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - pathname = argv[optind]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file's handle. */ - - if (dm_path_to_handle(pathname, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for file %s\n", pathname); - exit(1); - } - - if (dm_probe_hole(sid, hanp, hlen, DM_NO_TOKEN, offset, length, - &roffp, &rlenp)) { - fprintf(stderr, "dm_probe_hole failed, %s\n", - strerror(errno)); - exit(1); - } - fprintf(stdout, "roffp is %lld, rlenp is %llu\n", - (long long) roffp, (unsigned long long) rlenp); - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/probe_punch_xfsctl_hole.c b/dmapi/src/suite1/cmd/probe_punch_xfsctl_hole.c deleted file mode 100644 index 4b7d7ec7..00000000 --- a/dmapi/src/suite1/cmd/probe_punch_xfsctl_hole.c +++ /dev/null @@ -1,186 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include -#include -#include - - - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_probe_hole(). The -command line is: - - probe_hole [-o offset] [-l length] [-s sid] pathname - -where pathname is the name of a file, offset is the offset of the start of -the proposed punch, and length is the length of the punch. sid is the -session ID whose events you you are interested in. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - -#define METHOD_DMAPI_PROBE 0 -#define METHOD_DMAPI_PUNCH 1 -#define METHOD_XFSCTL 2 - -char *methodmap[] = {"DMAPI probe hole", - "DMAPI punch hole", - "Punch hole with xfsctl(XFS_IOC_FREESP64)"}; - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-x|-p] [-o offset] [-l length] " - "[-s sid] pathname\n", Progname); - exit(1); -} - -int -xfsctl_punch_hole( - char *path, - dm_off_t offset, - dm_size_t length) -{ - xfs_flock64_t flock; - int fd; - - if ((fd = open(path, O_RDWR|O_CREAT, 0600)) < 0) { - perror(path); - exit(errno); - } - - flock.l_whence = 0; - flock.l_start = offset; - flock.l_len = length; - - if (xfsctl(path, fd, XFS_IOC_FREESP64, &flock)) { - fprintf(stderr, "can't XFS_IOC_FREESP64 %s: %s\n", - path, strerror(errno)); - return errno; - } - - close(fd); - - printf("ok.\n"); - return 0; -} - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - char *pathname = NULL; - dm_off_t offset = 0; - dm_size_t length = 0; - dm_off_t roffp; - dm_size_t rlenp; - void *hanp; - size_t hlen; - char *name; - char *p; - int opt; - int method = METHOD_DMAPI_PROBE; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "o:l:s:xp")) != EOF) { - switch (opt) { - case 'o': - offset = strtoll(optarg, &p, 10); - if (p && (*p == 'k' || *p == 'K')) - offset *= 1024; - break; - case 'l': - length = strtoll(optarg, &p, 10); - if (p && (*p == 'k' || *p == 'K')) - length *= 1024; - break; - case 's': - sid = atol(optarg); - break; - case 'x': - method = METHOD_XFSCTL; - break; - case 'p': - method = METHOD_DMAPI_PUNCH; - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - pathname = argv[optind]; - - if (!pathname) - usage(); - - printf("Running %s on %s with settings:\n", methodmap[method], pathname); - printf(" offset = '%lld', length = '%lld', sid = '%lld'\n", - (long long) offset, (unsigned long long) length, (long long) sid); - - if (method == METHOD_XFSCTL) - return xfsctl_punch_hole(pathname, offset, length); - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file's handle. */ - - if (dm_path_to_handle(pathname, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for file %s\n", pathname); - exit(1); - } - - switch(method) { - case METHOD_DMAPI_PROBE: - if (dm_probe_hole(sid, hanp, hlen, DM_NO_TOKEN, offset, length, - &roffp, &rlenp)) { - fprintf(stderr, "dm_probe_hole failed, %s\n", - strerror(errno)); - exit(1); - } - fprintf(stdout, "roffp is %lld, rlenp is %llu\n", - (long long) roffp, (unsigned long long) rlenp); - break; - case METHOD_DMAPI_PUNCH: - if (dm_punch_hole(sid, hanp, hlen, DM_NO_TOKEN, offset, length)) { - fprintf(stderr, "dm_punch_hole failed, %s\n", - strerror(errno)); - exit(1); - } - break; - } - dm_handle_free(hanp, hlen); - - return 0; -} diff --git a/dmapi/src/suite1/cmd/punch_hole.c b/dmapi/src/suite1/cmd/punch_hole.c deleted file mode 100644 index fc02b5e7..00000000 --- a/dmapi/src/suite1/cmd/punch_hole.c +++ /dev/null @@ -1,108 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_punch_hole(). The -command line is: - - punch_hole [-o offset] [-l length] [-s sid] {pathname|handle} - -where pathname is the name of a file, offset is the offset of the start of -the punch, and length is the length of the punch. sid is the -session ID whose events you you are interested in. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-o offset] [-l length] " - "[-s sid] {pathname|handle}\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - char *object = NULL; - dm_off_t offset = 0; - dm_size_t length = 0; - void *hanp; - size_t hlen; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "o:l:s:")) != EOF) { - switch (opt) { - case 'o': - offset = atol(optarg); - break; - case 'l': - length = atol(optarg); - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - object = argv[optind]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file's handle. */ - - if (opaque_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for %s\n", object); - exit(1); - } - - if (dm_punch_hole(sid, hanp, hlen, DM_NO_TOKEN, offset, length)) { - fprintf(stderr, "dm_punch_hole failed, %s\n", - strerror(errno)); - exit(1); - } - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/query_right.c b/dmapi/src/suite1/cmd/query_right.c deleted file mode 100644 index 10893523..00000000 --- a/dmapi/src/suite1/cmd/query_right.c +++ /dev/null @@ -1,131 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_query_right(). The -command line is: - - query_right [-F] [-s sid] token {pathname|handle} - -where --F - when a pathname is specified, -F indicates that its filesystem handle - should be used rather than its file object handle. -sid - is the dm_sessid_t to use rather than the default test session. -token - is the dm_token_t to use. -{pathname|handle} - is either a handle, or is the pathname of a file whose handle is - to be used. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-F] [-s sid] token " - "{pathname|handle}\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - dm_token_t token; - dm_right_t right; - char *object; - void *hanp; - size_t hlen; - int Fflag = 0; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "Fs:")) != EOF) { - switch (opt) { - case 'F': - Fflag++; - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 2 != argc) - usage(); - token = atol(argv[optind++]); - object = argv[optind++]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file or filesystem's handle. */ - - if (opaque_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle from %s\n", object); - exit(1); - } - if (Fflag) { - void *fshanp; - size_t fshlen; - - if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen)) { - fprintf(stderr, "can't get filesystem handle from %s\n", - object); - exit(1); - } - dm_handle_free(hanp, hlen); - hanp = fshanp; - hlen = fshlen; - } - - if (dm_query_right(sid, hanp, hlen, token, &right)) { - fprintf(stderr, "dm_query_right failed, %s\n", - strerror(errno)); - return(1); - } - - fprintf(stderr, "right is %s\n", rt_value_to_name(right)); - - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/randomize_file.c b/dmapi/src/suite1/cmd/randomize_file.c deleted file mode 100644 index a9731d5d..00000000 --- a/dmapi/src/suite1/cmd/randomize_file.c +++ /dev/null @@ -1,132 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include -#include -#include - -/* - This program reads the file specified on the command line and - produces a new file on stdout which contains the lines from the - input file scrambled into a random order. This is useful for - 'randomizing' a database to simulate the kind of I/O that will - occur when many records have been added and deleted over time. -*/ - -#define FIELD_WIDTH 21 - -static char buffer[4096]; -char *Progname; - -int -main( - int argc, - char **argv) -{ - FILE *infile; - FILE *tmpfile; - char path[] = "file_XXXXXX"; - int line_count = 0; - int i; - int j; - - Progname = argv[0]; - if (argc != 2) { - fprintf(stderr, "Usage: %s infile\n", argv[0]); - exit(1); - } - - /* Read through the input file and count how many lines are present. */ - - if ((infile = fopen(argv[1], "r")) == NULL) { - fprintf(stderr, "can't open %s\n", argv[1]); - exit(1); - } - for (;;) { - if (fgets(buffer, sizeof(buffer), infile) == NULL) { - if (!ferror(infile)) - break; - fprintf(stderr, "Error on infile\n"); - exit(1); - } - line_count++; - } - fprintf(stderr, "%d lines in input file\n", line_count); - - /* Create a temp file. Copy the input file to the temp file, - prepending a random number in the range - 0 <= X <= linecount-1 - to each line copied. - */ - - (void) mkstemp(path); - if ((tmpfile = fopen(path, "w")) == NULL) { - fprintf(stderr, "error opening temp file %s\n", path); - exit(1); - } - rewind(infile); - srand48((long)getpid()); - - for (i = line_count - 1; i >= 0; i--) { - if (fgets(buffer, sizeof(buffer), infile) == NULL) { - if (!ferror(infile)) - break; - fprintf(stderr, "Error on infile\n"); - exit(1); - } - j = (int)(drand48() * (float)i); - fprintf(tmpfile, "%*d ", FIELD_WIDTH - 1, j); - fputs(buffer, tmpfile); - } - if (fclose(infile)) { - fprintf(stderr, "close of input file failed\n"); - exit(1); - } - if (fclose(tmpfile)) { - fprintf(stderr, "close of temp file %s failed\n", path); - exit(1); - } - fprintf(stderr, "random mapping complete\n"); - - /* Use the system sort routine to sort the file into order on the - first field, effectively randomizing the lines. - */ - - sprintf(buffer, "sort +0 -1 -o %s %s", path, path); - if (system(buffer)) { - fprintf(stderr, "sort call failed\n"); - exit(1); - } - fprintf(stderr, "sort complete\n"); - - /* Copy the temp file to stdout, removing the prepended field. */ - - if ((tmpfile = fopen(path, "rw")) == NULL) { - fprintf(stderr, "error reopening temp file %s\n", path); - exit(1); - } - - for (i = 0; i < line_count; i++) { - if (fgets(buffer, sizeof(buffer), tmpfile) == NULL) { - if (!ferror(tmpfile)) - break; - fprintf(stderr, "Error on tmpfile\n"); - exit(1); - } - if (fputs(buffer + FIELD_WIDTH, stdout) < 0) { - fprintf(stderr, "Error on outfile\n"); - exit(1); - } - } - if (unlink(path)) { - fprintf(stderr, "can't unlink %s\n", path); - exit(1); - } - exit(0); -} diff --git a/dmapi/src/suite1/cmd/release_right.c b/dmapi/src/suite1/cmd/release_right.c deleted file mode 100644 index 28eeca3a..00000000 --- a/dmapi/src/suite1/cmd/release_right.c +++ /dev/null @@ -1,128 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_release_right(). The -command line is: - - release_right {-F} [-s sid] token {pathname|handle} - -where: --F - when a pathname is specified, -F indicates that its filesystem handle - should be used rather than its file object handle. -sid - is the dm_sessid_t to use rather than the default test session. -token - is the dm_token_t to use. -{pathname|handle} - is either a handle, or is the pathname of a file whose handle is - to be used. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-F] [-s sid] token {pathname|handle}\n", - Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - dm_token_t token; - char *object; - void *hanp; - size_t hlen; - int Fflag = 0; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "Fs:")) != EOF) { - switch (opt) { - case 'F': - Fflag++; - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 2 != argc) - usage(); - token = atol(argv[optind++]); - object = argv[optind]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file or filesystem's handle. */ - - if (opaque_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle from %s\n", object); - exit(1); - } - if (Fflag) { - void *fshanp; - size_t fshlen; - - if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen)) { - fprintf(stderr, "can't get filesystem handle from %s\n", - object); - exit(1); - } - dm_handle_free(hanp, hlen); - hanp = fshanp; - hlen = fshlen; - } - - if (dm_release_right(sid, hanp, hlen, token)) { - fprintf(stderr, "dm_release_right failed, %s\n", - strerror(errno)); - return(1); - } - - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/remove_dmattr.c b/dmapi/src/suite1/cmd/remove_dmattr.c deleted file mode 100644 index 52153b06..00000000 --- a/dmapi/src/suite1/cmd/remove_dmattr.c +++ /dev/null @@ -1,105 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_remove_dmattr(). The -command line is: - - remove_dmattr [-s sid] [-u] pathname attr - -where pathname is the name of a file, attr is the name of the DMAPI attribute, -and sid is the session ID whose attributes you are interested in. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-s sid] [-u] pathname attr\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - char *pathname; - dm_attrname_t *attrnamep; - int setdtime = 0; - void *hanp; - size_t hlen; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "s:u")) != EOF) { - switch (opt) { - case 's': - sid = atol(optarg); - break; - case 'u': - setdtime = 1; - break; - case '?': - usage(); - } - } - if (optind + 2 != argc) - usage(); - pathname = argv[optind++]; - attrnamep = (dm_attrname_t *)argv[optind++]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file's handle. */ - - if (dm_path_to_handle(pathname, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for file %s\n", pathname); - exit(1); - } - - if (dm_remove_dmattr(sid, hanp, hlen, DM_NO_TOKEN, setdtime, - attrnamep)) { - fprintf(stderr, "dm_remove_dmattr failed, %s\n", - strerror(errno)); - exit(1); - } - - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/request_right.c b/dmapi/src/suite1/cmd/request_right.c deleted file mode 100644 index 5deb8b8c..00000000 --- a/dmapi/src/suite1/cmd/request_right.c +++ /dev/null @@ -1,153 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - - - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_request_right(). The -command line is: - - request_right [-F] [-w] [-s sid] token {pathname|handle} right - -where --F - when a pathname is specified, -F indicates that its filesystem handle - should be used rather than its file object handle. --w - if specified, the DM_RR_WAIT flag will be used. -sid - is the dm_sessid_t to use rather than the default test session. -token - is the dm_token_t to use. -{pathname|handle} - is either a handle, or is the pathname of a file whose handle is - to be used. -right - is the dm_right_t to use. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - int i; - - fprintf(stderr, "usage:\t%s [-F] [-w] [-s sid] token " - "{pathname|handle} right\n", Progname); - fprintf(stderr, "possible rights are:\n"); - for (i = 0; i < rt_namecnt; i++) { - fprintf(stderr, "%s (%d)\n", rt_names[i].name, - rt_names[i].value); - } - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - dm_token_t token; - dm_right_t right; - char *object; - char *rightstr; - void *hanp; - size_t hlen; - int Fflag = 0; - int wflag = 0; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "Fws:")) != EOF) { - switch (opt) { - case 'F': - Fflag++; - break; - case 'w': - wflag++; - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 3 != argc) - usage(); - token = atol(argv[optind++]); - object = argv[optind++]; - rightstr = argv[optind]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file or filesystem's handle. */ - - if (opaque_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle from %s\n", object); - exit(1); - } - if (Fflag) { - void *fshanp; - size_t fshlen; - - if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen)) { - fprintf(stderr, "can't get filesystem handle from %s\n", - object); - exit(1); - } - dm_handle_free(hanp, hlen); - hanp = fshanp; - hlen = fshlen; - } - - if (rt_name_to_value(rightstr, &right)) { - fprintf(stderr, "invalid right %s\n", rightstr); - usage(); - } - - if (dm_request_right(sid, hanp, hlen, token, - (wflag ? DM_RR_WAIT : 0), right)) { - fprintf(stderr, "dm_request_right failed, %s\n", - strerror(errno)); - return(1); - } - - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/respond_event.c b/dmapi/src/suite1/cmd/respond_event.c deleted file mode 100644 index cadd8c97..00000000 --- a/dmapi/src/suite1/cmd/respond_event.c +++ /dev/null @@ -1,82 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_respond_event(). The -command line is: - - respond_event sid token response reterror - -where sid is the session ID whose event you are responding to. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s sid token response reterror\n", - Progname); - fprintf(stderr, " Response values:\n"); - fprintf(stderr, " %d = DM_RESP_INVALID\n", DM_RESP_INVALID); - fprintf(stderr, " %d = DM_RESP_CONTINUE\n", DM_RESP_CONTINUE ); - fprintf(stderr, " %d = DM_RESP_ABORT\n", DM_RESP_ABORT); - fprintf(stderr, " %d = DM_RESP_DONTCARE\n", DM_RESP_DONTCARE); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid; - char *name; - dm_token_t token; - dm_response_t response; - int reterror; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - if (argc != 5) - usage(); - - sid = atol(argv[1]); - token = atol(argv[2]); - response = (dm_response_t)atoi(argv[3]); - reterror = atol(argv[4]); - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - - if (dm_respond_event(sid, token, response, reterror, 0, NULL)) { - fprintf(stderr, "dm_respond_event failed, %d/%s\n", - errno, strerror(errno)); - exit(1); - } - exit(0); -} diff --git a/dmapi/src/suite1/cmd/rwt.c b/dmapi/src/suite1/cmd/rwt.c deleted file mode 100644 index 5768a320..00000000 --- a/dmapi/src/suite1/cmd/rwt.c +++ /dev/null @@ -1,172 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -/*--------------------------------------------------------------------------- - -Test program used to test DMAPI by issuing read, write, and trunc calls to a -file. The command line is: - - rwt [-r|-w|-t] [-o offset] [-l length] pathname - -where: --r - indicates that a read should be done (the default if none specified) --w - indiates that a write should be done --t - indicates that a truncate should be done, in which case the -l - parameter is ignored. --o offset - offset at which to begin the read, write or truncate (default is 0). --l length - the length in bytes to read or write (default is 1). -pathname - the file to be used by the test. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-r|-w|-t] [-o offset] [-l length] " - "pathname\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - char *pathname = NULL; - off_t offset = 0; - size_t length = 1; - u_char ch = 'X'; - void *bufp = NULL; - off_t seek_off; - int rflag = 0; - int wflag = 0; - int tflag = 0; - int fd; - ssize_t rc; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "rwto:l:")) != EOF) { - switch (opt) { - case 'r': - rflag++; - break; - case 'w': - wflag++; - break; - case 't': - tflag++; - break; - case 'o': - offset = atol(optarg); - break; - case 'l': - length = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - if (rflag + wflag + tflag > 1) - usage(); - pathname = argv[optind]; - - if ((fd = open(pathname, O_RDWR)) < 0) { - fprintf(stderr, "open of %s failed, %s\n", pathname, - strerror(errno)); - exit(1); - } - if (length > 0) { - if ((bufp = malloc(length)) == NULL) { - fprintf(stderr, "malloc of %zd bytes failed\n", length); - exit(1); - } - if (wflag) - memset(bufp, ch, length); - } - - if (!tflag) { - if ((seek_off = lseek(fd, offset, SEEK_SET)) < 0) { - fprintf(stderr, "seek failed, %s\n", strerror(errno)); - exit(1); - } - if (seek_off != offset) { - fprintf(stderr, - "seeked to offset %lld, actually " - "arrived at %lld\n", - (long long) offset, (long long) seek_off); - exit(1); - } - } - - if (wflag) { - if ((rc = write(fd, bufp, length)) < 0) { - fprintf(stderr, "write failed, %s\n", strerror(errno)); - exit(1); - } - if (rc != length) { - fprintf(stderr, "expected to write %zd bytes, actually " - "wrote %zd bytes\n", length, rc); - exit(1); - } - } else if (tflag) { - if (ftruncate(fd, offset) != 0) { - fprintf(stderr, "truncate failed, %s\n", - strerror(errno)); - exit(1); - } - } else { - if ((rc = read(fd, bufp, length)) < 0) { - fprintf(stderr, "read failed, %s\n", strerror(errno)); - exit(1); - } - if (rc != length) { - fprintf(stderr, "expected to read %zd bytes, actually " - "read %zd bytes\n", length, rc); - exit(1); - } - } - exit(0); -} diff --git a/dmapi/src/suite1/cmd/security_hole.c b/dmapi/src/suite1/cmd/security_hole.c deleted file mode 100644 index bd17bcaf..00000000 --- a/dmapi/src/suite1/cmd/security_hole.c +++ /dev/null @@ -1,105 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include -#include -#include -#include - -#include - -/* - To read unallocated disk blocks in a filesystem, do - cc -o test thisfile.c - ./test myfile - cat myfile -*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - -char *Progname; - - -static void -usage(void) -{ - int i; - - fprintf(stderr, "usage:\t%s [-s size] pathname\n", Progname); - fprintf(stderr, "\t-s size\t\tsize of file (default 10,000,000 bytes)\n"); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - char *pathname = NULL; - off_t size = 10000000; - char buff[1]; - int method = F_RESVSP; - flock_t flock; - int opt; - int fd; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "s:")) != EOF) { - switch (opt) { - case 's': - size = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - pathname = argv[optind]; - - /* Create the file and write one byte at a large offset to create a - big hole in the middle of the file. - */ - - if ((fd = open(pathname, O_RDWR|O_CREAT|O_TRUNC, 0666)) < 0) { - perror("open failed"); - exit(1); - } - if (lseek(fd, size, 0) < 0) { - perror("lseek failed"); - exit(1); - } - buff[0] = '\0'; - if (write(fd, buff, 1) != 1) { - perror("write failed"); - exit(1); - } - - /* Now fill in the hole with uninitialized blocks. */ - - flock.l_whence = 0; - flock.l_start = 0; - flock.l_len = size; - - if (fcntl(fd, method, &flock) < 0) { - perror("fcntl failed"); - exit(1); - } - printf("%s created\n", pathname); -} diff --git a/dmapi/src/suite1/cmd/security_hole2.c b/dmapi/src/suite1/cmd/security_hole2.c deleted file mode 100644 index 9e5eee78..00000000 --- a/dmapi/src/suite1/cmd/security_hole2.c +++ /dev/null @@ -1,104 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include -#include -#include -#include - -/* - To read unallocated disk blocks in a filesystem, do - cc -o test thisfile.c - ./test myfile - cat myfile -*/ - -extern char *sys_errlist[]; -extern int optind; -extern char *optarg; - -char *Progname; - - -static void -usage(void) -{ - int i; - - fprintf(stderr, "usage:\t%s [-s size] pathname\n", Progname); - fprintf(stderr, "\t-s size\t\tsize of file (default 10,000,000 bytes)\n"); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - char *pathname = NULL; - off_t size = 10000000; - char buff[1]; - int method = F_RESVSP; - flock_t flock; - int opt; - int fd; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "s:")) != EOF) { - switch (opt) { - case 's': - size = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - pathname = argv[optind]; - - /* Create the file and write one byte at a large offset to create a - big hole in the middle of the file. - */ - - if ((fd = open(pathname, O_RDWR|O_CREAT|O_TRUNC, 0666)) < 0) { - perror("open failed"); - exit(1); - } - - /* First allocate uninitialized blocks. */ - - flock.l_whence = 0; - flock.l_start = 0; - flock.l_len = size; - - if (fcntl(fd, method, &flock) < 0) { - perror("fcntl failed"); - exit(1); - } - - /* Now seek out and write the byte. */ - - if (lseek(fd, size, 0) < 0) { - perror("lseek failed"); - exit(1); - } - buff[0] = '\0'; - if (write(fd, buff, 1) != 1) { - perror("write failed"); - exit(1); - } - printf("%s created\n", pathname); -} diff --git a/dmapi/src/suite1/cmd/set_disp.c b/dmapi/src/suite1/cmd/set_disp.c deleted file mode 100644 index a3b01920..00000000 --- a/dmapi/src/suite1/cmd/set_disp.c +++ /dev/null @@ -1,165 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_set_eventlist(). The -command line is: - - set_disp [-m max] [-s sid] [-t token] {pathname|handle} [event...] - set_disp [-m max] [-s sid] -G [DM_EVENT_MOUNT] - -where -{pathname|handle} - is the name of a file or handle whose filesystem is of interest. --G - if the global handle should be used -max - is the value to use for the maxevent parameter of dm_set_disp(), -sid - is the dm_sessid_t to use rather than the default test session. -token - is the dm_token_t to use in place of DM_NO_TOKEN. -event - is zero or more events to set. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - int i; - - fprintf(stderr, "usage:\t%s [-m max] [-s sid] [-t token] " - "{pathname|handle} [event...]\n", Progname); - fprintf(stderr, "usage:\t%s [-m max] [-s sid] -G [DM_EVENT_MOUNT]\n", - Progname); - fprintf(stderr, "possible events are:\n"); - for (i = 0; i < ev_namecnt; i++) { - fprintf(stderr, "%s (%d)\n", ev_names[i].name, - ev_names[i].value); - } - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - dm_token_t token = DM_NO_TOKEN; - u_int maxevent = DM_EVENT_MAX; - dm_eventset_t eventset; - void *fshanp; - size_t fshlen; - int Gflag = 0; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "Gm:s:t:")) != EOF) { - switch (opt) { - case 'G': - Gflag++; - break; - case 'm': - maxevent = atol(optarg); - break; - case 's': - sid = atol(optarg); - break; - case 't': - token = atol(optarg); - break; - case '?': - usage(); - } - } - if (Gflag && token != DM_NO_TOKEN) - usage(); - if (optind + (Gflag ? 0 : 1) > argc) - usage(); - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - DMEV_ZERO(eventset); - - /* Get the file or filesystem's handle. */ - - if (Gflag) { - fshanp = DM_GLOBAL_HANP; - fshlen = DM_GLOBAL_HLEN; - } else { - char *object; - void *hanp; - size_t hlen; - - object = argv[optind++]; - - if (opaque_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle from %s\n", object); - exit(1); - } - if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen)) { - fprintf(stderr, "can't get filesystem handle from %s\n", - object); - exit(1); - } - dm_handle_free(hanp, hlen); - } - - for (; optind < argc; optind++) { - dm_eventtype_t event; - - event = ev_name_to_value(argv[optind]); - if (event == DM_EVENT_INVALID) { - fprintf(stderr, "invalid event %s\n", argv[optind]); - usage(); - } - DMEV_SET(event, eventset); - } - - if (dm_set_disp(sid, fshanp, fshlen, token, &eventset, maxevent)) { - fprintf(stderr, "dm_set_disp failed, %s\n", - strerror(errno)); - exit(1); - } - - if (!Gflag) - dm_handle_free(fshanp, fshlen); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/set_dmattr.c b/dmapi/src/suite1/cmd/set_dmattr.c deleted file mode 100644 index bd067757..00000000 --- a/dmapi/src/suite1/cmd/set_dmattr.c +++ /dev/null @@ -1,118 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_set_dmattr(). The -command line is: - - set_dmattr [-b buflen] [-s sid] [-u] {pathname|handle} attr value - -where pathname is the name of a file, buflen is the size of the buffer to use -in the call, attr is the name of the DMAPI attribute, -u is selected if -setdtime should be updated, and sid is the session ID whose attributes you -are interested in. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-b buflen] [-s sid] [-u] " - "{pathname|handle} attr value\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - char *object; - dm_attrname_t *attrnamep; - char *bufp; - size_t buflen = 0; - int bflag = 0; - int setdtime = 0; - void *hanp; - size_t hlen; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "b:s:u")) != EOF) { - switch (opt) { - case 'b': - bflag++; - buflen = atol(optarg); - break; - case 's': - sid = atol(optarg); - break; - case 'u': - setdtime = 1; - break; - case '?': - usage(); - } - } - if (optind + 3 != argc) - usage(); - object = argv[optind++]; - attrnamep = (dm_attrname_t *)argv[optind++]; - bufp = argv[optind]; - if (!bflag) - buflen = strlen(bufp) + 1; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file's handle. */ - - if (opaque_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for %s\n", object); - exit(1); - } - - if (dm_set_dmattr(sid, hanp, hlen, DM_NO_TOKEN, attrnamep, setdtime, - buflen, bufp)) { - fprintf(stderr, "dm_set_dmattr failed, %s\n", - strerror(errno)); - exit(1); - } - - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/set_eventlist.c b/dmapi/src/suite1/cmd/set_eventlist.c deleted file mode 100644 index fb19b218..00000000 --- a/dmapi/src/suite1/cmd/set_eventlist.c +++ /dev/null @@ -1,162 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2002 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_set_eventlist(). The -command line is: - - set_eventlist [-F] [-m max] [-s sid] [-t token] {pathname|handle} event [...] - -where: -{pathname|handle} - is either the pathname of a file or a handle. -max - is the value to use for the maxevent parameter of dm_set_eventlist(). -sid - is the dm_sessid_t value to use. -token - is the dm_token_t value to use (DM_NO_TOKEN is the default). -event - is one or more events to set. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - int i; - - fprintf(stderr, "usage:\t%s [-F] [-m max] [-s sid] [-t token] " - "{pathname|handle} event [...]\n", Progname); - fprintf(stderr, "possible events are:\n"); - for (i = 0; i < ev_namecnt; i++) { - fprintf(stderr, "%s (%d)\n", ev_names[i].name, - ev_names[i].value); - } - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - dm_token_t token = DM_NO_TOKEN; - char *object; - dm_eventset_t eventset; - void *hanp; - size_t hlen; - int Fflag = 0; - u_int maxevent = DM_EVENT_MAX; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "Fm:s:t:")) != EOF) { - switch (opt) { - case 'F': - Fflag++; - break; - case 'm': - maxevent = atol(optarg); - break; - case 's': - sid = atol(optarg); - break; - case 't': - token = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 1 > argc) - usage(); - object = argv[optind++]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - DMEV_ZERO(eventset); - - /* Get the file's handle or convert the external handle. */ - - if (opaque_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for %s\n", object); - exit(1); - } - - if (Fflag) { - void *fshanp; - size_t fshlen; - - if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen)) { - fprintf(stderr, "can't get filesystem handle from %s\n", - object); - exit(1); - } - dm_handle_free(hanp, hlen); - hanp = fshanp; - hlen = fshlen; - } - - for (; optind < argc; optind++) { - dm_eventtype_t event; - - event = ev_name_to_value(argv[optind]); - if (event == DM_EVENT_INVALID) { - fprintf(stderr, "invalid event %s\n", argv[optind]); - usage(); - } - if ((event == DM_EVENT_READ) || (event == DM_EVENT_WRITE) || - (event == DM_EVENT_TRUNCATE)) { - fprintf(stderr, "Use set_region to twiddle read/write/trunc events\n"); - exit(1); - } - - DMEV_SET(event, eventset); - } - - if (dm_set_eventlist(sid, hanp, hlen, token, &eventset, maxevent)) { - fprintf(stderr, "dm_set_eventlist failed, %s\n", - strerror(errno)); - exit(1); - } - - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/set_fileattr.c b/dmapi/src/suite1/cmd/set_fileattr.c deleted file mode 100644 index 8dfd3225..00000000 --- a/dmapi/src/suite1/cmd/set_fileattr.c +++ /dev/null @@ -1,399 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include -#include - -#include - -#include -#include - - - -extern int optind; -extern int opterr; -extern char *optarg; - -char *Progname; - -#define MIN_HD_DATE 19800101 -#define MIN_HD_TMSTAMP 315554400 /* timestamp of 19800101 */ - -static int dayno, day_of_week; -static int leap_year; - -/* - * The following table is used for USA daylight savings time and - * gives the day number of the first day after the Sunday of the - * change. - */ -static struct { - int yrbgn; - int daylb; - int dayle; -} daytab[] = { - {1987, 96, 303}, /* new legislation - 1st Sun in April */ - {1976, 119, 303}, /* normal Last Sun in Apr - last Sun in Oct */ - {1975, 58, 303}, /* 1975: Last Sun in Feb - last Sun in Oct */ - {1974, 5, 333}, /* 1974: Jan 6 - last Sun. in Nov */ - {1970, 119, 303}, /* start GMT */ -}; -#define DAYTABSIZE (sizeof(daytab)/sizeof(daytab[0])) - - -/****************************************************************************** -* NAME -* dysize -* -* DESCRIPTION -* Return number of days in year y. -* -******************************************************************************/ - -int -dysize(int y) -{ - int temp; - temp = (y%4)==0; - if (temp) { - if ( (y%100)==0) - temp = ( (y%400) != 0); - } - return(365+temp); -} - -/****************************************************************************** -* NAME -* sunday -* -* DESCRIPTION -* sunday - return sunday daynumber. Argument d is the day number of the -* first Sunday on or before the special day. Variables leap_year, dayno, -* and day_of_week must have been set before sunday is called. -* -* RETURN VALUE -* The sunday daynumber. -* -******************************************************************************/ - -static int -sunday(int d) -{ - if(d >= 58) - d += leap_year; - return(d - (d - dayno + day_of_week + 700) % 7); -} - - -extern long -cnvdate(int mon, int mday, int year, int hour, int min, int sec) -{ - int t, i; - int daylbegin, daylend; - int ly_correction; /* Leap Year Correction */ - int dl_correction; /* Daylight Savings Time Correction */ - long s; - static int days[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; - - days[2] = 28; - - /* Verify Input Parameters. */ - - /* Set year. */ - - if( year < 0) { - return(-1); - } - if( year < 100) { - if (year < 70) year += 2000; - else year += 1900; - } - if (year < 1970) { - return(-1); - } - if( year>2099 ) { - return(-1); - } - - if (dysize(year) == 366) { - leap_year = 1; - days[2]++; - } else - leap_year = 0; - /* - * Set ly_correction = number of leap year days from 1/1/1970 to - * 1/1/year. - */ - ly_correction = ((year-1969) / 4); - - /* Check Month */ - - if( (mon < 1) || (mon > 12)) { - return(-1); - } - - /* Check Day */ - - if ( (mday < 1) || (mday > days[mon]) ) { - return(-1); - } - - /* Check Time */ - - if( (hour<0) || (hour>23)) { - return(-1); - } - if( (min<0) || (min>59)) { - return(-1); - } - if( (sec<0) || (sec>59)) { - return(-1); - } - - /* Calculate Correction for Daylight Savings Time (U.S.) */ - - dayno = mday-1; - for (t=0; tDAYTABSIZE) - return(-1); - } - daylbegin = daytab[i].daylb; - daylend = daytab[i].dayle; - - daylbegin = sunday(daylbegin); - daylend = sunday(daylend); - if(daylight && - (dayno>daylbegin || (dayno==daylbegin && hour>=2)) && - (dayno 12) - return(0); - day = l % 100; - - /* Note: invalid day numbers are caught in cnvdate */ - - ptr+=8; - - l = strtol(ptr, &last_char, 10); - if (l < 0 || l>235959 || *last_char != '\0') - return(0); - hr = l / 10000; - if (hr > 23) - return(0); - l = l % 10000; - mn = l / 100; - if (mn > 59) - return(0); - sec = l % 100; - if (sec > 59) - return(0); - - /* Get timestamp. */ - - (void)tzset(); - if ((*timestamp = cnvdate(mon, day, yr, hr, mn, sec)) < 0) { - return(0); - } - - return(1); -} - - -/* Cracks dates in the form: NNs, NNm, NNh, or NNd which are interpreted - as NN seconds, minutes, hours, or days prior to the current time, - respectively. -*/ - -static int -get_relative_date( - char *ptr, - time_t *timestamp) -{ - int l; - char *last_char; - - if (!isdigit(*ptr)) - return(0); - l = strtol (ptr, &last_char, 10); - (void) time(timestamp); - if (strcmp(last_char, "s") == 0) - /* do nothing */; - else if (strcmp(last_char, "m") == 0) - l = l * 60; - else if (strcmp(last_char, "h") == 0) - l = l * 60 * 60; - else if (strcmp(last_char, "d") == 0) - l = l * 60 * 60 * 24; - else - return(0); - *timestamp -= l; - if (*timestamp < MIN_HD_TMSTAMP) - return(0); - return(1); -} - - -static void -usage(void) -{ - fprintf(stderr, "Usage: %s [-M mode] [-u uid] [-g gid] [-a atime] \\\n" - "\t[-m mtime] [-c ctime] [-d dtime] [-S size] [-s sid] pathname\n", - Progname); - fprintf(stderr, "\nDates can either be absolute:\n"); - fprintf(stderr, "\t\tYYYYMMDD or YYYYMMDDHHMMSS\n"); - fprintf(stderr, "or relative (prior to) the current time:\n"); - fprintf(stderr, "\tNNs (seconds), NNm (minutes), NNh (hours), " - " or NNd (days)\n"); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - void *hanp; - size_t hlen; - dm_fileattr_t fileattr; - u_int mask = 0; - char *pathname; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - opterr = 0; - while ((opt = getopt(argc, argv, "M:u:g:a:m:c:d:S:s:")) != EOF) { - switch (opt) { - case 'M': - mask |= DM_AT_MODE; - fileattr.fa_mode = strtol (optarg, NULL, 8); - break; - case 'u': - mask |= DM_AT_UID; - fileattr.fa_uid = atol(optarg); - break; - case 'g': - mask |= DM_AT_GID; - fileattr.fa_gid = atol(optarg); - break; - case 'a': - mask |= DM_AT_ATIME; - if (get_absolute_date(optarg, &fileattr.FA_ATIME)) - break; - if (get_relative_date(optarg, &fileattr.FA_ATIME)) - break; - usage(); - case 'm': - mask |= DM_AT_MTIME; - if (get_absolute_date(optarg, &fileattr.FA_MTIME)) - break; - if (get_relative_date(optarg, &fileattr.FA_MTIME)) - break; - usage(); - case 'c': - mask |= DM_AT_CTIME; - if (get_absolute_date(optarg, &fileattr.FA_CTIME)) - break; - if (get_relative_date(optarg, &fileattr.FA_CTIME)) - break; - usage(); - case 'd': - mask |= DM_AT_DTIME; - if (get_absolute_date(optarg, &fileattr.FA_DTIME)) - break; - if (get_relative_date(optarg, &fileattr.FA_DTIME)) - break; - usage(); - case 'S': - mask |= DM_AT_SIZE; - fileattr.fa_size = atol(optarg); - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) { - usage(); - } - pathname = argv[optind]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - if (dm_path_to_handle(pathname, &hanp, &hlen)) { - fprintf(stderr, "dm_path_to_handle failed, %s\n", - strerror(errno)); - exit(1); - } - - if (dm_set_fileattr(sid, hanp, hlen, DM_NO_TOKEN, mask, &fileattr)) { - fprintf(stderr, "dm_set_fileattr failed, %s\n", - strerror(errno)); - exit(1); - } - exit(0); -} diff --git a/dmapi/src/suite1/cmd/struct_test.c b/dmapi/src/suite1/cmd/struct_test.c deleted file mode 100644 index 9d3be54e..00000000 --- a/dmapi/src/suite1/cmd/struct_test.c +++ /dev/null @@ -1,222 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include -#include -#include - -#ifdef linux -#include -#else -#include -#endif - -/* The purpose of this test is to make sure that each field in each structure - defined in dmi.h is properly aligned so that there is no dead space, and - that the sizes and offsets of those fields remain constant no matter what - mode the program is compiled with, i.e. -32, -n32 or -64. - - Run the program with no parameters. If everything is correct, no message - will start with the word "ERROR:". Compile and run the test in each of - the three mods and diff the outputs. They must all be identical. - - Note: this test cannot detect the addition of new structures to dmi.h, so - it will have to periodically be compared with dmi.h manually to ensure that - all the structures are still being validated! -*/ - -#define S_START(struct_name) { offset = 0; s_name = #struct_name; } - -#define S_NEXT(struct_name, field_name) \ -{ \ - struct_name X; \ - \ - f_name = #field_name; \ - printf("field %s.%s offset is %d\n", s_name, f_name, offset); \ - if (offsetof(struct_name, field_name) != offset) { \ - printf("ERROR: field %s should be %d\n", \ - #struct_name "." #field_name, \ - (int) offsetof(struct_name, field_name)); \ - } \ - offset = offsetof(struct_name, field_name) + sizeof(X.field_name); \ -} - -#define S_END(struct_name) \ -{ \ - printf("struct %s size is %d\n", s_name, offset); \ - if (sizeof(struct_name) != offset) { \ - printf("ERROR: struct %s should be %zd\n", \ - s_name, sizeof(struct_name)); \ - } \ -} - - -char *Progname; - -int main( - int argc, - char **argv) -{ - char *s_name = NULL; - char *f_name = NULL; - int offset = 0; - - - S_START(dm_vardata_t); - S_NEXT(dm_vardata_t, vd_offset); - S_NEXT(dm_vardata_t, vd_length); - S_END(dm_vardata_t); - - - S_START(dm_attrname_t); - S_NEXT(dm_attrname_t, an_chars); - S_END(dm_attrname_t); - - - S_START(dm_attrlist_t); - S_NEXT(dm_attrlist_t, _link); - S_NEXT(dm_attrlist_t, al_name); - S_NEXT(dm_attrlist_t, al_data); - S_END(dm_attrlist_t); - - - S_START(dm_dispinfo_t); - S_NEXT(dm_dispinfo_t, _link); - S_NEXT(dm_dispinfo_t, di_pad1); - S_NEXT(dm_dispinfo_t, di_fshandle); - S_NEXT(dm_dispinfo_t, di_eventset); - S_END(dm_dispinfo_t); - - - S_START(dm_eventmsg_t); - S_NEXT(dm_eventmsg_t, _link); - S_NEXT(dm_eventmsg_t, ev_type); - S_NEXT(dm_eventmsg_t, ev_token); - S_NEXT(dm_eventmsg_t, ev_sequence); - S_NEXT(dm_eventmsg_t, ev_data); - S_END(dm_eventmsg_t); - - - S_START(dm_cancel_event_t); - S_NEXT(dm_cancel_event_t, ce_sequence); - S_NEXT(dm_cancel_event_t, ce_token); - S_END(dm_cancel_event_t); - - - S_START(dm_data_event_t); - S_NEXT(dm_data_event_t, de_handle); - S_NEXT(dm_data_event_t, de_offset); - S_NEXT(dm_data_event_t, de_length); - S_END(dm_data_event_t); - - - S_START(dm_destroy_event_t); - S_NEXT(dm_destroy_event_t, ds_handle); - S_NEXT(dm_destroy_event_t, ds_attrname); - S_NEXT(dm_destroy_event_t, ds_attrcopy); - S_END(dm_destroy_event_t); - - - S_START(dm_mount_event_t); - S_NEXT(dm_mount_event_t, me_mode); - S_NEXT(dm_mount_event_t, me_handle1); - S_NEXT(dm_mount_event_t, me_handle2); - S_NEXT(dm_mount_event_t, me_name1); - S_NEXT(dm_mount_event_t, me_name2); - S_NEXT(dm_mount_event_t, me_roothandle); - S_END(dm_mount_event_t); - - - S_START(dm_namesp_event_t); - S_NEXT(dm_namesp_event_t, ne_mode); - S_NEXT(dm_namesp_event_t, ne_handle1); - S_NEXT(dm_namesp_event_t, ne_handle2); - S_NEXT(dm_namesp_event_t, ne_name1); - S_NEXT(dm_namesp_event_t, ne_name2); - S_NEXT(dm_namesp_event_t, ne_retcode); - S_END(dm_namesp_event_t); - - - S_START(dm_extent_t); - S_NEXT(dm_extent_t, ex_type); - S_NEXT(dm_extent_t, ex_pad1); - S_NEXT(dm_extent_t, ex_offset); - S_NEXT(dm_extent_t, ex_length); - S_END(dm_extent_t); - - - S_START(dm_fileattr_t); - S_NEXT(dm_fileattr_t, fa_mode); - S_NEXT(dm_fileattr_t, fa_uid); - S_NEXT(dm_fileattr_t, fa_gid); - S_NEXT(dm_fileattr_t, fa_atime); - S_NEXT(dm_fileattr_t, fa_mtime); - S_NEXT(dm_fileattr_t, fa_ctime); - S_NEXT(dm_fileattr_t, fa_dtime); - S_NEXT(dm_fileattr_t, fa_pad1); - S_NEXT(dm_fileattr_t, fa_size); - S_END(dm_fileattr_t); - - - S_START(dm_inherit_t); - S_NEXT(dm_inherit_t, ih_name); - S_NEXT(dm_inherit_t, ih_filetype); - S_END(dm_inherit_t); - - - S_START(dm_region_t); - S_NEXT(dm_region_t, rg_offset); - S_NEXT(dm_region_t, rg_size); - S_NEXT(dm_region_t, rg_flags); - S_NEXT(dm_region_t, rg_pad1); - S_END(dm_region_t); - - - S_START(dm_stat_t); - S_NEXT(dm_stat_t, _link); - S_NEXT(dm_stat_t, dt_handle); - S_NEXT(dm_stat_t, dt_compname); - S_NEXT(dm_stat_t, dt_nevents); - S_NEXT(dm_stat_t, dt_emask); - S_NEXT(dm_stat_t, dt_pers); - S_NEXT(dm_stat_t, dt_pmanreg); - S_NEXT(dm_stat_t, dt_dtime); - S_NEXT(dm_stat_t, dt_change); - S_NEXT(dm_stat_t, dt_pad1); - - S_NEXT(dm_stat_t, dt_dev); - S_NEXT(dm_stat_t, dt_ino); - S_NEXT(dm_stat_t, dt_mode); - S_NEXT(dm_stat_t, dt_nlink); - S_NEXT(dm_stat_t, dt_uid); - S_NEXT(dm_stat_t, dt_gid); - S_NEXT(dm_stat_t, dt_rdev); - S_NEXT(dm_stat_t, dt_pad2); - S_NEXT(dm_stat_t, dt_size); - S_NEXT(dm_stat_t, dt_atime); - S_NEXT(dm_stat_t, dt_mtime); - S_NEXT(dm_stat_t, dt_ctime); - S_NEXT(dm_stat_t, dt_blksize); - S_NEXT(dm_stat_t, dt_blocks); - - S_NEXT(dm_stat_t, dt_pad3); - S_NEXT(dm_stat_t, dt_fstype); - - S_NEXT(dm_stat_t, dt_xfs_igen); - S_NEXT(dm_stat_t, dt_xfs_xflags); - S_NEXT(dm_stat_t, dt_xfs_extsize); - S_NEXT(dm_stat_t, dt_xfs_extents); - S_NEXT(dm_stat_t, dt_xfs_aextents); - S_NEXT(dm_stat_t, dt_xfs_dmstate); - S_END(dm_stat_t); - - - S_START(dm_xstat_t); - S_NEXT(dm_xstat_t, dx_statinfo); - S_NEXT(dm_xstat_t, dx_attrdata); - S_END(dm_xstat_t); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/sync_by_handle.c b/dmapi/src/suite1/cmd/sync_by_handle.c deleted file mode 100644 index b5319e31..00000000 --- a/dmapi/src/suite1/cmd/sync_by_handle.c +++ /dev/null @@ -1,99 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_sync_by_handle(). The -command line is: - - sync_by_handle [-s sid] pathname - -where: -'sid' is the session ID to use for the call. -'pathname' is the name of the file to be sync'd. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-s sid] pathname\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - char *pathname = NULL; - void *hanp; - size_t hlen; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "s:")) != EOF) { - switch (opt) { - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - pathname = argv[optind]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file's handle. */ - - if (dm_path_to_handle(pathname, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for file %s\n", pathname); - exit(1); - } - - if (dm_sync_by_handle(sid, hanp, hlen, DM_NO_TOKEN)) { - fprintf(stderr, "dm_sync_by_handle failed, %s\n", - strerror(errno)); - exit(1); - } - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/test_assumption.c b/dmapi/src/suite1/cmd/test_assumption.c deleted file mode 100644 index b1a37569..00000000 --- a/dmapi/src/suite1/cmd/test_assumption.c +++ /dev/null @@ -1,133 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include -#include - -#include -#include -#include - -#include - -/* - Test that the new session ID is correctly returned to the caller on - dm_create_session when the oldsid parameter is not DM_NO_SESSION. - - Test to make sure that DM_NO_TOKEN does not work if the session ID - is invalid. - - Both are needed so that session assumption works correctly. The - test creates a session, queries the session, assumes the session, - then attempts to check the event list of the old session ID while - using DM_NO_TOKEN. - - The only parameter is the pathname of a DMAPI filesystem. If it is - working correctly, you should get the error message: - - SUCCESS! - - Any message containing the word FAILURE indicates a problem. -*/ - -char *Progname; -dm_sessid_t sid = DM_NO_SESSION; /* session ID of original session */ -dm_sessid_t newsid = DM_NO_SESSION; /* session ID after session resumed */ -dm_eventset_t eventlist; - -int -main( - int argc, - char **argv) -{ - char buffer[DM_SESSION_INFO_LEN]; - void *hanp; - size_t hlen; - u_int nelem; - size_t rlen; - - Progname = argv[0]; - - if (argc != 2) { - fprintf(stderr, "usage:\t%s filesystem\n", Progname); - exit(1); - } - - /* Initialize the DMAPI interface and obtain a session ID, then verify - that the filesystem supports DMAPI. - */ - - if (setup_dmapi(&sid)) - exit(1); - - if (dm_path_to_handle(argv[1], &hanp, &hlen)) { - perror("FAILURE: can't get handle for filesystem"); - exit(1); - } - - /* Query the session just to make sure things are working okay. */ - - if (dm_query_session(sid, sizeof(buffer), buffer, &rlen)) { - errno_msg("FAILURE: can't query the original session ID %d", - sid); - exit(1); - } - fprintf(stdout, "Initial session ID: %d\n", sid); - fprintf(stdout, "Initial session message length: '%zd'\n", rlen); - if (rlen > 0) { - fprintf(stdout, "Initial session message: '%s'\n", buffer); - } - - /* Now try to assume the session. */ - - if (dm_create_session(sid, "this is a new message", &newsid)) { - fprintf(stderr, "FAILURE: can't assume session %d\n", sid); - exit(1); - } - - /* Now query the new session. */ - - if (dm_query_session(newsid, sizeof(buffer), buffer, &rlen)) { - errno_msg("FAILURE: can't query the assumed session ID %d", - newsid); - exit(1); - } - fprintf(stdout, "Assumed session ID: %d\n", newsid); - fprintf(stdout, "Assumed session message length: '%zd'\n", rlen); - if (rlen > 0) { - fprintf(stdout, "Assumed session message: '%s'\n", buffer); - } - - /* Get rid of the new session as we are done with it. */ - - if (dm_destroy_session(newsid)) { - fprintf(stderr, "FAILURE: Can't shut down assumed session %d\n", - newsid); - exit(1); - } - - /* Now verify that DM_NO_TOKEN will not work with the old session ID, - which is now invalid. - */ - - DMEV_ZERO(eventlist); - - if (dm_get_eventlist(sid, hanp, hlen, DM_NO_TOKEN, DM_EVENT_MAX, - &eventlist, &nelem) == 0) { - fprintf(stderr, "FAILURE: dm_get_eventlist() worked when it " - "should have failed!\n"); - } -#ifdef VERITAS_21 - if (errno != ESRCH) { -#else - if (errno != EINVAL) { -#endif - errno_msg("FAILURE: unexpected errno"); - exit(1); - } - fprintf(stdout, "SUCCESS!\n"); - exit(0); -} diff --git a/dmapi/src/suite1/cmd/upgrade_right.c b/dmapi/src/suite1/cmd/upgrade_right.c deleted file mode 100644 index b3cf7517..00000000 --- a/dmapi/src/suite1/cmd/upgrade_right.c +++ /dev/null @@ -1,128 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_upgrade_right(). The -command line is: - - upgrade_right {-F} [-s sid] token {pathname|handle} - -where: --F - when a pathname is specified, -F indicates that its filesystem handle - should be used rather than its file object handle. -sid - is the dm_sessid_t to use rather than the default test session. -token - is the dm_token_t to use. -{pathname|handle} - is either a handle, or is the pathname of a file whose handle is - to be used. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-F] [-s sid] token {pathname|handle}\n", - Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - dm_token_t token; - char *object; - void *hanp; - size_t hlen; - int Fflag = 0; - char *name; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "Fs:")) != EOF) { - switch (opt) { - case 'F': - Fflag++; - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 2 != argc) - usage(); - token = atol(argv[optind++]); - object = argv[optind]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the file or filesystem's handle. */ - - if (opaque_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle from %s\n", object); - exit(1); - } - if (Fflag) { - void *fshanp; - size_t fshlen; - - if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen)) { - fprintf(stderr, "can't get filesystem handle from %s\n", - object); - exit(1); - } - dm_handle_free(hanp, hlen); - hanp = fshanp; - hlen = fshlen; - } - - if (dm_upgrade_right(sid, hanp, hlen, token)) { - fprintf(stderr, "dm_upgrade_right failed, %s\n", - strerror(errno)); - return(1); - } - - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite1/function_coverage b/dmapi/src/suite1/function_coverage deleted file mode 100644 index d533375b..00000000 --- a/dmapi/src/suite1/function_coverage +++ /dev/null @@ -1,70 +0,0 @@ - -/* functions for which there is a test program. */ - -dm_downgrade_right( -dm_fd_to_handle( -dm_get_allocinfo( -dm_get_config_events( -dm_get_dmattr( -dm_get_eventlist( -dm_get_events( -dm_get_fileattr( -dm_get_mountinfo( -dm_get_region( -dm_getall_disp( -dm_getall_dmattr( -dm_handle_cmp( -dm_handle_free( -dm_handle_hash( -dm_handle_is_valid( -dm_handle_to_fshandle( -dm_handle_to_fsid( -dm_handle_to_igen( -dm_handle_to_ino( -dm_handle_to_path( -dm_init_service( -dm_make_handle( -dm_make_fshandle( -dm_path_to_fshandle( -dm_path_to_handle( -dm_obj_ref_hold( -dm_obj_ref_query( -dm_obj_ref_rele( -dm_pending( -dm_probe_hole( -dm_punch_hole( -dm_read_invis( -dm_release_right( -dm_request_right( -dm_remove_dmattr( -dm_respond_event( -dm_set_disp( -dm_set_dmattr( -dm_set_eventlist( -dm_set_fileattr( -dm_set_region( -dm_set_return_on_destroy( -dm_sync_by_handle( -dm_upgrade_right( -dm_write_invis( - - -/* Functions which don't yet have a specific test program. */ - -dm_create_session( -dm_create_userevent( -dm_destroy_session( -dm_find_eventmsg( -dm_get_bulkattr( -dm_get_config( -dm_get_dirattrs( -dm_getall_sessions( -dm_getall_tokens( -dm_init_attrloc( -dm_move_event( -dm_query_session( -dm_send_msg( - -/* Non-standard SGI additions to the DMAPI interface. */ - -dm_get_dioinfo diff --git a/dmapi/src/suite2/DMAPI_aliases b/dmapi/src/suite2/DMAPI_aliases deleted file mode 100644 index 098df101..00000000 --- a/dmapi/src/suite2/DMAPI_aliases +++ /dev/null @@ -1,119 +0,0 @@ -# -# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -# -#--------------------------------------------------------------------------- -# CONFIGURATION SECTION: -# Configure this script by changing the variables in this section. -# Please change ONLY this section! -#--------------------------------------------------------------------------- - -# Base directory: -base_dir="~jayw/test" - -# Primary username: -p_user="jayw" - -# Path to the mountpoint of the test filesystem: -m_main="/dmitest" - -# m_main concatenated with d_name == the full test directory path -# -# EXAMPLE: If m_main is "/dmitest", and the test directory -# is "/dmitest/test", set this to "/test" -# -d_name="/test" - -# Path to the mountpoint of the nfs2 test filesystem: -m_nfs2="/dmiv2" - -# Path to the mountpoint of the nfs3 test filesystem: -m_nfs3="/dmiv3" - -# Path to the mountpoint of the realtime test filesystem: -m_rt="/dmf" -# Path to the realtime test directory: -d_rt="$m_rt/kcm" - -#-------------------------------------------------------------------- -# END OF CONFIGURATION SECTION: -# No changes should be made past this point! Please change only -# the above shell variables to configure this script. -#-------------------------------------------------------------------- - -# Path to the "bindir" directory: -bin="$base_dir/bindir" - -# Path to the "generic file" (a copy of ls): -ls_path="$bin/ls_to_copy" - -# Path to the main test directory: -d_main="$m_main$d_name" - -# Path to the nfs2 test directory: -d_nfs2="$m_nfs2$d_name" - -# Path to the nfs3 test directory: -d_nfs3="$m_nfs2$d_name" - -#--------------------------------------------------------------------------- -# Tests that run without a daemon -#--------------------------------------------------------------------------- - -# Automated C programs to test DMAPI functions -alias do_dmattr="$bin/test_dmattr $ls_path $tdir" -alias do_eventlist="$bin/test_eventlist $ls_path $tdir" -alias do_fileattr="$bin/test_fileattr $ls_path $tdir" -alias do_hole="$bin/test_hole $ls_path $tdir" -alias do_invis="$bin/test_invis $ls_path $tdir" -alias do_region="$bin/test_region $ls_path $tdir" -alias do_efault="$bin/test_efault $ls_path $tdir" -alias do_rights="$bin/test_rights $ls_path $tdir" - -# Verbose versions of the above -alias dov_dmattr="$bin/test_dmattr -v $ls_path $tdir" -alias dov_eventlist="$bin/test_eventlist -v $ls_path $tdir" -alias dov_fileattr="$bin/test_fileattr -v $ls_path $tdir" -alias dov_hole="$bin/test_hole -v $ls_path $tdir" -alias dov_invis="$bin/test_invis -v $ls_path $tdir" -alias dov_region="$bin/test_region -v $ls_path $tdir" -alias dov_efault="$bin/efault -v $ls_path $tdir" -alias dov_rights="$bin/test_rights -v $ls_path $tdir" - -# Scripts to test dm_get_allocinfo -alias do_allocinfo_1="$bin/test_allocinfo_1 $bin $tdir" -alias do_allocinfo_2="$bin/test_allocinfo_2 $bin $tdir" - -#------------------------------------------------------------------------------------------------- -# Tests that load a DMAPI daemon and examine the generated events -#------------------------------------------------------------------------------------------------- - -# Standard battery of tests: -alias do_standard="$bin/run_test -u $p_user -f standard.dat $bin $tdir $mdir" -alias do_standard_nfs2="$bin/run_test -u $p_user -F nfs2 -M $m_nfs2 -R $tdir -f standard_nfs.dat $bin $d_nfs2 $mdir" -alias do_standard_nfs3="$bin/run_test -u $p_user -F nfs3 -M $m_nfs3 -R $tdir -f standard_nfs.dat $bin $d_nfs3 $mdir" - -# Some other, more specific tests: -alias do_main="$bin/run_test -u $p_user $bin $tdir $mdir" -alias do_nfs2="$bin/run_test -u $p_user -F nfs2 -M $m_nfs2 -R $tdir -f nfs.dat $bin $d_nfs2 $mdir" -alias do_nfs3="$bin/run_test -u $p_user -F nfs3 -M $m_nfs3 -R $tdir -f nfs.dat $bin $d_nfs3 $mdir" - -alias do_pending="$bin/run_test -u $p_user -f pending.dat $bin $tdir $mdir" -alias do_pending_nfs2="$bin/run_test -u $p_user -F nfs2 -M $m_nfs2 -R $tdir -f pending_nfs.dat $bin $d_nfs2 $mdir" -alias do_pending_nfs3="$bin/run_test -u $p_user -F nfs3 -M $m_nfs3 -R $tdir -f pending_nfs.dat $bin $d_nfs3 $mdir" - -alias do_failure="$bin/run_test -u $p_user -f fail.dat $bin $tdir $mdir" -alias do_failure_nfs2="$bin/run_test -u $p_user -F nfs2 -M $m_nfs2 -R $tdir -f fail.dat $bin $d_nfs2 $mdir" -alias do_failure_nfs3="$bin/run_test -u $p_user -F nfs3 -M $m_nfs3 -R $tdir -f fail.dat $bin $d_nfs3 $mdir" - -# Realtime test: -alias do_realtime="$bin/run_test -u $p_user -f realtime.dat $bin $m_rt $d_rt" - -# Small event queue test: Set dm_max_queued to about 5 or so before running! -alias do_smallq="$bin/run_test -u $p_user -s 2 -f smallq.dat $bin $tdir $mdir" - -#------------------------------------------------------------------------------------------------- -# Additional tools (these are NOT tests): -#------------------------------------------------------------------------------------------------- - -alias check_for_daemon="ps -el | grep daemon" -alias do_daemon="$bin/dm_test_daemon $mdir" diff --git a/dmapi/src/suite2/Makefile b/dmapi/src/suite2/Makefile deleted file mode 100644 index fd85059c..00000000 --- a/dmapi/src/suite2/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0+ -# Copyright (C) 2011 SGI All Rights Reserved. -# -# -# -TOPDIR = ../../.. - -include $(TOPDIR)/include/builddefs - -SUBDIRS = src - -default: $(SUBDIRS) - -include $(BUILDRULES) - -install: default - -install-dev: diff --git a/dmapi/src/suite2/README b/dmapi/src/suite2/README deleted file mode 100644 index 7f2e6809..00000000 --- a/dmapi/src/suite2/README +++ /dev/null @@ -1,605 +0,0 @@ -# -# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -# - - DMAPI Test Suite - Informational File - ------------------ - -I) Getting Started - - A) Extracting from DMAPI_test.cpio - - 1) Create a new directory for storing the tests. We will refer to - this as the "base" directory. The base directory can be - located anywhere; it does NOT need to be in a DMAPI filesystem. - - 2) Move the archive file DMAPI_test.cpio to the base directory - and execute the following command to extract from the archive: - - cpio -icvd < DMAPI_test.cpio - - 3) There should now be several files and subdirectories in the base - directory, including the file "file_list". Read this file for a - complete listing of which files should be present in which - directories. Compare "file_list" with the output of "ls -Rpl" - to be sure that you have the necessary files. - - 4) The base directory contains the files and programs that are of - immediate use for testing. The "bindir" subdirectory contains - the test programs and datafiles. The "lib" and "src" subdirectories - contain C libraries and source code for the C programs. - - B) Checking the Existence and Version of DMAPI - - The program check_dmapi can verify that you have the correct - version of DMAPI installed. NOTE: it can only be run as root. - Execute this command (from the "base" directory): - - bindir/check_dmapi - - It should report that you have a current version of DMAPI. If it - does not, it will also suggest which components of your DMAPI are - not current, and where to find a patch to update them. - - C) Configuration - - 1) Creating the Test Directories - - a) The Test Filesystem - - Mount a DMAPI filesystem, or use an existing one. - This filesystem's mount info MUST be listed in /etc/fstab. - - Write down the path to this filesystem's mountpoint, and label - it as "m_main" for future use. - - b) The Main Test Directory - - Create a new directory in the "m_main" filesystem. - - Write down the path to this directory. Note ONLY the part - that comes AFTER "m_main". Label this as "d_name". - - EXAMPLE: You have a DMAPI filesystem /dmi_main - You name the test directory /dmi_main/test_dir - "m_main" is /dmi_main - "d_name" is /test_dir - - c) The Cross-NFS Test Directories - - For NFS tests, all you must do is create two empty directories - (one for nfs2, one for nfs3). They do NOT need to be in a - DMAPI filesystem. - - Your main test directory will be mounted across NFS, into these - two directories. Normally, the tests will do this automatically. - However, if you need to do this mount manually, the command - would look like this example: - - mount -t nfs2 localhost:/dmi_main /dmi_nfs2 - - Write down the paths to these nfs2 and nfs3 test directories. - Label them "m_nfs2" and "m_nfs3" respectively. - - c) The Realtime Test Filesystem and Directory - - If you wish to test realtime i/o, you'll need a filesystem - mounted with a realtime partition, and a directory in that - filesystem. - - Label the path to the filesystem mountpoint as "m_rt". - Label the path to the test directory as "d_rt". - - 2) Configuring menu_test - - The Korn-shell script named menu_test is an interface to the - other test programs. At the beginning of the script, there - is a "configuration section", in which is sets several variables - for use in the rest of the script. - - Open menu_test in any text editor and change the following - variable assignments in the configuration section: - - a) base_dir: - Set this to the pathname of your "base" directory - (where you un-archived "DMAPI_test.cpio"). - - b) p_user: - Tests that do not run as root will run as this "primary" user. - Set this to any username. - - c) m_main: - The mountpoint of the main test filesystem. - Set this to the value of "m_main" that you wrote down above. - - d) d_name: - m_main concatenated with d_name is the main test directory path. - Set this to the value for "d_name" that you wrote down above. - - e) m_nfs2: - The mountpoint of the nfs2 test filesystem. - Set this to the value of "m_nfs2" that you wrote down above. - - f) m_nfs2: - The mountpoint of the nfs3 test filesystem. - Set this to the value of "m_nfs3" that you wrote down above. - - g) m_rt: - The mountpoint of the realtime test filesystem. - Set this to the value of "m_rt" that you wrote down above. - - h) d_rt: - The path to the realtime test directory. - Set this to the value of "d_rt" that you wrote down above. - - 3) Configuring "DMAPI_aliases" - - This is an optional alternative to the menu interface. It runs - as a Korn shell "dot" script and creates an alias to each test. - It was made for those who wish to run tests directly from the - command line. - - DMAPI_aliases has exactly the same configuration section as - menu_test. If you wish to use DMAPI_aliases, make the same - changes to its configuration section. - -II) Running the Tests - - A) Using "menu_test" to run tests - - 1) You must be superuser, using the Korn shell, to run menu_test. - You also must have adjusted the variables in menu_test's - "configuration section", as was explained above. - - 2) menu_test is (surprise!) menu based. Choose options by entering - their numbers. - - 3) The names of the menu options explain which DMAPI functions - or DMAPI events are being tested. Some of the options, labeled - accordingly, run more than one test programs. - - 4) See section SECTION# for a list of the test scripts and programs, - and a brief explanation of each script or program's function. - - B) Using "DMAPI_aliases" to run tests - - 1) NOTE: The aliases in DMAPI_aliases are meant to be used by - those who are familiar with the test programs and wish to run - them more directly. [Designer's note: I included the alias - file more out of nostalgia than necessity.] - - 2) You should be superuser, using the Korn shell, to run DMAPI_aliases. - You also must have adjusted the variables in DMAPI_aliases's - "configuration section", as was explained above. - - 3) DMAPI_aliases should be invoked as a Korn shell "dot" script: - - . ./DMAPI_aliases - - It sets an alias for each test program; each alias begins with - the characters "do_" and is followed by some appropriate name. - Read DMAPI_aliases, or execute "alias | grep do", to - - 4) "Verbose mode" - In the menu of function tests, one of the options is an on/off - toggle of "verbose mode". When verbose mode is on, the function - tests will print semi-explanatory output. Verbose mode affects - only the function tests (this does include check_dmapi). - - 5) "Pausing after each command" - In the menu of event tests, one of the options is a toggle of - "pausing after each command". When this is on, the event tests - will pause for a carriage return after running each command. - This affects only the event tests. - - C) Running tests directly - - 1) For the VERY adventurous, all the tests in the "bindir" directory - can be run directly from the command line. Only some of the files - in "bindir" are test scripts/programs. Read section III for a list - of function tests and section IV for a list of run_test (.dat) - testfiles. - - 2) Running a test program without parameters will produce a list of - correct options. (The exception to this is check_dmapi, which - normally has no parameters. check_dmapi takes only one option, - [-v] for verbose output.) - - 3) It is suggested that you read a program's source before running - it directly. (The source of the C programs is included in the - "src" directory.) Specifically, in each source file, an initial - comment explains the program's options/parameters in detail. - -III) DMAPI Function tests: - - This section offers a terse description of the DMAPI function tests. - For those tests written in C, the source code is given in the "src" - directory. The ksh scripts can, of course, be read directly. - In all cases except check_dmapi, running the program without - parameters will produce a list of correct options. - - A) check_dmapi - Written in: C - Test of: presence (and correct version) of DMAPI library and kernel. - Options: [-v] flag for verbose output. - - B) test_dmattr - Written in: C - Test of: dm_get_dmattr, dm_set_dmattr, dm_remove_dmattr. - - C) test_efault - Written in: C - Test of: various bad function calls that should generate EFAULT, - according to the DMAPI specification. - - D) test_eventlist - Written in: C - Test of: dm_get_eventlist, dm_set_eventlist. - - E) test_fileattr - Written in: C - Test of: dm_get_fileattr, dm_set_fileattr, - dm_get_dirattrs, dm_get_bulkattr. - - F) test_hole - Written in: C - Test of: dm_probe_hole, dm_punch_hole. - - G) test_invis - Written in: C - Test of: dm_read_invis, dm_write_invis. - - H) test_region - Written in: C - Test of: dm_get_region, dm_set,region. - - I) test_rights - Written in: C - Test of: various bad function calls that should generate EACCES, - and other conditions pertaining to DMAPI rights. - - J) test_allocinfo_1 - Written in: ksh - Test of: dm_get_allocinfo. - - K) test_allocinfo_2 - Written in: ksh - Test of: dm_get_allocinfo. - -IV) DMAPI Event tests and the "run_test" ksh script - - A) How to use the "run_test" script - - 1) A quick description of run_test's behavior: - run_test invokes a DMAPI daemon (as a ksh coprocess). It then - proceeds in a loop, in which it reads a command from a "testfile", - executes that command, reads a description of expected events from - the testfile, and compares the expected events with the actual - events, as returned by the DMAPI daemon. - - 2) You must be superuser, using the Korn shell, to execute run_test. - - 3) Executing run_test without parameters will produce a list of - correct options. For a much more in-depth explanation of the - options to run_test, read its own initial comment. - - B) The existing .dat testfiles - - 1) fail.dat - Tests the events from: a user trying to access files owned - by someone else (in this case, root). - - 2) main.dat - Tests the events from: events getting DM_RESP_ABORT, dm_send_msg(), - invisible i/o, and direct i/o. - - 3) nfs.dat - Tests the events from: events getting DM_RESP_ABORT over nfs, - EAGAIN over nfs. - - 4) pending.dat - Tests the events from: running dm_pending() while trying to - do standard i/o. - - 5) pending_nfs.dat - Tests the events from: running dm_pending() while trying to - do standard i/o over NFS - - 6) realtime.dat - Tests the events from: Invisible, direct, and standard i/o - on realtime files in a realtime filesystem. - - 7) smallq.dat - Tests the events from: Slow i/o due to a small event queue. - - 8) standard.dat - Tests the events from: various kinds of standard i/o, - memory-mapped i/o and remounting the filesystem. - - 9) standard_nfs.dat - Tests the events from: various kinds of standard i/o, over NFS. - - C) How to write new ".dat" testfiles - - 1) Overview - - A testfile contains a complete description of a DMAPI event test. - Testfiles are divided into sections: the first two contain - test initialization, while the remaining sections each contain ONE - command, followed by a list of expected events. - - The following is a description of testfile syntax. If you wish to - fully understand testfile syntax, PLEASE examine the existing - testfiles and the "run_test" script. - - 2) Event information variables - - a) From the daemon, "run_test" gets information about DMAPI events. - This information is stored in event information variables. - - b) NOTE: event information variables are not persistent. - After "run_test" has compared the expected and actual events - for a command, and before it executes the next command, it - unsets the values of all these variables. - - c) Most of these variables are arrays, indexed by the number of - the event (starting with 0). For example, if the initial event - is a read event, then we have "event[0]" set to "read", and - "file_handle[0]" set to the handle of whatever file was read. - - d) "event_count" is a special variable. It holds the number of - events that were generated by the most recent command. - - e) These are all the event information variables: - - contents event event_count fs_handle handle length - offset media_designator mode mountpoint_handle - mountpoint_path msg_str name new_name new_parent - parent_handle ret_code root_handle sequence token - tries_left unmount_mode - - f) PLEASE examine the run_test script to see which variables - are set by which events. (The scheme corresponds, roughly, - to the "Event Types" section of the DMAPI specification.) - - 3) Testfile section 1: List of required files - - a) A testfile's first section is a list of the files it requires. - If these files are not present in the "bindir" directory, - "run_test" will abort the test and inform the user of which - files are missing. - - b) Each line of this section may contain ANY NUMBER of filenames. - - c) Lines beginning with // will be treated as comments. The - entirety of such lines will be ignored. - - d) The last line of this section should begin with three hyphens - --- Other characters on that line will be ignored. - - 4) Testfile section 2: Initialization commands - - a) A testfile's second section consists of a list of commands. - "run_test" will execute these commands before starting the - DMAPI daemon. Any necessary initialization should be done - here. - - b) Each line of this section should be ONE shell command. - - c) Lines beginning with // will be treated as comments. - The entirety of such lines will be ignored. - - d) The last line of this section should begin with three hyphens - "---" Other characters on that line will be ignored. - - 5) Testfile sections 3 and on: Individual tests - - a) The remaining sections of a testfile consist of a single - shell command, followed by descriptions of events that should - be generated by the command. - - b) Comments - - 1) Comments are valid ONLY before the command. - - 2) Lines beginning with // will be treated as comments. - The entirety of such lines will be ignored. - - 3) Lines beginning with @@ will be treated as "print" comments. - Such lines will not be parsed, but they will be printed to - standard output during the test. This is useful for - describing what each test does. - - c) Valid grammar for the command itself - - 1) Standard command syntax: - This should be ONE shell command, on a line by itself. - - 2) Alternate command syntax: - A) run_as_root: - If the test is preceded by the metacommand "run_as_root" - (on a line by itself) then the command will be run as - root rather than as "p_user". The command should still - be one command on a line by itself. - - B) run_without_test: - If the test is preceded by the metacommand - "run_without_test" (on a line by itself), then ALL - subsequent lines in the section will be executed as - commands, and NO testing will be performed. Note that - the commands will be executed as root. This is useful - for re-initialization sections during a test. - NOTE: A testfile cannot end with a "run_without_test" - section. The last section must contain a test. - - d) Valid grammar for the "expected events" lines - - 1) [variable_name] [value] - This specifies that the variable [variable_name] should be - set to [value]. - - 2) [variable_name_1] matches [variable_name_2] - This specifies that both variables should be set to - the same value. A list of valid variables - - 3) [variable_name] store_in [string] - This specifies that the contents of [variable_name] - should be stored in a variable named [string]. - The variable [string] can then be referenced as a - variable in later tests. - - EXAMPLE: if two commands deal with the file "foobar", - you might want to check that they both use the same handle. - In the first section, write - "handle[0] store_in old_handle_0" - In the second section, write - "old_handle_0 matches handle[0]" - - 4) failure - This specifies that the command is expected to fail - (return some non-zero exit status). If "failure" - is not specified, the command is expected to succeed. - - e) The last line of these sections should begin with three - hyphens "---". Other characters on that line will be ignored. - - 6) Sending messages to the DMAPI daemon - - a) Overview - Normally, run_test only reads from the DMAPI daemon, and never - sends messages back. However, sometimes we need the daemon to - execute some function or change its behavior in some way. This - is accomplished by calling "send_msg" as a command in the - testfile. The test daemon has been coded to respond to the - following user events generated by send_msg: - - b) unfriendly_X - Replace X here with an integer, as in "send_msg unfriendly_6". - This causes the daemon to respond to all messages (other than - user events) with DM_RESP_ABORT instead of DM_RESP_CONTINUE, - and with errno X. If the message is just "unfriendly", the - default errno is EBADMSG. - - c) friendly - This returns the test_daemon to normal operation after it - was set to be "unfriendly". - - d) countdown_X_Y - Replace X and Y with integers, as in "send_msg countdown_6_8". - This causes the daemon to respond to the next X messages (other - than user events) with DM_RESP_ABORT instead of DM_RESP_CONTINUE, - and with errno Y. If the message is just "countdown", the - default count is 5 and the default errno is EAGAIN. - - e) pending_X - Replace X here with an integer, as in "send_msg pending_4". - This causes the daemon to call dm_pending() rather than - responding to the next X messages. If the message is just - "pending", the default count is 1. After the count reaches - zero, the messages will be responded to. - - f) reset_fs - This message MUST be sent after remounting the test filesystem. - It causes the daemon to re-register for all events. - - g) over - This message is sent by run_test itself, and should not be - sent in a testfile. "send_msg over" is called after each - command is executed, as an indicator that the batch of events - from that command is complete. When run_test sees a user - event with the data "over", it knows to stop reading events - and move on to the next command. - - 7) Other "helper functions" for testfiles - - a) ctf (create test files) - purpose: creates 20 copies of "bindir/ls_to_copy". - parameters: location of "bindir", location of target directory. - written in: ksh - - b) crttf (create realtime test files) - purpose: creates 10 realtime files. - parameters: location of "bindir", location of target directory. - written in: ksh - - c) stf (setup test files) - purpose: set dm attributes and managed regions on target files. - parameters: location of "bindir", pathnames of target files. - written in: ksh - - d) fcntl - purpose: do fcntl() syscall - parameters: see "usage" by running without parameters. - written in: C (source not included) - - e) open_test - purpose: do open() syscall - parameters: see "usage" by running without parameters. - written in: C - - f) rd - purpose: do read() syscall - parameters: see "usage" by running without parameters. - written in: C (source not included) - - g) new_wf - purpose: do write() syscall (new version of wf) - parameters: see "usage" by running without parameters. - written in: C (source not included) - - h) wf - purpose: do write() syscall - parameters: see "usage" by running without parameters. - written in: C (source not included) - - i) truncate - purpose: truncate a file - parameters: see "usage" by running without parameters. - written in: C (source not included) - - j) read_invis - purpose: do dm_read_invis() - parameters: see "usage" by running without parameters. - written in: C - - k) write_invis - purpose: do dm_write_invis(). - parameters: see "usage" by running without parameters. - written in: C - - l) set_region - purpose: do dm_set_region() - parameters: see "usage" by running without parameters. - written in: C - - m) set_return_on_destroy - purpose: do dm_set_return_on_destroy() - parameters: see "usage" by running without parameters. - written in: C - - n) ctest.c - purpose: test memory mapping used by cc during compilation - (really a helper file, not a helper function) - - o) mmap_cp - purpose: test memory mapping by using it to copy a file - parameters: source pathname, destination pathname - written in: C (source not included) - - p) dump_allocinfo - purpose: test dm_get_allocinfo by using it to dump - a list of file extents, much like to xfs_bmap. - parameters: see "usage" by running without parameters - written in: C - - q) mm_fill - purpose: fill a filesystem, using memory-mapped i/o - parameters: pathname of target file - written in: C - - r) make_holey - purpose: create a hole-filled file, using wf - parameters: path to "bindir", pathname of target file, - count of how many holes should be created - written in: ksh diff --git a/dmapi/src/suite2/README_for_check_dmapi b/dmapi/src/suite2/README_for_check_dmapi deleted file mode 100644 index 3fdbee5d..00000000 --- a/dmapi/src/suite2/README_for_check_dmapi +++ /dev/null @@ -1,29 +0,0 @@ -### README for check_dmapi ### - -check_dmapi tests the version of DMAPI library & kernel code. - -command line: check_dmapi [-v] -(v is a verbose-output flag) - -Functionality: - -1) Ensures that the user is running as root, using getuid(). - -2) Tries to stat() /usr/include/sys/dmi.h to verify its - presence and its size. - -3) Verifies the presence of the DMAPI kernel, using a - direct call to dmi(). The call is invalid, so it should - return EINVAL if the kernel code is in place, ENOPKG if not. - -4) Determines the status of the kernel (if it is present) using - a direct call to dmi(). The call is invalid, and uses an opcode - not present in the old kernel. So ENOSYS means old kernel; - EINVAL means new kernel. - -5) Determines the status of the library by calling dm_init_service(). - If this fails, libraries are missing. In the old library, this call - did not change its "name" parameter, but in the new library it does. - Same name means old library; changed name means new library. - -6) Outputs its findings. diff --git a/dmapi/src/suite2/bindir/crttf b/dmapi/src/suite2/bindir/crttf deleted file mode 100755 index 52c3c0ae..00000000 --- a/dmapi/src/suite2/bindir/crttf +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/ksh -# -# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -# - -if [[ $# != 2 ]] -then print -u2 "USAGE: ${0##*/} bindir testdir" - exit 2 -fi - -for i in 0 1 2 3 4 5 6 7 8 9 - do - $1/new_wf -l 32768 -b 4096 -R $2/realtime.$i - done - diff --git a/dmapi/src/suite2/bindir/ctf b/dmapi/src/suite2/bindir/ctf deleted file mode 100755 index 8a51814c..00000000 --- a/dmapi/src/suite2/bindir/ctf +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/ksh -# -# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -# - -if [[ $# != 2 ]] -then print -u2 "USAGE: ${0##*/} bindir testdir" - exit 2 -fi - -for i in 0 1 2 3 4 5 6 7 8 9 - do - cp $1/ls_to_copy $2/ls"$i" - cp $1/ls_to_copy $2/ll"$i" - done - diff --git a/dmapi/src/suite2/bindir/ls_to_copy b/dmapi/src/suite2/bindir/ls_to_copy deleted file mode 100644 index 056b7f6fa88c809e5af1197eb952c521f1939ef6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29696 zcmeIufdBvi0K=g9Q=i}lg-~I@fB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* w1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8Fl|7<2#t0RR91 diff --git a/dmapi/src/suite2/bindir/make_holey b/dmapi/src/suite2/bindir/make_holey deleted file mode 100755 index 062daf87..00000000 --- a/dmapi/src/suite2/bindir/make_holey +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/ksh -# -# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -# - -if [[ $# != 3 ]] -then print "usage: ${0##*/} bindir target_file count" - exit 1 -fi - -typeset -i offset -typeset -i length -typeset -i count - -RANDOM=$SECONDS -offset=0 -length=$RANDOM -count=$3 - -while (( count > 0 )) -do - print "Count: $count" - $1/wf -l $length -L $offset -b 512 $2 - (( offset = RANDOM * 512 + offset + length )) - (( length = RANDOM )) - (( count = count - 1 )) -done - - diff --git a/dmapi/src/suite2/bindir/run_test b/dmapi/src/suite2/bindir/run_test deleted file mode 100755 index afa744c0..00000000 --- a/dmapi/src/suite2/bindir/run_test +++ /dev/null @@ -1,523 +0,0 @@ -#!/bin/ksh -# -# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -# -#-----------------------------------------------------------------# -# run_test: a ksh script for testing the DMAPI. -# -# USAGE: run_test [-p] [-x] [-u user] -# [-F fs_type -M fs_mtpt -R "real" directory] -# [-f datafile] [-s sleeptime] -# bindir testdir fsdir -# -# p: Causes pausing after every test (not just ones with errors). -# -# x: Prints an execution trace as the script runs. -# -# user: Most tests don't need root access, so they will be run -# under this username. -# -# (NOTE: the following three must be used together) -# -# fs_type: For NFS tests; the type of filesystem (ie nfs2, nfs3). -# -# fs_mtpt: For NFS tests, the path to the mount of your -# "real" filesystem. -# (ie, "mount -t nfs2 localhost:/dmitest $fs_mtpt") -# -# "real" directory: For NFS tests, the path to the "real" test directory. -# -# datafile: The name of the file which contains the tests to run. -# -# sleeptime: time, in seconds, for the daemon to sleep after -# responding to an event. (Useful for testing small -# outstanding-events queues.) -# -# bindir: The path to the directory that holds dm_test_daemon, send_msg, -# the datafile, and any other files required by the datafile. -# -# testdir: The path to the test directory. All DMAPI testing -# occurs here -- this is where the tests will actually -# be run. (For NFS tests, this will be an NFS mount -# of the "real" directory.) -# -# fsdir: The path name of the test filesystem. The daemon will start -# using this path, and the mount and unmount of the DMAPI -# filesystem will be done here. (Even for NFS tests, this -# should still be the same test filesystem.) -# -#-----------------------------------------------------------------# - -# For most reads, we'll want spaces to be the field separators. -IFS=" " - -typeset -i fail_flag -typeset -i pause_flag -typeset -i sleeptime - -# To run tests that don't require root access, we'll change to -# a user specified by lname. -lname=$LOGNAME - -# Set the default external files to use. -datafile=main.dat -sleeptime=0 - -unset fs_type fs_mtpt -real_dir=set_me_later - -# Parse the command-line options -while getopts :pxu:F:M:R:f:b:s: option -do case $option in - p) pause_flag=1;; - x) set -x;; - u) lname=$OPTARG;; - F) fs_type=$OPTARG;; - M) fs_mtpt=$OPTARG;; - R) real_dir=$OPTARG;; - f) datafile=$OPTARG;; - b) bindir=$OPTARG;; - s) sleeptime=$OPTARG;; - :) print -u2 "${0##*/}: $OPTARG requires a value" - exit 2;; - \?) print -nu2 "USAGE: ${0##*/} [-p] [-x] [-u user] " - print -nu2 "[-F fs type -M mountpoint directory -R \"real\" directory] " - print -u2 "[-s sleeptime] [-f datafile] bindir testdir fsdir" - exit 2;; - esac -done - -# Shift out the examined options, then check that we have -# exactly three arguments left: (the paths to the "bindir", -# the test directory, and the filesystem). -shift OPTIND-1 -if [[ $# != 3 ]] -then print -nu2 "USAGE: ${0##*/} [-p] [-x] [-u user] " - print -nu2 "[-F fs type -M mountpoint directory -R \"real\" directory] " - print -u2 "[-s sleeptime] [-f datafile] bindir testdir fsdir" - exit 2 -fi - -# For NFS tests, $2 will be an NFS mount of the test directory; -# real_dir should be the test directory's actual path. -# Otherwise, real_dir should just be $2. -if [[ $real_dir = set_me_later ]] -then real_dir=$2 -fi - -# Check bindir for the existence of our three critical external files. -error_count=0 -for i in dm_test_daemon send_msg $datafile -do - if [[ ! ( -r "$1/$i" ) ]] - then if ((error_count==0)) - then print "Aborting: the directory $1/ is missing critical files:" - fi - print "$1/$i" - (( error_count = error_count + 1 )) - fi -done -if (( error_count > 0 )) -then exit 1 -fi - -# Open the datafile on file descriptor 3 -exec 3< $1/$datafile - -# Read datafile and determine what files it needs from bindir; -# then, check for the existence of these files. -error_count=0 -while read -u3 file_list -do case $file_list in - ---*) break;; - //*) continue;; - *) for i in $file_list - do if [[ ! ( -r "$1/$i" ) ]] - then if ((error_count==0)) - then print "The directory $1/ is missing these files:" - fi - print "$1/$i" - (( error_count = error_count + 1 )) - fi - done;; - esac -done -if (( error_count > 0 )) - then exit 1 -fi - -# Run initialization stuff without daemon. -while read -u3 cmd -do case $cmd in - //*) continue;; - ---*) break;; - *) eval "$cmd";; - esac -done - -# If we're testing over nfs, remount the filesystem to clear the cache. -case $fs_type in - nfs2) print "Clearing nfs2 cache by remounting filesystem..." - eval "umount $fs_mtpt" - eval "mount -t nfs2 localhost:$3 $fs_mtpt";; - nfs3) print "Clearing nfs3 cache by remounting filesystem..." - eval "umount $fs_mtpt" - eval "mount -t nfs3 localhost:$3 $fs_mtpt";; - *) if [[ $fs_type != "" ]] - then print "ERROR: $fs_type not a known or testable filesystem type" - fi;; -esac - - -# Check with the user before starting up daemon -print "\n** Using testfile ${datafile##*/} **" -print "** Using userid $lname for tests not requiring root access **" -print "Press enter to begin, or enter q or n to abort..." -read go -case "$go" in - n|N|q|Q) exit 1;; - *);; -esac - -# Now, the user will need ownership of the test directory -# ($2, not $real_dir, since real_dir is accessed only as root). -eval "chown $lname $2" - -# Now it's time to begin running the daemon as a coprocess. -# The daemon will use a : as its internal field separator. -IFS=":" -if (($sleeptime > 0)) then - $1/dm_test_daemon -s $sleeptime $3 |& -else - $1/dm_test_daemon $3 |& -fi - -#Keep track of the coprocess id... "$!" may change. -coproc=$! - -# Initialize the count of errors -error_count=0; - -# dm_test_daemon starts with a spurious line feed. -read -p junk - -# Finally, we've reached the actual loop to read in the testfile. -while true -do - clear - while read -u3 cmd - do - case $cmd in - run_without_test) - while read -u3 cmd - do case $cmd in - ---*) clear; continue 2;; - //*) continue;; - @@*) cmd=${cmd#@@*} - print "!! ${cmd# *}" - continue;; - *) eval $cmd;; - esac - done;; - run_as_root) - read -u3 cmd - root_flag=1 - break;; - //*) continue;; - @@*) cmd=${cmd#@@*} - print "!! ${cmd# *}" - continue;; - *) root_flag=0 - break;; - esac - done - if (( $root_flag == 1 )) - then print "Command to execute (as root):\n\n $cmd\n" - eval "$cmd" - else print "Command to execute:\n\n $cmd\n" - eval "su $lname -c \"$cmd\"" - fi - - # Note failure of the command. Also, send a message - # that the command is done. We will know we're done - # reading from the daemon when we see this message. - fail_flag=$? - $1/send_msg over - print - - # Reset variables for reading this command. - event_count=0 - unset contents event fs_handle handle length offset - unset media_designator mode mountpoint_handle - unset mountpoint_path msg_str name new_name new_parent - unset parent_handle ret_code root_handle sequence token - unset tries_left unmount_mode - - # Read events, report them, and store their data. - while true - do - read -p event[event_count] - case "${event[event_count]}" in - mount) - print "Report: found mount event." - read -p junk token[event_count] - read -p junk sequence[event_count] - read -p junk fs_handle[event_count] - read -p junk mountpoint_handle[event_count] - read -p junk mountpoint_path[event_count] - read -p junk media_designator[event_count] - read -p junk root_handle[event_count] - read -p junk mode[event_count] - read -p junk;; - preunmount) - print "Report: found preunmount event." - read -p junk token[event_count] - read -p junk sequence[event_count] - read -p junk fs_handle[event_count] - read -p junk root_handle[event_count] - read -p junk unmount_mode[event_count] - read -p junk;; - unmount) - print "Report: found unmount event." - read -p junk token[event_count] - read -p junk sequence[event_count] - read -p junk fs_handle[event_count] - read -p junk unmount_mode[event_count] - read -p junk ret_code[event_count] - read -p junk;; - nospace) - print "Report: found nospace event." - read -p junk token[event_count] - read -p junk sequence[event_count] - read -p junk fs_handle[event_count] - read -p junk;; - create|remove) - print "Report: found ${event[event_count]} event." - read -p junk token[event_count] - read -p junk sequence[event_count] - read -p junk parent_handle[event_count] - read -p junk name[event_count] - read -p junk mode[event_count] - read -p junk;; - postcreate) - print "Report: found postcreate event." - read -p junk token[event_count] - read -p junk sequence[event_count] - read -p junk parent_handle[event_count] - read -p junk handle[event_count] - read -p junk name[event_count] - read -p junk mode[event_count] - read -p junk ret_code[event_count] - read -p junk;; - postremove) - print "Report: found postremove event." - read -p junk token[event_count] - read -p junk sequence[event_count] - read -p junk parent_handle[event_count] - read -p junk name[event_count] - read -p junk mode[event_count] - read -p junk ret_code[event_count] - read -p junk;; - rename) - print "Report: found rename event." - read -p junk token[event_count] - read -p junk sequence[event_count] - read -p junk parent_handle[event_count] - read -p junk new_parent[event_count] - read -p junk name[event_count] - read -p junk new_name[event_count] - read -p junk;; - postrename) - print "Report: found postrename event." - read -p junk token[event_count] - read -p junk sequence[event_count] - read -p junk parent_handle[event_count] - read -p junk new_parent[event_count] - read -p junk name[event_count] - read -p junk new_name[event_count] - read -p junk ret_code[event_count] - read -p junk;; - symlink) - print "Report: found symlink event." - read -p junk token[event_count] - read -p junk sequence[event_count] - read -p junk parent_handle[event_count] - read -p junk name[event_count] - read -p junk contents[event_count] - read -p junk;; - postsymlink) - print "Report: found postsymlink event." - read -p junk token[event_count] - read -p junk sequence[event_count] - read -p junk parent_handle[event_count] - read -p junk handle[event_count] - read -p junk name[event_count] - read -p junk contents[event_count] - read -p junk ret_code[event_count] - read -p junk;; - link) - print "Report: found link event." - read -p junk token[event_count] - read -p junk sequence[event_count] - read -p junk parent_handle[event_count] - read -p junk handle[event_count] - read -p junk name[event_count] - read -p junk;; - postlink) - print "Report: found postlink event." - read -p junk token[event_count] - read -p junk sequence[event_count] - read -p junk parent_handle[event_count] - read -p junk handle[event_count] - read -p junk name[event_count] - read -p junk ret_code[event_count] - read -p junk;; - read|write|truncate) - print "Report: found ${event[event_count]} event." - read -p junk token[event_count] - read -p junk sequence[event_count] - read -p junk handle[event_count] - read -p junk offset[event_count] - read -p junk length[event_count] - read -p junk;; - attribute) - print "Report: found attribute event." - read -p junk token[event_count] - read -p junk sequence[event_count] - read -p junk handle[event_count] - read -p junk;; - destroy) - print "Report: found destroy event." - read -p junk token[event_count] - read -p junk sequence[event_count] - read -p junk handle[event_count] - read -p junk name[event_count] - read -p junk contents[event_count] - read -p junk;; - user) - read -p junk token[event_count] - read -p junk sequence[event_count] - read -p junk msg_str[event_count] - case "${msg_str[event_count]}" in - "over") read -p junk - event[event_count]=end_of_tests - print "Report: found \"end of test\" user event. " - break;; - *) print "Report: found user event. " - read -p junk;; - esac;; - pending) - read -p junk tries_left[event_count] - print -n "Report: process pending. " - print "Tries left: ${tries_left[event_count]}" - read -p junk;; - *) - print -n "Report: found ${event[event_count]} event. " - print "(unknown to this version)" - while read -p msg_str[event_count] - do case "${msg_str[event_count]}" in - "end_of_message") break;; - *);; - esac - done;; - esac - ((event_count=event_count+1)) - done - ((old_error_count=error_count)); - - IFS=" " - - while read -u3 val_one val_two val_tre - do case $val_one in - ---*) if [[ $fail_flag != -1 ]] - then if [[ $fail_flag != 0 ]] - then print -n "ERROR: command failed; it was " - print "expected to succeed." - ((error_count=error_count+1)) - fi - fi - if (( error_count>old_error_count || pause_flag==1 )) - then print "\nEnter q to quit, or press enter to continue..." - read go - case "$go" in - q|Q) break;; - *);; - esac - fi - IFS=":" - continue 2;; - failure) - if [[ $fail_flag = 0 ]] - then print "ERROR: command succeeded; it was expected to fail." - ((error_count=error_count+1)) - else print "Note: command is expected to fail." - fi - fail_flag=-1;; - *) case $val_two in - matches) - if [[ $(eval "print $"{$val_one}) = $(eval "print $"{$val_tre}) ]] - then print "Report: $val_one and $val_tre match; both are " - if [[ $(eval "print $"{$val_one}) = "" ]] - then print "unset" - else print "$(eval "print $"{$val_one})" - fi - else print -n "ERROR: $val_one was " - if [[ $(eval "print $"{$val_one}) = "" ]] - then print -n "unset " - else print -n "equal to $(eval "print $"{$val_one})" - fi - print -n ", while $val_tre was " - if [[ $(eval "print $"{$val_tre}) = "" ]] - then print "unset." - else print "equal to $(eval "print $"{$val_tre})." - fi - ((error_count=error_count+1)) - fi;; - store_in) - eval ${val_tre}=$(eval "print $"{$val_one}) - print -n "Report: value of ${val_one} copied into " - print "${val_tre}.";; - *) - if [[ $(eval "print $"{$val_one}) = $val_two ]] - then : - else if [[ "$val_one" = event_count ]] - then print -n "ERROR: expected $val_two event(s), " - print "but found $event_count." - else print -n "ERROR: $val_one was " - if [[ $(eval "print $"{$val_one}) = "" ]] - then print -n "unset " - else print -n "equal to $(eval "print $"{$val_one}) " - fi - print "rather than $val_two as expected." - fi - ((error_count=error_count+1)) - fi;; - esac;; - esac - done - if [[ $fail_flag != -1 ]] - then if [[ $fail_flag != 0 ]] - then print -n "ERROR: command failed; it was " - print "expected to succeed." - ((error_count=error_count+1)) - fi - fi - if (( error_count>old_error_count || pause_flag==1 )) - then print "\nTests complete. Press enter to quit..." - read go - fi - break -done - -# Close the datafile -exec 3<&- - -# End the daemon -kill $coproc -wait $coproc - -clear -if ((error_count==1)) -then print "Test result: 1 error found." -else print "Test result: $error_count errors found." -fi diff --git a/dmapi/src/suite2/bindir/stf b/dmapi/src/suite2/bindir/stf deleted file mode 100755 index 23e8e71a..00000000 --- a/dmapi/src/suite2/bindir/stf +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/ksh -# -# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -# - -sr_dir=$1 -shift 1 - -for i in $* - do - attr -Rq -s SGI_DMI_test -V123456789abcdefghijklmnopqrstuvwxyz $i - $sr_dir/set_region $i DM_REGION_READ DM_REGION_WRITE DM_REGION_TRUNCATE > /dev/null - done diff --git a/dmapi/src/suite2/bindir/test_allocinfo_1 b/dmapi/src/suite2/bindir/test_allocinfo_1 deleted file mode 100755 index c1aa8c7a..00000000 --- a/dmapi/src/suite2/bindir/test_allocinfo_1 +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/ksh -# -# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -# -# Dump the same holey file using both xfs_bmap and -# dump_allocinfo (a C wrapper for get_allocinfo). -# Run awk on the xfs_bmap output, since xfs_bmap -# gives specific block allocation info that get_allocinfo -# does not. Then diff the two outputs. - -if [[ $# != 2 ]] -then print "USAGE: ${0##*/} bindir testdir" - exit 1 -fi - -# Check bindir for needed programs. -if [[ ! ( -r "$1/wf" ) ]] -then print "Aborting: necessary program wf is not in $1/." - if [[ ! ( -r "$1/dump_allocinfo" ) ]] - then print " necessary program dump_allocinfo is also missing." - fi - exit 1 -fi -if [[ ! ( -r "$1/dump_allocinfo" ) ]] -then print "Aborting: necessary program dump_allocinfo is not in $1/." - exit 1 -fi - -print "Comparison test (get_allocinfo vs. xfs_bmap) beginning..." - -typeset -i offset -typeset -i length -typeset -i count - -RANDOM=$SECONDS -offset=0 -length=$RANDOM -count=100 -filename=DMAPI_test_allocinfo - -# Create a random holey file -while (( count > 0 )) -do - $1/wf -l $length -L $offset -b 512 $2/$filename > /dev/null - (( offset = RANDOM * 512 + offset + length )) - (( length = RANDOM )) - (( count = count - 1 )) -done - -# Get output from xfs_bmap -xfs_bmap $2/DMAPI_test_allocinfo > $2/$filename.xfs - -# Get output from dump_allocinfo (DMAPI) -$1/dump_allocinfo $2/DMAPI_test_allocinfo > $2/$filename.da - -# Alter xfs_bmap ouput to match get_allocinfo -awk '{ if (NR > 1) - if ($3 == "hole") - print $1, $2, $3 - else - print $1, $2, "resv" -}' $2/DMAPI_test_allocinfo.xfs > $2/$filename.ok - -# Compare the ouput -diff -w $2/$filename.ok $2/$filename.da - -# Remove the test file -rm $2/$filename* - -print "Test complete." diff --git a/dmapi/src/suite2/bindir/test_allocinfo_2 b/dmapi/src/suite2/bindir/test_allocinfo_2 deleted file mode 100755 index 623409d2..00000000 --- a/dmapi/src/suite2/bindir/test_allocinfo_2 +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/ksh -# -# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -# -# Dump the same holey file a random number of times, each time -# using one less extent structure than the previous time. -# The grep and diff code checks to make sure that you get the -# same answer each time, no matter how many extents you use. - -typeset -i offset -typeset -i length -typeset -i max - -# Verify correct usage -if [[ $# != 2 ]] -then print "usage: ${0##*/} bindir testdir" - exit 1 -fi - -# Check bindir for needed programs. -if [[ ! ( -r "$1/wf" ) ]] -then print "Aborting: necessary program wf is not in $1/." - if [[ ! ( -r "$1/dump_allocinfo" ) ]] - then print " necessary program dump_allocinfo is also missing." - fi - exit 1 -fi -if [[ ! ( -r "$1/dump_allocinfo" ) ]] -then print "Aborting: necessary program dump_allocinfo is not in $1/." - exit 1 -fi - -print "Multiple-buffer-sizes test of get_allocinfo beginning..." - -RANDOM=$SECONDS -offset=0 -length=$RANDOM -filename=DMAPI_alloc_test_2 -((max = $RANDOM/256)) -count=$max - -# Holey file creation: put about $max holes into the file. -while (( count > 0 )) -do - $1/wf -l $length -L $offset -b 512 $2/$filename > /dev/null - (( offset = RANDOM * 512 + offset + length )) - (( length = RANDOM )) - (( count = count - 1 )) -done -count=$max - -# Now count down from $max to 1 and try dump_allocinfo with a buffer that -# can hold that many dm_extent_t structures. -while [[ $count > 0 ]] -do - $1/dump_allocinfo -n $count $2/$filename | grep '\[' > $2/x.$count - if (( count < max )) - then diff $2/x.$count $2/x.$max > /dev/null - if [[ $? != 0 ]] - then print "ERROR in trial #$count:" - diff $2/x.$count $2/x.$max - fi - rm $2/x.$count - fi - (( count = count - 1 )) -done - -rm $2/x.$max -rm $2/$filename - -print "Test complete." diff --git a/dmapi/src/suite2/create_cpio b/dmapi/src/suite2/create_cpio deleted file mode 100644 index 62c04bfd..00000000 --- a/dmapi/src/suite2/create_cpio +++ /dev/null @@ -1,10 +0,0 @@ -# -# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -# - -rm /home/hickory43/jayw/test/dist/DMAPI_test.cpio -cd /home/hickory43/jayw/test -find * \( ! -name '*.o' ! -name '*~' ! -name './dist/*' \) | cpio -oc > /home/hickory43/jayw/test/dist/DMAPI_test.cpio -cp /home/hickory43/jayw/test/README /home/hickory43/jayw/test/dist/README -cd /home/hickory43/jayw/test/dist - diff --git a/dmapi/src/suite2/data/fail.dat b/dmapi/src/suite2/data/fail.dat deleted file mode 100644 index b980f2be..00000000 --- a/dmapi/src/suite2/data/fail.dat +++ /dev/null @@ -1,90 +0,0 @@ -// -// Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -// -// This test will use the following files: -// -ctf stf ls_to_copy ctest.c -fcntl open_test truncate rd wf -set_region set_return_on_destroy --------------------------------------------- -// These setup commands are run before the daemon starts. -// They reset the file structure of the test directory -// to a known state, and they ensure that the NFS -// -rm $real_dir/??? -$1/ctf $1 $real_dir -$1/stf $1 $real_dir/l?? -rm $real_dir/ctest.c -cp $1/ctest.c $real_dir -chown $lname $real_dir/* -$1/set_return_on_destroy $real_dir test -rmdir $real_dir/fail_tempdir/fail_subdir -rm $real_dir/fail_tempdir/* -rmdir $real_dir/fail_tempdir -mkdir $real_dir/fail_tempdir -mkdir $real_dir/fail_tempdir/fail_subdir -echo "Temporary file" > $real_dir/fail_tempdir/temp_file -chown root $real_dir/fail_tempdir --------------------------------------------- -@@ Failure checks (1 of 8): symlink -@@ -ln -s $2/fail_tempdir/temp_file $2/fail_tempdir/failed_symlink -event_count 2 -event[0] symlink -event[1] postsymlink -ret_code[1] 13 -failure --------------------------------------------- -@@ Failure checks (2 of 8): link -@@ -ln $2/fail_tempdir/temp_file $2/fail_tempdir/failed_link -event_count 2 -event[0] link -event[1] postlink -ret_code[1] 13 -failure --------------------------------------------- -@@ Failure checks (3 of 8): mkdir -@@ -mkdir $2/fail_tempdir/failed_subdir -event_count 2 -event[0] create -event[1] postcreate -ret_code[1] 13 -failure --------------------------------------------- -@@ Failure checks (4 of 8): rmdir -@@ -rmdir $2/fail_tempdir/fail_subdir -event_count 2 -event[0] remove -event[1] postremove -ret_code[1] 13 -failure --------------------------------------------- -@@ Failure checks (5 of 8): open -@@ -$1/open_test $2/fail_tempdir/temp_file o_rdwr -event_count 0 -failure --------------------------------------------- -@@ Failure checks (6 of 8): open/create -@@ -$1/open_test $2/fail_tempdir/temp_file o_rdwr o_creat -event_count 0 -failure --------------------------------------------- -@@ Failure checks (7 of 8): open/truncate -@@ -$1/open_test $2/fail_tempdir/temp_file o_rdwr o_trunc -event_count 0 -failure --------------------------------------------- -@@ Failure checks (8 of 8): remove -@@ -rm -f $2/fail_tempdir/temp_file -event_count 2 -event[0] remove -event[1] postremove -ret_code[1] 13 -failure diff --git a/dmapi/src/suite2/data/main.dat b/dmapi/src/suite2/data/main.dat deleted file mode 100644 index 346381f4..00000000 --- a/dmapi/src/suite2/data/main.dat +++ /dev/null @@ -1,131 +0,0 @@ -// -// Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -// -// This test will use the following files: -// -ctf stf ls_to_copy ctest.c -fcntl open_test truncate rd wf -read_invis write_invis -set_region set_return_on_destroy --------------------------------------------- -// These setup commands are run before the daemon starts. -// They reset the file structure of the test directory -// to a known state. -// -rm $real_dir/??? -rm $real_dir/ctest.c -$1/ctf $1 $real_dir -$1/stf $1 $real_dir/l?? -cp $1/ctest.c $real_dir -chown $lname $real_dir/l?? -chown $lname $real_dir/ctest.c -$1/set_return_on_destroy $real_dir test --------------------------------------------- -@@ Aborted events testing (1 of 7): -@@ Read ls0 successfully. -@@ -$1/open_test $2/ls0 o_rdwr -event_count 1 -event[0] read --------------------------------------------- -@@ Aborted events testing (2 of 7): -@@ Set the daemon to halt events with DM_RESP_ABORT -@@ and errno EEXIST. -@@ -run_as_root -$1/send_msg unfriendly_17 -event_count 1 -event[0] user -msg_str[0] unfriendly_17 --------------------------------------------- -@@ Aborted events testing (3 of 7): -@@ Try to read ls0. this should fail with EEXIST. -@@ -$1/open_test $2/ls0 o_rdwr -event_count 1 -event[0] read -failure --------------------------------------------- -@@ Aborted events testing (4 of 7): -@@ Try to read ls1. This should fail with EEXIST. -@@ -$1/open_test $2/ls1 o_rdwr o_trunc -event_count 1 -event[0] truncate -failure --------------------------------------------- -@@ Aborted events testing (5 of 7): -@@ Reset the daemon to respond with DM_RESP_CONTINUE. -@@ -run_as_root -$1/send_msg friendly -event_count 1 -event[0] user -msg_str[0] friendly --------------------------------------------- -@@ Aborted events testing (6 of 7): -@@ Again, try to read ls0. This should succeed. -@@ -$1/open_test $2/ls0 o_rdwr -event_count 1 -event[0] read --------------------------------------------- -@@ Aborted events testing (7 of 7): -@@ Again, try to read ls1. This time, -@@ it should succeed. -@@ -$1/open_test $2/ls1 o_rdwr o_trunc -event_count 2 -event[0] truncate -event[1] attribute --------------------------------------------- -@@ dm_send_msg test -@@ -run_as_root -$1/send_msg dmapi-test-foo-abc123 -event_count 1 -event[0] user -msg_str[0] dmapi-test-foo-abc123 --------------------------------------------- -@@ Test of invisible i/o (1 of 2): write -@@ -run_as_root -$1/write_invis -o 64 -l 16 $2/ls0 -event_count 0 --------------------------------------------- -@@ Test of invisible i/o (2 of 2): read -@@ -run_as_root -$1/read_invis -o 64 -l 16 $2/ls0 -event_count 0 --------------------------------------------- -@@ Test of direct i/o (1 of 2): write -@@ -$1/wf -l 327680 -b 32768 -d $2/ls9 -event_count 10 -event[0] write -event[1] write -event[2] write -event[3] write -event[4] write -event[5] write -event[6] write -event[7] write -event[8] write -event[9] write --------------------------------------------- -@@ Test of direct i/o (2 of 2): read -@@ -$1/rd -b 32768 -d $2/ls9 -event_count 11 -event[0] read -event[1] read -event[2] read -event[3] read -event[4] read -event[5] read -event[6] read -event[7] read -event[8] read -event[9] read -event[10] read diff --git a/dmapi/src/suite2/data/nfs.dat b/dmapi/src/suite2/data/nfs.dat deleted file mode 100644 index 316bfbb1..00000000 --- a/dmapi/src/suite2/data/nfs.dat +++ /dev/null @@ -1,146 +0,0 @@ -// -// Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -// -// This test will use the following files: -// -ctf stf ls_to_copy ctest.c -fcntl open_test truncate rd wf -set_region set_return_on_destroy --------------------------------------------- -// These setup commands are run before the daemon starts. -// They reset the file structure of the test directory -// to a known state. -// -rm $real_dir/??? -$1/ctf $1 $real_dir -$1/stf $1 $real_dir/l?? -chown $lname $real_dir/l?? -$1/set_return_on_destroy $real_dir test --------------------------------------------- -@@ Aborted events testing (1 of 7): -@@ Bring ls0 across NFS, causing it to be cached. -@@ -$1/open_test $2/ls0 o_rdwr -event_count 1 -event[0] read --------------------------------------------- -@@ Aborted events testing (2 of 7): -@@ Set the daemon to halt events with DM_RESP_ABORT -@@ and errno EEXIST. -@@ -run_as_root -$1/send_msg unfriendly_17 -event_count 1 -event[0] user -msg_str[0] unfriendly_17 --------------------------------------------- -@@ Aborted events testing (3 of 7): -@@ Try to read ls0. Since it is cached, this should succeed. -@@ and should not generate any events. -@@ -$1/open_test $2/ls0 o_rdwr -event_count 0 --------------------------------------------- -@@ Aborted events testing (4 of 7): -@@ Try to read ls1. This should fail with EEXIST. -@@ -$1/open_test $2/ls1 o_rdwr o_trunc -event_count 1 -event[0] truncate -failure --------------------------------------------- -@@ Aborted events testing (5 of 7): -@@ Reset the daemon to respond with DM_RESP_CONTINUE. -@@ -run_as_root -$1/send_msg friendly -event_count 1 -event[0] user -msg_str[0] friendly --------------------------------------------- -@@ Aborted events testing (6 of 7): -@@ Again, try to read ls0. It will be in the cache, -@@ so no events should occur. -@@ -$1/open_test $2/ls0 o_rdwr -event_count 0 --------------------------------------------- -@@ Aborted events testing (7 of 7): -@@ Again, try to read ls1. This time, -@@ it should succeed. -@@ -$1/open_test $2/ls1 o_rdwr o_trunc -event_count 2 -event[0] truncate -event[1] attribute --------------------------------------------- -@@ dm_send_msg test -@@ -run_as_root -$1/send_msg dmapi-test-foo-abc123 -event_count 1 -event[0] user -msg_str[0] dmapi-test-foo-abc123 --------------------------------------------- -@@ NFS test: DM_RESP_ABORT (1 of 3) -@@ -// For the next two events, respond with -// DM_RESP_ABORT and errno 4 The first -// open test of ls1 should fail; the -// second should succeed. -// -run_as_root -$1/send_msg countdown_2_4 -event_count 1 -event[0] user -msg_str[0] countdown_2_4 --------------------------------------------- -@@ NFS test: DM_RESP_ABORT (2 of 3) -@@ -$1/open_test $2/ls2 o_rdwr -event_count 1 -event[0] read -failure --------------------------------------------- -@@ NFS test: DM_RESP_ABORT (3 of 3) -@@ -$1/open_test $2/ls2 o_rdwr -event_count 1 -event[0] read --------------------------------------------- -@@ NFS test: EAGAIN (1 of 4) -@@ -// For the next two events, respond with -// DM_RESP_ABORT and errno 11 -- EAGAIN. -// NFS should retry sending the event as -// long as EAGAIN is returned. -// -run_as_root -$1/send_msg countdown_2_11 -event_count 1 -event[0] user -msg_str[0] countdown_2_11 --------------------------------------------- -@@ NFS test: EAGAIN (2 of 4) -@@ -$1/open_test $2/ls3 o_rdwr -event_count 2 -event[0] read -event[1] read --------------------------------------------- -@@ NFS test: EAGAIN (3 of 4) -@@ -run_as_root -$1/send_msg countdown_4_11 -event_count 1 -event[0] user -msg_str[0] countdown_4_11 --------------------------------------------- -@@ NFS test: EAGAIN (4 of 4) -@@ -$1/open_test $2/ls4 o_rdwr -event_count 4 -event[0] read -event[1] read -event[2] read -event[3] read diff --git a/dmapi/src/suite2/data/pending.dat b/dmapi/src/suite2/data/pending.dat deleted file mode 100644 index ebdae3ec..00000000 --- a/dmapi/src/suite2/data/pending.dat +++ /dev/null @@ -1,62 +0,0 @@ -// -// Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -// -// This test will use the following files: -// -ctf stf ls_to_copy set_region --------------------------------------------- -// These setup commands are run before the daemon starts. -// They reset the file structure of the test directory -// to a known state. -// -rm $real_dir/??? -$1/ctf $1 $real_dir -$1/stf $1 $real_dir/l?? -chown $lname $real_dir/l?? --------------------------------------------- -@@ Pending test (1 of 5): -@@ -// Run "pending" for the next 3 events, -// so that a non-blocking open_test -// will see EAGAIN three times before -// it can finish. -// -run_as_root -$1/send_msg pending_3 -event_count 1 -event[0] user -msg_str[0] pending_3 --------------------------------------------- -@@ Pending test (2 of 5): -@@ (should fail) -@@ -$1/open_test $2/ls1 o_rdwr o_nonblock -event_count 1 -event[0] pending -tries_left[0] 2 -failure --------------------------------------------- -@@ Pending test (3 of 5): -@@ (should fail) -@@ -$1/open_test $2/ls1 o_rdwr o_ndelay -event_count 1 -event[0] pending -tries_left[0] 1 -failure --------------------------------------------- -@@ Pending test (4 of 5): -@@ (should fail) -@@ -$1/open_test $2/ls1 o_rdwr o_nonblock o_ndelay -event_count 1 -event[0] pending -tries_left[0] 0 -failure --------------------------------------------- -@@ Pending test (5 of 5): -@@ (should succeed) -@@ -$1/open_test $2/ls1 o_rdwr o_nonblock -event_count 1 -event[0] read diff --git a/dmapi/src/suite2/data/pending_nfs.dat b/dmapi/src/suite2/data/pending_nfs.dat deleted file mode 100644 index 1c7f3443..00000000 --- a/dmapi/src/suite2/data/pending_nfs.dat +++ /dev/null @@ -1,44 +0,0 @@ -// -// Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -// -// This test will use the following files: -// -ctf stf ls_to_copy set_region --------------------------------------------- -// These setup commands are run before the daemon starts. -// They reset the file structure of the test directory -// to a known state. -// -rm $real_dir/??? -$1/ctf $1 $real_dir -$1/stf $1 $real_dir/l?? -chown $lname $real_dir/l?? --------------------------------------------- -@@ NFS test: pending (1 of 2) -@@ -// Run "pending" for the next 3 events, -// so that ls0 will trigger 3 pending -// pseudo-events before succeeding -// -run_as_root -$1/send_msg pending_3 -event_count 1 -event[0] user -msg_str[0] pending_3 --------------------------------------------- -@@ NFS test: pending (2 of 2) -@@ -@@ (this will take a while...) -@@ -$2/ls0 -l $real_dir -event_count 7 -event[0] pending -event[1] pending -event[2] pending -event[3] read -event[4] read -event[5] read -event[6] read -tries_left[0] 2 -tries_left[1] 1 -tries_left[2] 0 diff --git a/dmapi/src/suite2/data/realtime.dat b/dmapi/src/suite2/data/realtime.dat deleted file mode 100644 index a0abd5c9..00000000 --- a/dmapi/src/suite2/data/realtime.dat +++ /dev/null @@ -1,111 +0,0 @@ -// -// Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -// -// This test will use the following files: -// -stf crttf new_wf -fcntl open_test truncate rd wf -read_invis write_invis -set_region set_return_on_destroy --------------------------------------------- -// These setup commands are run before the daemon starts. -// They reset the file structure of the test directory -// to a known state. -// -rm $real_dir/realtime.? -$1/crttf $1 $real_dir -chown $lname $real_dir/* -$1/stf $1 $real_dir/realtime.? -$1/set_return_on_destroy $real_dir test --------------------------------------------- -@@ Test of invisible i/o (1 of 2): write -@@ -run_as_root -$1/write_invis -o 64 -l 16 $2/realtime.0 -event_count 0 --------------------------------------------- -@@ Test of invisible i/o (2 of 2): read -@@ -run_as_root -$1/read_invis -o 64 -l 16 $2/realtime.0 -event_count 0 --------------------------------------------- -@@ Test of direct i/o (1 of 2): write -@@ -$1/wf -l 327680 -b 32768 -d $2/realtime.1 -event_count 10 -event[0] write -event[1] write -event[2] write -event[3] write -event[4] write -event[5] write -event[6] write -event[7] write -event[8] write -event[9] write --------------------------------------------- -@@ Test of direct i/o (2 of 2): read -@@ -$1/rd -b 32768 -d $2/realtime.1 -event_count 11 -event[0] read -event[1] read -event[2] read -event[3] read -event[4] read -event[5] read -event[6] read -event[7] read -event[8] read -event[9] read -event[10] read --------------------------------------------- -@@ Standard i/o tests (1 of 7): open -@@ -$1/open_test $2/realtime.2 o_rdwr -event_count 1 -event[0] read --------------------------------------------- -@@ Standard i/o tests (2 of 7): open/trunc -@@ -$1/open_test $2/realtime.3 o_rdwr o_trunc -event_count 2 -event[0] truncate -event[1] attribute --------------------------------------------- -@@ Standard i/o tests (3 of 7): open/trunc/create -@@ -$1/open_test $2/realtime.4 o_rdwr o_trunc o_creat -event_count 1 -event[0] truncate --------------------------------------------- -@@ Standard i/o tests (4 of 7): open/create -@@ -$1/open_test $2/realtime.5 o_rdwr o_creat -event_count 1 -event[0] read --------------------------------------------- -@@ Standard i/o tests (5 of 7): append #1 -@@ -echo j >> $2/realtime.6 -event_count 1 -event[0] write -file_handle[0] store_in ls4temp --------------------------------------------- -@@ Standard i/o tests (6 of 7): append #2 -@@ -echo w >> $2/realtime.6 -event_count 1 -event[0] write -file_handle[0] matches ls4temp --------------------------------------------- -@@ Standard i/o tests (7 of 7): remove -@@ -/bin/rm $2/realtime.6 -event_count 3 -event[0] remove -event[1] destroy -event[2] postremove -name[1] test -contents[1] 123456789abcdefghijklmnopqrstuvwxyz diff --git a/dmapi/src/suite2/data/smallq.dat b/dmapi/src/suite2/data/smallq.dat deleted file mode 100644 index ee16075f..00000000 --- a/dmapi/src/suite2/data/smallq.dat +++ /dev/null @@ -1,78 +0,0 @@ -// -// Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -// -// This test will use the following files: -// -ctf stf ls_to_copy ctest.c -fcntl open_test truncate rd wf mmap_cp -read_invis write_invis -set_region set_return_on_destroy --------------------------------------------- -// These setup commands are run before the daemon starts. -// They reset the file structure of the test directory -// to a known state. -// -rm $real_dir/??? -$1/ctf $1 $real_dir -$1/stf $1 $real_dir/l?? -rm $real_dir/ctest.c -cp $1/ctest.c $real_dir -chown $lname $real_dir/l?? -chown $lname $real_dir/ctest.c -$1/set_return_on_destroy $real_dir test -print -print "Please resize your DMAPI event queue to hold about 2 to 10 events." --------------------------------------------- -@@ Slow i/o test: Do 10 open_tests -@@ -run_without_test -$1/open_test $2/ls0 o_rdwr & -$1/open_test $2/ls0 o_rdwr & -$1/open_test $2/ls0 o_rdwr & -$1/open_test $2/ls0 o_rdwr & -$1/open_test $2/ls0 o_rdwr & -$1/open_test $2/ls0 o_rdwr & -$1/open_test $2/ls0 o_rdwr & -$1/open_test $2/ls0 o_rdwr & -$1/open_test $2/ls0 o_rdwr & -$1/open_test $2/ls0 o_rdwr & --------------------------------------------- -@@ Slow i/o test: Append ten bytes to ls1 -@@ -run_without_test -echo J >> $2/ls1 & -echo a >> $2/ls1 & -echo y >> $2/ls1 & -echo w >> $2/ls1 & -echo a >> $2/ls1 & -echo s >> $2/ls1 & -echo h >> $2/ls1 & -echo e >> $2/ls1 & -echo r >> $2/ls1 & -echo e >> $2/ls1 & --------------------------------------------- -@@ Slow i/o test: Do one more, then stand back and wait! -@@ -$1/open_test $2/ls0 o_rdwr -event_count 21 -event[0] read -event[1] read -event[2] read -event[3] read -event[4] read -event[5] read -event[6] read -event[7] read -event[8] read -event[9] read -event[10] write -event[11] write -event[12] write -event[13] write -event[14] write -event[15] write -event[16] write -event[17] write -event[18] write -event[19] write -event[20] read diff --git a/dmapi/src/suite2/data/standard.dat b/dmapi/src/suite2/data/standard.dat deleted file mode 100644 index ceec0915..00000000 --- a/dmapi/src/suite2/data/standard.dat +++ /dev/null @@ -1,295 +0,0 @@ -// -// Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -// -// This test will use the following files: -// -ctf stf ls_to_copy ctest.c -fcntl open_test truncate rd wf mmap_cp -read_invis write_invis -set_region set_return_on_destroy --------------------------------------------- -// These setup commands are run before the daemon starts. -// They reset the file structure of the test directory -// to a known state. -// -rm $real_dir/??? -rm $real_dir/mmap_cp_testfile -$1/ctf $1 $real_dir -$1/stf $1 $real_dir/l?? -rm $real_dir/ctest.c -cp $1/ctest.c $real_dir -chown $lname $real_dir/l?? -chown $lname $real_dir/ctest.c -$1/set_return_on_destroy $real_dir test --------------------------------------------- -@@ Memory-mapped copying test: (1 of 3) -@@ -$1/mmap_cp $2/ll1 $2/mmap_cp_testfile -event_count 3 -event[0] create -event[1] postcreate -event[2] read --------------------------------------------- -@@ Memory-mapped copying test: (2 of 3) -@@ -$1/mmap_cp $2/ll1 $2/mmap_cp_testfile -event_count 1 -event[0] read --------------------------------------------- -@@ Memory-mapped copying test: (3 of 3) -@@ -$1/mmap_cp $2/ll1 $2/ll2 -event_count 2 -event[0] read -event[1] write --------------------------------------------- -@@ Preunmount/unmount test -@@ (note: if you abort before the next test, the -@@ filesystem will remain unmounted) -@@ -run_as_root -umount $3 -event_count 2 -event[0] preunmount -event[1] unmount -fs_handle[0] matches fs_handle[1] -fs_handle[0] store_in fsh -root_handle[0] store_in rh -unmount_mode[0] NOFORCE -unmount_mode[1] NOFORCE --------------------------------------------- -@@ Mount test -@@ (Note: assorted settings will be restored in next tests) -@@ -run_as_root -mount $3 -event_count 1 -event[0] mount -fs_handle[0] matches fsh -mountpoint_handle[0] -mountpoint_path[0] /dmitest -mode[0] 0 -root_handle matches rh --------------------------------------------- -@@ (after remount: restoring event dispositions on fs) -@@ -run_as_root -$1/send_msg reset_fs -event_count 1 -event[0] user -msg_str[0] reset_fs --------------------------------------------- -@@ (after remount: restoring managed regions on files -@@ and setting destroy events to return "test" attribute) -@@ -run_without_test -$1/stf $1 $real_dir/l?? -$1/set_return_on_destroy $real_dir test -------------------------------------------- -@@ Standard i/o tests (1 of 26): open -@@ -$1/open_test $2/ls0 o_rdwr -event_count 1 -event[0] read --------------------------------------------- -@@ Standard i/o tests (2 of 26): open/trunc -@@ -$1/open_test $2/ls1 o_rdwr o_trunc -event_count 2 -event[0] truncate -event[1] attribute --------------------------------------------- -@@ Standard i/o tests (3 of 26): open/trunc/create -@@ -$1/open_test $2/ls2 o_rdwr o_trunc o_creat -event_count 1 -event[0] truncate --------------------------------------------- -@@ Standard i/o tests (4 of 26): open/create -@@ -$1/open_test $2/ls3 o_rdwr o_creat -event_count 1 -event[0] read --------------------------------------------- -@@ Standard i/o tests (5 of 26): new file -@@ -$1/open_test $2/LS3 o_rdwr o_creat -event_count 2 -event[0] create -event[1] postcreate --------------------------------------------- -@@ Standard i/o tests (6 of 26): append #1 -@@ -echo j >> $2/ls4 -event_count 1 -event[0] write -file_handle[0] store_in ls4temp --------------------------------------------- -@@ Standard i/o tests (7 of 26): append #2 -@@ -echo j >> $2/ls4 -event_count 1 -event[0] write -file_handle[0] matches ls4temp --------------------------------------------- -@@ Standard i/o tests (8 of 26): remove -@@ -/bin/rm $2/ls4 -event_count 3 -event[0] remove -event[1] destroy -event[2] postremove -name[1] test -contents[1] 123456789abcdefghijklmnopqrstuvwxyz --------------------------------------------- -@@ Standard i/o tests (9 of 26): link -@@ -ln $2/ls5 $2/LS5 -event_count 2 -event[0] link -event[1] postlink --------------------------------------------- -@@ Standard i/o tests (10 of 26): deleting link -@@ -/bin/rm $2/LS5 -event_count 2 -event[0] remove -event[1] postremove --------------------------------------------- -@@ Standard i/o tests (11 of 26): return_on_destroy #1 -@@ -run_without_test -$1/set_return_on_destroy $real_dir --------------------------------------------- -@@ Standard i/o tests (12 of 26): return_on_destroy #2 -@@ -/bin/rm $2/ls5 -event_count 3 -event[0] remove -event[1] destroy -event[2] postremove -name[1] -contents[1] --------------------------------------------- -@@ Standard i/o tests (13 of 26) -@@ -$1/fcntl f_freesp -o 99999 -l 199999 $2/ls6 -event_count 2 -event[0] truncate -event[1] attribute --------------------------------------------- -@@ Standard i/o tests (14 of 26) -@@ -$1/fcntl f_freesp -o 1000 -l 10000 $2/ls6 -event_count 2 -event[0] truncate -event[1] attribute --------------------------------------------- -@@ Standard i/o tests (15 of 26) truncate #1 -@@ -$1/truncate $2/ls7 99999 -event_count 2 -event[0] truncate -event[1] attribute --------------------------------------------- -@@ Standard i/o tests (16 of 26) truncate #2 -@@ -$1/truncate $2/ls7 1000 -event_count 2 -event[0] truncate -event[1] attribute --------------------------------------------- -@@ Standard i/o tests (17 of 26) execute -@@ -$2/ls8 -l $real_dir -event[0] read -event[1] read -event[2] read -event[3] read -event[4] read -offset[0] 0 -length[0] 29604 -file_handle[0] matches file_handle[1] -file_handle[0] matches file_handle[2] -file_handle[0] matches file_handle[3] --------------------------------------------- -@@ Standard i/o tests (18 of 26) symlink -@@ -ln -s $2/junk $2/symlink -event_count 2 -event[0] symlink -event[1] postsymlink --------------------------------------------- -@@ Standard i/o tests (19 of 26) deleting symlink -@@ -/bin/rm $2/symlink -event_count 3 -event[0] remove -event[1] destroy -event[2] postremove --------------------------------------------- -@@ Standard i/o tests (20 of 26) mkdir -@@ -mkdir $2/unlikely-named-test-dir -event_count 2 -event[0] create -event[1] postcreate --------------------------------------------- -@@ Standard i/o tests (21 of 26) rmdir -@@ -rmdir $2/unlikely-named-test-dir -event_count 3 -event[0] remove -event[1] destroy -event[2] postremove --------------------------------------------- -@@ Standard i/o tests (22 of 26) rename -@@ -mv $2/ls8 $2/LS8 -event_count 2 -event[0] rename -event[1] postrename --------------------------------------------- -@@ Standard i/o tests (23 of 26) copy (new) -@@ -cp $2/ls9 $2/LS9 -event_count 9 -event[0] create -event[1] postcreate -event[2] attribute -event[3] read -event[4] read -event[5] read -event[6] read -event[7] read -event[8] attribute --------------------------------------------- -@@ Standard i/o tests (24 of 26) copy (onto old) -@@ -cp $2/LS9 $2/ls9 -event_count 5 -event[0] truncate -event[1] write -event[2] write -event[3] write -event[4] write --------------------------------------------- -@@ Standard i/o tests (25 of 26) memory-mapped i/o -@@ -// Note to self: don't check event_count -// -cc -o $2/ll0 $2/ctest.c -event[0] truncate -event[1] write -event[2] attribute -event[3] read -event[4] write --------------------------------------------- -@@ Standard i/o tests (26 of 26) executing -@@ -$2/ll0 -event[0] read -event[1] read -event[2] read -event[3] read -event[4] read diff --git a/dmapi/src/suite2/data/standard_nfs.dat b/dmapi/src/suite2/data/standard_nfs.dat deleted file mode 100644 index 61af94eb..00000000 --- a/dmapi/src/suite2/data/standard_nfs.dat +++ /dev/null @@ -1,219 +0,0 @@ -// -// Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -// -// This test will use the following files: -// -ctf stf ls_to_copy ctest.c -fcntl open_test truncate rd wf -read_invis write_invis -set_region set_return_on_destroy --------------------------------------------- -// These setup commands are run before the daemon starts. -// They reset the file structure of the test directory -// to a known state. -// -rm $real_dir/??? -$1/ctf $1 $real_dir -$1/stf $1 $real_dir/l?? -rm $real_dir/ctest.c -cp $1/ctest.c $real_dir -chown $lname $real_dir/l?? -chown $lname $real_dir/ctest.c -$1/set_return_on_destroy $real_dir test --------------------------------------------- -@@ Standard i/o tests (1 of 26): open -@@ -$1/open_test $2/ls0 o_rdwr -event_count 1 -event[0] read --------------------------------------------- -@@ Standard i/o tests (2 of 26): open/trunc -@@ -$1/open_test $2/ls1 o_rdwr o_trunc -event_count 2 -event[0] truncate -event[1] attribute --------------------------------------------- -@@ Standard i/o tests (3 of 26): open/trunc/create -@@ -$1/open_test $2/ls2 o_rdwr o_trunc o_creat -event_count 1 -event[0] truncate --------------------------------------------- -@@ Standard i/o tests (4 of 26): open/create -@@ -$1/open_test $2/ls3 o_rdwr o_creat -event_count 1 -event[0] read --------------------------------------------- -@@ Standard i/o tests (5 of 26): new file -@@ -$1/open_test $2/LS3 o_rdwr o_creat -event_count 2 -event[0] create -event[1] postcreate --------------------------------------------- -@@ Standard i/o tests (6 of 26): append #1 -@@ -echo j >> $2/ls4 -event_count 2 -event[0] read -event[1] write -file_handle[0] store_in ls4temp --------------------------------------------- -@@ Standard i/o tests (7 of 26): append #2 -@@ -echo j >> $2/ls4 -event_count 1 -event[0] write -file_handle[0] matches ls4temp --------------------------------------------- -@@ Standard i/o tests (8 of 26): remove -@@ -/bin/rm $2/ls4 -event_count 3 -event[0] remove -event[1] destroy -event[2] postremove -name[1] test -contents[1] 123456789abcdefghijklmnopqrstuvwxyz --------------------------------------------- -@@ Standard i/o tests (9 of 26): link -@@ -ln $2/ls5 $2/LS5 -event_count 2 -event[0] link -event[1] postlink --------------------------------------------- -@@ Standard i/o tests (10 of 26): deleting link -@@ -/bin/rm $2/LS5 -event_count 2 -event[0] remove -event[1] postremove --------------------------------------------- -@@ Standard i/o tests (11 of 26): return_on_destroy #1 -@@ -run_without_test -$1/set_return_on_destroy $real_dir --------------------------------------------- -@@ Standard i/o tests (12 of 26): return_on_destroy #2 -@@ -/bin/rm $2/ls5 -event_count 3 -event[0] remove -event[1] destroy -event[2] postremove -name[1] -contents[1] --------------------------------------------- -@@ Standard i/o tests (13 of 26) -@@ -$1/fcntl f_freesp -o 99999 -l 199999 $2/ls6 -event_count 2 -event[0] truncate -event[1] attribute --------------------------------------------- -@@ Standard i/o tests (14 of 26) -@@ -$1/fcntl f_freesp -o 1000 -l 10000 $2/ls6 -event_count 2 -event[0] truncate -event[1] attribute --------------------------------------------- -@@ Standard i/o tests (15 of 26) truncate #1 -@@ -$1/truncate $2/ls7 99999 -event_count 2 -event[0] truncate -event[1] attribute --------------------------------------------- -@@ Standard i/o tests (16 of 26) truncate #2 -@@ -$1/truncate $2/ls7 1000 -event_count 2 -event[0] truncate -event[1] attribute --------------------------------------------- -@@ Standard i/o tests (17 of 26) execute -@@ -$2/ls8 -l $real_dir -event_count 4 -event[0] read -event[1] read -event[2] read -event[3] read --------------------------------------------- -@@ Standard i/o tests (18 of 26) symlink -@@ -ln -s $2/junk $2/symlink -event_count 2 -event[0] symlink -event[1] postsymlink --------------------------------------------- -@@ Standard i/o tests (19 of 26) deleting symlink -@@ -/bin/rm $2/symlink -event_count 3 -event[0] remove -event[1] destroy -event[2] postremove --------------------------------------------- -@@ Standard i/o tests (20 of 26) mkdir -@@ -mkdir $2/unlikely-named-test-dir -event_count 2 -event[0] create -event[1] postcreate --------------------------------------------- -@@ Standard i/o tests (21 of 26) rmdir -@@ -rmdir $2/unlikely-named-test-dir -event_count 3 -event[0] remove -event[1] destroy -event[2] postremove --------------------------------------------- -@@ Standard i/o tests (22 of 26) rename -@@ -mv $2/ls8 $2/LS8 -event_count 2 -event[0] rename -event[1] postrename --------------------------------------------- -@@ Standard i/o tests (23 of 26) copy (new) -@@ -cp $2/ls9 $2/LS9 -event_count 8 -event[0] create -event[1] postcreate -event[2] attribute -event[3] read -event[4] read -event[5] read -event[6] read -event[7] attribute --------------------------------------------- -@@ Standard i/o tests (24 of 26) copy (onto old) -@@ -cp $2/LS9 $2/ls9 -event_count 5 -event[0] truncate -event[1] write -event[2] write -event[3] write -event[4] write --------------------------------------------- -@@ Standard i/o tests (25 of 26) memory-mapped i/o -@@ -// Note to self: don't check event_count -// -cc -o $2/ll0 $2/ctest.c -event[0] truncate -event[1] attribute -event[2] write --------------------------------------------- -@@ Standard i/o tests (26 of 26) executing -@@ -$2/ll0 -event_count 0 diff --git a/dmapi/src/suite2/dist/README b/dmapi/src/suite2/dist/README deleted file mode 100644 index cfff0b80..00000000 --- a/dmapi/src/suite2/dist/README +++ /dev/null @@ -1,435 +0,0 @@ -# -# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. -# - DMAPI Test Suite - Informational File - ------------------ - -I) Getting Started - - A) Extracting from DMAPI_test.cpio - - 1) Create a new directory for storing the tests. We will refer to - this as the "base" directory. The base directory can be - located anywhere; it does NOT need to be in a DMAPI filesystem. - - 2) Move the archive file DMAPI_test.cpio to the base directory - and execute the following command to extract from the archive: - - cat DMAPI_test.cpio | cpio -icd - - 3) There should now be several files and subdirectories in the base - directory, including the file "file_list". Read this file for a - complete listing of which files should be present in which - directories. Compare "file_list" with the output of "ls -Rpl" - to be sure that you have the necessary files. - - 4) The base directory contains the files and programs that are of - immediate use for testing. The "bindir" subdirectory contains - the test programs and datafiles. The "lib" and "src" subdirectories - contain C libraries and source code for the C programs. - - B) Checking the Existence and Version of DMAPI - - The program check_dmapi can verify that you have the correct - version of DMAPI installed. Note: it can only be run as root. - Execute this command (from the "base" directory): - - bindir/check_dmapi - - It should report that you have a current version of DMAPI. If it - does not, it will also suggest which components of your DMAPI are - not current, and where to find a patch to update them. - - C) Configuration - - 1) Creating the Test Directories - - a) The Test Filesystem - - Mount a DMAPI filesystem, or use an existing one. - This filesystem's mount info MUST be listed in /etc/fstab. - - Write down the path to this filesystem's mountpoint, and label - it as "m_main" for future use. - - b) The Main Test Directory - - Create a new directory in the "m_main" filesystem. - - Write down the path to this directory. Note ONLY the part - that comes AFTER "m_main". Label this as "d_name". - - EXAMPLE: You have a DMAPI filesystem /dmi_main - You name the test directory /dmi_main/test_dir - "m_main" is /dmi_main - "d_name" is /test_dir - - c) The Cross-NFS Test Directories - - For NFS tests, all you must do is create two empty directories - (one for nfs2, one for nfs3). They do NOT need to be in a - DMAPI filesystem. - - Your main test directory will be mounted across NFS, into these - two directories. Normally, the tests will do this automatically. - However, if you need to do this mount manually, the command - would look like this example: - - mount -t nfs2 localhost:/dmi_main /dmi_nfs2 - - Write down the paths to these nfs2 and nfs3 test directories. - Label them "m_nfs2" and "m_nfs3" respectively. - - c) The Realtime Test Filesystem and Directory - - If you wish to test realtime i/o, you'll need a filesystem - mounted with a realtime partition, and a directory in that - filesystem. - - Label the path to the filesystem mountpoint as "m_rt". - Label the path to the test directory as "d_rt". - - 2) Configuring menu_test - - The Korn-shell script named menu_test is an interface to the - other test programs. At the beginning of the script, there - is a "configuration section", in which is sets several variables - for use in the rest of the script. - - Open menu_test in any text editor and change the following - variable assignments in the configuration section: - - a) base_dir: - Set this to the pathname of your "base" directory - (where you un-archived "DMAPI_test.cpio"). - - b) p_user: - Tests that do not run as root will run as this "primary" user. - Set this to any username. - - c) m_main: - The mountpoint of the main test filesystem. - Set this to the value of "m_main" that you wrote down above. - - d) d_name: - m_main concatenated with d_name is the main test directory path. - Set this to the value for "d_name" that you wrote down above. - - e) m_nfs2: - The mountpoint of the nfs2 test filesystem. - Set this to the value of "m_nfs2" that you wrote down above. - - f) m_nfs2: - The mountpoint of the nfs3 test filesystem. - Set this to the value of "m_nfs3" that you wrote down above. - - g) m_rt: - The mountpoint of the realtime test filesystem. - Set this to the value of "m_rt" that you wrote down above. - - h) d_rt: - The path to the realtime test directory. - Set this to the value of "d_rt" that you wrote down above. - - 3) Configuring "DMAPI_aliases" - - This is an optional alternative to the menu interface. It runs - as a Korn shell "dot" script and creates an alias to each test. - It was made for those who wish to run tests directly from the - command line. - - DMAPI_aliases has exactly the same configuration section as - menu_test. If you wish to use DMAPI_aliases, make the same - changes to its configuration section. - -II) Running the Tests - - A) Using "menu_test" to run tests - - 1) You must be superuser, using the Korn shell, to run menu_test. - You also must have adjusted the variables in menu_test's - "configuration section", as was explained above. - - 2) menu_test is (surprise!) menu based. Choose options by entering - their numbers. - - 3) The names of the menu options explain which DMAPI functions - or DMAPI events are being tested. Some of the options, labeled - accordingly, run more than one test programs. - - 4) See section SECTION# for a list of the test scripts and programs, - and a brief explanation of each script or program's function. - - B) Using "DMAPI_aliases" to run tests - - 1) NOTE: The aliases in DMAPI_aliases are meant to be used by - those who are familiar with the test programs and wish to run - them more directly. [Designer's note: I included the alias - file more out of nostalgia than necessity.] - - 2) You should be superuser, using the Korn shell, to run DMAPI_aliases. - You also must have adjusted the variables in DMAPI_aliases's - "configuration section", as was explained above. - - 3) DMAPI_aliases should be invoked as a Korn shell "dot" script: - - . ./DMAPI_aliases - - It sets an alias for each test program; each alias begins with - the characters "do_" and is followed by some appropriate name. - Read DMAPI_aliases, or execute "alias | grep do", to - - C) Running tests directly - - 1) For the VERY adventurous, all the tests in the "bindir" directory - can be run directly from the command line. Only some of the files - in "bindir" are test scripts/programs. Read section III for a list - of function tests and section IV for a list of run_test (.dat) - testfiles. - - 2) Running a test program without parameters will produce a list of - correct options. (The exception to this is check_dmapi, which - normally has no parameters. check_dmapi takes only one option, - [-v] for verbose output.) - - 3) It is suggested that you read a program's source before running - it directly. (The source of the C programs is included in the - "src" directory.) Specificually, in each source file, an initial - comment explains the program's options/parameters in detail. - -III) DMAPI Function tests: - - This section offers a terse description of the DMAPI function tests. - For those tests written in C, the source code is given in the "src" - directory. The ksh scripts can, of course, be read directly. - In all cases except check_dmapi, running the program without - parameters will produce a list of correct options. - - A) check_dmapi - Written in: C - Test of: presence (and correct version) of DMAPI library and kernel. - Options: [-v] flag for verbose output. - - B) test_dmattr - Written in: C - Test of: dm_get_dmattr, dm_set_dmattr, dm_remove_dmattr. - - C) test_efault - Written in: C - Test of: various bad function calls that should generate EFAULT, - according to the DMAPI specification. - - D) test_eventlist - Written in: C - Test of: dm_get_eventlist, dm_set_eventlist. - - E) test_fileattr - Written in: C - Test of: dm_get_fileattr, dm_set_fileattr, - dm_get_dirattrs, dm_get_bulkattr. - - F) test_hole - Written in: C - Test of: dm_probe_hole, dm_punch_hole. - - G) test_invis - Written in: C - Test of: dm_read_invis, dm_write_invis. - - H) test_region - Written in: C - Test of: dm_get_region, dm_set,region. - - I) test_rights - Written in: C - Test of: various bad function calls that should generate EACCES, - and other conditions pertaining to DMAPI rights. - - J) test_allocinfo_1 - Written in: ksh - Test of: dm_get_allocinfo. - - K) test_allocinfo_2 - Written in: ksh - Test of: dm_get_allocinfo. - -IV) DMAPI Event tests and the "run_test" ksh script - - A) How to use the "run_test" script - - 1) A quick description of run_test's behavior: - run_test invokes a DMAPI daemon (as a ksh coprocess). It then - reads a "testfile", which contains a description of the test. - - 2) You must be superuser, using the Korn shell, to execute run_test. - - 3) Executing run_test without parameters will produce a list of - correct options. For a much more in-depth explanation of the - options to run_test, read its own initial comment. - - B) The existing .dat testfiles - - 1) fail.dat - 2) main.dat - 3) nfs.dat - 4) old_nfs3.dat - 5) pending.dat - 6) pending_nfs.dat - 7) realtime.dat - 8) smallq.dat - 9) standard.dat - 10) standard_nfs.dat - - C) How to write ".dat" testfiles - - 1) Overview - - A testfile contains a complete description of a DMAPI event test. - Testfiles are divided into sections: the first two contain - test initialization, while the remaining sections each contain ONE - command, followed by a list of expected events. - - The following is a description of testfile syntax. If you wish to - fully understand testfile syntax, PLEASE examine the existing - testfiles and the "run_test" script. - - 2) Event information variables - - a) From the daemon, "run_test" gets information about DMAPI events. - This information is stored in event information variables. - - b) NOTE: event information variables are not persistant. - After "run_test" has compared the expected and actual events - for a command, and before it executes the next command, it - unsets the values of all these variables. - - c) Most of these variables are arrays, indexed by the number of - the event (starting with 0). For example, if the initial event - is a read event, then we have "event[0]" set to "read", and - "file_handle[0]" set to the handle of whatever file was read. - - d) "event_count" is a special variable. It holds the number of - events that were generated by the most recent command. - - e) These are all the event information variables: - - contents event event_count fs_handle handle length - offset media_designator mode mountpoint_handle - mountpoint_path msg_str name new_name new_parent - parent_handle ret_code root_handle sequence token - tries_left unmount_mode - - f) PLEASE examine the run_test script to see which variables - are set by which events. (The scheme corresponds, roughly, - to the "Event Types" section of the DMAPI specification.) - - 3) Testfile section 1: List of required files - - a) A testfile's first section is a list of the files it requires. - If these files are not present in the "bindir" directory, - "run_test" will abort the test and inform the user of which - files are missing. - - b) Each line of this section may contain ANY NUMBER of filenames. - - c) Lines beginning with // will be treated as comments. The - entirety of such lines will be ignored. - - d) The last line of this section should begin with three hyphens - --- Other characters on that line will be ignored. - - 4) Testfile section 2: Initialization commands - - a) A testfile's second section consists of a list of commands. - "run_test" will execute these commands before starting the - DMAPI daemon. Any necessary initialization should be done - here. - - b) Each line of this section should be ONE shell command. - - c) Lines beginning with // will be treated as comments. - The entirety of such lines will be ignored. - - d) The last line of this section should begin with three hyphens - "---" Other characters on that line will be ignored. - - 5) Testfile sections 3 and on: Individual tests - - a) The remaining sections of a testfile consist of a single - shell command, followed by descriptions of events that should - be generated by the command. - - b) Comments - - 1) Comments are valid ONLY before the command. - - 2) Lines beginning with // will be treated as comments. - The entirety of such lines will be ignored. - - 3) Lines beginning with @@ will be treated as "print" comments. - Such lines will not be parsed, but they will be printed to - standard output during the test. This is useful for - describing what each test does. - - c) Valid grammar for the command itself - - 1) Standard command syntax: - This should be ONE shell command, on a line by itself. - - 2) Alternate command syntax: - - A) run_as_root: - If the test is preceeded by the metacommand "run_as_root" - (on a line by itself) then the command will be run as - root rather than as "p_user". The command should still - be one command on a line by itself. - - B) run_without_test: - If the test is preceeded by the metacommand - "run_without_test" (on a line by itself), then ALL - subsequent lines in the section will be executed as - commands, and NO testing will be performed. Note that - the commands will be executed as root. This is useful - for re-initialization sections during a test. - - d) Valid grammar for the "expected events" lines - - 1) [variable_name] [value] - This specifies that the variable [variable_name] should be - set to [value]. - - 2) [variable_name_1] matches [variable_name_2] - This specifies that both variables should be set to - the same value. A list of valid variables - - 3) [variable_name] store_in [string] - This specifies that the contents of [variable_name] - should be stored in a variable named [string]. - The variable [string] can then be referenced as a - variable in later tests. - - EXAMPLE: if two commands deal with the file "foobar", - you might want to check that they both use the same handle. - In the first section, write - "handle[0] store_in old_handle_0" - In the second section, write - "old_handle_0 matches handle[0]" - - 4) failure - This specifies that the command is expected to fail - (return some non-zero exit status). If "failure" - is not specified, the command is expected to succeed. - - e) The last line of these sections should begin with three - hyphens "---". Other characters on that line will be ignored. - - 6) Sending messages to the DMAPI daemon - - - 7) Other "helper functions" for testfiles - - - - - diff --git a/dmapi/src/suite2/lib/errtest.h b/dmapi/src/suite2/lib/errtest.h deleted file mode 100644 index c70be672..00000000 --- a/dmapi/src/suite2/lib/errtest.h +++ /dev/null @@ -1,219 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ -#ifndef __ERRTEST_SEEN -#define __ERRTEST_SEEN - -#include -#include -#include -#include - -#define NUM_ERRS 100 - -void* handle_clone(void* src_hanp, u_int hlen ); - -char * -errno_names[] = { - "ERROR_0", - "EPERM", - "ENOENT", - "ESRCH", - "EINTR", - "EIO", - "ENXIO", - "E2BIG", - "ENOEXEC", - "EBADF", - "ECHILD", - "EAGAIN", - "ENOMEM", - "EACCES", - "EFAULT", - "ENOTBLK", - "EBUSY", - "EEXIST", - "EXDEV", - "ENODEV", - "ENOTDIR", - "EISDIR", - "EINVAL", - "ENFILE", - "EMFILE", - "ENOTTY", - "ETXTBSY", - "EFBIG", - "ENOSPC", - "ESPIPE", - "EROFS", - "EMLINK", - "EPIPE", - "EDOM", - "ERANGE", - "ENOMSG", - "EIDRM", - "ECHRNG", - "EL2NSYNC", - "EL3HLT", - "EL3RST", - "ELNRNG", - "EUNATCH", - "ENOCSI", - "EL2HLT", - "EDEADLK", - "ENOLCK", - "ERROR_47", - "ERROR_48", - "ERROR_49", - "EBADE", - "EBADR", - "EXFULL", - "ENOANO", - "EBADRQC", - "EBADSLT", - "EDEADLOCK", - "EBFONT", - "ERROR_58", - "ERROR_59", - "ENOSTR", - "ENODATA", - "ETIME", - "ENOSR", - "ENONET", - "ENOPKG", - "EREMOTE", - "ENOLINK", - "EADV", - "ESRMNT", - "ECOMM", - "EPROTO", - "ERROR_72", - "ERROR_73", - "EMULTIHOP", - "ERROR_75", - "ERROR_76", - "EBADMSG", - "ENAMETOOLONG", - "EOVERFLOW", - "ENOTUNIQ", - "EBADFD", - "EREMCHG", - "ELIBACC", - "ELIBBAD", - "ELIBSCN", - "ELIBMAX", - "ELIBEXEC", - "EILSEQ", - "ENOSYS", - "ELOOP", - "ERESTART", - "ESTRPIPE", - "ENOTEMPTY", - "EUSERS", - "ENOTSOCK", - "EDESTADDRREQ", - "EMSGSIZE", - "EPROTOTYPE", - "ENOPROTOOPT" }; - -#define ERR_NAME \ - ((errno -#include -#ifdef linux -#include -#else -#include -#endif - -#include -#include -#include -#include -#include -#include - -#include -#include - -#ifdef linux -#include -#endif - -/*--------------------------------------------------------------------------- -Automated test of version of DMAPI libraries & kernels - -The command line is: - - check_dmapi [-v] - -where v is a verbose-output flag -----------------------------------------------------------------------------*/ -#ifdef linux -#define CREATE_DESTROY_OPCODE DM_DESTROY_SESSION -#define SET_DISP_OPCODE DM_SET_DISP -#else -#define CREATE_DESTROY_OPCODE 5 -#define SET_DISP_OPCODE 46 -#endif - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - -char *Progname; - -int dmi(int, ...); - -static void -usage(void) -{ - int i; - - fprintf(stderr, "usage:\t%s [-v]\n" - "\t(use the v switch for verbose output)\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t old_sid = -1; - dm_sessid_t sid; - void *hanp; - size_t hlen; - dm_token_t token = DM_NO_TOKEN; - int Vflag = 0; - char *name = "old"; - char *junk = "test junk"; - int opt; - int i; - int kernel_status=-1; - int library_status=-1L; - dm_size_t retval; - struct stat stat_buf; - - if (Progname = strrchr(argv[0], '/')) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "v")) != EOF) { - switch (opt) { - case 'v': - Vflag++; - break; - case '?': - usage(); - } - } - if (optind != argc) - usage(); - - - if (geteuid()!=0) { - printf("You are running as user #%d. " - "You must be root to run this diagnostic.\n", geteuid()); - exit(1); - } - - /*-------------------------- - * RESOLVE KERNEL PRESENCE: - *-------------------------- - */ - if (dmi(CREATE_DESTROY_OPCODE, old_sid, junk, &sid) >= 0) { - printf("ERROR: invalid kernel create/destroy_session call " - "succeeded!\n"); - exit(1); - } - else if (errno==ENOPKG) { - kernel_status=0; - } - else if (errno==EINVAL){ - if (Vflag) printf("(create/destroy_session call verifies " - "that you have DMAPI in kernel)\n"); - } - else { - printf("ERROR: kernel create/destroy_session call produced " - "unexpected errno, (%d) %s\n", errno, strerror(errno)); - } - - /*---------------------------------- - * RESOLVE KERNEL STATUS IF PRESENT: - *---------------------------------- - */ - if (kernel_status==-1 && - dmi(SET_DISP_OPCODE, - (dm_sessid_t) 0, - (void*) 0, - (size_t) 0, - (dm_token_t) 0, - (dm_eventset_t) 0, - (u_int) 0) >= 0) { - printf("ERROR: invalid kernel set_disp call suceeded!\n"); - } - else { - if (errno==ENOSYS) { - if (Vflag) - printf("(kernel set_disp call indicates old kernel)\n"); - kernel_status=1; - } - else if (errno==ENOPKG) { - if (Vflag) - printf("(kernel set_disp call indicates no kernel)\n"); - kernel_status=0; - } - else if (errno==EINVAL) { - if (Vflag) - printf("(kernel set_disp call indicates new kernel)\n"); - kernel_status=2; - } - else { - printf("ERROR: kernel set_disp call failed: (%d) %s\n", - errno, strerror(errno)); - exit(1); - } - } - - /*------------------------- - * RESOLVE LIBRARY STATUS: - *------------------------- - */ - if (dm_init_service(&name) == -1) { - fprintf(stderr, "ERROR: can't initialize the DMAPI (%s).\n", - strerror(errno)); - library_status=0; - } - else if (strcmp(name, DM_VER_STR_CONTENTS)) { - if (Vflag) - printf("(dm_init_service suggests that " - "you have an old library)\n"); - library_status=1; - } - else { - if (Vflag) - printf("(dm_init_service suggests that " - "you have a new library)\n"); - library_status=2; - } - - if (Vflag) printf("(dm_init_service returned %s)\n", name); - - /*------------------------- - * MAKE A DIAGNOSIS: - *------------------------- - */ - - if (library_status==2 && kernel_status==2){ - printf("DIAGNOSIS: Tests show a current version of " - "DMAPI is installed.\n"); - } - else if (library_status==1 && kernel_status==1) { - printf("DIAGNOSIS: Tests show that you have an outdated " - "installation of DMAPI.\nUpgrades to both kernel and " - "library routines will be necessary.\n"); - } - else if (library_status==0 && kernel_status==0) { - printf("DIAGNOSIS: Tests show that NO components of the DMAPI " - "are installed!\nUpgrades to both kernel and " - "library routines will be necessary.\n"); - } - else { - printf("DIAGNOSIS: Tests show that:\n" - "Your DMAPI kernel routines are "); - switch (kernel_status) { - case 0: printf ("missing (not installed).\n"); - break; - case 1: printf ("outdated.\n"); - break; - case 2: printf ("current.\n "); - break; - default: printf("[ERROR!].\n"); - } - printf("Your DMAPI library is "); - switch (library_status) { - case 0: printf ("missing (not installed).\n"); - break; - case 1: printf ("outdated.\n"); - break; - case 2: printf ("current.\n"); - break; - default: printf("[ERROR!].\n"); - } - } -#ifndef linux - if (library_status!=2 || kernel_status!=2){ - printf("Please install XFS patch 1907 (for IRIX 6.2) or " - "patch 2287 (for IRIX 6.4).\n"); - } -#endif -} - - - diff --git a/dmapi/src/suite2/src/dm_test_daemon.c b/dmapi/src/suite2/src/dm_test_daemon.c deleted file mode 100644 index 1ad778ed..00000000 --- a/dmapi/src/suite2/src/dm_test_daemon.c +++ /dev/null @@ -1,1327 +0,0 @@ - - -/* - * dm_test_daemon.c - * - * Joseph Jackson - * 25-Jun-1996 - * - * Additions: - * Jay Woodward - * 6-Aug-1997 - * - * Monitor all events for a file system. - * When one arrives, print a message with all the details. - * If the message is synchronous, always reply with DM_RESP_CONTINUE - * (This program doesn't perform any real file system or HSM work.) - * - * This is a simplification of the "migin.c" example program. - * The original code was by Peter Lawthers: - * This code was written by Peter Lawthers, and placed in the public - * domain for use by DMAPI implementors and app writers. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - - /* - * Define some standard formats for the printf statements below. - */ - -#define HDR "%s\ntoken :%d\nsequence :%d\n" -#define VALS "%-15s:%s\n" -#define VALD "%-15s:%d\n" -#define VALLLD "%-15s:%lld\n" - -extern int optind; -extern int errno; - -void usage (char *); -int main (int, char **); -static void event_loop (dm_sessid_t, int); -int handle_message (dm_sessid_t, dm_eventmsg_t *); -static int format_mode(mode_t mode, char **ptr); -static int get_fs_handle (char *, void **, size_t *); -static int set_disposition(dm_sessid_t, void *, size_t); -static int set_events (dm_sessid_t, void *, size_t); -static int clear_events (dm_sessid_t, void *, size_t); -int finish_responding(dm_sessid_t); -int establish_handler(void); -void exit_handler (int); - -/* - * Keep these global so the exit_handler and err_msg routines can get to them - */ -char *Progname; -int Sleep = 0; -int Verbose; -dm_sessid_t sid = 0; -dm_sessid_t oldsid = 0; -char *fsname; -int friendly=1; -int unfriendly_errno=EBADMSG; -int unfriendly_count=0; -int pending_count=0; -int token_arr[10]; -int arr_top=0; - -void -usage( - char *prog) -{ - fprintf(stderr, "Usage: %s ", prog); - fprintf(stderr, "<-s sleeptime> <-S oldsid> <-v verbose> "); - fprintf(stderr, "filesystem \n"); -} - - -int -main( - int argc, - char *argv[]) -{ - - int c; - int error; - void *fs_hanp; - size_t fs_hlen; - char buf[BUFSIZ + 8]; - - Progname = argv[0]; - fsname = NULL; - - while ((c = getopt(argc, argv, "vs:S:")) != EOF) { - switch (c) { - case 's': - Sleep = atoi(optarg); - break; - case 'S': - oldsid = atoi(optarg); - break; - case 'v': - Verbose = 1; - break; - case '?': - default: - usage(Progname); - exit(1); - } - } - if (optind >= argc) { - usage(Progname); - exit(1); - } - fsname = argv[optind]; - if (fsname == NULL) { - usage(Progname); - exit(1); - } - - /* - * Establish an exit handler - */ - error = establish_handler(); - if (error) - exit(1); - - /* - * Init the dmapi, and get a filesystem handle so - * we can set up our events - */ - - if (oldsid) { - sid = oldsid; - } else { - error = setup_dmapi(&sid); - if (error) - exit(1); - } - - error = get_fs_handle(fsname, &fs_hanp, &fs_hlen); - if (error) - goto cleanup; - - /* - * Set the event disposition so that our session will receive - * all the events for the given file system - */ - error = set_disposition(sid, fs_hanp, fs_hlen); - if (error) - goto cleanup; - - /* - * Enable monitoring for all events in the given file system - */ - error = set_events(sid, fs_hanp, fs_hlen); - if (error) - goto cleanup; - - /* - * Set line buffering!! - */ - error = setvbuf(stdout, buf, _IOLBF, BUFSIZ); - if (error) - goto cleanup; - - /* - * Now sit in an infinite loop, reporting on any events that occur. - * The program is exited after a signal through exit_handler(). - */ - printf("\n"); - event_loop(sid, 1 /*waitflag*/); - - /* - * If we get here, cleanup after the event_loop failure - */ - cleanup: - exit_handler(0); - return(1); -} - - -/* - * Main event loop processing - * - * The waitflag argument is set to 1 when we call this from main(). - * In this case, continuously process incoming events, - * blocking if there are none available. - * In the exit_handler(), call this routine with waitflag=0. - * Just try to read the events once in this case with no blocking. - */ - -static void -event_loop( - dm_sessid_t sid, - int waitflag) -{ - void *msgbuf; - size_t bufsize; - int error; - dm_eventmsg_t *msg; - int count; - - /* - * We take a swag at a buffer size. If it's wrong, we can - * always resize it - */ - - bufsize = sizeof(dm_eventmsg_t) + sizeof(dm_data_event_t) + HANDLE_LEN; - bufsize *= 50; - msgbuf = (void *)malloc(bufsize); - if (msgbuf == NULL) { - err_msg("Can't allocate memory for buffer"); - return; - } - - for (;;) { - error = dm_get_events(sid, ALL_AVAIL_MSGS, - waitflag ? DM_EV_WAIT:0, bufsize, msgbuf, &bufsize); - if (error) { - if (errno == EAGAIN) { - if (waitflag) - continue; - break; - } - if (errno == E2BIG) { - free(msgbuf); - msgbuf = (void *)malloc(bufsize); - if (msgbuf == NULL) { - err_msg("Can't resize msg buffer"); - return; - } - continue; - } - errno_msg("Error getting events from DMAPI"); - break; - } - - /* - * Walk through the message buffer, pull out each individual - * message, and dispatch the messages to handle_message(), - * which will respond to the events. - */ - - count = 0; - msg = (dm_eventmsg_t *)msgbuf; - while (msg != NULL ) { - count++; - error = handle_message(sid, msg); - if (error) { - free(msgbuf); - return; - } - printf("end_of_message\n"); - msg = DM_STEP_TO_NEXT(msg, dm_eventmsg_t *); - } - if (count != 1 && Verbose) { - err_msg("Found %d events in one call to " - "dm_get_events\n", count); - } - } - if (msgbuf != NULL) - free(msgbuf); -} - - -void -print_one_mount_event( - void *msg) -{ - void *hanp1, *hanp2, *hanp3; - size_t hlen1, hlen2, hlen3; - char hans1[HANDLE_STR], hans2[HANDLE_STR], hans3[HANDLE_STR]; - void *namp1, *namp2; - size_t nlen1, nlen2; - char nams1[NAME_MAX + 1], nams2[NAME_MAX + 1]; - mode_t mode; - -#if VERITAS - dm_namesp_event_t *msg_ne = (dm_namesp_event_t *)msg; - - msg_ne = DM_GET_VALUE(msg, ev_data, dm_namesp_event_t *); - hanp1 = DM_GET_VALUE(msg_ne, ne_handle1, void *); - hlen1 = DM_GET_LEN (msg_ne, ne_handle1); - hanp2 = DM_GET_VALUE(msg_ne, ne_handle2, void *); - hlen2 = DM_GET_LEN (msg_ne, ne_handle2); - namp1 = DM_GET_VALUE(msg_ne, ne_name1, void *); - nlen1 = DM_GET_LEN (msg_ne, ne_name1); - namp2 = DM_GET_VALUE(msg_ne, ne_name2, void *); - nlen2 = DM_GET_LEN (msg_ne, ne_name2); - rootp = NULL; - rlen = 0; - mode = msg_ne->ne_mode; -#else - dm_mount_event_t *msg_me = (dm_mount_event_t *)msg; - - hanp1 = DM_GET_VALUE(msg_me, me_handle1, void *); - hlen1 = DM_GET_LEN(msg_me, me_handle1); - hanp2 = DM_GET_VALUE(msg_me, me_handle2, void *); - hlen2 = DM_GET_LEN(msg_me, me_handle2); - namp1 = DM_GET_VALUE(msg_me, me_name1, void *); - nlen1 = DM_GET_LEN(msg_me, me_name1); - namp2 = DM_GET_VALUE(msg_me, me_name2, void *); - nlen2 = DM_GET_LEN(msg_me, me_name2); - hanp3 = DM_GET_VALUE(msg_me, me_roothandle, void *); - hlen3 = DM_GET_LEN(msg_me, me_roothandle); - mode = msg_me->me_mode; -#endif /* VERITAS */ - - if (hanp1 && hlen1) { - hantoa(hanp1, hlen1, hans1); - } else { - sprintf(hans1, "", hlen1); - } - if (hanp2 && hlen2) { - hantoa(hanp2, hlen2, hans2); - } else { - sprintf(hans2, "", hlen2); - } - if (hanp3 && hlen3) { - hantoa(hanp3, hlen3, hans3); - } else { - sprintf(hans3, "", hlen3); - } - if (namp1 && nlen1) { - strncpy(nams1, namp1, nlen1); - if (nlen1 != sizeof(nams1)) - nams1[nlen1] = '\0'; - } else { - sprintf(nams1, "", nlen1); - } - if (namp2 && nlen2) { - strncpy(nams2, namp2, nlen2); - if (nlen2 != sizeof(nams2)) - nams2[nlen2] = '\0'; - } else { - sprintf(nams2, "", nlen2); - } - - printf(VALS VALS VALS VALS VALS VALD, - "fs handle", hans1, - "mtpt handle", hans2, - "mtpt path", nams1, - "media desig", nams2, - "root handle", hans3, - "mode", mode); -} - - -/* - * First, weed out the events which return interesting structures. - * If it's not one of those, unpack the dm_namesp_event structure - * and display the contents. - */ -int -handle_message( - dm_sessid_t sid, - dm_eventmsg_t *msg) -{ - int pkt_error = 0; - int error; - dm_response_t response = DM_RESP_INVALID; - int respond, respcode = 0; - dm_namesp_event_t *msg_ne; -#if !VERITAS - dm_mount_event_t *msg_me; -#endif - void *hanp1, *hanp2, *namp1, *namp2; - u_int hlen1, hlen2, nlen1, nlen2; - char hans1[HANDLE_STR], hans2[HANDLE_STR]; - char nams1[NAME_MAX + 1], nams2[NAME_MAX + 1]; - void *fs_hanp; - size_t fs_hlen; - dm_timestruct_t *pending_time; - - /* - * Set the defaults for responding to events - */ - - /***************************************************** - * If the daemon is feeling unfriendly, it will - * respond (when necessary) with DM_RESP_ABORT, rather - * than the standard DM_RESP_CONTINUE. - * - * While unfriendly, the daemon normally returns - * a respcode of "unfriendly_errno". This defaults to - * EBADMSG but can be set when unfriendly mode is - * activated. - *****************************************************/ - - respond = 1; - if (unfriendly_count==0) { - response = friendly ? DM_RESP_CONTINUE : DM_RESP_ABORT; - respcode = friendly ? 0 : unfriendly_errno; - } - else if (unfriendly_count > 0) { - if (unfriendly_count-- == 0) { - response = DM_RESP_CONTINUE; - respcode = 0; - } - else { - response = DM_RESP_ABORT; - respcode = unfriendly_errno; - } - } - - if (pending_count >= 0) { - if (msg->ev_type != DM_EVENT_USER) { - if (pending_count-- == 0) { - int i; - for (i=arr_top; i>=0; --i) { - dm_respond_event(sid, token_arr[i], - DM_RESP_CONTINUE, 0, 0, 0); - } - response = DM_RESP_CONTINUE; - respcode = 0; - } - else { - if (pending_count<10) { - token_arr[pending_count]=msg->ev_token; - } - pending_time = malloc(sizeof(dm_timestruct_t)); - pending_time->dm_tv_sec=0; - pending_time->dm_tv_nsec=0; - dm_pending(sid, msg->ev_token, pending_time); - printf("pending\ntries left\t:%d\n",pending_count); - return 0; - } - } - } - - /***** USER EVENTS *****/ - - if (msg->ev_type == DM_EVENT_USER) { - char *privp; - u_int plen, i; - - printf(HDR, - "user", msg->ev_token, msg->ev_sequence); - - /* print private data as ascii or hex if it exists - DM_CONFIG_MAX_MESSAGE_DATA */ - - privp = DM_GET_VALUE(msg, ev_data, char *); - plen = DM_GET_LEN (msg, ev_data); - if (plen) { - for (i = 0; i < plen; i++) { - if (!isprint(privp[i]) && !isspace(privp[i])) - break; - } - if (i == plen - 1 && privp[i] == '\0') { - /***************************************************** - * Here, we check the messages from send_message. - * Some of them have special meanings. - *****************************************************/ - if (strncmp(privp, "over", 4)==0) { - response = DM_RESP_CONTINUE; - respcode = 0; - } - else if (strncmp(privp, "pending", 7)==0){ - if (strlen(privp)>8) { - sscanf(privp, "pending%*c%d", &pending_count); - } - else { - pending_count=1; - } - arr_top=pending_count-1; - } - else if (strncmp(privp, "reset_fs", 8)==0){ - if (get_fs_handle(fsname, &fs_hanp, &fs_hlen)){ - strcpy(privp, "error"); - } - else if (set_disposition(sid, fs_hanp, fs_hlen)){ - strcpy(privp, "error"); - } - else if (set_events(sid, fs_hanp, fs_hlen)){ - strcpy(privp, "error"); - } - } - else if (strncmp(privp, "friendly", 8)==0) { - friendly = 1; - response = DM_RESP_CONTINUE; - respcode = 0; - } - else if (strncmp(privp, "unfriendly", 10)==0) { - friendly = 0; - response = DM_RESP_CONTINUE; - respcode = 0; - if (strlen(privp)>11) { - sscanf(privp, "unfriendly%*c%d", &unfriendly_errno); - } - else { - unfriendly_errno=EBADMSG; - } - } - else if (strncmp(privp, "countdown", 9)==0) { - response = DM_RESP_CONTINUE; - respcode = 0; - - if (strlen(privp)>10) { - sscanf(privp, "countdown%*c%d%*c%d", - &unfriendly_count, &unfriendly_errno); - } - else { - unfriendly_count=5; - unfriendly_errno=EAGAIN; - } - } - - - printf(VALS, - "privdata", privp); - - } else { - printf("privdata :"); - for (i = 0; i < plen; i++) { - printf("%.2x", privp[i]); - } - printf("\n"); - } - } else { - printf(VALS, - "privdata", ""); - } - - if (msg->ev_token == DM_INVALID_TOKEN) /* async dm_send_msg event */ - respond = 0; - } - - /***** CANCEL EVENT *****/ - -/* Not implemented on SGI or Veritas */ - - else if (msg->ev_type == DM_EVENT_CANCEL) { - dm_cancel_event_t *msg_ce; - - msg_ce = DM_GET_VALUE(msg, ev_data, dm_cancel_event_t *); - printf(HDR VALD VALD, - "cancel", msg->ev_token, msg->ev_sequence, - "sequence", msg_ce->ce_sequence, - "token", msg_ce->ce_token); - respond = 0; - } - - /***** DATA EVENTS *****/ - - else if (msg->ev_type == DM_EVENT_READ || - msg->ev_type == DM_EVENT_WRITE || - msg->ev_type == DM_EVENT_TRUNCATE) { - dm_data_event_t *msg_de; - - msg_de = DM_GET_VALUE(msg, ev_data, dm_data_event_t *); - hanp1 = DM_GET_VALUE(msg_de, de_handle, void *); - hlen1 = DM_GET_LEN (msg_de, de_handle); - if (hanp1 && hlen1) { - hantoa(hanp1, hlen1, hans1); - } else { - sprintf(hans1, "", hlen1); - } - - switch(msg->ev_type) { - - case DM_EVENT_READ: - printf(HDR VALS VALLLD VALLLD, - "read", msg->ev_token, msg->ev_sequence, - "file handle", hans1, - "offset", (long long) msg_de->de_offset, - "length", (long long) msg_de->de_length); - break; - - case DM_EVENT_WRITE: - printf(HDR VALS VALLLD VALLLD, - "write", msg->ev_token, msg->ev_sequence, - "file handle", hans1, - "offset", (long long) msg_de->de_offset, - "length", (long long) msg_de->de_length); - break; - - case DM_EVENT_TRUNCATE: - printf(HDR VALS VALLLD VALLLD, - "truncate", msg->ev_token, msg->ev_sequence, - "file handle", hans1, - "offset", (long long) msg_de->de_offset, - "length", (long long) msg_de->de_length); - break; - default: break; - } - } - - /***** DESTROY EVENT *****/ - - else if (msg->ev_type == DM_EVENT_DESTROY) { - dm_destroy_event_t *msg_ds; - char attrname[DM_ATTR_NAME_SIZE + 1]; - u_char *copy; - u_int clen; - u_int i; - - msg_ds= DM_GET_VALUE(msg, ev_data, dm_destroy_event_t *); - hanp1 = DM_GET_VALUE(msg_ds, ds_handle, void *); - hlen1 = DM_GET_LEN (msg_ds, ds_handle); - if (hanp1 && hlen1) { - hantoa(hanp1, hlen1, hans1); - } else { - sprintf(hans1, "", hlen1); - } - if (msg_ds->ds_attrname.an_chars[0] != '\0') { - strncpy(attrname, (char *)msg_ds->ds_attrname.an_chars, sizeof(attrname)); - } else { - strcpy(attrname, ""); - } - printf(HDR VALS VALS, - "destroy", msg->ev_token, msg->ev_sequence, - "handle", hans1, - "attrname", attrname); - copy = DM_GET_VALUE(msg_ds, ds_attrcopy, u_char *); - clen = DM_GET_LEN (msg_ds, ds_attrcopy); - if (copy && clen) { - printf("attrcopy :"); - for (i = 0; i < clen; i++) { - /* Old version: printf("%.2x", copy[i]); */ - printf("%c", copy[i]); - } - printf("\n"); - } else { - printf(VALS, "attrcopy", ""); - } - respond = 0; - } - - /***** MOUNT EVENT *****/ - - else if (msg->ev_type == DM_EVENT_MOUNT) { - printf(HDR, "mount", msg->ev_token, msg->ev_sequence); -#if !VERITAS - msg_me = DM_GET_VALUE(msg, ev_data, dm_mount_event_t *); - print_one_mount_event(msg_me); -#else /* VERITAS */ - msg_ne = DM_GET_VALUE(msg, ev_data, dm_namesp_event_t *); - print_one_mount_event(msg_ne); -#endif /* VERITAS */ - } - - /***** NAMESPACE EVENTS *****/ - - else { - char *type = NULL; - - msg_ne = DM_GET_VALUE(msg, ev_data, dm_namesp_event_t *); - hanp1 = DM_GET_VALUE(msg_ne, ne_handle1, void *); - hlen1 = DM_GET_LEN (msg_ne, ne_handle1); - hanp2 = DM_GET_VALUE(msg_ne, ne_handle2, void *); - hlen2 = DM_GET_LEN (msg_ne, ne_handle2); - namp1 = DM_GET_VALUE(msg_ne, ne_name1, void *); - nlen1 = DM_GET_LEN (msg_ne, ne_name1); - namp2 = DM_GET_VALUE(msg_ne, ne_name2, void *); - nlen2 = DM_GET_LEN (msg_ne, ne_name2); - - if (hanp1 && hlen1) { - hantoa(hanp1, hlen1, hans1); - } - if (hanp2 && hlen2) { - hantoa(hanp2, hlen2, hans2); - } - if (namp1 && nlen1) { - strncpy(nams1, namp1, nlen1); - if (nlen1 != sizeof(nams1)) - nams1[nlen1] = '\0'; - } - if (namp2 && nlen2) { - strncpy(nams2, namp2, nlen2); - if (nlen2 != sizeof(nams2)) - nams2[nlen2] = '\0'; - } - - if (msg->ev_type == DM_EVENT_PREUNMOUNT || - msg->ev_type == DM_EVENT_UNMOUNT) { - if (msg_ne->ne_mode == 0) { - type = "NOFORCE"; -#if !VERITAS - } else if (msg_ne->ne_mode == DM_UNMOUNT_FORCE) { -#else - } else if (msg_ne->ne_mode > 0) { -#endif - type = "FORCE"; - } else { - type = "UNKNOWN"; - pkt_error++; - } - } else if (msg->ev_type == DM_EVENT_CREATE || - msg->ev_type == DM_EVENT_POSTCREATE || - msg->ev_type == DM_EVENT_REMOVE || - msg->ev_type == DM_EVENT_POSTREMOVE) { - if (format_mode(msg_ne->ne_mode, &type)) { - pkt_error++; - } - } - - switch(msg->ev_type) { - - case DM_EVENT_PREUNMOUNT: - printf(HDR VALS VALS VALS, - "preunmount", msg->ev_token, msg->ev_sequence, - "fs handle", hans1, - "root dir", hans2, - "unmount mode", type); - break; - - case DM_EVENT_UNMOUNT: - printf(HDR VALS VALS VALD, - "unmount", msg->ev_token, msg->ev_sequence, - "fs handle", hans1, - "unmount mode", type, - "retcode", msg_ne->ne_retcode); - break; - - case DM_EVENT_NOSPACE: - printf(HDR VALS, - "nospace", msg->ev_token, msg->ev_sequence, - "fs handle", hans1); - response = DM_RESP_ABORT; - respcode = ENOSPC; - break; - - case DM_EVENT_DEBUT: - printf(HDR VALS, - "debut", msg->ev_token, msg->ev_sequence, - "object", hans1); - break; - - case DM_EVENT_CREATE: - printf(HDR VALS VALS VALS, - "create", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "name", nams1, - "mode bits", type); - break; - - case DM_EVENT_POSTCREATE: - printf(HDR VALS VALS VALS VALS VALD, - "postcreate", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "new object", hans2, - "name", nams1, - "mode bits", type, - "retcode", msg_ne->ne_retcode); - respond = 0; - break; - - case DM_EVENT_REMOVE: - printf(HDR VALS VALS VALS, - "remove", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "name", nams1, - "mode bits", type); - break; - - case DM_EVENT_POSTREMOVE: - printf(HDR VALS VALS VALS VALD, - "postremove", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "name", nams1, - "mode bits", type, - "retcode", msg_ne->ne_retcode); - respond = 0; - break; - - case DM_EVENT_RENAME: - printf(HDR VALS VALS VALS VALS, - "rename", msg->ev_token, msg->ev_sequence, - "old parent", hans1, - "new parent", hans2, - "old name", nams1, - "new name", nams2); - break; - - case DM_EVENT_POSTRENAME: - printf(HDR VALS VALS VALS VALS VALD, - "postrename", msg->ev_token, msg->ev_sequence, - "old parent", hans1, - "new parent", hans2, - "old name", nams1, - "new name", nams2, - "retcode", msg_ne->ne_retcode); - respond = 0; - break; - - case DM_EVENT_SYMLINK: - printf(HDR VALS VALS VALS, - "symlink", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "name", nams1, - "contents", nams2); - break; - - case DM_EVENT_POSTSYMLINK: - printf(HDR VALS VALS VALS VALS VALD, - "postsymlink", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "new object", hans2, - "name", nams1, - "contents", nams2, - "retcode", msg_ne->ne_retcode); - respond = 0; - break; - - case DM_EVENT_LINK: - printf(HDR VALS VALS VALS, - "link", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "source", hans2, - "name", nams1); - break; - - case DM_EVENT_POSTLINK: - printf(HDR VALS VALS VALS VALD, - "postlink", msg->ev_token, msg->ev_sequence, - "parent dir", hans1, - "source", hans2, - "name", nams1, - "retcode", msg_ne->ne_retcode); - respond = 0; - break; - - case DM_EVENT_ATTRIBUTE: - printf(HDR VALS, - "attribute", msg->ev_token, msg->ev_sequence, - "object", hans1); - respond = 0; - break; - - case DM_EVENT_CLOSE: - printf(HDR VALS, - "close", msg->ev_token, msg->ev_sequence, - "object", hans1); - respond = 0; - break; - - default: - pkt_error++; - printf(HDR VALD, - "", msg->ev_token, msg->ev_sequence, - "ev_type", msg->ev_type); - if (msg->ev_token == DM_INVALID_TOKEN) - respond = 0; - break; - } - } - - /* - * Now respond to those messages which require a response - */ - if (respond) { - if (Sleep) sleep(Sleep); /* Slow things down here */ - - error = dm_respond_event(sid, msg->ev_token, response, respcode, 0, 0); - if (error) { - errno_msg("Can't respond to event"); - return error; - } - } - - return 0; -} - - -/* - Convert a mode_t field into a printable string. - - Returns non-zero if the mode_t is invalid. The string is - returned in *ptr, whether there is an error or not. -*/ - -static int -format_mode( - mode_t mode, - char **ptr) -{ -static char modestr[100]; - char *typestr; - int error = 0; - - if (S_ISFIFO(mode)) typestr = "FIFO"; - else if(S_ISCHR (mode)) typestr = "Character Device"; - else if(S_ISBLK (mode)) typestr = "Block Device"; - else if(S_ISDIR (mode)) typestr = "Directory"; - else if(S_ISREG (mode)) typestr = "Regular File"; - else if(S_ISLNK (mode)) typestr = "Symbolic Link"; - else if(S_ISSOCK(mode)) typestr = "Socket"; - else { - typestr = ""; - error++; - } - - sprintf(modestr, "mode %06o (perm %c%c%c %c%c%c %c%c%c %c%c%c) " - "type %s", - mode, - mode & S_ISUID ? 's':' ', - mode & S_ISGID ? 'g':' ', - mode & S_ISVTX ? 't':' ', - mode & S_IRUSR ? 'r':'-', - mode & S_IWUSR ? 'w':'-', - mode & S_IXUSR ? 'x':'-', - mode & S_IRGRP ? 'r':'-', - mode & S_IWGRP ? 'w':'-', - mode & S_IXGRP ? 'x':'-', - mode & S_IROTH ? 'r':'-', - mode & S_IWOTH ? 'w':'-', - mode & S_IXOTH ? 'x':'-', - typestr); - *ptr = modestr; - return(error); -} - - -static int -get_fs_handle( - char *fsname, - void **fs_hanpp, - size_t *fs_hlenp) -{ - char hans[HANDLE_STR]; - - if (dm_path_to_fshandle(fsname, fs_hanpp, fs_hlenp) == -1) { - errno_msg("Can't get filesystem handle"); - return 1; - } - if (Verbose) { - hantoa(*fs_hanpp, *fs_hlenp, hans); - err_msg("File system handle for %s: %s\n", fsname, hans); - } - return 0; -} - - -/* - Set the event disposition for this filesystem to include all valid - DMAPI events so that we receive all events for this filesystem. - Also set DM_EVENT_MOUNT disposition for the global handle. - It does not make sense to specify DM_EVENT_USER in the disposition - mask since a session is always unconditionally registered for these - events. - - Returns non-zero on error. -*/ - -static int -set_disposition( - dm_sessid_t sid, - void *fs_hanp, - size_t fs_hlen) -{ - dm_eventset_t eventlist; - - if (Verbose) { - err_msg("Setting event disposition to send all " - "events to this session\n"); - } - - /* DM_EVENT_MOUNT must be sent in a separate request using the global - handle. If we ever support more than one filesystem at a time, this - request should be moved out of this routine to a place where it is - issued just once. - */ - - DMEV_ZERO(eventlist); - DMEV_SET(DM_EVENT_MOUNT, eventlist); - - if (dm_set_disp(sid, DM_GLOBAL_HANP, DM_GLOBAL_HLEN, DM_NO_TOKEN, - &eventlist, DM_EVENT_MAX) == -1) { - errno_msg("Can't set event disposition for mount"); - return(1); - } - - DMEV_ZERO(eventlist); - - /* File system administration events. */ - - DMEV_SET(DM_EVENT_PREUNMOUNT, eventlist); - DMEV_SET(DM_EVENT_UNMOUNT, eventlist); - DMEV_SET(DM_EVENT_NOSPACE, eventlist); - - /* While DM_EVENT_DEBUT is optional, it appears that the spec always - lets it be specified in a dm_set_disp call; its just that the - event will never be seen on some platforms. - */ - - DMEV_SET(DM_EVENT_DEBUT, eventlist); - - - /* Namespace events. */ - - DMEV_SET(DM_EVENT_CREATE, eventlist); - DMEV_SET(DM_EVENT_POSTCREATE, eventlist); - DMEV_SET(DM_EVENT_REMOVE, eventlist); - DMEV_SET(DM_EVENT_POSTREMOVE, eventlist); - DMEV_SET(DM_EVENT_RENAME, eventlist); - DMEV_SET(DM_EVENT_POSTRENAME, eventlist); - DMEV_SET(DM_EVENT_LINK, eventlist); - DMEV_SET(DM_EVENT_POSTLINK, eventlist); - DMEV_SET(DM_EVENT_SYMLINK, eventlist); - DMEV_SET(DM_EVENT_POSTSYMLINK, eventlist); - - /* Managed region data events. */ - - DMEV_SET(DM_EVENT_READ, eventlist); - DMEV_SET(DM_EVENT_WRITE, eventlist); - DMEV_SET(DM_EVENT_TRUNCATE, eventlist); - - /* Metadata events. */ - - DMEV_SET(DM_EVENT_ATTRIBUTE, eventlist); -#if !defined(VERITAS) && !defined(linux) - DMEV_SET(DM_EVENT_CANCEL, eventlist); -#endif -#if !defined(linux) - DMEV_SET(DM_EVENT_CLOSE, eventlist); -#endif - DMEV_SET(DM_EVENT_DESTROY, eventlist); - - /* Pseudo-events. */ - - /* DM_EVENT_USER - always enabled - causes EINVAL if specified */ - - if (dm_set_disp(sid, fs_hanp, fs_hlen, DM_NO_TOKEN, - &eventlist, DM_EVENT_MAX) == -1) { - errno_msg("Can't set event disposition for filesystem"); - return(1); - } - return(0); -} - - -/* - Enable event generation on each valid filesystem-based DMAPI event - within the given file system. - - Returns non-zero on errors. -*/ - -static int -set_events( - dm_sessid_t sid, - void *fs_hanp, - size_t fs_hlen) -{ - dm_eventset_t eventlist; - - if (Verbose) { - err_msg("Setting event list to enable all events " - "for this file system\n"); - } - DMEV_ZERO(eventlist); - - /* File system administration events. */ - - /* DM_EVENT_MOUNT - always enabled on the global handle - causes - EINVAL if specified. - */ - DMEV_SET(DM_EVENT_PREUNMOUNT, eventlist); - DMEV_SET(DM_EVENT_UNMOUNT, eventlist); - DMEV_SET(DM_EVENT_NOSPACE, eventlist); - /* DM_EVENT_DEBUT - always enabled - causes EINVAL if specified. */ - - /* Namespace events. */ - - DMEV_SET(DM_EVENT_CREATE, eventlist); - DMEV_SET(DM_EVENT_POSTCREATE, eventlist); - DMEV_SET(DM_EVENT_REMOVE, eventlist); - DMEV_SET(DM_EVENT_POSTREMOVE, eventlist); - DMEV_SET(DM_EVENT_RENAME, eventlist); - DMEV_SET(DM_EVENT_POSTRENAME, eventlist); - DMEV_SET(DM_EVENT_LINK, eventlist); - DMEV_SET(DM_EVENT_POSTLINK, eventlist); - DMEV_SET(DM_EVENT_SYMLINK, eventlist); - DMEV_SET(DM_EVENT_POSTSYMLINK, eventlist); - - /* Managed region data events. These are not settable by - dm_set_eventlist on a filesystem basis. They are meant - to be set using dm_set_region on regular files only. - However, in the SGI implementation, they are filesystem-settable. - Since this is useful for testing purposes, do it. - */ - - /* DM_EVENT_READ */ - /* DM_EVENT_WRITE */ - /* DM_EVENT_TRUNCATE */ - - /* Metadata events. */ - - DMEV_SET(DM_EVENT_ATTRIBUTE, eventlist); -#if !defined(VERITAS) && !defined(linux) - DMEV_SET(DM_EVENT_CANCEL, eventlist); -#endif -#if !defined(linux) - DMEV_SET(DM_EVENT_CLOSE, eventlist); -#endif - DMEV_SET(DM_EVENT_DESTROY, eventlist); - - /* Pseudo-events. */ - - /* DM_EVENT_USER - always enabled - causes EINVAL if specified */ - - if (dm_set_eventlist(sid, fs_hanp, fs_hlen, DM_NO_TOKEN, - &eventlist, DM_EVENT_MAX) == -1) { - errno_msg("Can't set event list"); - return(1); - } - return(0); -} - - -/* - Disable monitoring for all events in the DMAPI for the given - file system. This is done before exiting so that future - operations won't hang waiting for their events to be handled. - - Returns non-zero on errors. -*/ - -static int -clear_events( - dm_sessid_t sid, - void *fs_hanp, - size_t fs_hlen) -{ - dm_eventset_t eventlist; - - if (Verbose) { - err_msg("Clearing event list to disable all events " - "for this filesystem\n"); - } - DMEV_ZERO(eventlist); - - if (dm_set_eventlist(sid, fs_hanp, fs_hlen, DM_NO_TOKEN, - &eventlist, DM_EVENT_MAX) == -1) { - errno_msg("Can't clear event list"); - return(1); - } - return(0); -} - - -/* - * Respond to any events which haven't been handled yet. - * dm_getall_tokens provides a list of tokens for the outstanding events. - * dm_find_eventmsg uses the token to lookup the corresponding message. - * The message is passed to handle_message() for normal response processing. - */ -int -finish_responding( - dm_sessid_t sid) -{ - int error = 0; - u_int nbytes, ntokens = 0, ret_ntokens, i; - dm_token_t *tokenbuf = NULL, *tokenptr; - size_t buflen = 0, ret_buflen; - char *msgbuf = NULL; - dm_eventmsg_t *msg; - - if (Verbose) - err_msg("Responding to any outstanding delivered event messages\n"); - - /* - * Initial sizes for the token and message buffers - */ - ret_buflen = 16 * (sizeof(dm_eventmsg_t) + sizeof(dm_data_event_t) - + HANDLE_LEN); - ret_ntokens = 16; - - /* - * The E2BIG dance... - * Take a guess at how large to make the buffer, starting with ret_ntokens. - * If the routine returns E2BIG, use the returned size and try again. - * If we're already using the returned size, double it and try again. - */ - do { - dm_token_t *tmpbuf; - ntokens = (ntokens != ret_ntokens) ? ret_ntokens : ntokens*2; - nbytes = ntokens * (sizeof(dm_token_t) + sizeof(dm_vardata_t)); - tmpbuf = realloc(tokenbuf, nbytes); - if (tmpbuf == NULL) { - err_msg("Can't malloc %d bytes for tokenbuf\n", nbytes); - error = 1; - goto out; - } - tokenbuf = tmpbuf; - error = dm_getall_tokens(sid, ntokens, tokenbuf, &ret_ntokens); - } while (error && errno == E2BIG); - - if (error) { - errno_msg("Can't get all outstanding tokens"); - goto out; - } - - tokenptr = tokenbuf; - for (i = 0; i < ret_ntokens; i++) { - if (Verbose) - err_msg("Responding to outstanding event for token %d\n",(int)*tokenptr); - - /* - * The E2BIG dance reprise... - */ - do { - char *tmpbuf; - buflen = (buflen != ret_buflen) ? ret_buflen : buflen * 2; - tmpbuf = realloc(msgbuf, buflen); - if (tmpbuf == NULL) { - err_msg("Can't malloc %d bytes for msgbuf\n", buflen); - error = 1; - goto out; - } - msgbuf = tmpbuf; - error = dm_find_eventmsg(sid, *tokenptr, buflen, msgbuf, &ret_buflen); - } while (error && errno == E2BIG); - if (error) { - errno_msg("Can't find the event message for token %d", (int)*tokenptr); - goto out; - } - - msg = (dm_eventmsg_t *) msgbuf; - while (msg != NULL) { - error = handle_message(sid, msg); - if (error) - goto out; - msg = DM_STEP_TO_NEXT(msg, dm_eventmsg_t *); - } - - tokenptr++; - } - - out: - if (tokenbuf) - free(tokenbuf); - if (msgbuf) - free(msgbuf); - return error; -} - - -/* - * Establish an exit handler since we run in an infinite loop - */ -int -establish_handler(void) -{ - struct sigaction act; - - /* - * Set up signals so that we can wait for spawned children - */ - act.sa_handler = exit_handler; - act.sa_flags = 0; - sigemptyset(&act.sa_mask); - - (void)sigaction(SIGHUP, &act, NULL); - (void)sigaction(SIGINT, &act, NULL); - (void)sigaction(SIGQUIT, &act, NULL); - (void)sigaction(SIGTERM, &act, NULL); - (void)sigaction(SIGUSR1, &act, NULL); - (void)sigaction(SIGUSR1, &act, NULL); - (void)sigaction(SIGUSR2, &act, NULL); - - return(0); -} - - -/* - * Exit gracefully - * - * Stop events from being generated for the given file system - * Respond to any events that were delivered but unanswered - * (the event loop may have been in the middle of taking care of the event) - * Try getting any undelivered events but don't block if none are there - * (the file system may have generated an event after we killed dm_get_events) - * Shutdown the session using the global "sid" variable. - */ -void -exit_handler(int x) -{ - int error; - void *fs_hanp; - size_t fs_hlen; - - if (Verbose) - printf("\n"), - err_msg("Exiting...\n"); - - error = get_fs_handle(fsname, &fs_hanp, &fs_hlen); - - if (!error) { - error = clear_events(sid, fs_hanp, fs_hlen); - if (error) - /* just keep going */ ; - } - - error = finish_responding(sid); - if (error) - /* just keep going */ ; - - err_msg("Processing any undelivered event messages\n"); - event_loop(sid, 0 /*waitflag*/); - - err_msg("Shutting down the session\n"); - if (sid != 0) { - error = dm_destroy_session(sid); - if (error == -1) { - errno_msg("Can't shut down session - use 'mrmean -kv' to clean up!"); - } - } - - exit(0); -} diff --git a/dmapi/src/suite2/src/invis_test.c b/dmapi/src/suite2/src/invis_test.c deleted file mode 100644 index a210f816..00000000 --- a/dmapi/src/suite2/src/invis_test.c +++ /dev/null @@ -1,232 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ -#include -#include - -#include - -#include -#include - -#include -#include - - -/*--------------------------------------------------------------------------- - -For manually testing DMAPI functions dm_write_invis() and dm_read_invis() - -The command line is: - - invis_test [-Rrv] [-l len] [-o offset] [-s sid] ls_path pathname - -where: - -R - reuse existing test file - -r - use dm_invis_read, default is dm_invis_write. - len - length of read/write - offset - offset in file for read/write - sid - is the session ID whose events you you are interested in. - ls_path - is the path to a specific copy of ls, important only for its size - pathname - is the filesystem to use for the test. - -DM_WRITE_SYNC is is not supported. -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-Rrv] [-l len] [-o offset] [-s sid] ls_path pathname\n", - Progname); - exit(1); -} - -#define BUFSZ 100 - -int -main( - int argc, - char **argv) -{ - int Vflag=0; - dm_sessid_t sid = DM_NO_SESSION; - char *dir_name = NULL; - char *ls_path = NULL; - char *name; - char ch = 'A'; - char test_file[128]; - char command[1024]; - void *hanp; - size_t hlen; - char buf[BUFSZ]; - dm_ssize_t rc; - dm_off_t offset = 0; - dm_size_t length = BUFSZ; - int opt; - int reading = 0; /* writing is the default */ - int exitstat=0; - dm_size_t errblockstart, errblockend; - int in_err_block; - int i; - int reuse_file = 0; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "Rvs:rl:o:")) != EOF) { - switch (opt) { - case 'v': - Vflag++; - break; - case 'r': - reading++; - break; - case 'R': - reuse_file++; - break; - case 'l': - length = atoi(optarg); - break; - case 'o': - offset = atoi(optarg); - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 2 != argc) - usage(); - ls_path = argv[optind]; - dir_name = argv[optind+1]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - sprintf(test_file, "%s/DMAPI_test_file", dir_name); - if( (!reading) && (!reuse_file) ){ - sprintf(command, "cp %s %s\n", ls_path, test_file); - system(command); - } - - if (dm_path_to_handle(test_file, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for %s; bypassing test\n", - test_file); - exit(1); - } - - if( Vflag ) - printf("using length = %llu\n", (unsigned long long) length); - if( length > BUFSZ ){ - fprintf(stderr, "length(%llu) > BUFSZ(%d)\n", - (unsigned long long) length, BUFSZ); - exit(1); - } - - if( reading ){ - memset(buf, '\0', BUFSZ); - - rc = dm_read_invis(sid, hanp, hlen, DM_NO_TOKEN, - offset, length, buf); - if( rc < 0 ){ - fprintf(stderr, "dm_read_invis failed, (err=%d)\n", errno); - dm_handle_free(hanp, hlen); - exit(1); - } - if( rc != length ){ - fprintf(stderr, "dm_read_invis read %llu bytes, " - "wanted to write %lld bytes\n", - (long long) rc, (unsigned long long) length); - dm_handle_free(hanp, hlen); - exitstat++; - } - else { - printf("dm_read_invis read %lld bytes\n", - (long long) rc); - } - - in_err_block = 0; - errblockstart = errblockend = 0; - for( i=0; i < length; ++i ){ - if( in_err_block ){ - if( buf[i] != ch ){ - /* still in the err block */ - errblockend = i; - } - else { - /* end of bad block */ - fprintf(stderr, "read err block: " - "byte %lld to %lld\n", - (long long) errblockstart, - (long long) errblockend); - in_err_block = 0; - } - } - else if( buf[i] != ch ){ - /* enter err block */ - errblockstart = i; - in_err_block = 1; - } - } - if( in_err_block ){ - /* end of bad block */ - fprintf(stderr, "read err block: byte %lld to %lld\n", - (long long) errblockstart, - (long long) errblockend); - in_err_block = 0; - } - } - else { - - memset(buf, ch, BUFSZ); - - rc = dm_write_invis(sid, hanp, hlen, DM_NO_TOKEN, - 0, offset, length, buf); - if( rc < 0 ){ - fprintf(stderr, "dm_write_invis failed, (err=%d)\n", errno); - dm_handle_free(hanp, hlen); - exit(1); - } - if( rc != length ){ - fprintf(stderr, "dm_write_invis wrote %lld bytes, " - "wanted to write %lld bytes\n", - (long long) rc, (long long) length ); - dm_handle_free(hanp, hlen); - exit(1); - } - printf("dm_write_invis wrote %lld bytes\n", (long long) rc); - } - - dm_handle_free(hanp, hlen); - exit(exitstat); -} diff --git a/dmapi/src/suite2/src/mm_fill.c b/dmapi/src/suite2/src/mm_fill.c deleted file mode 100644 index 18dbc39f..00000000 --- a/dmapi/src/suite2/src/mm_fill.c +++ /dev/null @@ -1,64 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ -/* - * mmap_fill - * - * use memory mapping to fill a filesystem! :) - */ -#include -#include -#include -#include -#include -#include -#include - - -char * progname; -int fd; /* file descriptor */ -addr_t ptr; /* mapped pointers */ -off_t off; -long long junk[512] = { -1 }; -long long counter; - -main(int argc, char * argv[]) -{ - int i; - for (i=0; i<512; i++) junk[i]=-1; - - - if ((progname = strrchr(argv[0], '/')) == NULL) - progname = argv[0]; - else - progname++; - - if (argc < 2) { - fprintf(stderr,"Usage: %s filename\n", progname); - exit(1); - } - - fd = open(argv[1], O_RDWR|O_CREAT, 0644); - if (fd < 0) { - fprintf(stderr,"%s: cannot open %s\n", progname, argv[1]); - perror(argv[1]); - exit(3); - } - - ptr = mmap64(NULL, (size_t)(0x10000000), PROT_WRITE, MAP_SHARED|MAP_AUTOGROW, fd, 0); - if (ptr == MAP_FAILED) { - fprintf(stderr,"%s: cannot mmap64 %s\n", progname, argv[1]); - perror(argv[1]); - exit(3); - } - - for(counter=0; ; counter++) { - junk[0] = counter; - bcopy(junk, ptr, sizeof(junk)); - ptr+=sizeof(junk); - } - printf("%s complete.\n", progname); - return 0; -} diff --git a/dmapi/src/suite2/src/mmap.c b/dmapi/src/suite2/src/mmap.c deleted file mode 100644 index 974c01bd..00000000 --- a/dmapi/src/suite2/src/mmap.c +++ /dev/null @@ -1,307 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ -/* - * This routine simulates - * - * cp file1 file2 - * - * - * It is a demo program which does the copy by memory mapping each of the - * files and then doing a byte at a time memory copy. - * - */ -#ifdef linux -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -char * Progname; -off_t len; /* length of file 1 */ -off_t offset = 0; -int print_flags_set = 1; - -typedef struct fflag { - int arg; /* != 0 if ars specified */ - int value; /* flags value */ -} fflag_t; - - -typedef enum ftype { /* flag bit types */ - FL_MAP, FL_PROT, FL_OPEN, FL_MAX -} ftype_t; - -typedef struct mfile { - fflag_t flags[FL_MAX]; - char *path; - int fd; - struct stat st; -#ifdef linux - void *p; -#else - addr_t p; -#endif -} mfile_t; - - -#define FLAG(symbol,type) { # symbol , symbol, type } -#define MAP_NONE 0 - -static struct { - char *name; - int value; - ftype_t type; -} Flags[] = { - FLAG(O_RDONLY, FL_OPEN), - FLAG(O_WRONLY, FL_OPEN), - FLAG(O_RDWR, FL_OPEN), - FLAG(O_NDELAY, FL_OPEN), - FLAG(O_NONBLOCK, FL_OPEN), - FLAG(O_APPEND, FL_OPEN), - FLAG(O_SYNC, FL_OPEN), - FLAG(O_TRUNC, FL_OPEN), - FLAG(O_CREAT, FL_OPEN), - FLAG(O_DIRECT, FL_OPEN), - FLAG(PROT_NONE, FL_PROT), - FLAG(PROT_READ, FL_PROT), - FLAG(PROT_WRITE, FL_PROT), - FLAG(PROT_EXEC, FL_PROT), - FLAG(MAP_SHARED, FL_MAP), - FLAG(MAP_PRIVATE, FL_MAP), - FLAG(MAP_FIXED, FL_MAP), - FLAG(MAP_NONE, FL_MAP), -}; - -int num_Flags = sizeof(Flags)/sizeof(Flags[0]); - - -mfile_t *ifile, *ofile; -mfile_t *hfile; /* Hack job */ -static int hack = 0; - -static mfile_t *new_mfile(void); -static int mfile_opt(char * s, mfile_t * f); -static void print_flags(char *s, mfile_t *f); -static void Usage(void); - -int -main(int argc, char * argv[]) -{ - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname == NULL) - Progname = argv[0]; - else - Progname++; - - ifile = new_mfile(); - ofile = new_mfile(); - hfile = new_mfile(); - if (ifile == NULL || ofile == NULL || hfile == NULL) { - fprintf(stderr,"%s: malloc failure.\n", Progname); - exit (1); - } - - /* Set default flags */ - ifile->flags[FL_MAP].value = MAP_PRIVATE; - ifile->flags[FL_PROT].value = PROT_READ; - ifile->flags[FL_OPEN].value = O_RDONLY; - ofile->flags[FL_MAP].value = MAP_SHARED; - ofile->flags[FL_PROT].value = PROT_WRITE; - ofile->flags[FL_OPEN].value = O_RDWR|O_CREAT; - - while ((opt = getopt(argc, argv, "i:o:h:d")) != EOF) { - switch(opt) { - case 'i': - if (mfile_opt(optarg, ifile) != 0) { - fprintf(stderr, "%s: Invalid -i option %s\n", - Progname, optarg); - Usage(); - } - break; - - case 'o': - if (mfile_opt(optarg, ofile) != 0) { - fprintf(stderr, "%s: Invalid -o option %s\n", - Progname, optarg); - Usage(); - } - break; - - case 'h': - if (mfile_opt(optarg, hfile) != 0) { - fprintf(stderr, "%s: Invalid -h option %s\n", - Progname, optarg); - Usage(); - } - hack = 1; - break; - - case 'd': - print_flags_set ^= 1; - break; - case '?': - Usage(); - } - } - - if (optind+1 > argc) - Usage(); - - ifile->path = argv[optind++]; - ofile->path = argv[optind++]; - - if (optind != argc) /* Extra args on command line */ - Usage(); - - if (stat(ifile->path, &(ifile->st)) < 0) { - fprintf(stderr,"%s: stat of %s failed.\n", - Progname, ifile->path); - perror(ifile->path); - exit(2); - } - - len = ifile->st.st_size; - - ifile->fd = open(ifile->path, ifile->flags[FL_OPEN].value); - if (ifile->fd < 0) { - fprintf(stderr,"%s: cannot open %s\n", Progname, ifile->path); - perror(ifile->path); - exit(2); - } - - - ofile->fd = open(ofile->path, ofile->flags[FL_OPEN].value, 0644); - if (ofile->fd < 0) { - fprintf(stderr,"%s: cannot open %s\n", Progname, ofile->path); - perror(ofile->path); - exit(3); - } - - if (print_flags_set) { - print_flags("Input ", ifile); - print_flags("Output", ofile); - if (hack) - print_flags("Hack ", hfile); - } - - - ifile->p = mmap(NULL, len, ifile->flags[FL_PROT].value, - ifile->flags[FL_MAP].value, ifile->fd, 0); - if (ifile->p == MAP_FAILED) { - fprintf(stderr,"%s: cannot mmap %s\n", Progname, ifile->path); - perror(ifile->path); - exit(2); - } - - ofile->p = mmap(NULL, len, ofile->flags[FL_PROT].value, - ofile->flags[FL_MAP].value , ofile->fd, 0); - if (ofile->p == MAP_FAILED) { - fprintf(stderr,"%s: cannot mmap %s\n", Progname, ofile->path); - perror(ofile->path); - exit(3); - } - - if (hack) { - int error; - - error = mprotect(ofile->p, len, hfile->flags[FL_PROT].value); - if (error) { - fprintf(stderr,"%s: mprotect call failed.\n", Progname); - perror("mprotect"); - exit(3); - } - } - - bcopy(ifile->p, ofile->p, len); - - printf("%s complete.\n", Progname); - return 0; -} - -static mfile_t * -new_mfile(void) -{ - mfile_t *ptr = (mfile_t *)malloc(sizeof(*ptr)); - if (ptr) - bzero(ptr, sizeof *ptr); - - return ptr; -} - - -static int -mfile_opt(char * s, mfile_t *f) -{ - int i; - ftype_t type; - - for (i = 0; i < num_Flags; i++) { - if(!strcasecmp(Flags[i].name, s)) { - - /* Zero value if this is 1st arg of this type */ - - type = Flags[i].type; - if (f->flags[type].arg++ == 0) - f->flags[type].value = 0; - f->flags[type].value |= Flags[i].value; - return 0; - } - } - return -1; /* error - string not found */ -} - -static void -Usage(void) -{ - int i; - - fprintf(stderr, - "Usage: %s [-d] [-i flag] [-i flag] [-o flag] ... file1 file2\n", - Progname); - fprintf(stderr, "Valid flag values are:\n"); - - for (i = 0; i < num_Flags; i++) { - fprintf(stderr,"%15s",Flags[i].name); - if ((i+1)%4 == 0 || i == num_Flags-1) - fprintf(stderr,"\n"); - else - fprintf(stderr,","); - } - exit(1); -} - -static void -print_flags(char *s, mfile_t *f) -{ - int i; - ftype_t type; - - printf("DEBUG - %s flags:\n", s); - for (i = 0; i < num_Flags; i++) { - type = Flags[i].type; - if (type == FL_OPEN && Flags[i].value == O_RDONLY && - ((f->flags[type].value) & 3) == 0) - /* Hack to print out O_RDONLY */ - printf("\t%s\n", Flags[i].name); - else if ((Flags[i].value & (f->flags[type].value)) != 0) - printf("\t%s\n", Flags[i].name); - } -} diff --git a/dmapi/src/suite2/src/mmap_cp.c b/dmapi/src/suite2/src/mmap_cp.c deleted file mode 100644 index 9b711735..00000000 --- a/dmapi/src/suite2/src/mmap_cp.c +++ /dev/null @@ -1,60 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ -/* - * mmap_fill - * - * use memory mapping to fill a filesystem! :) - */ -#include -#include -#include -#include -#include -#include -#include - - -char * progname; -int fd; /* file descriptor */ -addr_t ptr; /* mapped pointers */ -long long junk[512]; - -main(int argc, char * argv[]) -{ - printf("Sizeof junk = %d \n", junk); - exit(0); - - if ((progname = strrchr(argv[0], '/')) == NULL) - progname = argv[0]; - else - progname++; - - if (argc < 2) { - fprintf(stderr,"Usage: %s filename\n", progname); - exit(1); - } - - fd = open(argv[1], O_RDWR|O_CREAT, 0644); - if (fd < 0) { - fprintf(stderr,"%s: cannot open %s\n", progname, argv[1]); - perror(argv[1]); - exit(3); - } - - ptr = mmap(NULL, len, PROT_WRITE, MAP_SHARED|MAP_AUTOGROW , fd, 0); - if (ptr == MAP_FAILED) { - fprintf(stderr,"%s: cannot mmap %s\n", progname, argv[1]); - perror(argv[1]); - exit(3); - } - - while (1) { - bcopy(junk, ptr, size_of(junk)); - ptr+=size_of(junk); - } - printf("%s complete.\n", progname); - return 0; -} diff --git a/dmapi/src/suite2/src/region_test.c b/dmapi/src/suite2/src/region_test.c deleted file mode 100644 index fb965cf3..00000000 --- a/dmapi/src/suite2/src/region_test.c +++ /dev/null @@ -1,139 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - -#include -#include - - -/*--------------------------------------------------------------------------- - -Manual test for the DMAPI functions dm_set_region() and dm_get_region(). - -The command line is: - - region_test [-Rv] [-s sid] [-l len] [-o offset] ls_path directory - -where - -R - reuse the existing test file - pathname - is the name of a file - ls_path - is the path to a specific copy of ls, important only for its size - sid - is the session ID whose events you you are interested in. -----------------------------------------------------------------------------*/ - -#define NELEM 1 - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-Rv] [-s sid] [-l len] [-o offset] ls_path pathname\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - char *dir_name = NULL; - char *ls_path = NULL; - char command[1024]; - char test_file[128]; - int opt; - int Vflag = 0; - dm_region_t region = { 0, 0, 0 }; - char *name; - int reuse_file = 0; - void *hanp; - size_t hlen; - dm_boolean_t exactflag; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "vo:l:s:R")) != EOF) { - switch (opt) { - case 'v': - Vflag++; - break; - case 'R': - reuse_file++; - break; - case 'o': - region.rg_offset = atol(optarg); - break; - case 'l': - region.rg_size = atol(optarg); - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 2 > argc) - usage(); - ls_path = argv[optind]; - dir_name = argv[optind+1]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - sprintf(test_file, "%s/DMAPI_test_file", dir_name); - if( !reuse_file ){ - sprintf(command, "cp %s %s\n", ls_path, test_file); - system(command); - } - - if (dm_path_to_handle(test_file, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for file %s\n", test_file); - exit(1); - } - - region.rg_flags = DM_REGION_READ | DM_REGION_WRITE | DM_REGION_TRUNCATE; - if( dm_set_region( sid, hanp, hlen, DM_NO_TOKEN, NELEM, - ®ion, &exactflag ) ){ - fprintf(stderr, "dm_set_region failed, err=%d\n", errno); - dm_handle_free(hanp,hlen); - exit(1); - } - if( exactflag == DM_FALSE ) - fprintf(stderr, "exact flag was false\n"); - - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite2/src/send_msg.c b/dmapi/src/suite2/src/send_msg.c deleted file mode 100644 index fca05b97..00000000 --- a/dmapi/src/suite2/src/send_msg.c +++ /dev/null @@ -1,102 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include - - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function send_msg(). -The command line is: - - send_msg [-a] [-s sid] string - -where string is the msgdata to be stored in the event. -sid is the session ID to use for the event. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-a] [-s sid] string\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - char *string; - char *name; - int opt; - dm_msgtype_t msgtype = DM_MSGTYPE_SYNC; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "as:")) != EOF) { - switch (opt) { - case 'a': - msgtype = DM_MSGTYPE_ASYNC; - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 1 != argc) - usage(); - string = argv[optind++]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - if (dm_send_msg(sid, msgtype, strlen(string)+ 1, string)) { - fprintf(stderr, "dm_send_msg failed, %s\n", - strerror(errno)); - exit(1); - } - - exit(0); -} - diff --git a/dmapi/src/suite2/src/test_bulkall.c b/dmapi/src/suite2/src/test_bulkall.c deleted file mode 100644 index 0055cdc1..00000000 --- a/dmapi/src/suite2/src/test_bulkall.c +++ /dev/null @@ -1,310 +0,0 @@ -/* - * This code was written by Peter Lawthers, and placed in the public - * domain for use by DMAPI implementors and app writers. - * - * Standard disclaimer: - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * October 1, 2003: Dean Roehrich - * - Adapted to test dm_get_bulkall, from migfind.c. - */ -#include -#include -#include -#include -#include -#include - -#include - -#include - - -extern char *optarg; -extern int optind, optopt, opterr; -char *Progname; - -extern void err_msg(char *, ...); -extern void errno_msg(char *, ...); - -int setup_dmapi(dm_sessid_t *); -int scan_fs(dm_sessid_t, void *, size_t, dm_attrname_t*, size_t, - int, int); -void usage(char *); - -void -usage( - char *prog) -{ - fprintf(stderr, "Usage: %s ", prog); - fprintf(stderr, " <-a attrname> [-b bufsz] [-v] [-q]"); - fprintf(stderr, " filesystem\n"); -} - -#define V_PRINT 0x01 -#define V_VERBOSE 0x02 - -int -main( - int argc, - char *argv[]) -{ - - int c; - int error; - char *fsname; - dm_sessid_t sid; - void *fs_hanp; - size_t fs_hlen; - dm_attrname_t dmattr; - size_t bufsz = 65536; - dm_size_t ret; - int extras = 0; - int verbose = V_PRINT; - - Progname = argv[0]; - memset(&dmattr, 0, sizeof(dmattr)); - - while ((c = getopt(argc, argv, "a:b:evq")) != EOF) { - switch (c) { - case 'a': - if (strlen(optarg) > (DM_ATTR_NAME_SIZE-1)){ - printf("Arg for -a too long\n"); - exit(1); - } - strcpy((char*)dmattr.an_chars, optarg); - break; - case 'b': - bufsz = atoi(optarg); - break; - case 'e': - extras++; - break; - case 'v': - verbose |= V_VERBOSE; - break; - case 'q': - verbose &= ~V_PRINT; - break; - case '?': - default: - usage(Progname); - exit(1); - } - } - if (optind >= argc) { - usage(Progname); - exit(1); - } - if (dmattr.an_chars[0] == '\0') { - usage(Progname); - exit(1); - } - fsname = argv[optind]; - - /* - * Now we have our filesystem name and possibly a size threshold - * to look for. Init the dmapi, and get a filesystem handle so - * we can scan the filesystem - */ - error = setup_dmapi(&sid); - if (error) - exit(1); - - if (dm_path_to_fshandle(fsname, &fs_hanp, &fs_hlen) == -1) { - errno_msg("Can't get filesystem handle"); - exit(1); - } - - - if( dm_get_config(fs_hanp, fs_hlen, DM_CONFIG_BULKALL, &ret) || - (ret != DM_TRUE)) { - printf("Kernel does not have dm_get_bulkall\n"); - exit(1); - } - - /* - * Get the attributes of all files in the filesystem - */ - error = scan_fs(sid, fs_hanp, fs_hlen, &dmattr, bufsz, extras, verbose); - if (error) - exit(1); - - - /* - * We're done, so we can shut down our session. - */ - if (dm_destroy_session(sid) == -1) { - errno_msg("Can't close session"); - exit(1); - } - - return(0); - -} - -void -my_print_victim( - void *hanp, - size_t hlen, - dm_xstat_t *xbuf, - dm_stat_t *sbuf, - int extras, - int verbose) -{ - u_int attrlen; - char *attrval; - - if (hlen > HANDLE_LEN) { - if (verbose & V_PRINT) - printf("-- invalid length --\n"); - } - else { - char handle_str[HANDLE_STR]; - if (verbose & V_PRINT) { - printf("%zd\t", hlen); - hantoa(hanp, hlen, handle_str); - printf("%s ", handle_str); - if (extras) { - printf("size=%lld ", - (long long) sbuf->dt_size); - printf("ino=%lld ", - (long long) sbuf->dt_ino); - } - } - - attrval = DM_GET_VALUE(xbuf, - dx_attrdata, char*); - attrlen = DM_GET_LEN(xbuf, - dx_attrdata); - /* Hmmm, a hole in the dmapi spec. - * No way to have a null pointer - * for the value. No way to - * distinguish between a zero-length - * attribute value and not finding - * the attribute in the first place. - * - * Punt. Since I cannot get a null - * pointer for the value, let's look - * at the length. If it's zero, - * we'll say the attribute was - * not found. - */ - if (verbose & V_PRINT) { - if (attrlen) { - if (isalpha(attrval[0]) ) - printf("(%s)\n", attrval); - else - printf("\n", attrlen); - } - else { - printf("\n"); - } - } - } -} - -/* - * Get the attributes for all the files in a filesystem in bulk, - * including the specified dmattr, - * and print out the handles and dmattr values. - */ -int -scan_fs( - dm_sessid_t sid, - void *fs_hanp, - size_t fs_hlen, - dm_attrname_t *dmattr, - size_t buflen, - int extras, - int verbose) -{ - u_int mask; /* attributes to scan for */ - dm_xstat_t *dm_xstatbuf, *xbuf; /* attributes buffer */ - dm_stat_t *sbuf; - dm_attrloc_t locp; /* opaque location in fs */ - size_t rlenp; /* ret length of stat info */ - void *hanp; /* file handle */ - size_t hlen; /* file handle */ - int more; /* loop terminator */ - int error; - -#ifdef VERITAS_21 - if (buflen > 65536) - buflen= 65536; -#endif - dm_xstatbuf = (dm_xstat_t *)calloc(1, buflen); - if (dm_xstatbuf == NULL) { - err_msg("Can't get memory for stat buffer"); - return(1); - } - - - /* - * Initialize the offset opaque offset cookie that - * we use in successive calls to dm_get_bulkattr() - */ - error = dm_init_attrloc(sid, fs_hanp, fs_hlen, DM_NO_TOKEN, &locp); - if (error == -1) { - errno_msg("%s/%d: Can't initialize offset cookie (%d)", __FILE__, __LINE__, errno); - free(dm_xstatbuf); - return(1); - } - - /* - * Set our stat mask so that we'll only get the normal stat(2) - * info and the file's handle - */ - mask = DM_AT_HANDLE | DM_AT_STAT; - do { - more = dm_get_bulkall(sid, fs_hanp, fs_hlen, DM_NO_TOKEN, - mask, dmattr, &locp, buflen, - dm_xstatbuf, &rlenp); - if (verbose & V_VERBOSE) - fprintf(stderr, "BULKALL more=%d, rlen=%zd\n", - more, rlenp); - if (more == -1) { - errno_msg("%s/%d: Can't get bulkall for filesystem", __FILE__, __LINE__, errno); - break; - } - - /* - * Walk through the stat buffer and pull out files - * that are of interest - * - * The stat buffer is variable length, so we must - * use the DM_STEP_TO_NEXT macro to access each individual - * dm_xstat_t structure in the returned buffer. - */ - xbuf = dm_xstatbuf; - while (xbuf != NULL) { - sbuf = &xbuf->dx_statinfo; - if (S_ISREG(sbuf->dt_mode)) { - hanp = DM_GET_VALUE(sbuf, dt_handle, void *); - hlen = DM_GET_LEN(sbuf, dt_handle); - - my_print_victim(hanp, hlen, xbuf, sbuf, - extras, verbose); - } - /* The sbuf has the offset to the next xbuf */ - xbuf = DM_STEP_TO_NEXT(sbuf, dm_xstat_t *); - } - } while (more == 1); - - free(dm_xstatbuf); - if (more == -1) - return(1); - - return(0); -} - diff --git a/dmapi/src/suite2/src/test_bulkattr.c b/dmapi/src/suite2/src/test_bulkattr.c deleted file mode 100644 index 4ed5c64a..00000000 --- a/dmapi/src/suite2/src/test_bulkattr.c +++ /dev/null @@ -1,293 +0,0 @@ -/* - * This code was written by Peter Lawthers, and placed in the public - * domain for use by DMAPI implementors and app writers. - * - * Standard disclaimer: - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * October 2, 2003: Dean Roehrich - * - Adapted to test dm_get_bulkattr + dm_get_dmattr, from migfind.c. - */ -#include -#include -#include -#include -#include -#include - -#include - -#include - -extern char *optarg; -extern int optind, optopt, opterr; -char *Progname; - -extern void print_victim(void *, size_t, dm_off_t); -extern void err_msg(char *, ...); -extern void errno_msg(char *, ...); - -int setup_dmapi(dm_sessid_t *); -int scan_fs(dm_sessid_t, void *, size_t, dm_attrname_t*, - size_t, int); -void usage(char *); - -void -usage( - char *prog) -{ - fprintf(stderr, "Usage: %s ", prog); - fprintf(stderr, " [-a attrname] [-b bufsz] [-v]"); - fprintf(stderr, " [-q] filesystem\n"); -} - -#define V_PRINT 0x01 -#define V_VERBOSE 0x02 - - -int -main( - int argc, - char *argv[]) -{ - - int c; - int error; - char *fsname; - dm_sessid_t sid; - void *fs_hanp; - size_t fs_hlen; - dm_attrname_t dmattr; - size_t bufsz = 65536; - dm_attrname_t *dmattrp = NULL; - int verbose = V_PRINT; - - Progname = argv[0]; - memset(&dmattr, 0, sizeof(dmattr)); - - while ((c = getopt(argc, argv, "a:b:vq")) != EOF) { - switch (c) { - case 'a': - if (strlen(optarg) > (DM_ATTR_NAME_SIZE-1)){ - printf("Arg for -a too long\n"); - exit(1); - } - strcpy((char*)dmattr.an_chars, optarg); - dmattrp = &dmattr; - break; - case 'b': - bufsz = atoi(optarg); - break; - case 'v': - verbose |= V_VERBOSE; - break; - - case 'q': - verbose &= ~V_PRINT; - break; - - case '?': - default: - usage(Progname); - exit(1); - } - } - if (optind >= argc) { - usage(Progname); - exit(1); - } - - fsname = argv[optind]; - - /* - * Now we have our filesystem name and possibly a size threshold - * to look for. Init the dmapi, and get a filesystem handle so - * we can scan the filesystem - */ - error = setup_dmapi(&sid); - if (error) - exit(1); - - if (dm_path_to_fshandle(fsname, &fs_hanp, &fs_hlen) == -1) { - errno_msg("Can't get filesystem handle"); - exit(1); - } - - - - /* - * Get the attributes of all files in the filesystem - */ - error = scan_fs(sid, fs_hanp, fs_hlen, dmattrp, bufsz, verbose); - if (error) - exit(1); - - - /* - * We're done, so we can shut down our session. - */ - if (dm_destroy_session(sid) == -1) { - errno_msg("Can't close session"); - exit(1); - } - - return(0); - -} - -void -my_print_victim( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_attrname_t *dm_attrp, - int verbose) -{ - size_t rlen; - size_t buflen = 10000; - char buf[buflen]; - - if (hlen > HANDLE_LEN) { - if (verbose & V_PRINT) - printf("-- invalid length --\n"); - } - else { - char handle_str[HANDLE_STR]; - if (verbose & V_PRINT) { - printf("%zd\t", hlen); - hantoa(hanp, hlen, handle_str); - printf("%s ", handle_str); - } - - if (dm_get_dmattr(sid, hanp, hlen, DM_NO_TOKEN, dm_attrp, - buflen, (char*)buf, &rlen)) { - if (verbose & V_PRINT) { - if( errno == E2BIG ){ - printf("E2BIG\n"); - } - else if (errno == ENOMEM){ - printf("ENOMEM\n"); - } - else { - printf("\n"); - } - } - } - else if (verbose & V_PRINT) { - if( isalpha(buf[0]) ) - printf("(%s)\n", buf); - else - printf("\n",rlen); - } - } -} - -/* - * Get the attributes for all the files in a filesystem in bulk, - * and print out the handles and sizes of any that meet our target - * criteria. - * - * We are not interested in file names; if we were, then we would - * have to do a dm_get_dirattrs() on each directroy, then use - * dm_handle_to_path() to get the pathname. - */ -int -scan_fs( - dm_sessid_t sid, - void *fs_hanp, - size_t fs_hlen, - dm_attrname_t *dmattrp, - size_t buflen, - int verbose) -{ - u_int mask; /* attributes to scan for */ - dm_stat_t *dm_statbuf, *sbuf; /* attributes buffer */ - dm_attrloc_t locp; /* opaque location in fs */ - size_t rlenp; /* ret length of stat info */ - void *hanp; /* file handle */ - size_t hlen; /* file handle */ - int more; /* loop terminator */ - int error; - - -#ifdef VERITAS_21 - if (buflen > 65536) - buflen = 65536; -#endif - dm_statbuf = (dm_stat_t *)calloc(1, buflen); - if (dm_statbuf == NULL) { - err_msg("Can't get memory for stat buffer"); - return(1); - } - - - /* - * Initialize the offset opaque offset cookie that - * we use in successive calls to dm_get_bulkattr() - */ - error = dm_init_attrloc(sid, fs_hanp, fs_hlen, DM_NO_TOKEN, &locp); - if (error == -1) { - errno_msg("%s/%d: Can't initialize offset cookie (%d)", __FILE__, __LINE__, errno); - free(dm_statbuf); - return(1); - } - - /* - * Set our stat mask so that we'll only get the normal stat(2) - * info and the file's handle - */ - mask = DM_AT_HANDLE | DM_AT_STAT; - do { - more = dm_get_bulkattr(sid, fs_hanp, fs_hlen, DM_NO_TOKEN, - mask, &locp, buflen, dm_statbuf, &rlenp); - if (verbose & V_VERBOSE) - fprintf(stderr, "BULKATTR more=%d, rlen=%zd\n", - more, rlenp); - if (more == -1) { - errno_msg("%s/%d: Can't get bulkattr for filesystem", __FILE__, __LINE__, errno); - break; - } - - /* - * Walk through the stat buffer and pull out files - * that are of interest - * - * The stat buffer is variable length, so we must - * use the DM_STEP_TO_NEXT macro to access each individual - * dm_stat_t structure in the returned buffer. - */ - sbuf = dm_statbuf; - while (sbuf != NULL) { - if (S_ISREG(sbuf->dt_mode)) { - hanp = DM_GET_VALUE(sbuf, dt_handle, void *); - hlen = DM_GET_LEN(sbuf, dt_handle); - - if (dmattrp) { - my_print_victim(sid, hanp, hlen, - dmattrp, verbose); - } - else if (verbose & V_PRINT){ - print_victim(hanp, hlen, sbuf->dt_size); - } - } - sbuf = DM_STEP_TO_NEXT(sbuf, dm_stat_t *); - } - } while (more == 1); - - free(dm_statbuf); - if (more == -1) - return(1); - - return(0); -} - diff --git a/dmapi/src/suite2/src/test_dmattr.c b/dmapi/src/suite2/src/test_dmattr.c deleted file mode 100644 index f1f05a41..00000000 --- a/dmapi/src/suite2/src/test_dmattr.c +++ /dev/null @@ -1,509 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include -#include -#include - -#include - -#include -#include - -#include -#include - - -/*--------------------------------------------------------------------------- -Automated test of the DMAPI functions: - dm_set_dmattr() - dm_get_dmattr() - dm_remove_dmattr() - -The command line is: - - test_dmattr [-v] [-n num] [-l length] [-s sid] directory - -where - ls_path - is the path to a specific copy of ls, important only for its size - directory - is the pathname to a DMAPI filesystem - num - is the number of files to create for the test. - length - is the length of the attribute value for the test. - sid - is the session ID whose attributes you are interested in. - -----------------------------------------------------------------------------*/ - -#define VALUE_LENGTH 22 -#define NUM_ITERATIONS 50 -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-v] [-n number] [-l length] " - "[-s sid] ls_path pathname\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - char *dir_name; - char *ls_path; - dm_attrname_t *attrnamep; - size_t buflen=VALUE_LENGTH; - char *bufp; - int setdtime = 0; - size_t rlenp; - void *hanp; - size_t hlen; - char *name; - int opt; - int i=0; - int j=0; - int Vflag=0; - int num_iter = NUM_ITERATIONS; - char test_file[128]; - char command[128]; - char **test_array; - dm_size_t config_retval; - dm_token_t test_token; - struct stat *statbuf; - struct stat *checkbuf; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "vn:l:s:")) != EOF) { - switch (opt) { - case 'v': - Vflag++; - break; - case 'n': - num_iter = atoi(optarg); - break; - case 'l': - buflen = atoi(optarg); - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 2 != argc) - usage(); - ls_path = argv[optind]; - dir_name = argv[optind+1]; - - bufp = - (char *)(malloc (buflen * sizeof(char))); - statbuf = - (struct stat *)(malloc (num_iter * sizeof(struct stat))); - checkbuf = - (struct stat *)(malloc (num_iter * sizeof(struct stat))); - test_array = - (char **)(malloc (num_iter * sizeof(char *))); - if (bufp==NULL || test_array==NULL || - statbuf==NULL || checkbuf==NULL) { - printf("Malloc failed\n"); - exit(1); - } - for (i=0; i -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - - -/*--------------------------------------------------------------------------- -Automated search for EFAULT in the following DMAPI commands: - dm_get_allocinfo - dm_get_config - dm_get_config_events - dm_getall_dmattr - dm_init_attrloc - -There are other EFAULT tests, in the programs that test individual -DMAPI functions. Those other tests are referenced in comments in this source. - -The command line is: - test_efault [-s sid] [-v] ls_path pathname - -where: - sid - is the session ID whose events you you are interested in. - ls_path - is the path to a copy of ls, which will be copied as a test file. - pathname - is the filesystem to use for the test. -----------------------------------------------------------------------------*/ - -extern int optind; -extern int opterr; -extern char *optarg; - -char *Progname; -int Vflag=0; - -static void -usage(void) -{ - fprintf(stderr, - "Usage: %s [-v] [-s sid] ls_path pathname\n", - Progname); - exit(1); -} - - -int -main(int argc, char **argv) { - - dm_sessid_t sid = DM_NO_SESSION; - void *hanp; - size_t hlen; - char *name; - char *ls_path; - char *pathname; - char test_file[100]; - char command[100]; - int opt; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - opterr = 0; - while ((opt = getopt(argc, argv, "vn:s:")) != EOF) { - switch (opt) { - case 'v': - Vflag++; - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 2 != argc) { - usage(); - } - ls_path = argv[optind]; - pathname = argv[optind+1]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - printf("Beginning EFAULT testing...\n"); - - /*----------------------------------*\ - |* ## Traditional errno tests ## *| - \*----------------------------------*/ - sprintf(test_file, "%s/DMAPI_EFAULT_test_file", pathname); - sprintf(command, "cp %s %s\n", ls_path, test_file); - system(command); - - if (dm_path_to_handle(test_file, &hanp, &hlen)) { - fprintf(stderr, "ERROR: can't get handle for %s; %s\n", - test_file, ERR_NAME); - goto abort_test; - } - - - /*--------------------------------------------------------- - * get_allocinfo - *--------------------------------------------------------- - */ - { dm_off_t off=0; - u_int nelem=1; - dm_extent_t extent; - u_int nelem_ret; - - ERRTEST(EFAULT, "get_allocinfo (bad offp)", - dm_get_allocinfo(sid, hanp, hlen, DM_NO_TOKEN, - (dm_off_t*)(-1000), - nelem, &extent, &nelem_ret)) - ERRTEST(EFAULT, "get_allocinfo (bad extentp)", - dm_get_allocinfo(sid, hanp, hlen, DM_NO_TOKEN, - &off, nelem, (dm_extent_t*)(-1000), - &nelem_ret)) - ERRTEST(EFAULT, "get_allocinfo (bad nelemp)", - dm_get_allocinfo(sid, hanp, hlen, DM_NO_TOKEN, - &off, nelem, &extent, - (u_int*)(-1000))) - } - - /*------------------------------------------------------ - * get_bulkattr: see test_fileattr.c - *------------------------------------------------------ - * get_config - *------------------------------------------------------ - */ - ERRTEST(EFAULT, "get_config", - dm_get_config(hanp, hlen, DM_CONFIG_BULKALL, - (dm_size_t*)(-1000))) - /*--------------------------------------------------------- - * get_config_events - *--------------------------------------------------------- - */ - { - u_int nelem=5; - u_int *nelemp = NULL; - dm_eventset_t *eventsetp; - eventsetp = (dm_eventset_t *)malloc(nelem*sizeof(dm_eventset_t)); - if (eventsetp == NULL) { - printf("Couldn't malloc for config_events tests: %s\n", ERR_NAME); - } - else { - ERRTEST(EFAULT, "get_config_events (bad eventsetp)", - dm_get_config_events(hanp, hlen, nelem, - (dm_eventset_t*)(-1000), nelemp)) - ERRTEST(EFAULT, "get_config_events (bad nelemp)", - dm_get_config_events(hanp, hlen, nelem, eventsetp, - (u_int*)(-1000))) - } - } - /*--------------------------------------------------------- - * get_dirattrs: see test_fileattr.c - *--------------------------------------------------------- - * get_fileattr: see test_fileattr.c - *--------------------------------------------------------- - * get_region: see test_region.c - *--------------------------------------------------------- - * getall_dmattr - *--------------------------------------------------------- - */ - { - size_t buflen = 5; - void *bufp = (void *)malloc(buflen*sizeof(dm_attrlist_t)); - size_t *rlenp = NULL; - ERRTEST(EFAULT, "getall_dmattr (NULL handle)", - dm_getall_dmattr(sid, NULL, hlen, DM_NO_TOKEN, - buflen, bufp, rlenp)) - ERRTEST(EFAULT, "getall_dmattr (incremented bufp)", - dm_getall_dmattr(sid, hanp, hlen, DM_NO_TOKEN, - buflen, (void*)((char*)(bufp)+1), rlenp)) - ERRTEST(EFAULT, "getall_dmattr (bad bufp)", - dm_getall_dmattr(sid, hanp, hlen, DM_NO_TOKEN, - buflen, (void*)(-1000), rlenp)) - ERRTEST(EFAULT, "getall_dmattr (bad rlenp)", - dm_getall_dmattr(sid, hanp, hlen, DM_NO_TOKEN, - buflen, bufp, (size_t*)(-1000))) - } - /*--------------------------------------------------------- - * init_attrloc - *--------------------------------------------------------- - */ - ERRTEST(ENOTSUP, "init_attrloc", - dm_init_attrloc(sid, hanp, hlen, DM_NO_TOKEN, - (dm_attrloc_t*)(-1000))) - /*--------------------------------------------------------- - * probe_hole: see test_hole.c - *--------------------------------------------------------- - * remove_dmattr: see test_dmattr.c - *--------------------------------------------------------- - * set_dmattr: see test_dmattr.c - *--------------------------------------------------------- - * set_eventlist: see test_eventlist.c - *--------------------------------------------------------- - * set_region: see test_region.c - *--------------------------------------------------------- - */ - -abort_test: - sprintf(command, "rm %s\n", test_file); - system(command); - - printf("EFAULT testing complete.\n"); - - exit(0); -} - diff --git a/dmapi/src/suite2/src/test_eventlist.c b/dmapi/src/suite2/src/test_eventlist.c deleted file mode 100644 index 99a8474e..00000000 --- a/dmapi/src/suite2/src/test_eventlist.c +++ /dev/null @@ -1,458 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include -#include - -#include -#include - - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_set_eventlist(). The -command line is: - - test_eventlist [-v] [-s sid] [-t token] directory - -where: -ls_path - is the path to a specific copy of ls, important only for its size -directory - is the pathname to a DMAPI filesystem. -sid - is the dm_sessid_t value to use. -token - is the dm_token_t value to use (DM_NO_TOKEN is the default). -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - -int check_one_event (dm_sessid_t, void*, size_t, dm_token_t, - dm_eventtype_t, int); - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-v] [-s sid] [-t token]" - "ls_path directory \n", Progname); - /* fprintf(stderr, "possible events are:\n"); - for (i = 0; i < ev_namecnt; i++) { - fprintf(stderr, "%s (%d)\n", ev_names[i].name, - ev_names[i].value); - } - */ - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - dm_token_t token = DM_NO_TOKEN; - char object[128]; - void *hanp; - size_t hlen; - int Vflag = 0; - char *name; - int opt; - int error; - void *fshanp; - size_t fshlen; - int i; - char command[128]; - char *ls_path; - char *dir_name; - dm_token_t test_token = DM_NO_TOKEN; - dm_eventset_t eventset; - void *test_vp; - u_int nelemp; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "s:t:uv")) != EOF) { - switch (opt) { - case 's': - sid = atol(optarg); - break; - case 't': - token = atol(optarg); - break; - case 'u': - Vflag=2; - break; - case 'v': - if (Vflag==0) Vflag=1; - break; - case '?': - usage(); - } - } - - if (optind + 2 != argc) - usage(); - ls_path = argv[optind]; - dir_name = argv[optind+1]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the directory handle */ - if (dm_path_to_handle(dir_name, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for %s\n", dir_name); - exit(1); - } - - /***********************************************\ - |* Test to run on a FILE... *| - \***********************************************/ - - printf("File test beginning...\n"); - sprintf(object, "%s/VeryLongUnlikelyFilename.DMAPIFOO", dir_name); - sprintf(command, "cp %s %s \n", ls_path, object); - system(command); - - if (dm_path_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for %s\n; aborting test", - object); - } - else { - for (i = 0; i < ev_namecnt; i++) { - error = check_one_event(sid, hanp, hlen, token, - ev_names[i].value, Vflag); - switch (ev_names[i].value){ - case DM_EVENT_ATTRIBUTE: case DM_EVENT_DESTROY: - if (error) { - fprintf(stderr, "ERROR: %s failed on a file!\n", - ev_names[i].name); - } - break; - default: - if (!error) { - fprintf(stderr, "ERROR: %s succeeded on a file!\n", - ev_names[i].name); - } - } - } - /*------------------------*\ - |* ## Errno subtests ## *| - \*------------------------*/ - printf("\t(errno subtests beginning...)\n"); - DMEV_ZERO(eventset); - DMEV_SET(DM_EVENT_ATTRIBUTE, eventset); - /*---------------------------------------------------------*/ - EXCLTEST("set", hanp, hlen, test_token, - dm_set_eventlist(sid, hanp, hlen, test_token, - &eventset, DM_EVENT_MAX)) - /*---------------------------------------------------------*/ - if ((test_vp = handle_clone(hanp, hlen)) == NULL) { - fprintf(stderr, - "Cannot create a test handle (%s); skipping EBADF test\n", - ERR_NAME); - } - else { - /* Alter the handle copy to make it (presumably) invalid */ - ((char *) test_vp)[hlen/2]++; - ERRTEST(EBADF, - "set", - dm_set_eventlist(sid, test_vp, hlen, token, - &eventset, DM_EVENT_MAX)) - dm_handle_free(test_vp, hlen); - } - /*---------------------------------------------------------*/ -#ifdef VERITAS_21 - /* Veritas gets a segmentation fault if hanp is NULL or if the - &eventset is out of range. - */ - fprintf(stderr, "\tERROR testing for EFAULT in set (bad hanp): " - "Veritas gets a segmentation fault.\n"); - fprintf(stderr, "\tERROR testing for EFAULT in set (bad eventset): " - "Veritas gets a segmentation fault.\n"); -#else - ERRTEST(EFAULT, - "set", - dm_set_eventlist(sid, NULL, hlen, token, - &eventset, DM_EVENT_MAX)) - ERRTEST(EFAULT, - "set", - dm_set_eventlist(sid, hanp, hlen, token, - (dm_eventset_t*)(-1000), DM_EVENT_MAX)) -#endif - /*---------------------------------------------------------*/ - ERRTEST(EINVAL, - "set (bad session)", - dm_set_eventlist(-100, hanp, hlen, token, - &eventset, DM_EVENT_MAX)) - /*---------------------------------------------------------*/ - ERRTEST(EINVAL, - "set (bad token)", - dm_set_eventlist(sid, hanp, hlen, 0, - &eventset, DM_EVENT_MAX)) - /*---------------------------------------------------------*/ -#if 0 - PROBLEM: too-small buffer does not produce E2BIG - { - dm_eventset_t *small_evsp = malloc(0); - if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen)) { - fprintf(stderr, - "can't get filesystem handle from %s; aborting test\n", - dir_name); - } - else { - check_one_event(sid, fshanp, fshlen, token, - DM_EVENT_CREATE, Vflag); - ERRTEST(E2BIG, - "(broken) get", - dm_get_eventlist(sid, fshanp, fshlen, token, - DM_EVENT_MAX, small_evsp, &nelemp)) - check_one_event(sid, fshanp, fshlen, token, - DM_EVENT_INVALID, Vflag); - } - } -#endif - /*---------------------------------------------------------*/ - SHAREDTEST("get", hanp, hlen, test_token, - dm_get_eventlist(sid, hanp, hlen, test_token, - DM_EVENT_MAX, &eventset, &nelemp)) - /*---------------------------------------------------------*/ - ERRTEST(EBADF, - "get", - dm_get_eventlist(sid, test_vp, hlen, token, DM_EVENT_MAX, - &eventset, &nelemp)) - /*---------------------------------------------------------*/ -#ifdef VERITAS_21 - /* Veritas gets a segmentation fault if hanp is NULL. */ - - fprintf(stderr, "\tERROR testing for EFAULT in get (bad hanp): " - "Veritas gets a segmentation fault.\n"); -#else - ERRTEST(EFAULT, - "get", - dm_get_eventlist(sid, NULL, hlen, token, DM_EVENT_MAX, - &eventset, &nelemp )) -#endif - /*---------------------------------------------------------*/ - ERRTEST(EINVAL, - "get (bad session)", - dm_get_eventlist(-100, hanp, hlen, token, DM_EVENT_MAX, - &eventset, &nelemp)) - /*---------------------------------------------------------*/ - ERRTEST(EINVAL, - "get (bad token)", - dm_get_eventlist(sid, hanp, hlen, 0, DM_EVENT_MAX, - &eventset, &nelemp)) - /*---------------------------------------------------------*/ - printf("\t(errno subtests complete)\n"); - /*---------------------*\ - |* End of errno tests *| - \*---------------------*/ - - /* Finally, use DM_EVENT_INVALID to delete events... */ - check_one_event(sid, hanp, hlen, token, DM_EVENT_INVALID, Vflag); - } - sprintf(command, "rm %s \n", object); - system(command); - printf("\tFile test complete.\n"); - if (Vflag) printf("\n"); - - /***********************************************\ - |* Test to run on a DIRECTORY... *| - \***********************************************/ - - printf("Directory test beginning...\n"); - sprintf(object, "%s/VeryLongUnlikelyDirectoryName.DMAPIFOO", - dir_name); - sprintf(command, "mkdir %s \n", object); - system(command); - - if (opaque_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for %s\n; aborting test", - object); - } - else { - for (i = 0; i < ev_namecnt; i++) { - error = check_one_event(sid, hanp, hlen, token, - ev_names[i].value, Vflag); - switch (ev_names[i].value){ - case DM_EVENT_CREATE: case DM_EVENT_POSTCREATE: - case DM_EVENT_REMOVE: case DM_EVENT_POSTREMOVE: - case DM_EVENT_RENAME: case DM_EVENT_POSTRENAME: - case DM_EVENT_LINK: case DM_EVENT_POSTLINK: - case DM_EVENT_SYMLINK: case DM_EVENT_POSTSYMLINK: - case DM_EVENT_ATTRIBUTE: case DM_EVENT_DESTROY: - if (error) { - fprintf(stderr, "ERROR: %s failed on a directory!\n", - ev_names[i].name); - } - break; - default: - if (!error) { - fprintf(stderr, "ERROR: %s succeeded on a directory!\n", - ev_names[i].name); - } - } - } - /* Use DM_EVENT_INVALID to delete events... */ - check_one_event(sid, hanp, hlen, token, DM_EVENT_INVALID, Vflag); - } - sprintf(object, "%s/VeryLongUnlikelyDirectoryName.DMAPIFOO", dir_name); - sprintf(command, "rmdir %s\n", object); - system(command); - printf("\tDirectory test complete.\n"); - if (Vflag) printf("\n"); - - /***********************************************\ - |* Test to run on a FILESYSTEM... *| - \***********************************************/ - - printf("Filesystem test beginning...\n"); - - if (dm_handle_to_fshandle(hanp, hlen, &fshanp, &fshlen)) { - fprintf(stderr, - "can't get filesystem handle from %s; aborting test\n", - dir_name); - } - else { - for (i = 0; i < ev_namecnt; i++) { - error = check_one_event(sid, fshanp, fshlen, token, - ev_names[i].value, Vflag); - switch (ev_names[i].value){ - case DM_EVENT_PREUNMOUNT: case DM_EVENT_UNMOUNT: - case DM_EVENT_NOSPACE: case DM_EVENT_DEBUT: - case DM_EVENT_CREATE: case DM_EVENT_POSTCREATE: - case DM_EVENT_REMOVE: case DM_EVENT_POSTREMOVE: - case DM_EVENT_RENAME: case DM_EVENT_POSTRENAME: - case DM_EVENT_LINK: case DM_EVENT_POSTLINK: - case DM_EVENT_SYMLINK: case DM_EVENT_POSTSYMLINK: - case DM_EVENT_ATTRIBUTE: case DM_EVENT_DESTROY: - if (error) { - fprintf(stderr, "ERROR: %s failed on a filesystem!\n", - ev_names[i].name); - } - break; - default: - if (!error) { - fprintf(stderr, "ERROR: %s succeeded on a filesystem!\n", - ev_names[i].name); - } - } - } - /* Use DM_EVENT_INVALID to delete events... */ - check_one_event(sid, fshanp, fshlen, token, DM_EVENT_INVALID, Vflag); - } - printf("\tFilesystem test complete.\n"); - - /***********************************************\ - |* End of tests! *| - \***********************************************/ - - dm_handle_free(fshanp, fshlen); - dm_handle_free(hanp, hlen); - exit(0); -} - -/*------------------------------------------------------------------- - check_one_event: - - Using dm_set_eventlist, set a single event on the object - indicated by the handle. - - Using dm_get_eventlist, check to see that the single event - was set correctly. - -------------------------------------------------------------------*/ - -int -check_one_event ( - dm_sessid_t sid, - void *hanp, - size_t hlen, - dm_token_t token, - dm_eventtype_t event, - int Vflag ) -{ - dm_eventset_t eventset; - dm_eventset_t check_eventset; - u_int nelemp; - int set_count = 0; - int i; - - DMEV_ZERO(eventset); - DMEV_ZERO(check_eventset); - - if (event != DM_EVENT_INVALID) { - DMEV_SET(event, eventset); - } - - if (dm_set_eventlist(sid, hanp, hlen, token, - &eventset, DM_EVENT_MAX)) { - if (Vflag){ - fprintf(stdout, " note: %s could not be set (%s)\n", - ev_value_to_name(event), errno_names[errno]); - } - return (-1); - } - - if (dm_get_eventlist(sid, hanp, hlen, token, - DM_EVENT_MAX, &check_eventset, &nelemp)) { - if (Vflag){ - fprintf(stdout, "dm_get_eventlist failed, %s\n", - errno_names[errno]); - } - return (-2); - } - - /* For each element, see that get_eventlist agrees - * with set_eventlist; if not, make noise. - */ - for (i = 0; i < ev_namecnt; i++) { - int set = DMEV_ISSET(ev_names[i].value, eventset); - int found = DMEV_ISSET(ev_names[i].value, check_eventset); - if (set && !found) { - fprintf(stderr, "ERROR: event %s was set but not found.\n", - ev_names[i].name); - return (-3); - } - else if (!set && found) { - fprintf(stderr, "ERROR: Found unexpected event %s \n", - ev_names[i].name); - return (-4); - } - else if ((Vflag == 2) && !set && !found) { - fprintf(stderr, "clear: %s\n", - ev_names[i].name); - } - else if (Vflag && set && found) { - fprintf(stderr, " SET: %s\n", ev_names[i].name); - set_count++; - } - } - if (Vflag && set_count == 0) { - fprintf(stderr, "\t(All events cleared)\n"); - } - return 0; -} diff --git a/dmapi/src/suite2/src/test_fileattr.c b/dmapi/src/suite2/src/test_fileattr.c deleted file mode 100644 index 9d718bbe..00000000 --- a/dmapi/src/suite2/src/test_fileattr.c +++ /dev/null @@ -1,698 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include -#include - - -/*--------------------------------------------------------------------------- -Automated test of the DMAPI functions: - dm_set_fileattr() - dm_get_fileattr() - dm_get_bulkattr() - dm_get_dirattrs() - -The command line is: - test_fileattr [-s sid] [-n num_files] [-v] ls_path pathname - -where: - sid - is the session ID whose events you you are interested in. - num_files - is the number of test files to create. - ls_path - is the path to a copy of ls, which will be copied as a test file. - pathname - is the filesystem to use for the test. -----------------------------------------------------------------------------*/ - -#define SET_MASK DM_AT_ATIME|DM_AT_MTIME|DM_AT_CTIME|DM_AT_DTIME|\ - DM_AT_UID|DM_AT_GID|DM_AT_MODE|DM_AT_SIZE - -#define GET_MASK DM_AT_EMASK|DM_AT_PMANR|DM_AT_PATTR|\ - DM_AT_DTIME|DM_AT_CFLAG|DM_AT_STAT - -extern int optind; -extern int opterr; -extern char *optarg; - -char *Progname; -int Vflag=0; - - -int -comp_stat ( dm_stat_t expected, - dm_stat_t found, - int i) -{ - int good=0; - if (found.dt_mode != expected.dt_mode) { - fprintf(stderr, - "ERROR: get #%d, expected mode %ld, but found %ld\n", - i, (long)expected.dt_mode, (long)found.dt_mode); - } - else good++; - if (found.dt_uid != expected.dt_uid) { - fprintf(stderr, - "ERROR: get #%d, expected uid %ld, but found %ld\n", - i, (long)expected.dt_uid, (long)found.dt_uid); - } - else good++; - if (found.dt_gid != expected.dt_gid) { - fprintf(stderr, - "ERROR: get #%d, expected gid %ld, but found %ld\n", - i, (long)expected.dt_gid, (long)found.dt_gid); - } - else good++; - if (found.dt_atime != expected.dt_atime) { - fprintf(stderr, - "ERROR: get #%d, expected atime %ld, but found %ld\n", - i, expected.dt_atime, found.dt_atime); - } - else good++; - if (found.dt_mtime != expected.dt_mtime) { - fprintf(stderr, - "ERROR: get #%d, expected mtime %ld, but found %ld\n", - i, expected.dt_mtime, found.dt_mtime); - } - else good++; - if (found.dt_ctime != expected.dt_ctime) { - fprintf(stderr, - "ERROR: get #%d, expected ctime %ld, but found %ld\n", - i, expected.dt_ctime, found.dt_ctime); - } - else good++; - - /* NOTE: dtime gets set to ctime */ - - if (found.dt_dtime != expected.dt_ctime) { - fprintf(stderr, - "ERROR: get #%d, expected dtime %ld, but found %ld\n", - i, expected.dt_ctime, found.dt_dtime); - } - else good++; - if (found.dt_size != expected.dt_size) { - fprintf(stderr, - "ERROR: get #%d, expected size %lld, but found %lld\n", - i, (long long) expected.dt_size, (long long) found.dt_size); - } - else good++; - if (Vflag){ - if (good==8) { - fprintf(stderr, "report: get #%d had no errors.\n",i); - } else { - fprintf(stderr, "report: %d tests correct for get #%d.\n", - good, i); - } - } - return(good); -} - - -static void -usage(void) -{ - fprintf(stderr, - "Usage: %s [-v] [-s sid] [-n num_files] ls_path pathname\n", - Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - dm_token_t test_token = DM_NO_TOKEN; - void *hanp; - size_t hlen; - char *ls_path; - char *pathname; - char test_file[100]; - char command[200]; - int num_files=50; - dm_stat_t *stat_arr; - dm_stat_t dmstat; - dm_fileattr_t fileattr; - char *name; - int opt; - int oops=1; - int i=0; - dm_attrloc_t loc; - size_t buflen = 16*sizeof(dm_stat_t); - size_t rlen; - void *bufp; - dm_stat_t *statbuf; - int loops=0; - void *fs_hanp; - size_t fs_hlen; - void *targhanp; - size_t targhlen; - char check_name[100]; - char *chk_name_p; - int chk_num; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - opterr = 0; - while ((opt = getopt(argc, argv, "vn:s:")) != EOF) { - switch (opt) { - case 'v': - Vflag++; - break; - case 'n': - num_files = atoi(optarg); - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 2 != argc) { - usage(); - } - ls_path = argv[optind]; - pathname = argv[optind+1]; - - /* Seed the random number generator */ - srand((unsigned int)time(NULL)); - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Dynamically allocate stat_arr; */ - stat_arr = - (dm_stat_t *)malloc(num_files * sizeof(dm_stat_t)); - - printf("Beginning file attribute tests...\n"); - - /* Fill in the dm_stat blocks with lots of junk... - */ - for (i=0; i -#include - -#include -#include - -#include -#include - - -/*--------------------------------------------------------------------------- - -Test program used to test the DMAPI function dm_punch_hole(). The -command line is: - - test_hole [-v] [-s sid] pathname - -where - ls_path - is the path to a specific copy of ls, important only for its size - pathname - is the path to the test filesystem - sid - is the session ID whose events you you are interested in. - -----------------------------------------------------------------------------*/ - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-v] [-s sid] ls_path directoryname\n", - Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - char *pathname = NULL; - char *ls_path = NULL; - dm_off_t offset = 0, end; - dm_off_t ex_off = 0; - dm_extent_t extent[20]; - u_int nelem; - dm_size_t length = 0; - void *hanp; - size_t hlen; - dm_token_t test_token; - char *name; - int opt; - int Vflag = 0; - char filename[128]; - char command[128]; - dm_off_t roff; - dm_size_t rlen; - dm_off_t blocksize = 5; - void *test_vp; - struct stat buf; - struct stat checkbuf; - - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "vs:")) != EOF) { - switch (opt) { - case 'v': - Vflag++; - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 2 != argc) - usage(); - ls_path = argv[optind]; - pathname = argv[optind+1]; - - if (dm_init_service(&name) == -1) { - fprintf(stdout, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get the directory handle. */ - - if (dm_path_to_handle(pathname, &hanp, &hlen)) { - fprintf(stdout, - "ERROR: can't get handle for directory %s\n", pathname); - exit(1); - } - - printf("Hole test beginning...\n"); - sprintf(filename, "%s/VeryLongUnlikelyFilename.HOLETEST", pathname); - sprintf(command, "cp %s %s \n", ls_path, filename); - system(command); - - if (dm_path_to_handle(filename, &hanp, &hlen)) { - fprintf(stdout, "can't get handle for %s\n; aborting test", - filename); - - sprintf(command, "rm %s \n", filename); - system(command); - fprintf(stdout, "\tHole test aborted.\n"); - - dm_handle_free(hanp, hlen); - exit(1); - } - - /* ## Get the block size using a length-1 probe. ## */ - dm_probe_hole(sid, hanp, hlen, DM_NO_TOKEN, 1, 0, - &blocksize, &rlen); - - if (blocksize==0) { - fprintf(stdout, "Error: block size appears to be 0!\n"); - - sprintf(command, "rm %s \n", filename); - system(command); - fprintf(stdout, "\tHole test aborted.\n"); - - dm_handle_free(hanp, hlen); - exit(1); - } - - /* - * The kernel always rounds the offset up to the next block - * size, so we can only probes up to the previous to last block. - */ - end = (29604 / blocksize) * blocksize; - - /* Check that dm_probe_hole returns an extent from the next - * highest multiple of the block size, to the end of the file - */ - for (offset = 0; offset < end; offset++) { - if (dm_probe_hole(sid, hanp, hlen, DM_NO_TOKEN, offset, length, - &roff, &rlen)) { - fprintf(stdout, "dm_probe_hole failed on pass %lld (%s)\n", - (long long)offset, ERR_NAME); - } - else { - if (rlen != 0) { - fprintf(stdout, - "Error: hole did not extend to end of file!\n"); - } - if (blocksize*(roff/blocksize) != roff) { - fprintf(stdout, - "Error: offset not a multiple of block size!\n"); - } - } - } - - /* Be sure dm_punch_hole doesn't change the time stamp, - * and verify that dm_get_allocinfo shows a hole - * followed by an extent to the end of the file. - */ - for(offset = 28672; offset > 0; offset-=blocksize) { - if (stat(filename, &buf)){ - fprintf(stdout, - "Error: unable to stat the test file; %s (1st)\n", - filename); - continue; - } - if (dm_probe_hole(sid, hanp, hlen, DM_NO_TOKEN, offset, length, - &roff, &rlen)) { - fprintf(stdout, "dm_probe_hole failed, %s\n", - ERR_NAME); - continue; - } - if (roff != offset) { - fprintf(stdout, - "Error: presumed offset was not %lld.\n", - (long long)(roff)); - } - if (dm_punch_hole(sid, hanp, hlen, DM_NO_TOKEN, - roff, length)) { - fprintf(stdout, "dm_punch_hole failed, %s\n", - ERR_NAME); - continue; - } - if (stat(filename, &checkbuf)){ - fprintf(stdout, - "Error: unable to stat the test file. (2nd)\n"); - continue; - } - else { - /* COMPARE BUF AND CHECKBUF! */ -#ifdef linux - if ((buf.st_atime == checkbuf.st_atime) && - (buf.st_mtime == checkbuf.st_mtime) && - (buf.st_ctime == checkbuf.st_ctime)) -#else - if ((buf.st_atim.tv_sec == checkbuf.st_atim.tv_sec) && - (buf.st_atim.tv_nsec == checkbuf.st_atim.tv_nsec) && - (buf.st_mtim.tv_sec == checkbuf.st_mtim.tv_sec) && - (buf.st_mtim.tv_nsec == checkbuf.st_mtim.tv_nsec) && - (buf.st_ctim.tv_sec == checkbuf.st_ctim.tv_sec) && - (buf.st_ctim.tv_nsec == checkbuf.st_ctim.tv_nsec)) -#endif - { - if (Vflag) { - fprintf(stdout, - "\tTime stamp unchanged by hole from offset %lld.\n", - (long long)(offset)); - } - } - else { - fprintf(stdout, - "Error: punch_hole changed file's time stamp.\n"); - } - ex_off=0; - if ((dm_get_allocinfo(sid, hanp, hlen, DM_NO_TOKEN, - &ex_off, 1, extent, &nelem) == 1) && - (extent->ex_type == DM_EXTENT_RES) && - (dm_get_allocinfo(sid, hanp, hlen, DM_NO_TOKEN, - &ex_off, 1, extent, &nelem) == 0) && - (extent->ex_type == DM_EXTENT_HOLE)) { - if (extent->ex_offset == roff){ - if (Vflag) { - fprintf(stdout, "\tVerified hole at %lld\n", - (long long)(extent->ex_offset)); - } - } - else { - fprintf(stdout, "\tError: get_allocinfo found hole at %lld\n", - (long long)(extent->ex_offset)); - } - } - else { - fprintf(stdout, "\tError: get_allocinfo did not find an " - "extent followed by a hole!\n"); - } - } - } - /*------------------------*\ - |* ## Errno subtests ## *| - \*------------------------*/ - fprintf(stdout, "\t(beginning errno subtests...)\n"); - /*---------------------------------------------------------*/ - ERRTEST(E2BIG, - "probe (from past EOF)", - dm_probe_hole(sid, hanp, hlen, DM_NO_TOKEN, 30000, length, - &roff, &rlen)) - /*---------------------------------------------------------*/ - ERRTEST(E2BIG, - "probe (to past EOF)", - dm_probe_hole(sid, hanp, hlen, DM_NO_TOKEN, 15000, 150000, - &roff, &rlen)) - /*---------------------------------------------------------*/ - SHAREDTEST("probe", hanp, hlen, test_token, - dm_probe_hole(sid, hanp, hlen, test_token, - 0, 0, &roff, &rlen)) - /*---------------------------------------------------------*/ - EXCLTEST("punch", hanp, hlen, test_token, - dm_punch_hole(sid, hanp, hlen, test_token, 0, 0)) - /*---------------------------------------------------------*/ - /* - * No idea where that EAGAIN should come from, it's never - * returned from the kernel. - * - * -- hch - */ -#if 0 - ERRTEST(EAGAIN, - "punch", - dm_punch_hole(sid, hanp, hlen, DM_NO_TOKEN, - 1, length)) -#endif - /*---------------------------------------------------------*/ - if ((test_vp = handle_clone(hanp, hlen)) == NULL) { - fprintf(stderr, - "Cannot create a test handle (%s); skipping EBADF test\n", - ERR_NAME); - } - else { - ((char *) test_vp)[hlen/2]++; - ERRTEST(EBADF, - "probe", - dm_probe_hole(sid, test_vp, hlen, DM_NO_TOKEN, - offset, length, - &roff, &rlen)) - ERRTEST(EBADF, - "punch", - dm_punch_hole(sid, test_vp, hlen, DM_NO_TOKEN, - offset, length)) - } - dm_handle_free(test_vp, hlen); - /*---------------------------------------------------------*/ - ERRTEST(EFAULT, - "probe (null handle)", - dm_probe_hole(sid, 0, hlen, DM_NO_TOKEN, offset, length, - &roff, &rlen)) - ERRTEST(EFAULT, - "probe (bad rlen)", - dm_probe_hole(sid, 0, hlen, DM_NO_TOKEN, offset, length, - &roff, (dm_size_t*)(-1000))) - ERRTEST(EFAULT, - "probe (bad roff)", - dm_probe_hole(sid, hanp, hlen, DM_NO_TOKEN, offset, length, - (dm_off_t*)(-1000), &rlen)) - /*---------------------------------------------------------*/ - ERRTEST(EFAULT, - "punch", - dm_punch_hole(sid, 0, hlen, DM_NO_TOKEN, offset, length)) - /*---------------------------------------------------------*/ - ERRTEST(EINVAL, - "probe (bad session)", - dm_probe_hole(-100, hanp, hlen, DM_NO_TOKEN, offset, length, - &roff, &rlen)) - /*---------------------------------------------------------*/ - ERRTEST(EINVAL, - "probe (bad token)", - dm_probe_hole(sid, hanp, hlen, 0, offset, length, - &roff, &rlen)) - /*---------------------------------------------------------*/ - ERRTEST(EINVAL, - "probe (bad token 2)", - dm_probe_hole(sid, hanp, hlen, 0, offset, length, - &roff, &rlen)) - /*---------------------------------------------------------*/ - fprintf(stdout, "\t(errno subtests complete)\n"); - - - sprintf(command, "rm %s \n", filename); - system(command); - printf("Hole test complete.\n"); - - dm_handle_free(hanp, hlen); - exit(0); -} - diff --git a/dmapi/src/suite2/src/test_invis.c b/dmapi/src/suite2/src/test_invis.c deleted file mode 100644 index 2f2a83f0..00000000 --- a/dmapi/src/suite2/src/test_invis.c +++ /dev/null @@ -1,448 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include -#include - -#include - -#include -#include - -#include -#include -#include - -/*--------------------------------------------------------------------------- - -Automated test of the DMAPI functions dm_write_invis() and dm_read_invis() - -The command line is: - - test_invis [-s sid] [-v] ls_path pathname - -where: - sid - is the session ID whose events you you are interested in. - ls_path - is the path to a specific copy of ls, important only for its size - pathname - is the filesystem to use for the test. - -DM_WRITE_SYNC is is not supported. -----------------------------------------------------------------------------*/ - -#define OFF_MAX 50 -#define OFF_STEP 5 -#define LEN_MAX 50 -#define LEN_STEP 5 - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-v] [-s sid] ls_path pathname\n", - Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_sessid_t sid = DM_NO_SESSION; - char *dir_name = NULL; - char *ls_path = NULL; - dm_off_t offset = 0; - dm_size_t length = 1; - dm_size_t curlength = 0; - u_char ch; - void *bufp = NULL; - void *hanp; - size_t hlen; - dm_ssize_t rc; - char *name; - char test_file[128]; - char command[128]; - int opt; - int i; - int j; - int k; - int Vflag=0; - struct stat statbuf; - struct stat checkbuf; - dm_token_t test_token; - void* test_vp; - int cont; - int error_reported; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "vs:")) != EOF) { - switch (opt) { - case 'v': - Vflag++; - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 2 != argc) - usage(); - ls_path = argv[optind]; - dir_name = argv[optind+1]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /* Get a random character for read/write tests */ - srand((unsigned int)time(NULL)); - ch = (u_char)rand(); - - printf("Invisible read/write tests beginning...\n"); - - /* File creation loop*/ - for(i=0; i (b) ? (a) : (b)) - length = max((dm_size_t)(i), length); - offset = (dm_off_t)(j); - - sprintf(test_file, "%s/DMAPI_invis_test_file.%02d%02d", - dir_name, i, j); - - if (stat(test_file, &statbuf)){ - fprintf(stdout, - "Error: unable to stat test file; %s (before test)\n", - test_file); - continue; - } - - if (dm_path_to_handle(test_file, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for %s; bypassing test\n", - test_file); - continue; - } - - if (length > curlength) { - if(curlength>0) - free(bufp); - if ((bufp = malloc(length)) == NULL) { - fprintf(stderr, "malloc of %llu bytes failed\n", - (unsigned long long) length); - continue; - } - curlength = length; - memset(bufp, ch, length); - } - - rc = dm_write_invis(sid, hanp, hlen, DM_NO_TOKEN, - 0, offset, length, bufp); - cont = 0; - if (rc < 0) { - fprintf(stderr, "dm_write_invis failed, %s\n", ERR_NAME); - cont=1; - } else if (rc != length) { - fprintf(stderr, "expected to write %lld bytes, actually " - "wrote %lld\n", (long long) length, (long long) rc); - cont=1; - } - if(cont) - continue; - - /* Timestamp checking, part 1 */ - if (stat(test_file, &checkbuf)){ - fprintf(stdout, - "Error: unable to stat the test file; %s (after write)\n", - test_file); - } - else { - if ((statbuf.st_atime == checkbuf.st_atime) && - (statbuf.st_mtime == checkbuf.st_mtime) && - (statbuf.st_ctime == checkbuf.st_ctime)) - { - if (Vflag) { - printf("Report: time stamp unchanged by write\n"); - } - } - else { - printf("Error: time stamp changed by write\n"); - } - } - - rc = dm_read_invis(sid, hanp, hlen, DM_NO_TOKEN, - offset, length, bufp); - if (rc < 0) { - fprintf(stderr, "dm_read_invis failed, %s\n", ERR_NAME); - continue; - } - else if (rc != length) { - fprintf(stderr, "expected to read %lld bytes, actually " - "wrote %lld\n", (long long) length, (long long) rc); - continue; - } - else { - /* Be sure the buffer is filled with the test char */ - error_reported = 0; - for (k=0; k statbuf.st_size) ? - statbuf.st_size : (1000000*(dm_off_t)(ch)); - if (dm_write_invis(sid, hanp, hlen, DM_NO_TOKEN, 0, - offset, 1, bufp)==-1){ - printf("Error invis-writing 0x%x at byte 0x%x million: %s\n", - *(u_char *)bufp, (unsigned int)ch, ERR_NAME); - } - else if (dm_read_invis(sid, hanp, hlen, DM_NO_TOKEN, - offset, 1, bufp)==-1){ - printf("Error invis-reading at byte %u million: %s\n", - (unsigned int)ch, ERR_NAME); - } - else if (((u_char *)bufp)[0]!=ch) { - printf("Error: wanted to read %c and instead got %s.\n", - ch, (u_char *)bufp); - } - else if (Vflag) { - printf("Report: \"0x%x\" was written and \"0x%x\" was read " - "at byte %d million.\n", ch, *(u_char *)bufp, ch); - } - printf("\t(errno subtests beginning...)\n"); - /**** WRITE tests ****/ - /*---------------------------------------------------------*/ - EXCLTEST("write", hanp, hlen, test_token, - dm_write_invis(sid, hanp, hlen, test_token, - 0, 0, 13, "write test 1")) - /*---------------------------------------------------------*/ - if ((test_vp = handle_clone(hanp, hlen)) == NULL) { - fprintf(stderr, - "Cannot create a test handle (%s); skipping EBADF test\n", - ERR_NAME); - } - else { - ((char *) test_vp)[hlen/2]++; - ERRTEST(EBADF, - "write", - dm_write_invis(sid, test_vp, hlen, DM_NO_TOKEN, - 0, 0, 0, bufp)) - ERRTEST(EBADF, - "read", - dm_read_invis(sid, test_vp, hlen, DM_NO_TOKEN, - 0, 0, bufp)) - dm_handle_free(test_vp, hlen); - } - - /*---------------------------------------------------------*/ - ERRTEST(EBADF, - "write", - dm_write_invis(sid, hanp, hlen-1, DM_NO_TOKEN, - 0, 0, 0, NULL)) - /*---------------------------------------------------------*/ - ERRTEST(EFAULT, - "write", - dm_write_invis(sid, NULL, hlen, DM_NO_TOKEN, - 0, 0, 0, NULL)) - /*---------------------------------------------------------*/ -#if 0 - PROBLEM: write_invis refuses to produce EINVAL for - lengths that will not fit in a dm_size_t. - - ERRTEST(EINVAL, - "(bad length) write", - dm_write_invis(sid, hanp, hlen, DM_NO_TOKEN, - 0, 4096, (long long)0xFFFFFFFFFFFFFFFFLL, - "write invalid length test")) -#endif - /*---------------------------------------------------------*/ -#if 0 - PROBLEM (somewhat fixed): A signal is sent, rather than EFBIG. - Presumably, this signal is needed to comply with...something. - If this is uncommented, the program will abort here, with the - error message "exceeded file size limit". - - ERRTEST(EFBIG, - "write", - dm_write_invis(sid, hanp, hlen, DM_NO_TOKEN, - 0, (long long)0xFFFFFFFFFFLL, - (long long)0xFFFFFFFFFFLL, - "foo foo foo")) -#endif - /*---------------------------------------------------------*/ -#ifdef VERITAS_21 - ERRTEST(EINVAL, - "(bad offset) write", - dm_write_invis(sid, hanp, hlen, DM_NO_TOKEN, - 0, (dm_size_t) ULONG_MAX, 5, - "write invalid offset test")) -#else -#ifndef linux - ERRTEST(EINVAL, - "(bad offset) write", - dm_write_invis(sid, hanp, hlen, DM_NO_TOKEN, - 0, (dm_size_t) ULONGLONG_MAX, 5, - "write invalid offset test")) -#endif -#endif - - /*---------------------------------------------------------*/ - ERRTEST(EINVAL, - "(bad sid) write", - dm_write_invis(-100, hanp, hlen, DM_NO_TOKEN, - 0, 0, 26, "write invalid offset test")) - - - /**** READ tests ****/ - /*---------------------------------------------------------*/ - SHAREDTEST("read", hanp, hlen, test_token, - dm_read_invis(sid, hanp, hlen, test_token, - 0, 13, bufp)) - /*---------------------------------------------------------*/ - ERRTEST(EBADF, - "read", - dm_read_invis(sid, hanp, hlen-1, DM_NO_TOKEN, - 0, 0, bufp)) - /*---------------------------------------------------------*/ - ERRTEST(EFAULT, - "read", - dm_read_invis(sid, NULL, hlen, DM_NO_TOKEN, - 0, 0, bufp)) - /*---------------------------------------------------------*/ -#ifdef VERITAS_21 - ERRTEST(EINVAL, - "(bad offset) read", - dm_read_invis(sid, hanp, hlen, DM_NO_TOKEN, - ULONG_MAX, 5, bufp)); -#else -#ifndef linux - ERRTEST(EINVAL, - "(bad offset) read", - dm_read_invis(sid, hanp, hlen, DM_NO_TOKEN, - ULONGLONG_MAX, 5, bufp)); -#endif -#endif - - /*---------------------------------------------------------*/ - ERRTEST(EINVAL, - "(bad sid) read", - dm_read_invis(-100, hanp, hlen, DM_NO_TOKEN, - 0, 5, bufp)) - /*---------------------------------------------------------*/ - printf("\t(errno subtests complete!)\n"); - } - sprintf(test_file, "%s/DMAPI_invis_test_file.ERRNO", - dir_name); - sprintf(command, "rm %s \n", test_file); - system(command); - - printf("Invisible read/write tests complete.\n"); - - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite2/src/test_region.c b/dmapi/src/suite2/src/test_region.c deleted file mode 100644 index e4dad7fe..00000000 --- a/dmapi/src/suite2/src/test_region.c +++ /dev/null @@ -1,251 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ - -#include - -#include -#include - -#include -#include - - -/*--------------------------------------------------------------------------- - -Automated test of the DMAPI functions dm_set_region() and dm_get_region(). - -The command line is: - - test_region [-s sid] ls_path directory - -where - pathname - is the name of a file - ls_path - is the path to a specific copy of ls, important only for its size - sid - is the session ID whose events you you are interested in. -----------------------------------------------------------------------------*/ - -#define NELEM 1 - -#ifndef linux -extern char *sys_errlist[]; -#endif -extern int optind; -extern char *optarg; - - -char *Progname; - - -u_int reg_flags[8] = {DM_REGION_NOEVENT, - DM_REGION_READ, - DM_REGION_WRITE, - DM_REGION_TRUNCATE, - DM_REGION_READ | DM_REGION_WRITE, - DM_REGION_READ | DM_REGION_TRUNCATE, - DM_REGION_WRITE | DM_REGION_TRUNCATE, - DM_REGION_READ | DM_REGION_WRITE | DM_REGION_TRUNCATE}; - - - -static void -usage(void) -{ - fprintf(stderr, "usage:\t%s [-s sid] ls_path pathname\n", Progname); - exit(1); -} - - -int -main( - int argc, - char **argv) -{ - dm_region_t region = { 0, 0, 0 }; - dm_region_t checkregion = { 0, 0, 0 }; - dm_sessid_t sid = DM_NO_SESSION; - char *dir_name = NULL; - char *ls_path = NULL; - char object[128]; - char command[128]; - u_int exactflag; - u_int nelem_read = 0; - void *hanp; - size_t hlen; - char *name; - int opt; - int i; - int Vflag = 0; - dm_token_t test_token = DM_NO_TOKEN; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - /* Crack and validate the command line options. */ - - while ((opt = getopt(argc, argv, "vo:l:s:")) != EOF) { - switch (opt) { - case 'v': - Vflag++; - break; - case 'o': - region.rg_offset = atol(optarg); - break; - case 'l': - region.rg_size = atol(optarg); - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 2 > argc) - usage(); - ls_path = argv[optind]; - dir_name = argv[optind+1]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - /***********************************************\ - |* Beginning the testing of set/get_region... *| - \***********************************************/ - - printf("Region test beginning...\n"); - sprintf(object, "%s/VeryLongUnlikelyFilename.REGIONTEST", dir_name); - sprintf(command, "cp %s %s \n", ls_path, object); - system(command); - - /* Get the test file's handle. */ - if (dm_path_to_handle(object, &hanp, &hlen)) { - fprintf(stderr, "can't get handle for file %s\n", object); - exit(1); - } - /* Loop over all possible region flag combinations, - * setting and getting. See what works! - */ - for (i = 0; i < 8; i++) { - region.rg_flags = reg_flags[i]; - if (dm_set_region(sid, hanp, hlen, DM_NO_TOKEN, NELEM, - ®ion, &exactflag)) { - fprintf(stderr, "dm_set_region failed, %s\n", - ERR_NAME); - continue; - } - if (exactflag != DM_TRUE){ - fprintf(stdout, "oops...exactflag was false!\n"); - } - if (dm_get_region(sid, hanp, hlen, DM_NO_TOKEN, NELEM, - &checkregion, &nelem_read)) { - fprintf(stderr, "dm_get_region failed, %s\n", - ERR_NAME); - continue; - } - if (region.rg_flags != checkregion.rg_flags) { - fprintf(stdout, "set region flags %d, but found %d\n", - region.rg_flags, checkregion.rg_flags); - } - else if (Vflag) { - fprintf(stdout, "Test #%d okay\n", i); - } - } - - /*************************************\ - |* Correct-input testing complete. *| - |* Beginning improper-input testing. *| - \*************************************/ - printf("\t(errno subtests beginning...)\n"); - region.rg_flags = 7; - - /**** SET tests ****/ - /*---------------------------------------------------------*/ - ERRTEST(E2BIG, - "set", - dm_set_region(sid, hanp, hlen, DM_NO_TOKEN, - 2, ®ion, &exactflag)) - ERRTEST(E2BIG, - "set", - dm_set_region(sid, hanp, hlen, DM_NO_TOKEN, - -1, ®ion, &exactflag)) - /*---------------------------------------------------------*/ - EXCLTEST("set", hanp, hlen, test_token, - dm_set_region(sid, hanp, hlen, test_token, - NELEM, ®ion, &exactflag)) - /*---------------------------------------------------------*/ - ERRTEST(EFAULT, - "set", - dm_set_region(sid, hanp, hlen, DM_NO_TOKEN, - NELEM, (dm_region_t*)(-1000), &exactflag)) - ERRTEST(EFAULT, - "set", - dm_set_region(sid, hanp, hlen, DM_NO_TOKEN, - NELEM, ®ion, (dm_boolean_t*)(-1000))) - /*---------------------------------------------------------*/ - ERRTEST(EINVAL, - "set (bad session id)", - dm_set_region(-100, hanp, hlen, DM_NO_TOKEN, - NELEM, ®ion, &exactflag)) - /*---------------------------------------------------------*/ - - /**** GET tests ****/ - /*---------------------------------------------------------*/ - ERRTEST (E2BIG, - "get", - dm_get_region(sid, hanp, hlen, DM_NO_TOKEN, - 0, &checkregion, &nelem_read)) - /*---------------------------------------------------------*/ - ERRTEST(EFAULT, - "get (bad handle)", - dm_get_region(sid, NULL, hlen, DM_NO_TOKEN, - NELEM, &checkregion, &nelem_read)) - /*---------------------------------------------------------*/ - ERRTEST(EFAULT, - "get (bad regbufp)", - dm_get_region(sid, hanp, hlen, DM_NO_TOKEN, - NELEM, (dm_region_t *)(-1000), &nelem_read)) - /*---------------------------------------------------------*/ - ERRTEST(EFAULT, - "get (bad nelemp)", - dm_get_region(sid, hanp, hlen, DM_NO_TOKEN, - NELEM, &checkregion, (u_int *)(-1000))) - /*---------------------------------------------------------*/ - SHAREDTEST("get", hanp, hlen, test_token, - dm_get_region(sid, hanp, hlen, test_token, - NELEM, &checkregion, &nelem_read)) - /*---------------------------------------------------------*/ - ERRTEST(EINVAL, - "get", - dm_get_region(-100, hanp, hlen, DM_NO_TOKEN, - NELEM, &checkregion, &nelem_read)) - /*---------------------------------------------------------*/ - printf("\t(errno subtests complete)\n"); - /**********************************\ - |* End of improper-input testing. *| - \**********************************/ - - sprintf(command, "rm %s \n", object); - system(command); - printf("Region test complete.\n"); - - /***********************************\ - |* End of set/get_region testing. *| - \***********************************/ - - dm_handle_free(hanp, hlen); - exit(0); -} diff --git a/dmapi/src/suite2/src/test_rights.c b/dmapi/src/suite2/src/test_rights.c deleted file mode 100644 index 175f04e8..00000000 --- a/dmapi/src/suite2/src/test_rights.c +++ /dev/null @@ -1,278 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2000-2001 Silicon Graphics, Inc. - * All Rights Reserved. - */ -#include -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - - -/*--------------------------------------------------------------------------- -Automated test of access rights, involving many DMAPI functions - -The command line is: - test_rights [-s sid] [-v] ls_path pathname - -where: - sid - is the session ID whose events you you are interested in. - ls_path - is the path to a copy of ls, which will be copied as a test file. - pathname - is the filesystem to use for the test. -----------------------------------------------------------------------------*/ - -#define NUM_TOKENS 4 - -extern int optind; -extern int opterr; -extern char *optarg; - -char *Progname; -int Vflag=0; - -static void -usage(void) -{ - fprintf(stderr, - "Usage: %s [-v] [-s sid] ls_path pathname\n", - Progname); - exit(1); -} - - -int -main(int argc, char **argv) { - - dm_sessid_t sid = DM_NO_SESSION; - dm_token_t token[NUM_TOKENS]; - dm_token_t test_token; - void *fs_hanp; - size_t fs_hlen; - void *dir_hanp; - size_t dir_hlen; - void *ap; - size_t alen; - void *bp; - size_t blen; - void *cp; - size_t clen; - char *name; - char *ls_path; - char *pathname; - char fname_a[100]; - char fname_b[100]; - char fname_c[100]; - char command[150]; - int opt; - int i=0; - - Progname = strrchr(argv[0], '/'); - if (Progname) { - Progname++; - } else { - Progname = argv[0]; - } - - opterr = 0; - while ((opt = getopt(argc, argv, "vn:s:")) != EOF) { - switch (opt) { - case 'v': - Vflag++; - break; - case 's': - sid = atol(optarg); - break; - case '?': - usage(); - } - } - if (optind + 2 != argc) { - usage(); - } - ls_path = argv[optind]; - pathname = argv[optind+1]; - - if (dm_init_service(&name) == -1) { - fprintf(stderr, "Can't initialize the DMAPI\n"); - exit(1); - } - if (sid == DM_NO_SESSION) - find_test_session(&sid); - - printf("Beginning access rights testing...\n"); - - sprintf(fname_a, "%s/DMAPI_rights_test_file_a", pathname); - sprintf(command, "cp %s %s\n", ls_path, fname_a); - system(command); - - if (dm_path_to_handle(fname_a, &ap, &alen)) { - fprintf(stderr, "ERROR: can't get handle for %s; %s\n", - fname_a, ERR_NAME); - goto abort_test; - } - - sprintf(fname_b, "%s/DMAPI_rights_test_file_b", pathname); - sprintf(command, "cp %s %s\n", ls_path, fname_b); - system(command); - - if (dm_path_to_handle(fname_b, &bp, &blen)) { - fprintf(stderr, "ERROR: can't get handle for %s; %s\n", - fname_b, ERR_NAME); - goto abort_test; - } - - sprintf(fname_c, "%s/DMAPI_rights_test_file_c", pathname); - sprintf(command, "cp %s %s\n", ls_path, fname_c); - system(command); - - if (dm_path_to_handle(fname_c, &cp, &clen)) { - fprintf(stderr, "ERROR: can't get handle for %s; %s\n", - fname_c, ERR_NAME); - goto abort_test; - } - - if (dm_path_to_fshandle(pathname, &fs_hanp, &fs_hlen)) { - fprintf(stderr, "ERROR: can't get handle for %s; %s\n", - pathname, ERR_NAME); - goto abort_test; - } - - sprintf(pathname, "%s/DMAPI_rights_test_dir", pathname); - sprintf(command, "mkdir %s\n", pathname); - system(command); - - if (dm_path_to_handle(pathname, &dir_hanp, &dir_hlen)) { - fprintf(stderr, "ERROR: can't get handle for %s; %s\n", - pathname, ERR_NAME); - goto abort_test; - } - - /* Test remaining functions for appropriate - * right requirements... - *------------------------------------------------------------*/ - { - dm_off_t off = (dm_off_t)0; - dm_extent_t extent; - u_int nelem_ret; - SHAREDTEST("get_allocinfo", ap, alen, test_token, - dm_get_allocinfo(sid, ap, alen, test_token, - &off, 1, &extent, &nelem_ret)) - } - /*------------------------------------------------------------*/ - { - void *bufp=(void*)malloc(5*sizeof(dm_attrlist_t)); - size_t rlen; - SHAREDTEST("getall_dmattr", ap, alen, test_token, - dm_getall_dmattr(sid, ap, alen, test_token, - 5, bufp, &rlen)) - } - /*------------------------------------------------------------*/ - { - dm_attrloc_t loc; - SHAREDTEST("init_attrloc", dir_hanp, dir_hlen, test_token, - dm_init_attrloc(sid, dir_hanp, dir_hlen, test_token, - &loc)) - } - /*------------------------------------------------------------*/ -#if 0 - mkdir_by_handle is NOT SUPPORTED in current SGI DMAPI - - { - SHAREDTEST("mkdir_by_handle", fs_hanp, fs_hlen, test_token, - dm_mkdir_by_handle(sid, fs_hanp, fs_hlen, test_token, - dir_hanp, dir_hlen, "FUBAR_DIR")) - } -#endif - /*------------------------------------------------------------*/ - { dm_eventset_t eventset; - DMEV_ZERO(eventset); - EXCLTEST("set_disp", fs_hanp, fs_hlen, test_token, - dm_set_disp(sid, fs_hanp, fs_hlen, test_token, - &eventset, DM_EVENT_MAX)) - } - /*------------------------------------------------------------*/ - { dm_attrname_t attrname={"TEST"}; - EXCLTEST("set_return...", fs_hanp, fs_hlen, test_token, - dm_set_return_on_destroy(sid, fs_hanp, fs_hlen, test_token, - &attrname, DM_TRUE)) - } - /*------------------------------------------------------------*/ - - /* Create the tokens */ - for (i=1; i/dev/null 2>&1 -_dmapi_scratch_mount - -mkdir -p $SCRATCH_MNT/dmapi - -# run DMAPI test using verbose output -${DMAPI_QASUITE2_DIR}src/test_dmattr -v $DMAPI_LS_TO_COPY_PATH $SCRATCH_MNT - -status=0 -exit diff --git a/tests/xfs/142.out b/tests/xfs/142.out deleted file mode 100644 index 504b4002..00000000 --- a/tests/xfs/142.out +++ /dev/null @@ -1,232 +0,0 @@ -QA output created by 142 -Attribute tests beginning... -Report: success with set #0. -Report: success with set #1. -Report: success with set #2. -Report: success with set #3. -Report: success with set #4. -Report: success with set #5. -Report: success with set #6. -Report: success with set #7. -Report: success with set #8. -Report: success with set #9. -Report: success with set #10. -Report: success with set #11. -Report: success with set #12. -Report: success with set #13. -Report: success with set #14. -Report: success with set #15. -Report: success with set #16. -Report: success with set #17. -Report: success with set #18. -Report: success with set #19. -Report: success with set #20. -Report: success with set #21. -Report: success with set #22. -Report: success with set #23. -Report: success with set #24. -Report: success with set #25. -Report: success with set #26. -Report: success with set #27. -Report: success with set #28. -Report: success with set #29. -Report: success with set #30. -Report: success with set #31. -Report: success with set #32. -Report: success with set #33. -Report: success with set #34. -Report: success with set #35. -Report: success with set #36. -Report: success with set #37. -Report: success with set #38. -Report: success with set #39. -Report: success with set #40. -Report: success with set #41. -Report: success with set #42. -Report: success with set #43. -Report: success with set #44. -Report: success with set #45. -Report: success with set #46. -Report: success with set #47. -Report: success with set #48. -Report: success with set #49. -Report: success with get #0. (output matches expectation) -Report: success with get #1. (output matches expectation) -Report: success with get #2. (output matches expectation) -Report: success with get #3. (output matches expectation) -Report: success with get #4. (output matches expectation) -Report: success with get #5. (output matches expectation) -Report: success with get #6. (output matches expectation) -Report: success with get #7. (output matches expectation) -Report: success with get #8. (output matches expectation) -Report: success with get #9. (output matches expectation) -Report: success with get #10. (output matches expectation) -Report: success with get #11. (output matches expectation) -Report: success with get #12. (output matches expectation) -Report: success with get #13. (output matches expectation) -Report: success with get #14. (output matches expectation) -Report: success with get #15. (output matches expectation) -Report: success with get #16. (output matches expectation) -Report: success with get #17. (output matches expectation) -Report: success with get #18. (output matches expectation) -Report: success with get #19. (output matches expectation) -Report: success with get #20. (output matches expectation) -Report: success with get #21. (output matches expectation) -Report: success with get #22. (output matches expectation) -Report: success with get #23. (output matches expectation) -Report: success with get #24. (output matches expectation) -Report: success with get #25. (output matches expectation) -Report: success with get #26. (output matches expectation) -Report: success with get #27. (output matches expectation) -Report: success with get #28. (output matches expectation) -Report: success with get #29. (output matches expectation) -Report: success with get #30. (output matches expectation) -Report: success with get #31. (output matches expectation) -Report: success with get #32. (output matches expectation) -Report: success with get #33. (output matches expectation) -Report: success with get #34. (output matches expectation) -Report: success with get #35. (output matches expectation) -Report: success with get #36. (output matches expectation) -Report: success with get #37. (output matches expectation) -Report: success with get #38. (output matches expectation) -Report: success with get #39. (output matches expectation) -Report: success with get #40. (output matches expectation) -Report: success with get #41. (output matches expectation) -Report: success with get #42. (output matches expectation) -Report: success with get #43. (output matches expectation) -Report: success with get #44. (output matches expectation) -Report: success with get #45. (output matches expectation) -Report: success with get #46. (output matches expectation) -Report: success with get #47. (output matches expectation) -Report: success with get #48. (output matches expectation) -Report: success with get #49. (output matches expectation) -Report: Time stamp was correctly unchanged by test 0. -Report: Time stamp was correctly unchanged by test 1. -Report: Time stamp was correctly unchanged by test 2. -Report: Time stamp was correctly unchanged by test 3. -Report: Time stamp was correctly unchanged by test 4. -Report: Time stamp was correctly unchanged by test 5. -Report: Time stamp was correctly unchanged by test 6. -Report: Time stamp was correctly unchanged by test 7. -Report: Time stamp was correctly unchanged by test 8. -Report: Time stamp was correctly unchanged by test 9. -Report: Time stamp was correctly unchanged by test 10. -Report: Time stamp was correctly unchanged by test 11. -Report: Time stamp was correctly unchanged by test 12. -Report: Time stamp was correctly unchanged by test 13. -Report: Time stamp was correctly unchanged by test 14. -Report: Time stamp was correctly unchanged by test 15. -Report: Time stamp was correctly unchanged by test 16. -Report: Time stamp was correctly unchanged by test 17. -Report: Time stamp was correctly unchanged by test 18. -Report: Time stamp was correctly unchanged by test 19. -Report: Time stamp was correctly unchanged by test 20. -Report: Time stamp was correctly unchanged by test 21. -Report: Time stamp was correctly unchanged by test 22. -Report: Time stamp was correctly unchanged by test 23. -Report: Time stamp was correctly unchanged by test 24. -Report: Time stamp was correctly changed by test 25. -Report: Time stamp was correctly changed by test 26. -Report: Time stamp was correctly changed by test 27. -Report: Time stamp was correctly changed by test 28. -Report: Time stamp was correctly changed by test 29. -Report: Time stamp was correctly changed by test 30. -Report: Time stamp was correctly changed by test 31. -Report: Time stamp was correctly changed by test 32. -Report: Time stamp was correctly changed by test 33. -Report: Time stamp was correctly changed by test 34. -Report: Time stamp was correctly changed by test 35. -Report: Time stamp was correctly changed by test 36. -Report: Time stamp was correctly changed by test 37. -Report: Time stamp was correctly changed by test 38. -Report: Time stamp was correctly changed by test 39. -Report: Time stamp was correctly changed by test 40. -Report: Time stamp was correctly changed by test 41. -Report: Time stamp was correctly changed by test 42. -Report: Time stamp was correctly changed by test 43. -Report: Time stamp was correctly changed by test 44. -Report: Time stamp was correctly changed by test 45. -Report: Time stamp was correctly changed by test 46. -Report: Time stamp was correctly changed by test 47. -Report: Time stamp was correctly changed by test 48. -Report: Time stamp was correctly changed by test 49. -Report: success with remove test #0. -Report: success with remove test #1. -Report: success with remove test #2. -Report: success with remove test #3. -Report: success with remove test #4. -Report: success with remove test #5. -Report: success with remove test #6. -Report: success with remove test #7. -Report: success with remove test #8. -Report: success with remove test #9. -Report: success with remove test #10. -Report: success with remove test #11. -Report: success with remove test #12. -Report: success with remove test #13. -Report: success with remove test #14. -Report: success with remove test #15. -Report: success with remove test #16. -Report: success with remove test #17. -Report: success with remove test #18. -Report: success with remove test #19. -Report: success with remove test #20. -Report: success with remove test #21. -Report: success with remove test #22. -Report: success with remove test #23. -Report: success with remove test #24. -Report: success with remove test #25. -Report: success with remove test #26. -Report: success with remove test #27. -Report: success with remove test #28. -Report: success with remove test #29. -Report: success with remove test #30. -Report: success with remove test #31. -Report: success with remove test #32. -Report: success with remove test #33. -Report: success with remove test #34. -Report: success with remove test #35. -Report: success with remove test #36. -Report: success with remove test #37. -Report: success with remove test #38. -Report: success with remove test #39. -Report: success with remove test #40. -Report: success with remove test #41. -Report: success with remove test #42. -Report: success with remove test #43. -Report: success with remove test #44. -Report: success with remove test #45. -Report: success with remove test #46. -Report: success with remove test #47. -Report: success with remove test #48. -Report: success with remove test #49. - (errno subtests beginning...) - report on test for E2BIG in set: test successful - report on test for EACCES in no-right set: test successful - report on test for EACCES in SHARED set: test successful - report on test for success in EXCL set: test successful. - report on test for EBADF in set: test successful - report on test for EBADF in set: test successful - report on test for EFAULT in set: test successful - report on test for EFAULT in set: test successful - report on test for EINVAL in set (bad token): test successful - report on test for EINVAL in set (bad session id): test successful - report on test for E2BIG in get: test successful - report on test for EACCES in no-right get: test successful - report on test for success in SHARED get: test successful. - report on test for success in EXCL get: test successful. - report on test for EBADF in get: test successful - report on test for EBADF in get: test successful - report on test for EINVAL in get (invalid session): test successful - report on test for EINVAL in get (invalid token): test successful - report on test for ENOENT in get: test successful - report on test for EACCES in no-right remove: test successful - report on test for EACCES in SHARED remove: test successful - report on test for success in EXCL remove: test successful. - report on test for EBADF in remove: test successful - report on test for EBADF in remove: test successful - report on test for EFAULT in remove: test successful - report on test for EINVAL in remove (bad token): test successful - report on test for EINVAL in remove (bad session): test successful - (errno subtests complete) -Attribute tests complete! diff --git a/tests/xfs/143 b/tests/xfs/143 deleted file mode 100755 index 5e2b97aa..00000000 --- a/tests/xfs/143 +++ /dev/null @@ -1,36 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 143 -# -# Dmapi get/set_eventlist -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -mkdir -p $SCRATCH_MNT/dmapi - -# run DMAPI test using verbose output -${DMAPI_QASUITE2_DIR}src/test_eventlist -v $DMAPI_LS_TO_COPY_PATH $SCRATCH_MNT - -status=0 -exit diff --git a/tests/xfs/143.out b/tests/xfs/143.out deleted file mode 100644 index 78973819..00000000 --- a/tests/xfs/143.out +++ /dev/null @@ -1,98 +0,0 @@ -QA output created by 143 - SET: DM_EVENT_ATTRIBUTE - SET: DM_EVENT_DESTROY - (All events cleared) - SET: DM_EVENT_CREATE - SET: DM_EVENT_POSTCREATE - SET: DM_EVENT_REMOVE - SET: DM_EVENT_POSTREMOVE - SET: DM_EVENT_RENAME - SET: DM_EVENT_POSTRENAME - SET: DM_EVENT_LINK - SET: DM_EVENT_POSTLINK - SET: DM_EVENT_SYMLINK - SET: DM_EVENT_POSTSYMLINK - SET: DM_EVENT_ATTRIBUTE - SET: DM_EVENT_DESTROY - (All events cleared) - SET: DM_EVENT_PREUNMOUNT - SET: DM_EVENT_UNMOUNT - SET: DM_EVENT_DEBUT - SET: DM_EVENT_CREATE - SET: DM_EVENT_POSTCREATE - SET: DM_EVENT_REMOVE - SET: DM_EVENT_POSTREMOVE - SET: DM_EVENT_RENAME - SET: DM_EVENT_POSTRENAME - SET: DM_EVENT_LINK - SET: DM_EVENT_POSTLINK - SET: DM_EVENT_SYMLINK - SET: DM_EVENT_POSTSYMLINK - SET: DM_EVENT_ATTRIBUTE - SET: DM_EVENT_DESTROY - SET: DM_EVENT_NOSPACE - (All events cleared) -File test beginning... - note: DM_EVENT_CANCEL could not be set (EINVAL) - note: DM_EVENT_MOUNT could not be set (EINVAL) - note: DM_EVENT_PREUNMOUNT could not be set (EINVAL) - note: DM_EVENT_UNMOUNT could not be set (EINVAL) - note: DM_EVENT_DEBUT could not be set (EINVAL) - note: DM_EVENT_CREATE could not be set (EINVAL) - note: DM_EVENT_CLOSE could not be set (EINVAL) - note: DM_EVENT_POSTCREATE could not be set (EINVAL) - note: DM_EVENT_REMOVE could not be set (EINVAL) - note: DM_EVENT_POSTREMOVE could not be set (EINVAL) - note: DM_EVENT_RENAME could not be set (EINVAL) - note: DM_EVENT_POSTRENAME could not be set (EINVAL) - note: DM_EVENT_LINK could not be set (EINVAL) - note: DM_EVENT_POSTLINK could not be set (EINVAL) - note: DM_EVENT_SYMLINK could not be set (EINVAL) - note: DM_EVENT_POSTSYMLINK could not be set (EINVAL) - note: DM_EVENT_READ could not be set (EINVAL) - note: DM_EVENT_WRITE could not be set (EINVAL) - note: DM_EVENT_TRUNCATE could not be set (EINVAL) - note: DM_EVENT_NOSPACE could not be set (EINVAL) - note: DM_EVENT_USER could not be set (EINVAL) - (errno subtests beginning...) - report on test for EACCES in no-right set: test successful - report on test for EACCES in SHARED set: test successful - report on test for success in EXCL set: test successful. - report on test for EBADF in set: test successful - report on test for EFAULT in set: test successful - report on test for EFAULT in set: test successful - report on test for EINVAL in set (bad session): test successful - report on test for EINVAL in set (bad token): test successful - report on test for EACCES in no-right get: test successful - report on test for success in SHARED get: test successful. - report on test for success in EXCL get: test successful. - report on test for EBADF in get: test successful - report on test for EFAULT in get: test successful - report on test for EINVAL in get (bad session): test successful - report on test for EINVAL in get (bad token): test successful - (errno subtests complete) - File test complete. - -Directory test beginning... - note: DM_EVENT_CANCEL could not be set (EINVAL) - note: DM_EVENT_MOUNT could not be set (EINVAL) - note: DM_EVENT_PREUNMOUNT could not be set (EINVAL) - note: DM_EVENT_UNMOUNT could not be set (EINVAL) - note: DM_EVENT_DEBUT could not be set (EINVAL) - note: DM_EVENT_CLOSE could not be set (EINVAL) - note: DM_EVENT_READ could not be set (EINVAL) - note: DM_EVENT_WRITE could not be set (EINVAL) - note: DM_EVENT_TRUNCATE could not be set (EINVAL) - note: DM_EVENT_NOSPACE could not be set (EINVAL) - note: DM_EVENT_USER could not be set (EINVAL) - Directory test complete. - -Filesystem test beginning... - note: DM_EVENT_CANCEL could not be set (EINVAL) - note: DM_EVENT_MOUNT could not be set (EINVAL) - note: DM_EVENT_CLOSE could not be set (EINVAL) - note: DM_EVENT_READ could not be set (EINVAL) - note: DM_EVENT_WRITE could not be set (EINVAL) - note: DM_EVENT_TRUNCATE could not be set (EINVAL) - note: DM_EVENT_USER could not be set (EINVAL) - Filesystem test complete. diff --git a/tests/xfs/144 b/tests/xfs/144 deleted file mode 100755 index 705fac40..00000000 --- a/tests/xfs/144 +++ /dev/null @@ -1,36 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 144 -# -# Dmapi get/set_fileattr, get_bulkattr, get_dirattrs -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -mkdir -p $SCRATCH_MNT/dmapi - -# run DMAPI test using verbose output -${DMAPI_QASUITE2_DIR}src/test_fileattr -v $DMAPI_LS_TO_COPY_PATH $SCRATCH_MNT 2>&1 | $PERL_PROG -ne 's/\d+\sloops/NUM loops/g ; print;' - -status=0 -exit diff --git a/tests/xfs/144.out b/tests/xfs/144.out deleted file mode 100644 index d5f37371..00000000 --- a/tests/xfs/144.out +++ /dev/null @@ -1,245 +0,0 @@ -QA output created by 144 - -Creating/setting up test files. -report: set #0 was successful. -report: set #1 was successful. -report: set #2 was successful. -report: set #3 was successful. -report: set #4 was successful. -report: set #5 was successful. -report: set #6 was successful. -report: set #7 was successful. -report: set #8 was successful. -report: set #9 was successful. -report: set #10 was successful. -report: set #11 was successful. -report: set #12 was successful. -report: set #13 was successful. -report: set #14 was successful. -report: set #15 was successful. -report: set #16 was successful. -report: set #17 was successful. -report: set #18 was successful. -report: set #19 was successful. -report: set #20 was successful. -report: set #21 was successful. -report: set #22 was successful. -report: set #23 was successful. -report: set #24 was successful. -report: set #25 was successful. -report: set #26 was successful. -report: set #27 was successful. -report: set #28 was successful. -report: set #29 was successful. -report: set #30 was successful. -report: set #31 was successful. -report: set #32 was successful. -report: set #33 was successful. -report: set #34 was successful. -report: set #35 was successful. -report: set #36 was successful. -report: set #37 was successful. -report: set #38 was successful. -report: set #39 was successful. -report: set #40 was successful. -report: set #41 was successful. -report: set #42 was successful. -report: set #43 was successful. -report: set #44 was successful. -report: set #45 was successful. -report: set #46 was successful. -report: set #47 was successful. -report: set #48 was successful. -report: set #49 was successful. - -Running get_fileattr test -report: get #0 had no errors. -report: get #1 had no errors. -report: get #2 had no errors. -report: get #3 had no errors. -report: get #4 had no errors. -report: get #5 had no errors. -report: get #6 had no errors. -report: get #7 had no errors. -report: get #8 had no errors. -report: get #9 had no errors. -report: get #10 had no errors. -report: get #11 had no errors. -report: get #12 had no errors. -report: get #13 had no errors. -report: get #14 had no errors. -report: get #15 had no errors. -report: get #16 had no errors. -report: get #17 had no errors. -report: get #18 had no errors. -report: get #19 had no errors. -report: get #20 had no errors. -report: get #21 had no errors. -report: get #22 had no errors. -report: get #23 had no errors. -report: get #24 had no errors. -report: get #25 had no errors. -report: get #26 had no errors. -report: get #27 had no errors. -report: get #28 had no errors. -report: get #29 had no errors. -report: get #30 had no errors. -report: get #31 had no errors. -report: get #32 had no errors. -report: get #33 had no errors. -report: get #34 had no errors. -report: get #35 had no errors. -report: get #36 had no errors. -report: get #37 had no errors. -report: get #38 had no errors. -report: get #39 had no errors. -report: get #40 had no errors. -report: get #41 had no errors. -report: get #42 had no errors. -report: get #43 had no errors. -report: get #44 had no errors. -report: get #45 had no errors. -report: get #46 had no errors. -report: get #47 had no errors. -report: get #48 had no errors. -report: get #49 had no errors. - -Running get_dirattrs test -report: get #0 had no errors. -report: get #1 had no errors. -report: get #2 had no errors. -report: get #3 had no errors. -report: get #4 had no errors. -report: get #5 had no errors. -report: get #6 had no errors. -report: get #7 had no errors. -report: get #8 had no errors. -report: get #9 had no errors. -report: get #10 had no errors. -report: get #11 had no errors. -report: get #12 had no errors. -report: get #13 had no errors. -report: get #14 had no errors. -report: get #15 had no errors. -report: get #16 had no errors. -report: get #17 had no errors. -report: get #18 had no errors. -report: get #19 had no errors. -report: get #20 had no errors. -report: get #21 had no errors. -report: get #22 had no errors. -report: get #23 had no errors. -report: get #24 had no errors. -report: get #25 had no errors. -report: get #26 had no errors. -report: get #27 had no errors. -report: get #28 had no errors. -report: get #29 had no errors. -report: get #30 had no errors. -report: get #31 had no errors. -report: get #32 had no errors. -report: get #33 had no errors. -report: get #34 had no errors. -report: get #35 had no errors. -report: get #36 had no errors. -report: get #37 had no errors. -report: get #38 had no errors. -report: get #39 had no errors. -report: get #40 had no errors. -report: get #41 had no errors. -report: get #42 had no errors. -report: get #43 had no errors. -report: get #44 had no errors. -report: get #45 had no errors. -report: get #46 had no errors. -report: get #47 had no errors. -report: get #48 had no errors. -report: get #49 had no errors. -report: get_dirattrs successfully found 50 files in NUM loops. - -Running get_bulkattr test -report: get #0 had no errors. -report: get #1 had no errors. -report: get #2 had no errors. -report: get #3 had no errors. -report: get #4 had no errors. -report: get #5 had no errors. -report: get #6 had no errors. -report: get #7 had no errors. -report: get #8 had no errors. -report: get #9 had no errors. -report: get #10 had no errors. -report: get #11 had no errors. -report: get #12 had no errors. -report: get #13 had no errors. -report: get #14 had no errors. -report: get #15 had no errors. -report: get #16 had no errors. -report: get #17 had no errors. -report: get #18 had no errors. -report: get #19 had no errors. -report: get #20 had no errors. -report: get #21 had no errors. -report: get #22 had no errors. -report: get #23 had no errors. -report: get #24 had no errors. -report: get #25 had no errors. -report: get #26 had no errors. -report: get #27 had no errors. -report: get #28 had no errors. -report: get #29 had no errors. -report: get #30 had no errors. -report: get #31 had no errors. -report: get #32 had no errors. -report: get #33 had no errors. -report: get #34 had no errors. -report: get #35 had no errors. -report: get #36 had no errors. -report: get #37 had no errors. -report: get #38 had no errors. -report: get #39 had no errors. -report: get #40 had no errors. -report: get #41 had no errors. -report: get #42 had no errors. -report: get #43 had no errors. -report: get #44 had no errors. -report: get #45 had no errors. -report: get #46 had no errors. -report: get #47 had no errors. -report: get #48 had no errors. -report: get #49 had no errors. -report: get_bulkattr successfully found 50 files in NUM loops. -Beginning file attribute tests... - (errno subtests beginning...) - report on test for EACCES in no-right set: test successful - report on test for EACCES in SHARED set: test successful - report on test for success in EXCL set: test successful. - report on test for EBADF in set: test successful - report on test for EFAULT in set: test successful - report on test for EINVAL in set (bad token): test successful - report on test for EINVAL in set (bad session): test successful - report on test for EACCES in no-right get: test successful - report on test for success in SHARED get: test successful. - report on test for success in EXCL get: test successful. - report on test for EBADF in get: test successful - report on test for EFAULT in get: test successful - report on test for EFAULT in get: test successful - report on test for EINVAL in get (bad token): test successful - report on test for EINVAL in get (bad session): test successful - report on test for EACCES in no-right get_dir: test successful - report on test for success in SHARED get_dir: test successful. - report on test for success in EXCL get_dir: test successful. - report on test for EBADF in get: test successful - report on test for EFAULT in get_dir (bad locp): test successful - report on test for EFAULT in get_dir (bad bufp): test successful - report on test for EFAULT in get_dir (bad rlenp): test successful - report on test for EACCES in no-right get_bulk: test successful - report on test for success in SHARED get_bulk: test successful. - report on test for success in EXCL get_bulk: test successful. - report on test for EFAULT in get_bulk (bad bufp): test successful - report on test for EFAULT in get_bulk (bad locp): test successful - report on test for EFAULT in get_bulk (bad rlenp): test successful - report on test for EFAULT in get_bulk (bad bufp): test successful - (errno subtests complete) -(Deleting test files...) -File attribute tests complete. diff --git a/tests/xfs/145 b/tests/xfs/145 deleted file mode 100755 index b2d535c3..00000000 --- a/tests/xfs/145 +++ /dev/null @@ -1,36 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 145 -# -# Dmapi probe/punch_hole -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -mkdir -p $SCRATCH_MNT/dmapi - -# run DMAPI test using verbose output -${DMAPI_QASUITE2_DIR}src/test_hole -v $DMAPI_LS_TO_COPY_PATH $SCRATCH_MNT - -status=0 -exit diff --git a/tests/xfs/145.out b/tests/xfs/145.out deleted file mode 100644 index cd7d03ef..00000000 --- a/tests/xfs/145.out +++ /dev/null @@ -1,36 +0,0 @@ -QA output created by 145 -Hole test beginning... - Time stamp unchanged by hole from offset 28672. - Verified hole at 28672 - Time stamp unchanged by hole from offset 24576. - Verified hole at 24576 - Time stamp unchanged by hole from offset 20480. - Verified hole at 20480 - Time stamp unchanged by hole from offset 16384. - Verified hole at 16384 - Time stamp unchanged by hole from offset 12288. - Verified hole at 12288 - Time stamp unchanged by hole from offset 8192. - Verified hole at 8192 - Time stamp unchanged by hole from offset 4096. - Verified hole at 4096 - (beginning errno subtests...) - report on test for E2BIG in probe (from past EOF): test successful - report on test for E2BIG in probe (to past EOF): test successful - report on test for EACCES in no-right probe: test successful - report on test for success in SHARED probe: test successful. - report on test for success in EXCL probe: test successful. - report on test for EACCES in no-right punch: test successful - report on test for EACCES in SHARED punch: test successful - report on test for success in EXCL punch: test successful. - report on test for EBADF in probe: test successful - report on test for EBADF in punch: test successful - report on test for EFAULT in probe (null handle): test successful - report on test for EFAULT in probe (bad rlen): test successful - report on test for EFAULT in probe (bad roff): test successful - report on test for EFAULT in punch: test successful - report on test for EINVAL in probe (bad session): test successful - report on test for EINVAL in probe (bad token): test successful - report on test for EINVAL in probe (bad token 2): test successful - (errno subtests complete) -Hole test complete. diff --git a/tests/xfs/146 b/tests/xfs/146 deleted file mode 100755 index e442921e..00000000 --- a/tests/xfs/146 +++ /dev/null @@ -1,43 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 146 -# -# Dmapi read/write_invis -# -seqfull=$0 -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -_report_filter () { - $PERL_PROG -ne "s/Report: \"0x[0-f]+\" was written and \"0x[0-f]+\" was read at/Report: \"HEX\" was written and \"HEX\" was read at/g ; - s/byte [0-9]+ million./byte NUM million./g; - print" -} - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -mkdir -p $SCRATCH_MNT/dmapi - -# run DMAPI test using verbose output -${DMAPI_QASUITE2_DIR}src/test_invis -v $DMAPI_LS_TO_COPY_PATH $SCRATCH_MNT | _report_filter - -status=0 -exit diff --git a/tests/xfs/146.out b/tests/xfs/146.out deleted file mode 100644 index 4a28a12f..00000000 --- a/tests/xfs/146.out +++ /dev/null @@ -1,320 +0,0 @@ -QA output created by 146 -Invisible read/write tests beginning... -Report: time stamp unchanged by write - -Report: time stamp unchanged by read -Report: time stamp unchanged by write - -Report: time stamp unchanged by read -Report: time stamp unchanged by write - -Report: time stamp unchanged by read -Report: time stamp unchanged by write - -Report: time stamp unchanged by read -Report: time stamp unchanged by write - -Report: time stamp unchanged by read -Report: time stamp unchanged by write - -Report: time stamp unchanged by read -Report: time stamp unchanged by write - -Report: time stamp unchanged by read -Report: time stamp unchanged by write - -Report: time stamp unchanged by read -Report: time stamp unchanged by write - -Report: time stamp unchanged by read -Report: time stamp unchanged by write - -Report: time stamp unchanged by read -Report: time stamp unchanged by write -..... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -..... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -..... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -..... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -..... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -..... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -..... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -..... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -..... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -..... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.......... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.......... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.......... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.......... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.......... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.......... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.......... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.......... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.......... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.......... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -......................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -......................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -......................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -......................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -......................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -......................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -......................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -......................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -......................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -......................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.............................. -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.............................. -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.............................. -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.............................. -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.............................. -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.............................. -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.............................. -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.............................. -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.............................. -Report: time stamp unchanged by read -Report: time stamp unchanged by write -.............................. -Report: time stamp unchanged by read -Report: time stamp unchanged by write -................................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -................................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -................................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -................................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -................................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -................................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -................................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -................................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -................................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -................................... -Report: time stamp unchanged by read -Report: time stamp unchanged by write -........................................ -Report: time stamp unchanged by read -Report: time stamp unchanged by write -........................................ -Report: time stamp unchanged by read -Report: time stamp unchanged by write -........................................ -Report: time stamp unchanged by read -Report: time stamp unchanged by write -........................................ -Report: time stamp unchanged by read -Report: time stamp unchanged by write -........................................ -Report: time stamp unchanged by read -Report: time stamp unchanged by write -........................................ -Report: time stamp unchanged by read -Report: time stamp unchanged by write -........................................ -Report: time stamp unchanged by read -Report: time stamp unchanged by write -........................................ -Report: time stamp unchanged by read -Report: time stamp unchanged by write -........................................ -Report: time stamp unchanged by read -Report: time stamp unchanged by write -........................................ -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............................................. -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............................................. -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............................................. -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............................................. -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............................................. -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............................................. -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............................................. -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............................................. -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............................................. -Report: time stamp unchanged by read -Report: time stamp unchanged by write -............................................. -Report: time stamp unchanged by read -Report: "HEX" was written and "HEX" was read at byte NUM million. - (errno subtests beginning...) - report on test for EACCES in no-right write: test successful - report on test for EACCES in SHARED write: test successful - report on test for success in EXCL write: test successful. - report on test for EBADF in write: test successful - report on test for EBADF in read: test successful - report on test for EBADF in write: test successful - report on test for EFAULT in write: test successful - report on test for EINVAL in (bad sid) write: test successful - report on test for EACCES in no-right read: test successful - report on test for success in SHARED read: test successful. - report on test for success in EXCL read: test successful. - report on test for EBADF in read: test successful - report on test for EFAULT in read: test successful - report on test for EINVAL in (bad sid) read: test successful - (errno subtests complete!) -Invisible read/write tests complete. diff --git a/tests/xfs/147 b/tests/xfs/147 deleted file mode 100755 index adca847c..00000000 --- a/tests/xfs/147 +++ /dev/null @@ -1,36 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 147 -# -# Dmapi get/set_region -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -mkdir -p $SCRATCH_MNT/dmapi - -# run DMAPI test using verbose output -${DMAPI_QASUITE2_DIR}src/test_region -v $DMAPI_LS_TO_COPY_PATH $SCRATCH_MNT - -status=0 -exit diff --git a/tests/xfs/147.out b/tests/xfs/147.out deleted file mode 100644 index 5ebbb65b..00000000 --- a/tests/xfs/147.out +++ /dev/null @@ -1,29 +0,0 @@ -QA output created by 147 -Region test beginning... -Test #0 okay -Test #1 okay -Test #2 okay -Test #3 okay -Test #4 okay -Test #5 okay -Test #6 okay -Test #7 okay - (errno subtests beginning...) - report on test for E2BIG in set: test successful - report on test for E2BIG in set: test successful - report on test for EACCES in no-right set: test successful - report on test for EACCES in SHARED set: test successful - report on test for success in EXCL set: test successful. - report on test for EFAULT in set: test successful - report on test for EFAULT in set: test successful - report on test for EINVAL in set (bad session id): test successful - report on test for E2BIG in get: test successful - report on test for EFAULT in get (bad handle): test successful - report on test for EFAULT in get (bad regbufp): test successful - report on test for EFAULT in get (bad nelemp): test successful - report on test for EACCES in no-right get: test successful - report on test for success in SHARED get: test successful. - report on test for success in EXCL get: test successful. - report on test for EINVAL in get: test successful - (errno subtests complete) -Region test complete. diff --git a/tests/xfs/150 b/tests/xfs/150 deleted file mode 100755 index 67020946..00000000 --- a/tests/xfs/150 +++ /dev/null @@ -1,47 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 150 -# -# Set DM_EVENT_RENAME event on a DMAPI filesystem and verify it is set. -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -_filter_fs_handle() -{ - $SED_PROG -e "s/$DMAPI_FS_HANDLE/DMAPI_FS_HANDLE/g" -} - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -DMAPI_FS_HANDLE="`${DMAPI_QASUITE1_DIR}cmd/path_to_fshandle $SCRATCH_MNT`" - -${DMAPI_QASUITE1_DIR}cmd/get_eventlist $DMAPI_FS_HANDLE \ - | _filter_fs_handle - -${DMAPI_QASUITE1_DIR}cmd/set_eventlist $DMAPI_FS_HANDLE DM_EVENT_RENAME -echo "set_eventlist Returned: $?" - -${DMAPI_QASUITE1_DIR}cmd/get_eventlist $DMAPI_FS_HANDLE \ - | _filter_fs_handle - -status=0 -exit diff --git a/tests/xfs/150.out b/tests/xfs/150.out deleted file mode 100644 index 7600c8c2..00000000 --- a/tests/xfs/150.out +++ /dev/null @@ -1,5 +0,0 @@ -QA output created by 150 -Events on object DMAPI_FS_HANDLE (0x0), nelemp 23: -set_eventlist Returned: 0 -Events on object DMAPI_FS_HANDLE (0x400), nelemp 23: -DM_EVENT_RENAME (10) diff --git a/tests/xfs/151 b/tests/xfs/151 deleted file mode 100755 index cc2714c6..00000000 --- a/tests/xfs/151 +++ /dev/null @@ -1,92 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 151 -# -# Create three DMAPI sessions, -# verify they have been created, -# then distroy first session -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -_dm_create_session() -{ - eval `${DMAPI_QASUITE1_DIR}../simple/dm_create_session` - echo "RET=$ret NEWSID=NUM" -} - -_filter_sid_list() -{ - $SED_PROG -e "s/sids=\"[0-9| ]*\"/sids=NUMS/" -} - -_check_sids() -{ - for i in $@; do - CHECKED_SID=`${DMAPI_QASUITE1_DIR}../simple/dm_getall_sessions \ - | perl -ne "if (/^sids.*[\"|\s]($i)[\"|\s].*/) {print \$1} ;"` - if [ -z "$CHECKED_SID" ] ; then - echo "ERROR: SID(s) not created" - ${DMAPI_QASUITE1_DIR}../simple/dm_getall_sessions >>$seqres.full - return - fi - done -} - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -echo "*** create 3 sessions" -_dm_create_session -sid1=$newsid -_dm_create_session -sid2=$newsid -_dm_create_session -sid3=$newsid - -echo "*** check 3 sessions exist" -_check_sids $sid1 $sid2 $sid3 - -echo "*** destroy first session" -${DMAPI_QASUITE1_DIR}../simple/dm_destroy_session -s $sid1 - -#should fail -echo "*** check first session no longer exists" -_check_sids $sid1 - -#should still remain -echo "*** check last 2 session exist" -_check_sids $sid2 $sid3 - -echo "*** query" -${DMAPI_QASUITE1_DIR}../simple/dm_query_session -s $sid2 - -echo "*** remove remaining sessions" -${DMAPI_QASUITE1_DIR}../simple/dm_destroy_session -s $sid2 -${DMAPI_QASUITE1_DIR}../simple/dm_destroy_session -s $sid3 - -echo "*** check second session no longer exists" -_check_sids $sid2 - -echo "*** check third session no longer exists" -_check_sids $sid3 - -status=0 -exit diff --git a/tests/xfs/151.out b/tests/xfs/151.out deleted file mode 100644 index 0ddec83b..00000000 --- a/tests/xfs/151.out +++ /dev/null @@ -1,22 +0,0 @@ -QA output created by 151 -*** create 3 sessions -RET=0 NEWSID=NUM -RET=0 NEWSID=NUM -RET=0 NEWSID=NUM -*** check 3 sessions exist -*** destroy first session -ret=0 -*** check first session no longer exists -ERROR: SID(s) not created -*** check last 2 session exist -*** query -ret=0 -rlen=6 -sessinfo=test1 -*** remove remaining sessions -ret=0 -ret=0 -*** check second session no longer exists -ERROR: SID(s) not created -*** check third session no longer exists -ERROR: SID(s) not created diff --git a/tests/xfs/152 b/tests/xfs/152 deleted file mode 100755 index ad64d39a..00000000 --- a/tests/xfs/152 +++ /dev/null @@ -1,41 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 152 -# -# Verify DMAPI functions -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -_filter_handles() -{ - $PERL_PROG -ne "s/[0-9|a-f]+\s+\(dm/DMAPI_HANDLE \(dm/g ; print" | - $PERL_PROG -ne "s/hash [0-9]+/hash HASH/g; print" -} - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -DMAPI_FS_HANDLE="`${DMAPI_QASUITE1_DIR}cmd/path_to_fshandle $SCRATCH_MNT`" - -${DMAPI_QASUITE1_DIR}cmd/dm_handle $SCRATCH_MNT | _filter_handles - -status=0 -exit diff --git a/tests/xfs/152.out b/tests/xfs/152.out deleted file mode 100644 index abf6759d..00000000 --- a/tests/xfs/152.out +++ /dev/null @@ -1,10 +0,0 @@ -QA output created by 152 - han1: hash HASH value DMAPI_HANDLE (dm_path_to_handle) -fshan1: hash HASH value DMAPI_HANDLE (dm_path_to_fshandle - han2: hash HASH value DMAPI_HANDLE (dm_fd_to_handle) -fshan2: hash HASH value DMAPI_HANDLE (dm_handle_to_fshandle) -fsid DMAPI_HANDLE (dm_handle_to_fsid) -ino DMAPI_HANDLE (dm_handle_to_ino) -igen DMAPI_HANDLE (dm_handle_to_igen) - han3: hash HASH value DMAPI_HANDLE (dm_make_handle) -fshan3: hash HASH value DMAPI_HANDLE (dm_make_fshandle) diff --git a/tests/xfs/153 b/tests/xfs/153 deleted file mode 100755 index c3dee949..00000000 --- a/tests/xfs/153 +++ /dev/null @@ -1,48 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 153 -# -# Associate filesystem with a session by setting DMAPI DM_EVENT_RENAME -# disposition. -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -DMAPI_FS_HANDLE="`${DMAPI_QASUITE1_DIR}cmd/path_to_fshandle $SCRATCH_MNT`" - -echo "*** create DMAPI sessions" -eval `${DMAPI_QASUITE1_DIR}../simple/dm_create_session` -sid1=$newsid -eval `${DMAPI_QASUITE1_DIR}../simple/dm_create_session` -sid2=$newsid - -${DMAPI_QASUITE1_DIR}cmd/set_disp -s $sid1 $DMAPI_FS_HANDLE DM_EVENT_RENAME -${DMAPI_QASUITE1_DIR}cmd/getall_disp $sid1 | $PERL_PROG -ne "s/fshandle\s+[0-9|a-f]+/fshandle FS_HANDLE/; print" -${DMAPI_QASUITE1_DIR}cmd/getall_disp $sid2 - -echo "*** destroy DMAPI sessions" -${DMAPI_QASUITE1_DIR}../simple/dm_destroy_session -s $sid1 -${DMAPI_QASUITE1_DIR}../simple/dm_destroy_session -s $sid2 - -status=0 -exit diff --git a/tests/xfs/153.out b/tests/xfs/153.out deleted file mode 100644 index 89b088da..00000000 --- a/tests/xfs/153.out +++ /dev/null @@ -1,8 +0,0 @@ -QA output created by 153 -*** create DMAPI sessions -rlenp is 32 -fshandle FS_HANDLE dm_eventset_t 02000 -rlenp is 0 -*** destroy DMAPI sessions -ret=0 -ret=0 diff --git a/tests/xfs/154 b/tests/xfs/154 deleted file mode 100755 index 26d795ef..00000000 --- a/tests/xfs/154 +++ /dev/null @@ -1,35 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 154 -# -# Get DMAPI filesystem handle -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -DMAPI_FS_HANDLE="`${DMAPI_QASUITE1_DIR}cmd/path_to_fshandle $SCRATCH_MNT`" - -${DMAPI_QASUITE1_DIR}cmd/get_config_events $DMAPI_FS_HANDLE - -status=0 -exit diff --git a/tests/xfs/154.out b/tests/xfs/154.out deleted file mode 100644 index 2b4b6634..00000000 --- a/tests/xfs/154.out +++ /dev/null @@ -1,21 +0,0 @@ -QA output created by 154 -Events supported (0x3fffae), nelemp 23: -DM_EVENT_MOUNT (1) -DM_EVENT_PREUNMOUNT (2) -DM_EVENT_UNMOUNT (3) -DM_EVENT_CREATE (5) -DM_EVENT_POSTCREATE (7) -DM_EVENT_REMOVE (8) -DM_EVENT_POSTREMOVE (9) -DM_EVENT_RENAME (10) -DM_EVENT_POSTRENAME (11) -DM_EVENT_LINK (12) -DM_EVENT_POSTLINK (13) -DM_EVENT_SYMLINK (14) -DM_EVENT_POSTSYMLINK (15) -DM_EVENT_READ (16) -DM_EVENT_WRITE (17) -DM_EVENT_TRUNCATE (18) -DM_EVENT_ATTRIBUTE (19) -DM_EVENT_DESTROY (20) -DM_EVENT_NOSPACE (21) diff --git a/tests/xfs/155 b/tests/xfs/155 deleted file mode 100755 index d41e4f82..00000000 --- a/tests/xfs/155 +++ /dev/null @@ -1,67 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 155 -# -# DMAPI event DM_EVENT_RENAME generation -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -DMAPI_FS_HANDLE="`${DMAPI_QASUITE1_DIR}cmd/path_to_fshandle $SCRATCH_MNT`" - -rm -f $SCRATCH_MNT/dmapi_test_file1 - -echo "*** create DMAPI session" -eval `${DMAPI_QASUITE1_DIR}../simple/dm_create_session` -sid1=$newsid - -${DMAPI_QASUITE1_DIR}cmd/set_eventlist $DMAPI_FS_HANDLE DM_EVENT_RENAME -echo "set_eventlist Returned: $?" - -echo "*** setting DMAPI DM_EVENT_RENAME disposition." -${DMAPI_QASUITE1_DIR}cmd/set_disp -s $sid1 $DMAPI_FS_HANDLE DM_EVENT_RENAME - -echo "***creating file on dmapi filesystem" -touch $SCRATCH_MNT/dmapi_test_file - -echo "***renameing file on dmapi filesystem" -mv $SCRATCH_MNT/dmapi_test_file $SCRATCH_MNT/dmapi_test_file1 & -MV_PID=$! - -sleep 1 - -echo "***checking for dmapi event" -eval `${DMAPI_QASUITE1_DIR}cmd/get_events $sid1 \ - | $PERL_PROG -ne 's/new parent/new_parent/g; - s/old parent/old_parent/g; - s/new name/new_name/g; - s/old name/old_name/g; - s/\s+/\n/g; - print;'` - -${DMAPI_QASUITE1_DIR}cmd/respond_event $sid1 $token 1 0 - -${DMAPI_QASUITE1_DIR}../simple/dm_destroy_session -s $sid1 - -status=0 -exit diff --git a/tests/xfs/155.out b/tests/xfs/155.out deleted file mode 100644 index cd39b20d..00000000 --- a/tests/xfs/155.out +++ /dev/null @@ -1,8 +0,0 @@ -QA output created by 155 -*** create DMAPI session -set_eventlist Returned: 0 -*** setting DMAPI DM_EVENT_RENAME disposition. -***creating file on dmapi filesystem -***renameing file on dmapi filesystem -***checking for dmapi event -ret=0 diff --git a/tests/xfs/156 b/tests/xfs/156 deleted file mode 100755 index 8ac1518d..00000000 --- a/tests/xfs/156 +++ /dev/null @@ -1,34 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 156 -# -# DMAPI get directory attributes (simple check -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -${DMAPI_QASUITE1_DIR}cmd/get_dirattrs $SCRATCH_MNT > $seqres.full -[ $? -ne 0 ] && echo "get_dirattrs failed - see $seqres.full" - -status=0 -exit diff --git a/tests/xfs/156.out b/tests/xfs/156.out deleted file mode 100644 index 6d44eee7..00000000 --- a/tests/xfs/156.out +++ /dev/null @@ -1 +0,0 @@ -QA output created by 156 diff --git a/tests/xfs/157 b/tests/xfs/157 deleted file mode 100755 index ba1e3343..00000000 --- a/tests/xfs/157 +++ /dev/null @@ -1,36 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 157 -# -# get/set DMAPI attributes -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -touch $SCRATCH_MNT/dmapi_test -${DMAPI_QASUITE1_DIR}cmd/set_dmattr $SCRATCH_MNT/dmapi_test ATTR_NAME_1 ATTR_VALUE_1 -[ $? -ne 0 ] && echo "set_dmattr failed" -${DMAPI_QASUITE1_DIR}cmd/get_dmattr $SCRATCH_MNT/dmapi_test ATTR_NAME_1 - -status=0 -exit diff --git a/tests/xfs/157.out b/tests/xfs/157.out deleted file mode 100644 index edfba029..00000000 --- a/tests/xfs/157.out +++ /dev/null @@ -1,2 +0,0 @@ -QA output created by 157 -rlenp is 13, value is 'ATTR_VALUE_1' diff --git a/tests/xfs/158 b/tests/xfs/158 deleted file mode 100755 index 65f18d2c..00000000 --- a/tests/xfs/158 +++ /dev/null @@ -1,81 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 158 -# -# get/set file attributes -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -touch $SCRATCH_MNT/dmapi_test - -_get_file_attr() { - ${DMAPI_QASUITE1_DIR}cmd/get_fileattr $SCRATCH_MNT/dmapi_test | grep $1 -} - -_set_file_attr() { - ${DMAPI_QASUITE1_DIR}cmd/set_fileattr $@ -} - -#dt_atime -atime_before="`_get_file_attr dt_atime`" -_set_file_attr -a 05m $SCRATCH_MNT/dmapi_test -atime_after="`_get_file_attr dt_atime`" -[ "$atime_before" == "$atime_after" ] && echo "dt_atime not updated" - -#dt_mtime -mtime_before="`_get_file_attr dt_mtime`" -_set_file_attr -m 10m $SCRATCH_MNT/dmapi_test -mtime_after="`_get_file_attr dt_mtime`" -[ "$mtime_before" == "$mtime_after" ] && echo "mt_mtime not updated" - -#dt_ctime -ctime_before="`_get_file_attr dt_ctime`" -_set_file_attr -c 15m $SCRATCH_MNT/dmapi_test -ctime_after="`_get_file_attr dt_ctime`" -[ "$ctime_before" == "$ctime_after" ] && echo "dt_ctime not updated" - -#dt_dtime -dtime_before="`_get_file_attr dt_dtime`" -_set_file_attr -d 20m $SCRATCH_MNT/dmapi_test -dtime_after="`_get_file_attr dt_dtime`" -[ "$dtime_before" == "$dtime_after" ] && echo "dt_dtime not updated" - -# -M mode -_set_file_attr -M 744 $SCRATCH_MNT/dmapi_test -_get_file_attr dt_mode - -# -u uid -_set_file_attr -u 666 $SCRATCH_MNT/dmapi_test -_get_file_attr dt_uid - -# -g gid -_set_file_attr -g 666 $SCRATCH_MNT/dmapi_test -_get_file_attr dt_gid - -# -S size -_set_file_attr -S 1024 $SCRATCH_MNT/dmapi_test -_get_file_attr dt_size - -status=0 -exit diff --git a/tests/xfs/158.out b/tests/xfs/158.out deleted file mode 100644 index 0e312061..00000000 --- a/tests/xfs/158.out +++ /dev/null @@ -1,6 +0,0 @@ -QA output created by 158 -dt_mode (type) S_IFREG -dt_mode (perm) 0744 -dt_uid 666 -dt_gid 666 -dt_size 1024 diff --git a/tests/xfs/159 b/tests/xfs/159 deleted file mode 100755 index cc35ec2d..00000000 --- a/tests/xfs/159 +++ /dev/null @@ -1,48 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 159 -# -# Create DMAPI event and respond to it. -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -echo "***create session" -eval `${DMAPI_QASUITE1_DIR}../simple/dm_create_session` - -echo "***create user event" -token="`${DMAPI_QASUITE1_DIR}cmd/create_userevent -s $newsid TEST_USER_EVENT | perl -ne 'if (/token ([0-9]+)/) { print $1; } '`" -[ $? -ne 0 ] && echo "failed to create user event" - -echo "***respond to user event" -${DMAPI_QASUITE1_DIR}cmd/respond_event $newsid $token 1 0 -[ $? -ne 0 ] && echo "1st respond_event failed." - -#already responded should fail -${DMAPI_QASUITE1_DIR}cmd/respond_event $newsid $token 1 0 2>/dev/null -[ $? -eq 0 ] && echo "2nd respond_event didn't fail." - -${DMAPI_QASUITE1_DIR}../simple/dm_destroy_session -s $newsid - -status=0 -exit diff --git a/tests/xfs/159.out b/tests/xfs/159.out deleted file mode 100644 index fd57dc0c..00000000 --- a/tests/xfs/159.out +++ /dev/null @@ -1,5 +0,0 @@ -QA output created by 159 -***create session -***create user event -***respond to user event -ret=0 diff --git a/tests/xfs/160 b/tests/xfs/160 deleted file mode 100755 index 400977e5..00000000 --- a/tests/xfs/160 +++ /dev/null @@ -1,58 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 160 -# -# Change and view DMAPI access rights. -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -touch $SCRATCH_MNT/dmapi_test - -echo "***create session" -eval `${DMAPI_QASUITE1_DIR}../simple/dm_create_session` - -echo "***create user event" -token="`${DMAPI_QASUITE1_DIR}cmd/create_userevent -s $newsid ACCESS_RIGHT_EVENT | perl -ne 'if (/token ([0-9]+)/) { print $1; } '`" -[ $? -ne 0 ] && echo "failed to create user event" - -echo "*** query & up/downgrade right" -${DMAPI_QASUITE1_DIR}cmd/query_right -s $newsid $token $SCRATCH_MNT/dmapi_test - -${DMAPI_QASUITE1_DIR}cmd/request_right -s $newsid $token $SCRATCH_MNT/dmapi_test DM_RIGHT_SHARED -${DMAPI_QASUITE1_DIR}cmd/query_right -s $newsid $token $SCRATCH_MNT/dmapi_test - -${DMAPI_QASUITE1_DIR}cmd/upgrade_right -s $newsid $token $SCRATCH_MNT/dmapi_test -${DMAPI_QASUITE1_DIR}cmd/query_right -s $newsid $token $SCRATCH_MNT/dmapi_test - -${DMAPI_QASUITE1_DIR}cmd/downgrade_right -s $newsid $token $SCRATCH_MNT/dmapi_test -${DMAPI_QASUITE1_DIR}cmd/query_right -s $newsid $token $SCRATCH_MNT/dmapi_test - -echo "*** respond to event" -${DMAPI_QASUITE1_DIR}cmd/respond_event $newsid $token 1 0 - -echo "*** destroy session" -${DMAPI_QASUITE1_DIR}../simple/dm_destroy_session -s $newsid - -status=0 -exit diff --git a/tests/xfs/160.out b/tests/xfs/160.out deleted file mode 100644 index 33e3ff64..00000000 --- a/tests/xfs/160.out +++ /dev/null @@ -1,11 +0,0 @@ -QA output created by 160 -***create session -***create user event -*** query & up/downgrade right -right is DM_RIGHT_NULL -right is DM_RIGHT_SHARED -right is DM_RIGHT_EXCL -right is DM_RIGHT_SHARED -*** respond to event -*** destroy session -ret=0 diff --git a/tests/xfs/161 b/tests/xfs/161 deleted file mode 100755 index 1f88a00a..00000000 --- a/tests/xfs/161 +++ /dev/null @@ -1,47 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 161 -# -# DMAPI function punch hole. Create 3Mb file and punch a hole from -# offset 1Mb to EOF -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -_filter_get_allocinfo() -{ - $SED_PROG -e "s#$qa_file#QA_FILE#g" \ - -e "s#18014398509481983\|34359738367#MAX_FILE_BLOCKS#g" -} - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -qa_file=$SCRATCH_MNT/dmapi_hole_file - -dd if=/dev/zero bs=1024k count=3 of=$qa_file - -${DMAPI_QASUITE1_DIR}cmd/get_allocinfo $qa_file | _filter_get_allocinfo -${DMAPI_QASUITE1_DIR}cmd/probe_hole -o 1048576 -l 0 $qa_file -${DMAPI_QASUITE1_DIR}cmd/punch_hole -o 1048576 -l 0 $qa_file -${DMAPI_QASUITE1_DIR}cmd/get_allocinfo $qa_file | _filter_get_allocinfo - -status=0 -exit diff --git a/tests/xfs/161.out b/tests/xfs/161.out deleted file mode 100644 index 1f096dc5..00000000 --- a/tests/xfs/161.out +++ /dev/null @@ -1,12 +0,0 @@ -QA output created by 161 -3+0 records in -3+0 records out -QA_FILE: starting offset 0 - returned 0, nelemp 2 - 0: [0..6143]: resv - 1: [6144..MAX_FILE_BLOCKS]: hole -roffp is 1048576, rlenp is 0 -QA_FILE: starting offset 0 - returned 0, nelemp 2 - 0: [0..2047]: resv - 1: [2048..MAX_FILE_BLOCKS]: hole diff --git a/tests/xfs/162 b/tests/xfs/162 deleted file mode 100755 index 91e743b2..00000000 --- a/tests/xfs/162 +++ /dev/null @@ -1,64 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 162 -# -# Placing holds on objects -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -qa_file=$SCRATCH_MNT/dmapi_hole_file -touch $qa_file - -echo "***create session" -eval `${DMAPI_QASUITE1_DIR}../simple/dm_create_session` - -echo "***create user event" -token="`${DMAPI_QASUITE1_DIR}cmd/create_userevent -s $newsid OBJECT_HOLD_EVENT | perl -ne 'if (/token ([0-9]+)/) { print $1; } '`" -[ $? -ne 0 ] && echo "failed to create user event" - -echo "***check hold" -${DMAPI_QASUITE1_DIR}cmd/obj_ref_query -s $newsid $token $qa_file -${DMAPI_QASUITE1_DIR}cmd/obj_ref_hold -s $newsid $token $qa_file -${DMAPI_QASUITE1_DIR}cmd/obj_ref_query -s $newsid $token $qa_file - -echo "***check holding an object thats already held" -${DMAPI_QASUITE1_DIR}cmd/obj_ref_hold -s $newsid $token $qa_file 2>/dev/null -[ $? -eq 0 ] && echo "obj_ref_hold should have failed" - -echo "***release object" -${DMAPI_QASUITE1_DIR}cmd/obj_ref_rele -s $newsid $token $qa_file -${DMAPI_QASUITE1_DIR}cmd/obj_ref_query -s $newsid $token $qa_file - -echo "***release object with no hold" -${DMAPI_QASUITE1_DIR}cmd/obj_ref_rele -s $newsid $token $qa_file 2>/dev/null -[ $? -eq 0 ] && echo "obj_ref_rele should have failed" - -echo "***respond to user event" -${DMAPI_QASUITE1_DIR}cmd/respond_event $newsid $token 1 0 -[ $? -ne 0 ] && echo "1st respond_event failed." - -${DMAPI_QASUITE1_DIR}../simple/dm_destroy_session -s $newsid - -status=0 -exit diff --git a/tests/xfs/162.out b/tests/xfs/162.out deleted file mode 100644 index 6d995978..00000000 --- a/tests/xfs/162.out +++ /dev/null @@ -1,12 +0,0 @@ -QA output created by 162 -***create session -***create user event -***check hold -there is no hold -there is a hold -***check holding an object thats already held -***release object -there is no hold -***release object with no hold -***respond to user event -ret=0 diff --git a/tests/xfs/163 b/tests/xfs/163 deleted file mode 100755 index 3cf55188..00000000 --- a/tests/xfs/163 +++ /dev/null @@ -1,48 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 163 -# -# File descriptor to handle conversion -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -_filter_paths() -{ - $SED_PROG -e "s#$qa_file#QA_FILE#g" \ - -e "s#$SCRATCH_MNT#SCRATCH_MNT#g" -} - -_filter_handles() -{ - $PERL_PROG -ne 's/handle [0-f]+/handle HANDLE/ ; print' -} - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -qa_file=$SCRATCH_MNT/dmapi_hole_file -touch $qa_file - -${DMAPI_QASUITE1_DIR}cmd/fd_to_handle $SCRATCH_MNT | _filter_paths | _filter_handles -${DMAPI_QASUITE1_DIR}cmd/fd_to_handle $qa_file | _filter_paths | _filter_handles - -status=0 -exit diff --git a/tests/xfs/163.out b/tests/xfs/163.out deleted file mode 100644 index 2285d101..00000000 --- a/tests/xfs/163.out +++ /dev/null @@ -1,3 +0,0 @@ -QA output created by 163 -handle HANDLE, path SCRATCH_MNT -handle HANDLE, path QA_FILE diff --git a/tests/xfs/168 b/tests/xfs/168 deleted file mode 100755 index 050d8216..00000000 --- a/tests/xfs/168 +++ /dev/null @@ -1,92 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2007 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 168 -# -# Check for DMAPI destroy events when removing files without attributes -# See PV960928 for details -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -rm -f $seqres.full -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -_filter_dmapi_print_event() { - $PERL_PROG -ne ' -# replace session/file specific output with generic placeholders -s/token\s+\d+/token TOKEN/g ; -s/sequence\s+\d+/sequence SEQ/g ; -s/^\s+parent\s+dir\s+\w+/parent dir PARENT_DIR/g ; -s/^\s+name\s+.*/name FILE_NAME/g ; -s/^\s+mode\s+bits\s+mode\s+\d+:\s+/mode bits mode MODE: /g ; -s/perm\s+[\w|-]+\s[\w|-]+\s[\w|-]+/perm PERMISSIONS/g ; -s/,\s+type\s+.*/, type FILE_TYPE/g ; -s/^\s+object\s+\w+/object OBJECT/g ; -s/^\s+new\s+object\s+\w+/new object OBJECT/g ; -s/^\s+handle\s+\w+/handle HANDLE/g ; - -# when print_event is killed, the following is output. trim it -s/^\s*print_event: Processing any undelivered event messages.*\n//g ; -s/^\s*print_event: Shutting down the session.*\n//g ; - -# trim blank lines -s/^\s*\n//g ; - print ;' -} - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs >/dev/null 2>&1 -_dmapi_scratch_mount - -qa_file_noattr=$SCRATCH_MNT/dmapi_file_noattr -qa_file_withattr=$SCRATCH_MNT/dmapi_file_withattr - -# run dmapi print_event in background to capture events triggered during test -${DMAPI_QASUITE1_DIR}cmd/print_event $SCRATCH_MNT > $tmp.print_event_out 2>&1 & -dmapi_print_event_pid=$! - -# give time for print_event to start capturing events -sleep 2 - -# enable DMAPI set_return_on_destroy for $SCRATCH_MNT -${DMAPI_COMMON_DIR}cmd/set_return_on_destroy -F $SCRATCH_MNT ATTR_NAME_1 - -echo "# create file" -touch $qa_file_noattr -echo "# remove file" -rm -f $qa_file_noattr - -echo "# create file" -touch $qa_file_withattr -echo "# set dmapi attributes on file" -${DMAPI_QASUITE1_DIR}cmd/set_dmattr $qa_file_withattr ATTR_NAME_1 ATTR_VALUE_1 -echo "# remove file" -rm -f $qa_file_withattr - -# kill off background dmapi print_event process -kill $dmapi_print_event_pid -# give dmapi print_event time to finish writing out any events not yet output -wait - -# dmapi destroy events are asyncronous, don't rely on fixed ordering of events -# in print_event output, use sort. -echo "# here comes the dmapi print_event filtered and sorted output" -cat $tmp.print_event_out | tee -a $seqres.full | _filter_dmapi_print_event | LC_COLLATE=POSIX sort -rm $tmp.print_event_out - -status=0 -exit diff --git a/tests/xfs/168.out b/tests/xfs/168.out deleted file mode 100644 index d46d99c1..00000000 --- a/tests/xfs/168.out +++ /dev/null @@ -1,57 +0,0 @@ -QA output created by 168 -# create file -# remove file -# create file -# set dmapi attributes on file -# remove file -# here comes the dmapi print_event filtered and sorted output - attrcopy 415454525f56414c55455f3100 - attrcopy - attrname - attrname ATTR_NAM - retcode 0 - retcode 0 - retcode 0 - retcode 0 -attribute: token TOKEN sequence SEQ -attribute: token TOKEN sequence SEQ -create: token TOKEN sequence SEQ -create: token TOKEN sequence SEQ -destroy: token TOKEN sequence SEQ -destroy: token TOKEN sequence SEQ -handle HANDLE -handle HANDLE -mode bits mode MODE: perm PERMISSIONS, type FILE_TYPE -mode bits mode MODE: perm PERMISSIONS, type FILE_TYPE -mode bits mode MODE: perm PERMISSIONS, type FILE_TYPE -mode bits mode MODE: perm PERMISSIONS, type FILE_TYPE -mode bits mode MODE: perm PERMISSIONS, type FILE_TYPE -mode bits mode MODE: perm PERMISSIONS, type FILE_TYPE -mode bits mode MODE: perm PERMISSIONS, type FILE_TYPE -mode bits mode MODE: perm PERMISSIONS, type FILE_TYPE -name FILE_NAME -name FILE_NAME -name FILE_NAME -name FILE_NAME -name FILE_NAME -name FILE_NAME -name FILE_NAME -name FILE_NAME -new object OBJECT -new object OBJECT -object OBJECT -object OBJECT -parent dir PARENT_DIR -parent dir PARENT_DIR -parent dir PARENT_DIR -parent dir PARENT_DIR -parent dir PARENT_DIR -parent dir PARENT_DIR -parent dir PARENT_DIR -parent dir PARENT_DIR -postcreate: token TOKEN sequence SEQ -postcreate: token TOKEN sequence SEQ -postremove: token TOKEN sequence SEQ -postremove: token TOKEN sequence SEQ -remove: token TOKEN sequence SEQ -remove: token TOKEN sequence SEQ diff --git a/tests/xfs/175 b/tests/xfs/175 deleted file mode 100755 index c8d042aa..00000000 --- a/tests/xfs/175 +++ /dev/null @@ -1,54 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2007 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 175 -# -# Hole punching with extsize hints, holes may not reported by xfs_bmap. -# This is not good for certain backup apps, as they rely on the hole -# being visible in the file so later on they know where to migrate -# back the data from the tape. -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -rm -f $seqres.full -status=1 # failure is the default! -trap "_cleanup; exit \$status" 0 1 2 3 15 - -_cleanup() -{ - rm -f $tmp/* -} - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi -. ./common/punch - -# real QA test starts here -_supported_fs xfs - -_require_scratch - -# test that we have DMAPI support -_dmapi_scratch_mount -_scratch_unmount > /dev/null 2>&1 - -# _test_punch args: blksize extsize_hint filesize "pp1 pp2 pp3" \ -# "ps1 ps2 ps3" "pt1 pt2 pt3" "wp1 wp2" "ws1 ws2" \ -# "w p p w p" resvsp - -echo "-- test dmpunch-hole without an extent size hint --" -_test_punch 4096 0 256 "240" "16" "d" "0" "256" "w p" noresv - -echo -echo "-- this time use a 4k (one block) extent size hint --" -_test_punch 4096 1 256 "240" "16" "d" "0" "256" "w p" noresv - -status=0 -exit diff --git a/tests/xfs/175.out b/tests/xfs/175.out deleted file mode 100644 index cef9b75c..00000000 --- a/tests/xfs/175.out +++ /dev/null @@ -1,63 +0,0 @@ -QA output created by 175 --- test dmpunch-hole without an extent size hint -- -# testing 4096 0 256 240 16 d 0 256 w p noresv ... -+ mounting with dmapi enabled -# spawning test file with 4096 256 0 punch_test_file noresv -[0] punch_test_file -+ not using resvsp at file creation -# writing with 4096 0 256 punch_test_file -# showing file state punch_test_file -punch_test_file: - EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL FLAGS - 0: [0..2047]: 96..2143 0 (96..2143) 2048 00000 - FLAG Values: - 010000 Unwritten preallocated extent - 001000 Doesn't begin on stripe unit - 000100 Doesn't end on stripe unit - 000010 Doesn't begin on stripe width - 000001 Doesn't end on stripe width -# punching with 4096 240 16 d punch_test_file -+ hole punch using dmapi punch_hole -# showing file state punch_test_file -punch_test_file: - EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL FLAGS - 0: [0..1919]: 96..2015 0 (96..2015) 1920 00000 - 1: [1920..2047]: hole 128 - FLAG Values: - 010000 Unwritten preallocated extent - 001000 Doesn't begin on stripe unit - 000100 Doesn't end on stripe unit - 000010 Doesn't begin on stripe width - 000001 Doesn't end on stripe width - --- this time use a 4k (one block) extent size hint -- -# testing 4096 1 256 240 16 d 0 256 w p noresv ... -+ mounting with dmapi enabled -# spawning test file with 4096 256 1 punch_test_file noresv -+ setting extent size hint to 4096 -[4096] punch_test_file -+ not using resvsp at file creation -# writing with 4096 0 256 punch_test_file -# showing file state punch_test_file -punch_test_file: - EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL FLAGS - 0: [0..2047]: 96..2143 0 (96..2143) 2048 00000 - FLAG Values: - 010000 Unwritten preallocated extent - 001000 Doesn't begin on stripe unit - 000100 Doesn't end on stripe unit - 000010 Doesn't begin on stripe width - 000001 Doesn't end on stripe width -# punching with 4096 240 16 d punch_test_file -+ hole punch using dmapi punch_hole -# showing file state punch_test_file -punch_test_file: - EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL FLAGS - 0: [0..1919]: 96..2015 0 (96..2015) 1920 00000 - 1: [1920..2047]: hole 128 - FLAG Values: - 010000 Unwritten preallocated extent - 001000 Doesn't begin on stripe unit - 000100 Doesn't end on stripe unit - 000010 Doesn't begin on stripe width - 000001 Doesn't end on stripe width diff --git a/tests/xfs/176 b/tests/xfs/176 deleted file mode 100755 index 5507e892..00000000 --- a/tests/xfs/176 +++ /dev/null @@ -1,60 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2007 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 176 -# -# Check if resvsp on file create effects bmap output after hole punch. -# 967674: hole not show when file is created with resvsp -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -rm -f $seqres.full -status=1 # failure is the default! -trap "_cleanup; exit \$status" 0 1 2 3 15 - -_cleanup() -{ - rm -f $tmp/* -} - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi -. ./common/punch - -# real QA test starts here -_supported_fs xfs - -_require_scratch - -# test that we have DMAPI support -_dmapi_scratch_mount -_scratch_unmount > /dev/null 2>&1 - -# _test_punch args: blksize extsize_hint filesize "pp1 pp2 pp3" \ -# "ps1 ps2 ps3" "pt1 pt2 pt3" "wp1 wp2" "ws1 ws2" \ -# "w p p w p" resvsp - -echo "-- test dmpunch-hole with resvsp on file create --" -_test_punch 4096 0 256 "240" "16" "d" "0" "256" "w p" - -echo -echo "-- this time dont use resvsp --" -_test_punch 4096 0 256 "240" "16" "d" "0" "256" "w p" noresv - -echo -echo -echo "-- test unresvsp hole punch with resvsp on file create --" -_test_punch 4096 0 256 "240" "16" "u" "0" "256" "w p" - -echo -echo "-- this time dont use resvsp --" -_test_punch 4096 0 256 "240" "16" "u" "0" "256" "w p" noresv - -status=0 -exit diff --git a/tests/xfs/176.out b/tests/xfs/176.out deleted file mode 100644 index d3b65256..00000000 --- a/tests/xfs/176.out +++ /dev/null @@ -1,121 +0,0 @@ -QA output created by 176 --- test dmpunch-hole with resvsp on file create -- -# testing 4096 0 256 240 16 d 0 256 w p ... -+ mounting with dmapi enabled -# spawning test file with 4096 256 0 punch_test_file -[0] punch_test_file -# writing with 4096 0 256 punch_test_file -# showing file state punch_test_file -punch_test_file: - EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL FLAGS - 0: [0..2047]: 96..2143 0 (96..2143) 2048 00000 - FLAG Values: - 010000 Unwritten preallocated extent - 001000 Doesn't begin on stripe unit - 000100 Doesn't end on stripe unit - 000010 Doesn't begin on stripe width - 000001 Doesn't end on stripe width -# punching with 4096 240 16 d punch_test_file -+ hole punch using dmapi punch_hole -# showing file state punch_test_file -punch_test_file: - EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL FLAGS - 0: [0..1919]: 96..2015 0 (96..2015) 1920 00000 - 1: [1920..2047]: hole 128 - FLAG Values: - 010000 Unwritten preallocated extent - 001000 Doesn't begin on stripe unit - 000100 Doesn't end on stripe unit - 000010 Doesn't begin on stripe width - 000001 Doesn't end on stripe width - --- this time dont use resvsp -- -# testing 4096 0 256 240 16 d 0 256 w p noresv ... -+ mounting with dmapi enabled -# spawning test file with 4096 256 0 punch_test_file noresv -[0] punch_test_file -+ not using resvsp at file creation -# writing with 4096 0 256 punch_test_file -# showing file state punch_test_file -punch_test_file: - EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL FLAGS - 0: [0..2047]: 96..2143 0 (96..2143) 2048 00000 - FLAG Values: - 010000 Unwritten preallocated extent - 001000 Doesn't begin on stripe unit - 000100 Doesn't end on stripe unit - 000010 Doesn't begin on stripe width - 000001 Doesn't end on stripe width -# punching with 4096 240 16 d punch_test_file -+ hole punch using dmapi punch_hole -# showing file state punch_test_file -punch_test_file: - EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL FLAGS - 0: [0..1919]: 96..2015 0 (96..2015) 1920 00000 - 1: [1920..2047]: hole 128 - FLAG Values: - 010000 Unwritten preallocated extent - 001000 Doesn't begin on stripe unit - 000100 Doesn't end on stripe unit - 000010 Doesn't begin on stripe width - 000001 Doesn't end on stripe width - - --- test unresvsp hole punch with resvsp on file create -- -# testing 4096 0 256 240 16 u 0 256 w p ... -# spawning test file with 4096 256 0 punch_test_file -[0] punch_test_file -# writing with 4096 0 256 punch_test_file -# showing file state punch_test_file -punch_test_file: - EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL FLAGS - 0: [0..2047]: 96..2143 0 (96..2143) 2048 00000 - FLAG Values: - 010000 Unwritten preallocated extent - 001000 Doesn't begin on stripe unit - 000100 Doesn't end on stripe unit - 000010 Doesn't begin on stripe width - 000001 Doesn't end on stripe width -# punching with 4096 240 16 u punch_test_file -+ hole punch using unresvsp -# showing file state punch_test_file -punch_test_file: - EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL FLAGS - 0: [0..1919]: 96..2015 0 (96..2015) 1920 00000 - 1: [1920..2047]: hole 128 - FLAG Values: - 010000 Unwritten preallocated extent - 001000 Doesn't begin on stripe unit - 000100 Doesn't end on stripe unit - 000010 Doesn't begin on stripe width - 000001 Doesn't end on stripe width - --- this time dont use resvsp -- -# testing 4096 0 256 240 16 u 0 256 w p noresv ... -# spawning test file with 4096 256 0 punch_test_file noresv -[0] punch_test_file -+ not using resvsp at file creation -# writing with 4096 0 256 punch_test_file -# showing file state punch_test_file -punch_test_file: - EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL FLAGS - 0: [0..2047]: 96..2143 0 (96..2143) 2048 00000 - FLAG Values: - 010000 Unwritten preallocated extent - 001000 Doesn't begin on stripe unit - 000100 Doesn't end on stripe unit - 000010 Doesn't begin on stripe width - 000001 Doesn't end on stripe width -# punching with 4096 240 16 u punch_test_file -+ hole punch using unresvsp -# showing file state punch_test_file -punch_test_file: - EXT: FILE-OFFSET BLOCK-RANGE AG AG-OFFSET TOTAL FLAGS - 0: [0..1919]: 96..2015 0 (96..2015) 1920 00000 - 1: [1920..2047]: hole 128 - FLAG Values: - 010000 Unwritten preallocated extent - 001000 Doesn't begin on stripe unit - 000100 Doesn't end on stripe unit - 000010 Doesn't begin on stripe width - 000001 Doesn't end on stripe width diff --git a/tests/xfs/177 b/tests/xfs/177 deleted file mode 100755 index 769d5c8b..00000000 --- a/tests/xfs/177 +++ /dev/null @@ -1,65 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2007 Silicon Graphics, Inc. All Rights Reserved. -# -# FS QA Test No. 177 -# -# Test to reproduce PV#: 964316 -# Check sync reclaims and flushes unlinked inodes to their buffers. -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "_cleanup; exit \$status" 0 1 2 3 15 - -_cleanup() -{ - cd / - rm -f $tmp.* -} - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here - -# Modify as appropriate. -_supported_fs xfs - -# Setup Filesystem -_require_scratch - -# test that we have DMAPI support -_dmapi_scratch_mount -_scratch_unmount > /dev/null 2>&1 - -_scratch_mkfs_xfs >/dev/null 2>&1 \ - || _fail "mkfs failed" - -_scratch_mount - -# run Mark Goodwin test here -# Usage: ./bulkstat_unlink_test iterations nfiles stride dir -# Create dir with nfiles, unlink each stride'th file, sync, bulkstat -echo "Start original bulkstat_unlink_test" -$here/src/bulkstat_unlink_test 10 100 1 $SCRATCH_MNT/bulkstat -$here/src/bulkstat_unlink_test 10 1000 1 $SCRATCH_MNT/bulkstat -$here/src/bulkstat_unlink_test 15 100 6 $SCRATCH_MNT/bulkstat -$here/src/bulkstat_unlink_test 20 1000 3 $SCRATCH_MNT/bulkstat - -# Mount scratch with ikeep enabled -_scratch_unmount -_scratch_mount "-o dmapi,mtpt=$SCRATCH_MNT" - -echo "Start bulkstat_unlink_test_modified" -$here/src/bulkstat_unlink_test_modified 10 1000 1 $SCRATCH_MNT/bulkstat - -# success, all done -status=0 -exit diff --git a/tests/xfs/177.out b/tests/xfs/177.out deleted file mode 100644 index ba3be1ed..00000000 --- a/tests/xfs/177.out +++ /dev/null @@ -1,88 +0,0 @@ -QA output created by 177 -Start original bulkstat_unlink_test -Iteration 0 ... (100 files)passed -Iteration 1 ... (100 files)passed -Iteration 2 ... (100 files)passed -Iteration 3 ... (100 files)passed -Iteration 4 ... (100 files)passed -Iteration 5 ... (100 files)passed -Iteration 6 ... (100 files)passed -Iteration 7 ... (100 files)passed -Iteration 8 ... (100 files)passed -Iteration 9 ... (100 files)passed -Iteration 0 ... (1000 files)passed -Iteration 1 ... (1000 files)passed -Iteration 2 ... (1000 files)passed -Iteration 3 ... (1000 files)passed -Iteration 4 ... (1000 files)passed -Iteration 5 ... (1000 files)passed -Iteration 6 ... (1000 files)passed -Iteration 7 ... (1000 files)passed -Iteration 8 ... (1000 files)passed -Iteration 9 ... (1000 files)passed -Iteration 0 ... (100 files)passed -Iteration 1 ... (100 files)passed -Iteration 2 ... (100 files)passed -Iteration 3 ... (100 files)passed -Iteration 4 ... (100 files)passed -Iteration 5 ... (100 files)passed -Iteration 6 ... (100 files)passed -Iteration 7 ... (100 files)passed -Iteration 8 ... (100 files)passed -Iteration 9 ... (100 files)passed -Iteration 10 ... (100 files)passed -Iteration 11 ... (100 files)passed -Iteration 12 ... (100 files)passed -Iteration 13 ... (100 files)passed -Iteration 14 ... (100 files)passed -Iteration 0 ... (1000 files)passed -Iteration 1 ... (1000 files)passed -Iteration 2 ... (1000 files)passed -Iteration 3 ... (1000 files)passed -Iteration 4 ... (1000 files)passed -Iteration 5 ... (1000 files)passed -Iteration 6 ... (1000 files)passed -Iteration 7 ... (1000 files)passed -Iteration 8 ... (1000 files)passed -Iteration 9 ... (1000 files)passed -Iteration 10 ... (1000 files)passed -Iteration 11 ... (1000 files)passed -Iteration 12 ... (1000 files)passed -Iteration 13 ... (1000 files)passed -Iteration 14 ... (1000 files)passed -Iteration 15 ... (1000 files)passed -Iteration 16 ... (1000 files)passed -Iteration 17 ... (1000 files)passed -Iteration 18 ... (1000 files)passed -Iteration 19 ... (1000 files)passed -Start bulkstat_unlink_test_modified -Iteration 0 ... -testFiles 1000 ... -passed -Iteration 1 ... -testFiles 1000 ... -passed -Iteration 2 ... -testFiles 1000 ... -passed -Iteration 3 ... -testFiles 1000 ... -passed -Iteration 4 ... -testFiles 1000 ... -passed -Iteration 5 ... -testFiles 1000 ... -passed -Iteration 6 ... -testFiles 1000 ... -passed -Iteration 7 ... -testFiles 1000 ... -passed -Iteration 8 ... -testFiles 1000 ... -passed -Iteration 9 ... -testFiles 1000 ... -passed diff --git a/tests/xfs/185 b/tests/xfs/185 deleted file mode 100755 index 4f979564..00000000 --- a/tests/xfs/185 +++ /dev/null @@ -1,64 +0,0 @@ -#! /bin/bash -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2007 Silicon Graphics, Inc. All Rights Reserved. -# -# FSQA Test No. 185 -# -# Dmapi Punch/Probe Alignment compared to xfsctl(FREESPACE); -# -seq=`basename $0` -seqres=$RESULT_DIR/$seq -echo "QA output created by $seq" - -here=`pwd` -tmp=/tmp/$$ -status=1 # failure is the default! -trap "exit \$status" 0 1 2 3 15 - -# get standard environment, filters and checks -. ./common/rc -. ./common/filter -. ./common/dmapi - -# real QA test starts here -_supported_fs xfs - -_require_scratch -_scratch_mkfs_xfs -b size=512 >/dev/null 2>&1 -_dmapi_scratch_mount - -cat > $tmp.dmapi-param </dev/null 2>&1 - $e -x -l$l -o$o $f | _filter_scratch - - echo "Method: dmapi_probe" - dd if=/dev/zero bs=1024k count=3 of=$f >/dev/null 2>&1 - $e -l$l -o$o $f | _filter_scratch - - echo "Method: dmapi_punch" - $e -p -l$l -o$o $f | _filter_scratch - echo "=======================================================" -done - -rm -rf $tmp.dmapi-param - -status=0 -exit diff --git a/tests/xfs/185.out b/tests/xfs/185.out deleted file mode 100644 index b23552f7..00000000 --- a/tests/xfs/185.out +++ /dev/null @@ -1,71 +0,0 @@ -QA output created by 185 -======================================================= -Testing with length = 16k, offset = 0 -Method: xfsctl -Running Punch hole with xfsctl(XFS_IOC_FREESP64) on SCRATCH_MNT/dmapi/holly_file with settings: - offset = '0', length = '16384', sid = '0' -ok. -Method: dmapi_probe -Running DMAPI probe hole on SCRATCH_MNT/dmapi/holly_file with settings: - offset = '0', length = '16384', sid = '0' -roffp is 0, rlenp is 16384 -Method: dmapi_punch -Running DMAPI punch hole on SCRATCH_MNT/dmapi/holly_file with settings: - offset = '0', length = '16384', sid = '0' -======================================================= -======================================================= -Testing with length = 1k, offset = 0 -Method: xfsctl -Running Punch hole with xfsctl(XFS_IOC_FREESP64) on SCRATCH_MNT/dmapi/holly_file with settings: - offset = '0', length = '1024', sid = '0' -ok. -Method: dmapi_probe -Running DMAPI probe hole on SCRATCH_MNT/dmapi/holly_file with settings: - offset = '0', length = '1024', sid = '0' -roffp is 0, rlenp is 1024 -Method: dmapi_punch -Running DMAPI punch hole on SCRATCH_MNT/dmapi/holly_file with settings: - offset = '0', length = '1024', sid = '0' -======================================================= -======================================================= -Testing with length = 1k, offset = 4k -Method: xfsctl -Running Punch hole with xfsctl(XFS_IOC_FREESP64) on SCRATCH_MNT/dmapi/holly_file with settings: - offset = '4096', length = '1024', sid = '0' -ok. -Method: dmapi_probe -Running DMAPI probe hole on SCRATCH_MNT/dmapi/holly_file with settings: - offset = '4096', length = '1024', sid = '0' -roffp is 4096, rlenp is 1024 -Method: dmapi_punch -Running DMAPI punch hole on SCRATCH_MNT/dmapi/holly_file with settings: - offset = '4096', length = '1024', sid = '0' -======================================================= -======================================================= -Testing with length = 4k, offset = 1k -Method: xfsctl -Running Punch hole with xfsctl(XFS_IOC_FREESP64) on SCRATCH_MNT/dmapi/holly_file with settings: - offset = '1024', length = '4096', sid = '0' -ok. -Method: dmapi_probe -Running DMAPI probe hole on SCRATCH_MNT/dmapi/holly_file with settings: - offset = '1024', length = '4096', sid = '0' -roffp is 1024, rlenp is 4096 -Method: dmapi_punch -Running DMAPI punch hole on SCRATCH_MNT/dmapi/holly_file with settings: - offset = '1024', length = '4096', sid = '0' -======================================================= -======================================================= -Testing with length = 1024k, offset = 512k -Method: xfsctl -Running Punch hole with xfsctl(XFS_IOC_FREESP64) on SCRATCH_MNT/dmapi/holly_file with settings: - offset = '524288', length = '1048576', sid = '0' -ok. -Method: dmapi_probe -Running DMAPI probe hole on SCRATCH_MNT/dmapi/holly_file with settings: - offset = '524288', length = '1048576', sid = '0' -roffp is 524288, rlenp is 1048576 -Method: dmapi_punch -Running DMAPI punch hole on SCRATCH_MNT/dmapi/holly_file with settings: - offset = '524288', length = '1048576', sid = '0' -======================================================= diff --git a/tests/xfs/group b/tests/xfs/group index 76232e16..9cf65497 100644 --- a/tests/xfs/group +++ b/tests/xfs/group @@ -139,42 +139,18 @@ 139 auto quick clone 140 auto clone 141 auto log metadata -142 dmapi -143 dmapi -144 dmapi -145 dmapi -146 dmapi -147 dmapi 148 auto quick fuzzers 149 auto quick growfs -150 dmapi -151 dmapi -152 dmapi -153 dmapi -154 dmapi -155 dmapi -156 dmapi -157 dmapi -158 dmapi -159 dmapi -160 dmapi -161 dmapi -162 dmapi -163 dmapi 164 rw pattern auto prealloc quick 165 rw pattern auto prealloc quick 166 rw metadata auto quick 167 rw metadata auto stress -168 dmapi 169 auto clone 170 rw filestreams auto quick 171 rw filestreams 172 rw filestreams 173 rw filestreams 174 rw filestreams auto -175 dmapi -176 dmapi -177 dmapi 178 mkfs other auto 179 auto quick clone 180 auto quick clone @@ -182,7 +158,6 @@ 182 auto quick clone 183 rw other auto quick 184 auto quick clone -185 dmapi 186 attr auto quick 187 attr auto quick 188 ci dir auto -- 2.39.5