open-osd: OSD Initiator library for 2.6.30
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest16 patches 6 repliesIn review
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/16 | major.h: char-major number for OSD device driverDocumentation/ include/ | +7 | 0 replies | |
| 2/16 | scsi: OSD_TYPEdrivers/ include/ | +2 | 0 replies | |
| 3/16 | libosd: OSDv1 Headersinclude/ include/ include/ +1 more | +914 | 0 replies | |
| 4/16 | libosd: OSDv1 preliminary implementationdrivers/ drivers/ drivers/ +1 more | +547 | 0 replies | |
| 5/16 | osd_uld: OSD scsi ULDdrivers/ drivers/ include/ | +432 | 0 replies | |
| 6/16 | osd_uld: API for retrieving osd devices from Kerneldrivers/ include/ | +67 | 2 replies | |
| 7/16 | libosd: attributes Supportdrivers/ include/ | +906 | 0 replies | |
| 8/16 | libosd: OSD Security processing stubsdrivers/ | +86 | 0 replies | |
| 9/16 | libosd: Add Flush and List-objects supportdrivers/ | +124 | 0 replies | |
| 10/16 | libosd: Not implemented commandsdrivers/ | +35 | 0 replies | |
| 11/16 | libosd: OSD version 2 Supportdrivers/ include/ include/ | +205 | 0 replies | |
| 12/16 | libosd: OSDv2 auto detectiondrivers/ drivers/ include/ | +133 | 0 replies | |
| 13/16 | libosd: SCSI/OSD Sense decoding supportdrivers/ drivers/ include/ +1 more | +506 | 4 replies | |
| 14/16 | osd: Documentation for OSD libraryDocumentation/ | +198 | 0 replies | |
| 15/16 | osd: Kconfig file for in-tree buildsdrivers/ | +53 | 0 replies | |
| 16/16 | scsi: Add osd library to build systemMAINTAINERS drivers/ drivers/ | +14 | 0 replies |
Reviews trailers per patch
12 of 16 patches have a Reviewed-by or Acked-by.
| Patch | Benny Halevy |
|---|---|
| 1/16 | |
| 2/16 | |
| 3/16 | R-b |
| 4/16 | R-b |
| 5/16 | R-b |
| 6/16 | |
| 7/16 | R-b |
| 8/16 | R-b |
| 9/16 | R-b |
| 10/16 | R-b |
| 11/16 | R-b |
| 12/16 | R-b |
| 13/16 | |
| 14/16 | R-b |
| 15/16 | R-b |
| 16/16 | R-b |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [PATCHSET 00/16] open-osd: OSD Initiator library for 2.6.30
James hi.
Since we missed the 2.6.29 merge window, sigh, I'm taking the opportunity to refresh the patchset. It's basically the same, but for a few changes listed below:
- Exact same submitted code is now compilable as a user-mode library so utilities like exofs.mkfs can be compiled as regular application. When compiling in user-mode using my preferred -W switches to gcc I've unearthed little warnings, which are now fixed. Mainly:
* signed/unsigned comparison
* char * pointing to a const string (This one is grave in my opinion)
* more missing statics.
* ...
- I have added an API to the osd_uld for test modules to register an ioctl test vector. In the last patchset, as requested, I have removed the tests code from upstream submission. This meant that the out-of-tree git was patching the osd_uld.c and Kbuild kernel files in-order to add the tests. This is an administrative night-mare both for developers and users alike. Since they must patch their running kernel and install/replace distro modules. So I put the osd_ktests.c code in its own module and enable it to register at run-time into the running osd_uld, though injecting tests into running code.
Please take these patches off my hands this time ASAP, and let them rot in scsi-misc until 2.6.30 merge-window ;)
[A patch is attached that showed what was changed from last time.]
---
here is the usual stuff for first-time viewers
OSD (Object-Based Storage Device) is a T10 SCSI command set that is designed to provide efficient operation of input/output logical units that manage the allocation, placement, and accessing of variable-size data-storage containers, called objects. Objects are intended to contain operating system and application constructs. Each object has associated attributes attached to it, which are integral part of the object and provide metadata about the object. The standard defines some common obligatory attributes, but user attributes can be added as needed.
The patches are cut over scsi-misc-2.6-7e106029 but apply cleanly over Linus git.
To try out and run the library please visit
http://open-osd.org and follow the instructions there.
The submitted patchset is also available via git at:
git://git.open-osd.org/linux-open-osd.git osd
http://git.open-osd.org/gitweb.cgi?p=linux-open-osd.git;a=shortlog;h=osd
here is the list of patches:
[PATCH 01/16] major.h: char-major number for OSD device driver
Request for a new char-device major number
[PATCH 02/16] scsi: OSD_TYPE
The OSD scsi type constant definition.
[PATCH 03/16] libosd: OSDv1 Headers
[PATCH 04/16] libosd: OSDv1 preliminary implementation
Most basic, but usable library module (libosd.ko) including Kbuild file.
[PATCH 05/16] osd_uld: OSD scsi ULD
[PATCH 06/16] osd_uld: API for retrieving osd devices from Kernel
These patches add a scsi ULD for OSD type devices. Please see commit logs for details.
[PATCH 07/16] libosd: attributes Support
[PATCH 08/16] libosd: OSD Security processing stubs
[PATCH 09/16] libosd: Add Flush and List-objects support [PATCH 10/16] libosd: Not implemented commands
[PATCH 11/16] libosd: OSD version 2 Support
[PATCH 12/16] libosd: OSDv2 auto detection
[PATCH 13/16] libosd: SCSI/OSD Sense decoding support
Up to here this is a fairly complete body of work, to support both OSD1 and OSD2 targets. Main pieces that are still missing from the library at this point are: The OSD2 capabilities structure, do to lack of an OSD target that supports it. And the absence of any OSD-security methods other then NO_SECURITY. These will come in future versions.
[PATCH 14/16] osd: Documentation for OSD library
Some reading about OSD in general and further usability instructions. Please comment on anything missing from this document.
[PATCH 15/16] osd: Kconfig file for in-tree builds
[PATCH 16/16] scsi: Add osd library to build system
The in-tree compilation is only enabled at the end of the patchset. Run your favorite configure-tool to enable the library and osd_uld compilation. Default is off.
The patchset is however fully bisectable, and compilable from the beginning, (by applying these 2 patches first).
The open-osd team
Boaz Harrosh
git diff --stat -p -R 2abc3b5d42d4c16e57d8fdd2e3475402f10d468b 95256f25df7dc7e18f0e8652b6a0309913d4dabe
drivers/scsi/osd/Kbuild | 8 +++- drivers/scsi/osd/osd_initiator.c | 48 ++++++++++++++---------- drivers/scsi/osd/osd_ktests.c | 75 +++++++++++++++++++++++++++++--------- drivers/scsi/osd/osd_ktests.h | 4 +-- drivers/scsi/osd/osd_uld.c | 44 +++++++++++++++++++---- include/scsi/osd_initiator.h | 5 +++ 6 files changed, 134 insertions(+), 50 deletions(-)
drivers/scsi/osd/Kbuild +6 -2
@@ -32,7 +32,11 @@ ccflags-y += -DCONFIG_SCSI_OSD_DPRINT_SENSE=1 # if we are built out-of-tree and the hosting kernel has OSD headers # then "ccflags-y +=" will not pick the out-off-tree headers. Only by doing # this it will work. This might break in future kernels -KBUILD_CPPFLAGS := -I$(OSD_INC) $(KBUILD_CPPFLAGS) +LINUXINCLUDE := -I$(OSD_INC) $(LINUXINCLUDE) + +# osd_ktests.ko is only built out of tree +# see git://git.open-osd.org open-osd for latest code +obj-m += osd_ktests.o endif
@@ -41,5 +45,5 @@ libosd-y := osd_initiator.o obj-$(CONFIG_SCSI_OSD_INITIATOR) += libosd.o # osd.ko - SCSI ULD and char-device -osd-y := osd_uld.o osd_ktests.o +osd-y := osd_uld.o obj-$(CONFIG_SCSI_OSD_ULD) += osd.o
drivers/scsi/osd/osd_initiator.c +28 -20
139 lines not on this page · raw message
drivers/scsi/osd/osd_ktests.c +57 -18
195 lines not on this page · raw message
drivers/scsi/osd/osd_ktests.h +1 -3
@@ -24,8 +24,6 @@enum {OSD_TEST_ALL =17 }; -#ifdef __KERNEL__ -extern int do_test_17 (struct osd_dev *od); -#endif /* __KERNEL__ */ +int do_test_17 (struct osd_dev *od,unsigned cmd,unsigned long arg);#endif /*ndef __OSD_KTESTS_H__*/
drivers/scsi/osd/osd_uld.c +37 -7
62 lines not on this page · raw message
include/scsi/osd_initiator.h +5 -0
@@ -58,6 +58,11 @@ struct osd_dev {struct osd_dev *osduld_path_lookup (const char *dev_name);/*Use IS_ERR/ERR_PTR*/ void osduld_put_device (struct osd_dev *od); +/* Add/remove test ioctls from external modules */ +typedef int (do_test_fn )(struct osd_dev *od,unsigned cmd,unsigned long arg); +int osduld_register_test (unsigned ioctl,do_test_fn *do_test); +void osduld_unregister_test (unsigned ioctl); +/* These are called by uld at probe time */ void osd_dev_init (struct osd_dev *od,struct scsi_device *scsi_device);void osd_dev_fini (struct osd_dev *od);