From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcin Slusarz Subject: Re: [PATCH 4/8] exofs: address_space_operations Date: Sun, 22 Mar 2009 11:22:15 +0100 Message-ID: <49C61157.6070604@gmail.com> References: <49C1331D.1080805@panasas.com> <1237399473-29344-1-git-send-email-bharrosh@panasas.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: Avishay Traeger , Jeff Garzik , Andrew Morton , Evgeniy Polyakov , linux-fsdevel , open-osd , linux-kernel , James Bottomley , FUJITA Tomonori To: Boaz Harrosh Return-path: Received: from fk-out-0910.google.com ([209.85.128.185]:58616 "EHLO fk-out-0910.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751540AbZCVKWd (ORCPT ); Sun, 22 Mar 2009 06:22:33 -0400 In-Reply-To: <1237399473-29344-1-git-send-email-bharrosh@panasas.com> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: Boaz Harrosh wrote: > (...) > +struct page_collect { > + struct exofs_sb_info *sbi; > + struct request_queue *req_q; > + struct inode *inode; > + unsigned expected_pages; > + > + struct bio *bio; > + unsigned nr_pages; > + unsigned long length; > + long pg_first; > +}; > (...) > +int pcol_try_alloc(struct page_collect *pcol) > +{ > + int pages = min_t(unsigned, pcol->expected_pages, BIO_MAX_PAGES); > + > + for (; pages; pages >>= 1) { > + pcol->bio = bio_alloc(GFP_KERNEL, pages); > + if (likely(pcol->bio)) > + return 0; > + } > + > + EXOFS_ERR("Failed to kcalloc expected_pages=%d\n", %u > + pcol->expected_pages); > + return -ENOMEM; > +} > + > (...) > +static int __readpages_done(struct osd_request *or, struct page_collect *pcol, > + bool do_unlock) > +{ > + struct bio_vec *bvec; > + int i; > + u64 resid; > + u64 good_bytes; > + u64 length = 0; > + int ret = exofs_check_ok_resid(or, &resid, NULL); > + > + osd_end_request(or); > + > + if (!ret) > + good_bytes = pcol->length; > + else if (ret && !resid) > + good_bytes = 0; > + else > + good_bytes = pcol->length - resid; Second ret check is not needed. > (...) > + > +int read_exec(struct page_collect *pcol, bool is_sync) read_exec is too generic name for globally visible symbol > +{ > (...) > +static void writepages_done(struct osd_request *or, void *p) > +{ > + struct page_collect *pcol = p; > + struct bio_vec *bvec; > + int i; > + u64 resid; > + u64 good_bytes; > + u64 length = 0; > + > + int ret = exofs_check_ok_resid(or, NULL, &resid); > + > + osd_end_request(or); > + atomic_dec(&pcol->sbi->s_curr_pending); > + > + if (likely(!ret)) > + good_bytes = pcol->length; > + else if (ret && !resid) > + good_bytes = 0; > + else > + good_bytes = pcol->length - resid; Ret check again. > (...) > + > +int write_exec(struct page_collect *pcol) Too generic name. > (...)