Messages in this thread | | | Date | Tue, 19 Mar 2013 13:54:15 +0900 | Subject | Re: [PATCH] f2fs: reduce unncessary locking pages during read | From | Namjae Jeon <> |
| |
> > - err = f2fs_readpage(sbi, page, dn.data_blkaddr, READ_SYNC); > - if (err) { > - f2fs_put_page(page, 1); > - return ERR_PTR(err); > + if (PageUptodate(page)) { > + unlock_page(page); > + return page; > } > - unlock_page(page); Hi Jaegeuk. > + > + err = f2fs_readpage(sbi, page, dn.data_blkaddr, READ_SYNC); > + wait_on_page_locked(page); > + if (!PageUptodate(page)) > + return ERR_PTR(-EIO); We don't need to release page before returning EIO ?
> return page; > } > > @@ -241,9 +244,13 @@ struct page *get_lock_data_page(struct inode *inode, > pgoff_t index) > BUG_ON(dn.data_blkaddr == NULL_ADDR); > > err = f2fs_readpage(sbi, page, dn.data_blkaddr, READ_SYNC); > - if (err) { > - f2fs_put_page(page, 1); > + if (err) > return ERR_PTR(err); Here is also same. We don't need to release page in case of err ?
Thanks. > + > + lock_page(page); > + if (!PageUptodate(page)) { > + f2fs_put_page(page, 1); > + return ERR_PTR(-EIO); > } > return page; > }
| |