diff options
| -rw-r--r-- | drivers/scsi/osd/osd_initiator.c | 28 | ||||
| -rw-r--r-- | fs/exofs/common.h | 6 | ||||
| -rw-r--r-- | fs/exofs/osd.c | 26 | ||||
| -rw-r--r-- | include/scsi/osd_initiator.h | 4 |
4 files changed, 32 insertions, 32 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 | { |
diff --git a/fs/exofs/common.h b/fs/exofs/common.h index b1512c4bb8c7..24667eedc023 100644 --- a/fs/exofs/common.h +++ b/fs/exofs/common.h | |||
| @@ -175,10 +175,4 @@ int exofs_async_op(struct osd_request *or, | |||
| 175 | 175 | ||
| 176 | int extract_attr_from_req(struct osd_request *or, struct osd_attr *attr); | 176 | int extract_attr_from_req(struct osd_request *or, struct osd_attr *attr); |
| 177 | 177 | ||
| 178 | int osd_req_read_kern(struct osd_request *or, | ||
| 179 | const struct osd_obj_id *obj, u64 offset, void *buff, u64 len); | ||
| 180 | |||
| 181 | int osd_req_write_kern(struct osd_request *or, | ||
| 182 | const struct osd_obj_id *obj, u64 offset, void *buff, u64 len); | ||
| 183 | |||
| 184 | #endif /*ifndef __EXOFS_COM_H__*/ | 178 | #endif /*ifndef __EXOFS_COM_H__*/ |
diff --git a/fs/exofs/osd.c b/fs/exofs/osd.c index b249ae97fb15..48cc4d11d3fb 100644 --- a/fs/exofs/osd.c +++ b/fs/exofs/osd.c | |||
| @@ -125,29 +125,3 @@ int extract_attr_from_req(struct osd_request *or, struct osd_attr *attr) | |||
| 125 | 125 | ||
| 126 | return -EIO; | 126 | return -EIO; |
| 127 | } | 127 | } |
| 128 | |||
| 129 | int osd_req_read_kern(struct osd_request *or, | ||
| 130 | const struct osd_obj_id *obj, u64 offset, void* buff, u64 len) | ||
| 131 | { | ||
| 132 | struct request_queue *req_q = or->osd_dev->scsi_device->request_queue; | ||
| 133 | struct bio *bio = bio_map_kern(req_q, buff, len, GFP_KERNEL); | ||
| 134 | |||
| 135 | if (!bio) | ||
| 136 | return -ENOMEM; | ||
| 137 | |||
| 138 | osd_req_read(or, obj, bio, offset); | ||
| 139 | return 0; | ||
| 140 | } | ||
| 141 | |||
| 142 | int osd_req_write_kern(struct osd_request *or, | ||
| 143 | const struct osd_obj_id *obj, u64 offset, void* buff, u64 len) | ||
| 144 | { | ||
| 145 | struct request_queue *req_q = or->osd_dev->scsi_device->request_queue; | ||
| 146 | struct bio *bio = bio_map_kern(req_q, buff, len, GFP_KERNEL); | ||
| 147 | |||
| 148 | if (!bio) | ||
| 149 | return -ENOMEM; | ||
| 150 | |||
| 151 | osd_req_write(or, obj, bio, offset); | ||
| 152 | return 0; | ||
| 153 | } | ||
diff --git a/include/scsi/osd_initiator.h b/include/scsi/osd_initiator.h index b24d9616eb46..6132790d678f 100644 --- a/include/scsi/osd_initiator.h +++ b/include/scsi/osd_initiator.h | |||
| @@ -364,6 +364,8 @@ void osd_req_remove_object(struct osd_request *or, struct osd_obj_id *); | |||
| 364 | 364 | ||
| 365 | void osd_req_write(struct osd_request *or, | 365 | void osd_req_write(struct osd_request *or, |
| 366 | const struct osd_obj_id *, struct bio *data_out, u64 offset); | 366 | const struct osd_obj_id *, struct bio *data_out, u64 offset); |
| 367 | int osd_req_write_kern(struct osd_request *or, | ||
| 368 | const struct osd_obj_id *obj, u64 offset, void *buff, u64 len); | ||
| 367 | void osd_req_append(struct osd_request *or, | 369 | void osd_req_append(struct osd_request *or, |
| 368 | const struct osd_obj_id *, struct bio *data_out);/* NI */ | 370 | const struct osd_obj_id *, struct bio *data_out);/* NI */ |
| 369 | void osd_req_create_write(struct osd_request *or, | 371 | void osd_req_create_write(struct osd_request *or, |
| @@ -379,6 +381,8 @@ void osd_req_flush_object(struct osd_request *or, | |||
| 379 | 381 | ||
| 380 | void osd_req_read(struct osd_request *or, | 382 | void osd_req_read(struct osd_request *or, |
| 381 | const struct osd_obj_id *, struct bio *data_in, u64 offset); | 383 | const struct osd_obj_id *, struct bio *data_in, u64 offset); |
| 384 | int osd_req_read_kern(struct osd_request *or, | ||
| 385 | const struct osd_obj_id *obj, u64 offset, void *buff, u64 len); | ||
| 382 | 386 | ||
| 383 | /* | 387 | /* |
| 384 | * Root/Partition/Collection/Object Attributes commands | 388 | * Root/Partition/Collection/Object Attributes commands |
