Omar Sandoval
4ace53f1ed
sbitmap: use test_and_set_bit_lock()/clear_bit_unlock()
...
sbitmap_queue_get()/sbitmap_queue_clear() are used for
allocating/freeing a resource, so they should provide acquire/release
barrier semantics, respectively. sbitmap_get() currently contains a full
barrier, which is unnecessary, so use test_and_set_bit_lock() instead of
test_and_set_bit() (these are equivalent on x86_64). sbitmap_clear_bit()
does not imply any barriers, which is incorrect, as accesses of the
resource (e.g., request) could potentially get reordered to after the
clear_bit(). Introduce sbitmap_clear_bit_unlock() and use it for
sbitmap_queue_clear() (this only adds a compiler barrier on x86_64). The
other existing user of sbitmap_clear_bit() (the blk-mq software queue
pending map) is serialized through a spinlock and does not need this.
Reported-by: Tejun Heo <tj@kernel.org>
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2018-02-28 12:23:35 -07:00
..
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-10-03 17:54:25 -07:00
2017-11-02 11:10:55 +01:00
2017-12-22 19:39:09 +11:00
2017-11-02 11:10:55 +01:00
2017-10-12 15:10:12 +02:00
2015-09-10 13:29:01 -07:00
2017-05-08 17:15:12 -07:00
2017-08-15 09:02:08 -07:00
2017-11-02 11:10:55 +01:00
2017-12-01 13:09:40 -08:00
2017-12-01 13:09:40 -08:00
2017-12-08 15:13:27 +00:00
2017-12-04 10:52:56 -08:00
2017-07-14 15:05:13 -07:00
locking/atomic: Implement atomic{,64,_long}_fetch_{add,sub,and,andnot,or,xor}{,_relaxed,_acquire,_release}()
2016-06-16 10:48:32 +02:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-02-06 18:32:44 -08:00
2017-07-10 16:32:35 -07:00
2015-11-23 09:44:58 +01:00
2017-12-11 09:58:39 -05:00
2017-11-17 16:10:01 -08:00
2017-11-02 11:10:55 +01:00
2018-01-12 23:03:01 +11:00
2017-11-02 11:10:55 +01:00
2016-03-13 23:55:13 -04:00
2017-11-02 11:10:55 +01:00
2017-09-08 18:26:49 -07:00
2017-12-01 13:09:40 -08:00
2017-11-02 11:10:55 +01:00
2015-05-27 15:22:15 +02:00
2018-02-06 18:32:44 -08:00
2017-09-26 15:01:20 -06:00
2017-09-26 15:01:20 -06:00
2017-09-26 15:01:20 -06:00
2017-11-02 11:10:55 +01:00
2017-02-24 17:46:57 -08:00
2018-01-08 10:08:33 +00:00
2015-05-26 15:26:43 +02:00
2015-05-30 22:42:24 -07:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-08-14 16:51:01 +02:00
2017-11-02 11:10:55 +01:00
2015-09-10 13:29:01 -07:00
2017-11-02 11:10:55 +01:00
2017-02-24 17:46:57 -08:00
2015-09-10 13:29:01 -07:00
2015-09-10 13:29:01 -07:00
2015-09-10 13:29:01 -07:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-10-12 17:16:40 +01:00
2017-11-13 08:25:06 -08:00
2017-11-17 16:10:00 -08:00
2018-02-12 15:59:07 +00:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-17 16:10:01 -08:00
2017-11-15 11:56:19 -08:00
2016-06-08 11:04:19 +02:00
2018-01-12 17:33:38 -08:00
2018-01-01 12:40:27 -07:00
2017-07-10 16:32:35 -07:00
2017-08-10 15:54:06 -07:00
2018-02-06 18:32:44 -08:00
2018-02-06 18:32:44 -08:00
2017-11-02 11:10:55 +01:00
2017-10-07 10:45:14 -06:00
2017-11-02 11:10:55 +01:00
2017-11-17 16:10:02 -08:00
2017-02-24 17:46:57 -08:00
2017-02-24 17:46:57 -08:00
2017-09-08 18:26:49 -07:00
2017-11-02 11:10:55 +01:00
2018-02-21 15:35:43 -08:00
2017-11-02 11:10:55 +01:00
2017-11-17 16:10:01 -08:00
2017-11-17 16:10:02 -08:00
2016-01-20 17:09:18 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 10:04:46 -07:00
2017-10-11 22:36:54 -04:00
2017-11-02 11:10:55 +01:00
2017-03-02 08:42:38 +01:00
2017-11-02 11:10:55 +01:00
2018-01-31 11:32:27 -08:00
2018-02-21 15:35:43 -08:00
2018-02-06 18:32:47 -08:00
2017-05-16 08:44:22 -03:00
2016-12-14 16:04:08 -08:00
2016-02-07 22:18:47 -08:00
2018-01-02 14:56:51 +01:00
2018-02-01 10:00:28 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-06-08 17:36:03 +08:00
2017-02-24 17:46:56 -08:00
2017-11-02 11:10:55 +01:00
2017-10-25 11:01:08 +02:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2015-11-25 09:22:02 -07:00
2017-12-01 13:09:40 -08:00
2018-02-06 18:32:44 -08:00
2017-11-02 11:10:55 +01:00
2017-12-01 13:09:40 -08:00
2017-11-02 11:10:55 +01:00
2015-12-03 11:49:23 -05:00
2017-12-07 14:00:57 -05:00
2017-11-17 16:10:02 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-12-08 15:13:28 +00:00
2017-11-04 09:26:51 +09:00
2017-02-03 16:35:42 -05:00
2016-12-06 10:17:03 +02:00
2018-01-26 11:45:16 -06:00
2017-11-02 11:10:55 +01:00
2017-03-02 08:42:34 +01:00
2017-12-04 10:52:53 -08:00
2017-03-02 08:42:27 +01:00
2017-01-23 09:17:12 +01:00
2018-02-21 15:35:43 -08:00
2017-11-21 15:57:05 -08:00
2017-10-03 17:54:26 -07:00
2017-11-02 11:10:55 +01:00
2017-11-17 16:10:02 -08:00
2017-12-14 16:00:48 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-12-11 09:58:39 -05:00
2018-02-28 12:23:35 -07:00
2018-01-19 12:31:03 -07:00
2017-11-02 11:10:55 +01:00
2016-04-15 16:53:14 -04:00
2015-08-24 14:28:01 -06:00
2017-11-02 11:10:55 +01:00
2017-02-22 16:41:30 -08:00
2017-01-09 13:58:57 -05:00
2018-01-05 15:24:00 +01:00
2017-11-02 11:10:55 +01:00
2018-02-06 18:32:44 -08:00
2017-09-13 18:53:16 -07:00
2018-02-01 12:20:21 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-01-15 09:35:50 +01:00
2017-11-02 11:10:55 +01:00
2018-02-06 18:32:44 -08:00
2018-02-05 00:31:57 +01:00
2017-09-08 18:26:49 -07:00
2018-01-22 16:55:38 +01:00
2016-09-01 17:52:01 -07:00
2016-01-20 17:09:18 -08:00
2018-02-06 18:32:43 -08:00
2018-01-09 16:33:31 +01:00
2017-11-17 16:10:01 -08:00
2017-02-26 11:03:38 -05:00
2017-11-29 12:09:02 +11:00
2017-12-11 09:58:38 -05:00
2017-01-09 13:58:57 -05:00
2018-02-06 18:32:45 -08:00
2015-08-03 11:51:12 +02:00
2016-02-09 10:27:29 +01:00
2017-11-17 16:10:01 -08:00
2017-07-12 16:26:00 -07:00
2017-05-01 09:36:30 +02:00
2017-07-21 09:38:30 +02:00
2015-09-10 13:29:01 -07:00
2016-02-03 08:28:43 -08:00
2017-12-29 23:13:10 +01:00
2017-10-22 03:14:07 +01:00
2017-10-22 03:14:07 +01:00
2018-02-06 18:32:46 -08:00
2018-02-06 18:32:46 -08:00
2017-12-01 13:09:40 -08:00
2017-11-02 11:10:55 +01:00
2017-12-11 09:35:11 -05:00
2017-12-11 15:03:08 -07:00
2018-02-01 13:36:15 -08:00
2017-11-02 11:10:55 +01:00
2017-08-15 09:02:07 -07:00