This repository has been archived on 2026-03-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
ubports_kernel_google_msm/include/linux
Miklos Szeredi 4ed5e82fe7 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 <mszeredi@suse.cz>
Tested-by: Toshiyuki Okajima <toshi.okajima@jp.fujitsu.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2012-01-06 23:20:12 -05:00
..
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-11-07 09:11:16 -08:00
2011-03-31 11:26:23 -03:00
2012-01-03 22:55:04 -05:00
2011-07-22 08:25:37 -07:00
2011-11-02 16:07:03 -07:00
2011-07-20 20:47:43 -04:00
2011-07-26 16:49:47 -07:00
2011-10-26 15:43:25 -04:00
2011-07-26 16:49:47 -07:00
2012-01-03 22:55:17 -05:00
2011-03-22 17:43:59 -07:00
2011-11-16 09:21:50 +01:00
2011-07-26 16:49:47 -07:00
2011-08-03 11:30:42 -04:00
2011-07-31 22:05:09 +02:00
2011-07-26 16:49:47 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-05-26 17:12:34 -07:00
2012-01-03 22:55:03 -05:00
2011-09-27 09:25:02 +01:00
2011-03-31 11:26:23 -03:00
2012-01-03 22:54:57 -05:00
2011-08-25 16:25:33 -07:00
2011-03-31 11:26:23 -03:00
2011-03-22 17:44:15 -07:00
2011-07-06 14:44:42 -07:00
2011-07-25 20:57:16 -07:00
2011-07-05 23:42:17 -07:00
2011-07-26 16:49:47 -07:00
2012-01-03 22:54:56 -05:00
2011-11-07 23:54:53 +01:00
2011-05-23 10:47:06 -05:00
2011-05-29 13:03:09 +01:00
2011-10-31 20:19:04 +00:00
2011-05-24 10:21:29 +02:00
2011-03-31 11:26:23 -03:00
2011-09-14 15:24:51 -04:00
2011-03-31 11:26:23 -03:00
2012-01-03 22:54:58 -05:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:47 -07:00
2011-08-08 16:08:08 +02:00
2011-07-01 15:34:45 -07:00
2011-03-31 11:26:23 -03:00
2011-06-28 10:48:34 +02:00
2011-11-23 11:33:07 +01:00
2011-03-31 11:26:23 -03:00
2011-07-01 10:37:15 +02:00
2012-01-03 22:54:56 -05:00
2011-10-30 04:43:30 -04:00
2011-07-21 13:47:54 -07:00
2012-01-03 22:55:17 -05:00
2011-09-27 18:08:04 +02:00
2011-03-31 11:26:23 -03:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:47 -07:00
2011-03-31 11:26:23 -03:00
2011-09-25 19:52:59 +03:00
2011-09-16 19:20:20 -04:00
2011-05-24 14:33:35 +02:00
2011-04-25 18:14:10 -07:00
2012-01-03 22:55:15 -05:00
2011-11-02 16:06:57 -07:00
2011-07-26 16:49:47 -07:00
2011-03-31 11:26:23 -03:00
2011-07-26 16:49:47 -07:00
2011-07-31 12:18:16 -04:00
2011-07-28 16:19:22 -06:00
2011-10-31 14:03:22 +01:00
2011-03-31 11:26:23 -03:00
2011-05-26 17:12:37 -07:00
2011-11-22 16:37:01 -05:00
2011-03-31 11:26:23 -03:00
2011-11-02 16:07:02 -07:00
2011-03-31 11:26:23 -03:00
2012-01-03 22:54:56 -05:00
2011-03-31 11:26:23 -03:00
2011-07-26 16:49:47 -07:00
2012-01-03 22:55:07 -05:00
2012-01-03 22:55:00 -05:00
2012-01-03 22:54:56 -05:00
2011-05-25 08:39:19 -07:00
2011-07-26 14:50:01 -07:00
2011-06-07 10:02:35 +02:00
2012-01-03 22:52:40 -05:00
2011-07-30 08:44:19 -10:00
2011-11-29 11:59:50 +00:00
2011-03-31 11:26:23 -03:00
2011-07-26 16:49:47 -07:00
2011-03-31 11:26:23 -03:00
2011-07-26 16:49:47 -07:00
2011-07-25 20:57:11 -07:00
2011-10-31 17:30:47 -07:00
2011-08-16 00:16:49 -07:00
2011-08-03 14:25:22 -10:00
2012-01-03 22:54:56 -05:00
2011-10-03 14:01:21 -04:00
2011-06-27 20:30:08 +02:00
2011-08-23 10:10:38 -07:00
2012-01-03 22:55:17 -05:00
2011-03-31 11:26:23 -03:00
2011-06-07 09:05:42 -07:00
2011-11-02 16:07:02 -07:00
2011-03-31 11:26:23 -03:00
2011-07-26 16:49:47 -07:00
2011-03-31 11:26:23 -03:00
2011-07-26 16:49:47 -07:00
2011-09-14 15:24:51 -04:00
2011-03-31 11:26:23 -03:00