[SCSI] libosd: Free resources in reverse order of allocation
authorBoaz Harrosh <bharrosh@panasas.com>
Tue, 19 Oct 2010 12:21:34 +0000 (14:21 +0200)
committerJames Bottomley <James.Bottomley@suse.de>
Tue, 26 Oct 2010 15:42:31 +0000 (10:42 -0500)
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>
drivers/scsi/osd/osd_initiator.c

index 771ab121acc7571f590a3601490d69249dc02722..acbdcb670ac59f3b941ef811fbc17980f694d6a5 100644 (file)
@@ -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);