Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes
* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes: GFS2: Fix page_mkwrite() return code GFS2: Clear dirty bit at end of inode glock sync
This commit is contained in:
@@ -156,6 +156,12 @@ static void inode_go_sync(struct gfs2_glock *gl)
|
|||||||
error = filemap_fdatawait(metamapping);
|
error = filemap_fdatawait(metamapping);
|
||||||
mapping_set_error(metamapping, error);
|
mapping_set_error(metamapping, error);
|
||||||
gfs2_ail_empty_gl(gl);
|
gfs2_ail_empty_gl(gl);
|
||||||
|
/*
|
||||||
|
* Writeback of the data mapping may cause the dirty flag to be set
|
||||||
|
* so we have to clear it again here.
|
||||||
|
*/
|
||||||
|
smp_mb__before_clear_bit();
|
||||||
|
clear_bit(GLF_DIRTY, &gl->gl_flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -413,7 +413,9 @@ out_unlock:
|
|||||||
gfs2_glock_dq(&gh);
|
gfs2_glock_dq(&gh);
|
||||||
out:
|
out:
|
||||||
gfs2_holder_uninit(&gh);
|
gfs2_holder_uninit(&gh);
|
||||||
if (ret)
|
if (ret == -ENOMEM)
|
||||||
|
ret = VM_FAULT_OOM;
|
||||||
|
else if (ret)
|
||||||
ret = VM_FAULT_SIGBUS;
|
ret = VM_FAULT_SIGBUS;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user