Fix a minor bug in the previous patch
The logic requires that we mark the glock dirty in page_mkwrite otherwise we might not flush correctly in the case that no allocation was required in the process of dirying the page. Also we need to set the shared write flag early for the same reason. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
This commit is contained in:
parent
6bac243f07
commit
9c538837d8
|
@ -355,6 +355,9 @@ static int gfs2_page_mkwrite(struct vm_area_struct *vma, struct page *page)
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
set_bit(GLF_DIRTY, &ip->i_gl->gl_flags);
|
||||||
|
set_bit(GIF_SW_PAGED, &ip->i_flags);
|
||||||
|
|
||||||
ret = gfs2_write_alloc_required(ip, pos, PAGE_CACHE_SIZE, &alloc_required);
|
ret = gfs2_write_alloc_required(ip, pos, PAGE_CACHE_SIZE, &alloc_required);
|
||||||
if (ret || !alloc_required)
|
if (ret || !alloc_required)
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
|
@ -395,8 +398,6 @@ static int gfs2_page_mkwrite(struct vm_area_struct *vma, struct page *page)
|
||||||
goto out_unlock_page;
|
goto out_unlock_page;
|
||||||
}
|
}
|
||||||
ret = gfs2_allocate_page_backing(page);
|
ret = gfs2_allocate_page_backing(page);
|
||||||
if (!ret)
|
|
||||||
set_bit(GIF_SW_PAGED, &ip->i_flags);
|
|
||||||
|
|
||||||
out_unlock_page:
|
out_unlock_page:
|
||||||
unlock_page(page);
|
unlock_page(page);
|
||||||
|
|
Loading…
Reference in New Issue