* New method volume_raid_info() to query RAID type, disk count, minimum I/O size, optimal I/O size.
* These plugins support this new method: * sim # Simple return UNKNOWN * simc # Simple set UNKNOWN on output parameter. * MegaRAID * The C library part might be buggy considering my C skill set. * Potential support by other plugin: * Targetd: We could use PE size of LVM for minimum I/O size and strip size. And set RAID type as JBOD and extent count as 1. Once LVM RAID supported, it could provide real RAID type and other information. * SMI-S: In SMI-S spec, each StorageVolume has StorageSetting associated, but no definition mentioned ExtentStripeLength is the optimal I/O size. In stead of guess or mess with SNIA, simply 'no support' would works better. * ONTAP: Patch for ONTAP plugin is ready but not included in this patch set since that was based on my test and guess. Waiting NetApp's official answer about their optimal I/O size. * Nstor: No document found about strip settings. * This is the best design and naming scheme I got. PLEASE let me know if you got better. Thank you very much in advance. Changes in V2: * Patch 6/13 and 10/13: Tony introduced a new way for plugin to register newly added API with full backward compatibility. Simulator C plugin implemented this change. * Patch 10/13: Add missing capability LSM_CAP_VOLUME_RAID_INFO Changes in V3: * Patch 6/13: Another approach to register newly added API with full backward compatibility: * New struct lsm_ops_v1_2: Free to change during version 1.2 development phase. Will frozen it once 1.2 released. * New plugin register method: lsm_register_plugin_v1_2() It takes all arguments required by old lsm_register_plugin_v1() addition to struct lsm_ops_v1_2 pointer. * Once version 1.2 released, we could work on struct lsm_ops_v1_3 and lsm_register_plugin_v1_3(). * Patch 9/13: Full volume_raid_info() support in simulator plugin. Changes in V4: * Included Tony's bug fix patch for C API: [PATCH] lsm_plugin_ipc.cpp: Bug Fix, using san_ops for fs_ops * Included ONTAP plugin support. * Patch 4/15 and 5/15: * Changed the value of these constants from -1 to 0 to align with libblkid/sysfs: * Volume.STRIP_SIZE_UNKNOWN * Volume.MIN_IO_SIZE_UNKNOWN * Volume.OPT_IO_SIZE_UNKNOWN * Volume.EXTENT_COUNT_UNKNOWN * LSM_VOLUME_STRIP_SIZE_UNKNOWN * LSM_VOLUME_EXTENT_COUNT_UNKNOWN * LSM_VOLUME_MIN_IO_SIZE_UNKNOWN * LSM_VOLUME_OPT_IO_SIZE_UNKNOWN * Patch 5/15: * Add LSM_FLAG_UNUSED_CHECK in public lsm_volume_raid_info() function. * Patch 6/15: * Removed unneeded import 'Volume' from simulator.py. Changes in V5: * Change output argument name from 'extent_count' to 'disk_count' as it fit the most common expectation on RAID. Please check patch 3/15 for detail. * Change constant name: * 'Volume.EXTENT_COUNT_UNKNOWN' -> 'Volume.DISK_COUNT_UNKNOWN' * LSM_VOLUME_EXTENT_COUNT_UNKNOWN -> LSM_VOLUME_DISK_COUNT_UNKNOWN * Change C API these output arguments data type from 'int32_t' to 'uint32_t': * strip_size * disk_count * min_io_size * opt_io_size * Sync plugins for this change. Gris Ge (14): Python Library: Fix decorator problem with docstrings Python Library: New method volume_raid_info() C Library: New method lsm_volume_raid_info() lsmcli: Add volume_raid_info() support. lsmcli Test: Add test for volume-raid-info command. C Unit Test: Add test for lsm_volume_raid_info() method Constant Test: Fix missing constant with number in it. Simulator Plugin: Add volume_raid_info() support Simulator C Plugin: Add lsm_volume_raid_info() support. MegaRAID plugin: Add pools() method support. MegaRAID Plugin: Add volumes() support. MegaRAID Plugin: Add Disk.STATUS_RECONSTRUCT support. MegaRAID Plugin: Add volume_raid_info() support. ONTAP Plugin: Add volume_raid_info() support. Tony Asleson (1): lsm_plugin_ipc.cpp: Bug Fix, using san_ops for fs_ops c_binding/include/libstoragemgmt/libstoragemgmt.h | 20 ++ .../libstoragemgmt/libstoragemgmt_capabilities.h | 3 + .../libstoragemgmt/libstoragemgmt_plug_interface.h | 55 ++++++ .../include/libstoragemgmt/libstoragemgmt_types.h | 43 ++++ c_binding/lsm_datatypes.hpp | 1 + c_binding/lsm_mgmt.cpp | 48 +++++ c_binding/lsm_plugin_ipc.cpp | 86 ++++++-- plugin/megaraid/megaraid.py | 220 ++++++++++++++++++++- plugin/ontap/na.py | 8 +- plugin/ontap/ontap.py | 55 ++++-- plugin/sim/simarray.py | 149 +++++++++----- plugin/sim/simulator.py | 3 + plugin/simc/simc_lsmplugin.c | 33 +++- python_binding/lsm/_client.py | 103 ++++++++++ python_binding/lsm/_common.py | 1 + python_binding/lsm/_data.py | 42 ++++ test/cmdtest.py | 21 ++ test/tester.c | 30 +++ tools/lsmcli/cmdline.py | 18 +- tools/lsmcli/data_display.py | 58 ++++++ tools/utility/check_const.pl | 6 +- 21 files changed, 912 insertions(+), 91 deletions(-) -- 1.8.3.1 ------------------------------------------------------------------------------ Dive into the World of Parallel Programming The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ Libstoragemgmt-devel mailing list Libstoragemgmt-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libstoragemgmt-devel