mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
vfs: protect remounting superblock read-only
Currently remouting superblock read-only is racy in a major way. With the per mount read-only infrastructure it is now possible to prevent most races, which this patch attempts. Before starting the remount read-only, iterate through all mounts belonging to the superblock and if none of them have any pending writes, set sb->s_readonly_remount. This indicates that remount is in progress and no further write requests are allowed. If the remount succeeds set MS_RDONLY and reset s_readonly_remount. If the remounting is unsuccessful just reset s_readonly_remount. This can result in transient EROFS errors, despite the fact the remount failed. Unfortunately hodling off writes is difficult as remount itself may touch the filesystem (e.g. through load_nls()) which would deadlock. A later patch deals with delayed writes due to nlink going to zero. Signed-off-by: Miklos Szeredi <[email protected]> Tested-by: Toshiyuki Okajima <[email protected]> Signed-off-by: Al Viro <[email protected]>
This commit is contained in:
parent
39f7c4db1d
commit
4ed5e82fe7
4 changed files with 61 additions and 5 deletions
|
|
@ -52,6 +52,7 @@ extern int finish_automount(struct vfsmount *, struct path *);
|
|||
|
||||
extern void mnt_make_longterm(struct vfsmount *);
|
||||
extern void mnt_make_shortterm(struct vfsmount *);
|
||||
extern int sb_prepare_remount_readonly(struct super_block *);
|
||||
|
||||
extern void __init mnt_init(void);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue