> From: Jinshan Xiong <jinshan.xiong@xxxxxxxxx> > > Otherwise, if the race between page fault and truncate occurs, it > will cause the page fault routine to return an EIO error. > > In filemap_fault() { > page_not_uptodate: > ... > ClearPageError(page); > error = mapping->a_ops->readpage(file, page); > if (!error) { > wait_on_page_locked(page); > if (!PageUptodate(page)) > error = -EIO; > } > ... > } > > However, I tend to think this is a defect in kernel implementation, > because it assumes PageUptodate shouldn't be cleared but file read > routine doesn't make the same assumption. Reviewed-by: James Simmons <jsimmons@xxxxxxxxxxxxx> > Signed-off-by: Jinshan Xiong <jinshan.xiong@xxxxxxxxx> > Reviewed-on: http://review.whamcloud.com/22827 > Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-8633 > Reviewed-by: Li Dongyang <dongyang.li@xxxxxxxxxx> > Reviewed-by: Bobi Jam <bobijam@xxxxxxxxxxx> > Signed-off-by: Oleg Drokin <green@xxxxxxxxxxxxxx> > --- > drivers/staging/lustre/lustre/llite/vvp_page.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/drivers/staging/lustre/lustre/llite/vvp_page.c b/drivers/staging/lustre/lustre/llite/vvp_page.c > index 25490a5..23d6630 100644 > --- a/drivers/staging/lustre/lustre/llite/vvp_page.c > +++ b/drivers/staging/lustre/lustre/llite/vvp_page.c > @@ -166,7 +166,6 @@ static void vvp_page_delete(const struct lu_env *env, > refc = atomic_dec_return(&page->cp_ref); > LASSERTF(refc >= 1, "page = %p, refc = %d\n", page, refc); > > - ClearPageUptodate(vmpage); > ClearPagePrivate(vmpage); > vmpage->private = 0; > /* > -- > 2.7.4 > > _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel