diff options
author | Boaz Harrosh <bharrosh@panasas.com> | 2009-05-24 13:02:22 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2009-06-10 09:57:07 -0400 |
commit | 0e35afbc8b054e04a35faa796c72abb3b82bd33b (patch) | |
tree | 004a19d25dfc45cbbc88464e4e9d711b2027a668 /drivers/scsi/osd | |
parent | de6b20385b1c14f97ccdf7da173b4c9a7405083b (diff) |
[SCSI] libosd: osd_req_{read,write}_kern new API
By popular demand, define usefull wrappers for osd_req_read/write
that recieve kernel pointers. All users had their own.
Also remove these from exofs
Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/osd')
-rw-r--r-- | drivers/scsi/osd/osd_initiator.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/scsi/osd/osd_initiator.c b/drivers/scsi/osd/osd_initiator.c index 15f0bbc19c9c..c98153bfb36d 100644 --- a/drivers/scsi/osd/osd_initiator.c +++ b/drivers/scsi/osd/osd_initiator.c | |||
@@ -789,6 +789,20 @@ void osd_req_write(struct osd_request *or, | |||
789 | } | 789 | } |
790 | EXPORT_SYMBOL(osd_req_write); | 790 | EXPORT_SYMBOL(osd_req_write); |
791 | 791 | ||
792 | int osd_req_write_kern(struct osd_request *or, | ||
793 | const struct osd_obj_id *obj, u64 offset, void* buff, u64 len) | ||
794 | { | ||
795 | struct request_queue *req_q = or->osd_dev->scsi_device->request_queue; | ||
796 | struct bio *bio = bio_map_kern(req_q, buff, len, GFP_KERNEL); | ||
797 | |||
798 | if (IS_ERR(bio)) | ||
799 | return PTR_ERR(bio); | ||
800 | |||
801 | osd_req_write(or, obj, bio, offset); | ||
802 | return 0; | ||
803 | } | ||
804 | EXPORT_SYMBOL(osd_req_write_kern); | ||
805 | |||
792 | /*TODO: void osd_req_append(struct osd_request *, | 806 | /*TODO: void osd_req_append(struct osd_request *, |
793 | const struct osd_obj_id *, struct bio *data_out); */ | 807 | const struct osd_obj_id *, struct bio *data_out); */ |
794 | /*TODO: void osd_req_create_write(struct osd_request *, | 808 | /*TODO: void osd_req_create_write(struct osd_request *, |
@@ -824,6 +838,20 @@ void osd_req_read(struct osd_request *or, | |||
824 | } | 838 | } |
825 | EXPORT_SYMBOL(osd_req_read); | 839 | EXPORT_SYMBOL(osd_req_read); |
826 | 840 | ||
841 | int osd_req_read_kern(struct osd_request *or, | ||
842 | const struct osd_obj_id *obj, u64 offset, void* buff, u64 len) | ||
843 | { | ||
844 | struct request_queue *req_q = or->osd_dev->scsi_device->request_queue; | ||
845 | struct bio *bio = bio_map_kern(req_q, buff, len, GFP_KERNEL); | ||
846 | |||
847 | if (IS_ERR(bio)) | ||
848 | return PTR_ERR(bio); | ||
849 | |||
850 | osd_req_read(or, obj, bio, offset); | ||
851 | return 0; | ||
852 | } | ||
853 | EXPORT_SYMBOL(osd_req_read_kern); | ||
854 | |||
827 | void osd_req_get_attributes(struct osd_request *or, | 855 | void osd_req_get_attributes(struct osd_request *or, |
828 | const struct osd_obj_id *obj) | 856 | const struct osd_obj_id *obj) |
829 | { | 857 | { |