diff options
author | Boaz Harrosh <bharrosh@panasas.com> | 2010-10-19 14:21:34 +0200 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-10-26 10:42:31 -0500 |
commit | c4df46c49d8677158c7fb070a08e0d386c80205f (patch) | |
tree | 186445dd72adb59b8a4f3b7ab8051d7e1f787f97 | |
parent | ec6a0a41b57feb54b3830918a8fb07147c2ee778 (diff) | |
download | op-kernel-dev-c4df46c49d8677158c7fb070a08e0d386c80205f.zip op-kernel-dev-c4df46c49d8677158c7fb070a08e0d386c80205f.tar.gz |
[SCSI] libosd: Free resources in reverse order of allocation
At osd_end_request first free the request that might
point to pages, then free these pages. In reverse order
of allocation. For now it's just anal neatness. When we'll
use mempools It'll also pay in performance.
Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
-rw-r--r-- | drivers/scsi/osd/osd_initiator.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/scsi/osd/osd_initiator.c b/drivers/scsi/osd/osd_initiator.c index 771ab12..acbdcb6 100644 --- a/drivers/scsi/osd/osd_initiator.c +++ b/drivers/scsi/osd/osd_initiator.c @@ -452,10 +452,6 @@ void osd_end_request(struct osd_request *or) { struct request *rq = or->request; - _osd_free_seg(or, &or->set_attr); - _osd_free_seg(or, &or->enc_get_attr); - _osd_free_seg(or, &or->get_attr); - if (rq) { if (rq->next_rq) { _put_request(rq->next_rq); @@ -464,6 +460,11 @@ void osd_end_request(struct osd_request *or) _put_request(rq); } + + _osd_free_seg(or, &or->get_attr); + _osd_free_seg(or, &or->enc_get_attr); + _osd_free_seg(or, &or->set_attr); + _osd_request_free(or); } EXPORT_SYMBOL(osd_end_request); |