Jeff Mahoney
d2c609b834
btrfs: properly track when rescan worker is running
...
The qgroup_flags field is overloaded such that it reflects the on-disk
status of qgroups and the runtime state. The BTRFS_QGROUP_STATUS_FLAG_RESCAN
flag is used to indicate that a rescan operation is in progress, but if
the file system is unmounted while a rescan is running, the rescan
operation is paused. If the file system is then mounted read-only,
the flag will still be present but the rescan operation will not have
been resumed. When we go to umount, btrfs_qgroup_wait_for_completion
will see the flag and interpret it to mean that the rescan worker is
still running and will wait for a completion that will never come.
This patch uses a separate flag to indicate when the worker is
running. The locking and state surrounding the qgroup rescan worker
needs a lot of attention beyond this patch but this is enough to
avoid a hung umount.
Cc: <stable@vger.kernel.org > # v4.4+
Signed-off-by; Jeff Mahoney <jeffm@suse.com >
Reviewed-by: Qu Wenruo <quwenruo@cn.fujitsu.com >
Signed-off-by: David Sterba <dsterba@suse.com >
Signed-off-by: Chris Mason <clm@fb.com >
2016-08-25 03:58:19 -07:00
..
2016-06-30 23:28:09 -04:00
2016-01-20 17:09:18 -08:00
2016-05-28 16:50:24 -07:00
2016-05-27 15:26:11 -07:00
2016-06-24 17:23:52 -07:00
2016-05-23 17:04:14 -07:00
2016-05-09 11:41:14 -04:00
2016-08-25 03:58:19 -07:00
2016-06-01 10:29:39 +02:00
2016-07-01 15:20:11 -07:00
2016-06-24 12:05:52 -05:00
2016-05-02 19:49:29 -04:00
2016-05-09 11:41:13 -04:00
2016-05-09 11:41:14 -04:00
2016-05-07 10:32:33 -07:00
2016-06-15 04:56:35 -07:00
2016-06-05 10:36:01 -07:00
2016-04-04 10:41:08 -07:00
2016-06-10 12:10:02 -07:00
2016-05-20 17:58:30 -07:00
2016-05-20 17:58:30 -07:00
2016-05-17 17:05:30 -07:00
2016-05-02 19:49:29 -04:00
2016-05-27 17:14:05 -07:00
2016-05-27 17:14:05 -07:00
2016-05-27 15:39:43 -04:00
2016-05-17 15:05:23 -07:00
2016-05-09 11:41:14 -04:00
2016-06-01 10:29:09 +02:00
2016-06-30 13:10:49 +02:00
2016-05-27 17:14:05 -07:00
2016-05-27 20:09:16 -04:00
2016-05-27 15:39:43 -04:00
2016-05-12 19:49:30 -04:00
2016-05-28 16:50:24 -07:00
2016-04-04 10:41:08 -07:00
2016-05-11 00:00:29 -04:00
2016-06-24 17:23:52 -07:00
2016-05-27 15:39:43 -04:00
2016-05-27 15:39:43 -04:00
2016-05-27 20:09:16 -04:00
2016-06-30 16:35:07 -04:00
2016-05-09 11:42:19 -04:00
2016-05-02 19:49:32 -04:00
2016-04-04 10:41:08 -07:00
2016-06-28 16:55:34 -04:00
2016-06-24 12:11:52 -04:00
2016-06-24 17:23:52 -07:00
2016-05-19 19:12:14 -07:00
2016-05-01 19:58:39 -04:00
2016-06-24 17:23:52 -07:00
2016-05-09 11:41:14 -04:00
2016-05-09 11:41:14 -04:00
2016-05-27 15:39:43 -04:00
2016-07-03 09:39:31 +02:00
2016-06-10 12:10:02 -07:00
2016-04-04 10:41:08 -07:00
2016-05-09 11:41:14 -04:00
2016-05-09 11:41:14 -04:00
2016-04-26 12:00:48 -04:00
2016-05-20 17:58:30 -07:00
2016-06-19 07:05:14 -10:00
2016-05-09 11:41:15 -04:00
2016-05-09 11:41:15 -04:00
2015-11-13 21:53:18 -08:00
2016-05-02 19:49:32 -04:00
2016-01-22 18:04:28 -05:00
2016-06-23 00:29:53 +02:00
2016-05-19 13:00:35 +02:00
2016-05-02 19:49:32 -04:00
2016-05-27 17:14:05 -07:00
2016-05-23 17:04:14 -07:00
2016-01-22 18:04:28 -05:00
2016-05-27 20:09:16 -04:00
2016-05-28 16:34:59 -07:00
2016-06-07 22:07:09 -04:00
2016-06-07 22:07:09 -04:00
2016-05-27 15:26:11 -07:00
2016-01-22 18:04:28 -05:00
2016-05-26 19:34:26 -07:00
2016-05-19 19:12:14 -07:00
2016-03-29 10:11:44 -07:00
2016-02-14 14:25:59 -08:00
2016-05-24 12:55:26 -07:00
2016-06-07 22:07:09 -04:00
2016-06-27 12:18:44 -07:00
2016-06-20 10:07:42 -04:00
2016-05-27 14:49:37 -07:00
2016-03-22 15:36:02 -07:00
2016-05-19 19:12:14 -07:00
2016-05-23 17:04:14 -07:00
2016-01-09 02:55:37 -05:00
2016-03-22 15:36:02 -07:00
2016-05-02 19:49:28 -04:00
2016-01-19 12:02:23 -05:00
2016-05-20 17:58:30 -07:00
2016-05-02 19:49:28 -04:00
2016-06-10 11:32:47 -04:00
2016-01-22 18:04:28 -05:00
2016-05-19 15:13:17 -06:00
2016-05-23 17:04:14 -07:00
2016-06-20 17:11:29 -04:00
2016-07-01 10:24:18 -04:00
2016-03-26 12:59:04 -07:00
2016-02-22 22:44:04 -05:00
2016-04-04 10:41:08 -07:00
2016-06-07 20:41:36 -07:00
2016-07-01 15:20:11 -07:00
2016-05-17 14:41:03 -07:00
2016-04-04 10:41:08 -07:00
2016-05-05 09:54:45 -05:00
2016-06-24 12:11:34 -04:00
2016-03-16 13:09:08 -04:00
2016-05-18 11:46:23 -07:00
2016-05-26 00:13:25 -04:00
2016-05-19 19:12:14 -07:00
2016-04-14 12:56:09 -07:00
2016-05-11 00:00:29 -04:00
2016-01-16 11:17:23 -08:00
2016-04-18 11:18:55 +02:00
2016-04-04 10:41:08 -07:00
2016-01-17 11:13:55 +01:00
2016-05-20 17:58:30 -07:00
2016-01-22 18:04:28 -05:00
2016-05-27 20:09:16 -04:00