On Sun, 22 Mar 2009 15:58:46 +0200 Boaz Harrosh <bharrosh@xxxxxxxxxxx> wrote: > > OK Now we start to read and write from osd-objects. We try to > collect at most contiguous pages as possible in a single write/read. > The first page index is the object's offset. > > TODO: > In 64-bit a single bio can carry at most 128 pages. > Add support of chaining multiple bios > > > ... > > +static int write_exec(struct page_collect *pcol) > +{ > + struct exofs_i_info *oi = exofs_i(pcol->inode); > + struct osd_obj_id obj = {pcol->sbi->s_pid, > + pcol->inode->i_ino + EXOFS_OBJ_OFF}; > + struct osd_request *or = NULL; > + struct page_collect *pcol_copy = NULL; > + loff_t i_start = pcol->pg_first << PAGE_CACHE_SHIFT; bug. On 32-bit this shift will overflow prior to getting promoted to 64-bit. Do: loff_t i_start = (loff_t)pcol->pg_first << PAGE_CACHE_SHIFT; > > ... > > +static int writepage_strip(struct page *page, > + struct writeback_control *wbc_unused, void *data) Some of these functions could do with some comments explaining why they exist. > + struct page_collect *pcol = data; > + struct inode *inode = pcol->inode; > + struct exofs_i_info *oi = exofs_i(inode); > + loff_t i_size = i_size_read(inode); > + pgoff_t end_index = i_size >> PAGE_CACHE_SHIFT; > + size_t len; > + int ret; > + > > ... > -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html