[RFC v1 0/5] fs/locks: Use plain percpu spinlocks instead of lglock to protect file_lock
From: Daniel Wagner
Date: Fri Feb 20 2015 - 09:41:19 EST
Hi Jeff,
Thanks for the great feedback on version 0. I haven't address all your
points yet but will do. Just wanted to post a more readeable version.
Still missing things and TODOs (FIXME!!):
- adding lockdep assertions
- more tests and benchmarks on big machines
v1:
- rebased on v3.19-8975-g3d88348
- splittet into smaller pieces
- fixed a wrong usage of __locks_insert/delete_block() and it's posix version
- added seqfile helpers to avoid ugly open coded version
Original cover letter:
I am looking at how to get rid of lglock. Reason being -rt is not too
happy with that lock, especially that it uses arch_spinlock_t and
therefore it is not changed into a mutex on -rt. I know no change is
accepted only fixing something for -rt alone. So here my attempt to
make things faster for mainline and fixing -rt.
There are two users of lglock at this point. fs/locks.c and
kernel/stop_machine.c
I presume the fs/locks is the more interesting one in respect of
performance. Let's have a look at that one first.
The lglock version of file_lock_lock is used in combination of
blocked_lock_lock to protect file_lock's fl_link, fl_block, fl_next,
blocked_hash and the percpu file_lock_list.
The plan is to reorganize the usage of the locks and what they protect
so that the usage of the global blocked_lock_lock is reduced.
Whenever we insert a new lock we are going to grab besides the i_lock
also the corresponding percpu file_lock_lock. The global
blocked_lock_lock is only used when blocked_hash is involved.
file_lock_list exists to be being able to produce the content of
/proc/locks. For listing the all locks it seems a bit excessive to
grab all locks at once. We should be okay just grabbing the
corresponding lock when iterating over the percpu file_lock_list.
file_lock_lock protects now file_lock_list and fl_link, fl_block and
fl_next allone. That means we need to define which file_lock_lock is
used for all waiters. Luckely, fl_link_cpu can be reused for fl_block
and fl_next.
I haven't found a good way around for the open coded seq_ops
(locks_start, locks_next, locks_stop). Maybe someone has good idea how
to handle with the locks.
For performance testing I used
git://git.samba.org/jlayton/lockperf.git and for correctness
https://github.com/linux-test-project/ltp/tree/master/testcases/network/nfsv4/locks
In case you are missing the posix03 results, my machine doesn't like
it too much. The load brings it to its knees due to the very high
load. Propably I need different parameters.
I didn't run excessive tests so far, because I am waiting for getting
access on a bigger box compared to my small i7-4850HQ system. I hope
to see larger improvements when there are more cores involved.
Anyway here are some results based on 3.19.
Explanation:
3.19: means unpatched kernel
3.19.0+: patched version
-with-reader.data: 'while true; do cat /proc/locks; done > /dev/null'
3.19/flock01.data
# NumSamples = 117; Min = 853.77; Max = 1425.62
# Mean = 1387.965754; Variance = 5512.265923; SD = 74.244636; Median 1408.578537
# each â represents a count of 1
853.7746 - 910.9590 [ 1]: â
910.9590 - 968.1435 [ 0]:
968.1435 - 1025.3280 [ 1]: â
1025.3280 - 1082.5124 [ 0]:
1082.5124 - 1139.6969 [ 0]:
1139.6969 - 1196.8813 [ 2]: ââ
1196.8813 - 1254.0658 [ 1]: â
1254.0658 - 1311.2502 [ 1]: â
1311.2502 - 1368.4347 [ 11]: âââââââââââ
1368.4347 - 1425.6192 [ 100]: ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
3.19.0+/flock01.data
# NumSamples = 124; Min = 1415.92; Max = 1459.39
# Mean = 1430.258322; Variance = 36.425769; SD = 6.035376; Median 1429.462718
# each â represents a count of 1
1415.9192 - 1420.2667 [ 2]: ââ
1420.2667 - 1424.6142 [ 19]: âââââââââââââââââââ
1424.6142 - 1428.9617 [ 36]: ââââââââââââââââââââââââââââââââââââ
1428.9617 - 1433.3092 [ 32]: ââââââââââââââââââââââââââââââââ
1433.3092 - 1437.6567 [ 22]: ââââââââââââââââââââââ
1437.6567 - 1442.0042 [ 10]: ââââââââââ
1442.0042 - 1446.3517 [ 2]: ââ
1446.3517 - 1450.6992 [ 0]:
1450.6992 - 1455.0467 [ 0]:
1455.0467 - 1459.3942 [ 1]: â
3.19/flock01-with-reader.data
# NumSamples = 97; Min = 1342.97; Max = 1423.54
# Mean = 1410.695019; Variance = 149.115584; SD = 12.211289; Median 1413.260338
# each â represents a count of 1
1342.9675 - 1351.0245 [ 1]: â
1351.0245 - 1359.0815 [ 0]:
1359.0815 - 1367.1384 [ 1]: â
1367.1384 - 1375.1954 [ 1]: â
1375.1954 - 1383.2524 [ 1]: â
1383.2524 - 1391.3093 [ 4]: ââââ
1391.3093 - 1399.3663 [ 0]:
1399.3663 - 1407.4233 [ 10]: ââââââââââ
1407.4233 - 1415.4803 [ 45]: âââââââââââââââââââââââââââââââââââââââââââââ
1415.4803 - 1423.5372 [ 34]: ââââââââââââââââââââââââââââââââââ
3.19.0+/flock01-with-reader.data
# NumSamples = 104; Min = 1331.30; Max = 1349.97
# Mean = 1340.767603; Variance = 16.434314; SD = 4.053926; Median 1340.243416
# each â represents a count of 1
1331.3015 - 1333.1680 [ 2]: ââ
1333.1680 - 1335.0345 [ 6]: ââââââ
1335.0345 - 1336.9011 [ 9]: âââââââââ
1336.9011 - 1338.7676 [ 17]: âââââââââââââââââ
1338.7676 - 1340.6341 [ 21]: âââââââââââââââââââââ
1340.6341 - 1342.5006 [ 11]: âââââââââââ
1342.5006 - 1344.3671 [ 17]: âââââââââââââââââ
1344.3671 - 1346.2336 [ 10]: ââââââââââ
1346.2336 - 1348.1001 [ 4]: ââââ
1348.1001 - 1349.9666 [ 7]: âââââââ
3.19/flock02.data
# NumSamples = 2726; Min = 5.33; Max = 65.40
# Mean = 13.524542; Variance = 15.739906; SD = 3.967355; Median 12.857334
# each â represents a count of 32
5.3260 - 11.3331 [ 167]: âââââ
11.3331 - 17.3402 [ 2435]: ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
17.3402 - 23.3472 [ 90]: ââ
23.3472 - 29.3543 [ 4]:
29.3543 - 35.3614 [ 6]:
35.3614 - 41.3684 [ 6]:
41.3684 - 47.3755 [ 1]:
47.3755 - 53.3826 [ 11]:
53.3826 - 59.3897 [ 3]:
59.3897 - 65.3967 [ 3]:
3.19.0+/flock02.data
# NumSamples = 2226; Min = 9.69; Max = 45.76
# Mean = 13.140839; Variance = 2.468176; SD = 1.571043; Median 12.936904
# each â represents a count of 18
9.6911 - 13.2975 [ 1366]: âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
13.2975 - 16.9040 [ 806]: ââââââââââââââââââââââââââââââââââââââââââââ
16.9040 - 20.5104 [ 51]: ââ
20.5104 - 24.1168 [ 0]:
24.1168 - 27.7232 [ 0]:
27.7232 - 31.3297 [ 1]:
31.3297 - 34.9361 [ 1]:
34.9361 - 38.5425 [ 0]:
38.5425 - 42.1489 [ 0]:
42.1489 - 45.7554 [ 1]:
3.19/flock02-with-reader.data
# NumSamples = 2719; Min = 2.59; Max = 67.27
# Mean = 14.488231; Variance = 8.927716; SD = 2.987928; Median 14.103543
# each â represents a count of 30
2.5949 - 9.0619 [ 2]:
9.0619 - 15.5289 [ 2251]: âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
15.5289 - 21.9960 [ 441]: ââââââââââââââ
21.9960 - 28.4630 [ 15]:
28.4630 - 34.9300 [ 0]:
34.9300 - 41.3970 [ 1]:
41.3970 - 47.8640 [ 4]:
47.8640 - 54.3310 [ 1]:
54.3310 - 60.7980 [ 3]:
60.7980 - 67.2650 [ 1]:
3.19.0+/flock02-with-reader.data
# NumSamples = 2539; Min = 9.95; Max = 23.41
# Mean = 13.993072; Variance = 2.729366; SD = 1.652079; Median 13.800728
# each â represents a count of 13
9.9482 - 11.2940 [ 47]: âââ
11.2940 - 12.6398 [ 399]: ââââââââââââââââââââââââââââââ
12.6398 - 13.9855 [ 1016]: ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
13.9855 - 15.3313 [ 732]: ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
15.3313 - 16.6771 [ 190]: ââââââââââââââ
16.6771 - 18.0229 [ 70]: âââââ
18.0229 - 19.3687 [ 41]: âââ
19.3687 - 20.7145 [ 28]: ââ
20.7145 - 22.0602 [ 13]: â
22.0602 - 23.4060 [ 3]:
3.19/lease01.data
# NumSamples = 65; Min = 152.59; Max = 175.66
# Mean = 167.052274; Variance = 23.396889; SD = 4.837033; Median 166.765499
# each â represents a count of 1
152.5900 - 154.8972 [ 1]: â
154.8972 - 157.2045 [ 1]: â
157.2045 - 159.5117 [ 4]: ââââ
159.5117 - 161.8190 [ 4]: ââââ
161.8190 - 164.1262 [ 5]: âââââ
164.1262 - 166.4335 [ 15]: âââââââââââââââ
166.4335 - 168.7407 [ 10]: ââââââââââ
168.7407 - 171.0480 [ 12]: ââââââââââââ
171.0480 - 173.3552 [ 6]: ââââââ
173.3552 - 175.6625 [ 7]: âââââââ
3.19.0+/lease01.data
# NumSamples = 602; Min = 145.21; Max = 181.15
# Mean = 167.448570; Variance = 32.250924; SD = 5.678990; Median 167.925163
# each â represents a count of 2
145.2090 - 148.8032 [ 4]: ââ
148.8032 - 152.3974 [ 8]: ââââ
152.3974 - 155.9916 [ 14]: âââââââ
155.9916 - 159.5858 [ 31]: âââââââââââââââ
159.5858 - 163.1800 [ 44]: ââââââââââââââââââââââ
163.1800 - 166.7742 [ 145]: ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
166.7742 - 170.3684 [ 173]: ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
170.3684 - 173.9626 [ 126]: âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
173.9626 - 177.5568 [ 41]: ââââââââââââââââââââ
177.5568 - 181.1510 [ 16]: ââââââââ
3.19/lease01-with-reader.data
# NumSamples = 76; Min = 137.96; Max = 179.57
# Mean = 163.911898; Variance = 69.281798; SD = 8.323569; Median 164.218926
# each â represents a count of 1
137.9570 - 142.1184 [ 1]: â
142.1184 - 146.2799 [ 0]:
146.2799 - 150.4414 [ 6]: ââââââ
150.4414 - 154.6028 [ 2]: ââ
154.6028 - 158.7643 [ 11]: âââââââââââ
158.7643 - 162.9257 [ 15]: âââââââââââââââ
162.9257 - 167.0872 [ 10]: ââââââââââ
167.0872 - 171.2487 [ 19]: âââââââââââââââââââ
171.2487 - 175.4101 [ 7]: âââââââ
175.4101 - 179.5716 [ 5]: âââââ
3.19.0+/lease01-with-reader.data
# NumSamples = 216; Min = 144.76; Max = 176.76
# Mean = 160.680593; Variance = 44.032938; SD = 6.635732; Median 160.827124
# each â represents a count of 1
144.7606 - 147.9610 [ 8]: ââââââââ
147.9610 - 151.1614 [ 16]: ââââââââââââââââ
151.1614 - 154.3618 [ 11]: âââââââââââ
154.3618 - 157.5622 [ 30]: ââââââââââââââââââââââââââââââ
157.5622 - 160.7626 [ 42]: ââââââââââââââââââââââââââââââââââââââââââ
160.7626 - 163.9630 [ 41]: âââââââââââââââââââââââââââââââââââââââââ
163.9630 - 167.1634 [ 32]: ââââââââââââââââââââââââââââââââ
167.1634 - 170.3638 [ 24]: ââââââââââââââââââââââââ
170.3638 - 173.5642 [ 6]: ââââââ
173.5642 - 176.7646 [ 6]: ââââââ
3.19/lease02.data
# NumSamples = 306; Min = 43.22; Max = 64.80
# Mean = 59.318955; Variance = 9.779672; SD = 3.127247; Median 59.907252
# each â represents a count of 1
43.2247 - 45.3825 [ 1]: â
45.3825 - 47.5403 [ 1]: â
47.5403 - 49.6981 [ 1]: â
49.6981 - 51.8560 [ 8]: ââââââââ
51.8560 - 54.0138 [ 10]: ââââââââââ
54.0138 - 56.1716 [ 20]: ââââââââââââââââââââ
56.1716 - 58.3294 [ 43]: âââââââââââââââââââââââââââââââââââââââââââ
58.3294 - 60.4872 [ 93]: âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
60.4872 - 62.6450 [ 104]: ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
62.6450 - 64.8028 [ 25]: âââââââââââââââââââââââââ
3.19.0+/lease02.data
# NumSamples = 527; Min = 50.49; Max = 64.11
# Mean = 59.436887; Variance = 4.335719; SD = 2.082239; Median 59.632461
# each â represents a count of 1
50.4855 - 51.8483 [ 2]: ââ
51.8483 - 53.2112 [ 1]: â
53.2112 - 54.5741 [ 5]: âââââ
54.5741 - 55.9369 [ 26]: ââââââââââââââââââââââââââ
55.9369 - 57.2998 [ 47]: âââââââââââââââââââââââââââââââââââââââââââââââ
57.2998 - 58.6627 [ 92]: ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
58.6627 - 60.0255 [ 124]: ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
60.0255 - 61.3884 [ 127]: âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
61.3884 - 62.7513 [ 89]: âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
62.7513 - 64.1141 [ 14]: ââââââââââââââ
3.19/lease02-with-reader.data
# NumSamples = 287; Min = 43.36; Max = 61.39
# Mean = 56.435938; Variance = 9.470188; SD = 3.077367; Median 57.268150
# each â represents a count of 1
43.3599 - 45.1627 [ 1]: â
45.1627 - 46.9655 [ 4]: ââââ
46.9655 - 48.7684 [ 5]: âââââ
48.7684 - 50.5712 [ 8]: ââââââââ
50.5712 - 52.3741 [ 10]: ââââââââââ
52.3741 - 54.1769 [ 25]: âââââââââââââââââââââââââ
54.1769 - 55.9797 [ 37]: âââââââââââââââââââââââââââââââââââââ
55.9797 - 57.7826 [ 93]: âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
57.7826 - 59.5854 [ 74]: ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
59.5854 - 61.3883 [ 30]: ââââââââââââââââââââââââââââââ
3.19.0+/lease02-with-reader.data
# NumSamples = 919; Min = 46.59; Max = 62.16
# Mean = 56.053034; Variance = 5.565033; SD = 2.359032; Median 56.239479
# each â represents a count of 3
46.5883 - 48.1459 [ 4]: â
48.1459 - 49.7034 [ 7]: ââ
49.7034 - 51.2609 [ 14]: ââââ
51.2609 - 52.8184 [ 56]: ââââââââââââââââââ
52.8184 - 54.3760 [ 120]: ââââââââââââââââââââââââââââââââââââââââ
54.3760 - 55.9335 [ 220]: âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
55.9335 - 57.4910 [ 260]: ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
57.4910 - 59.0486 [ 152]: ââââââââââââââââââââââââââââââââââââââââââââââââââ
59.0486 - 60.6061 [ 70]: âââââââââââââââââââââââ
60.6061 - 62.1636 [ 16]: âââââ
3.19/posix01.data
# NumSamples = 62; Min = 1132.49; Max = 1458.17
# Mean = 1336.939168; Variance = 6234.581717; SD = 78.959368; Median 1338.021800
# each â represents a count of 1
1132.4925 - 1165.0600 [ 2]: ââ
1165.0600 - 1197.6274 [ 2]: ââ
1197.6274 - 1230.1949 [ 4]: ââââ
1230.1949 - 1262.7623 [ 4]: ââââ
1262.7623 - 1295.3297 [ 4]: ââââ
1295.3297 - 1327.8972 [ 7]: âââââââ
1327.8972 - 1360.4646 [ 13]: âââââââââââââ
1360.4646 - 1393.0321 [ 13]: âââââââââââââ
1393.0321 - 1425.5995 [ 3]: âââ
1425.5995 - 1458.1670 [ 10]: ââââââââââ
3.19.0+/posix01.data
# NumSamples = 506; Min = 1309.62; Max = 1500.85
# Mean = 1453.666440; Variance = 619.986362; SD = 24.899525; Median 1457.756685
# each â represents a count of 2
1309.6159 - 1328.7394 [ 1]:
1328.7394 - 1347.8630 [ 0]:
1347.8630 - 1366.9866 [ 2]: â
1366.9866 - 1386.1102 [ 3]: â
1386.1102 - 1405.2338 [ 15]: âââââââ
1405.2338 - 1424.3574 [ 42]: âââââââââââââââââââââ
1424.3574 - 1443.4810 [ 77]: ââââââââââââââââââââââââââââââââââââââ
1443.4810 - 1462.6046 [ 157]: ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
1462.6046 - 1481.7282 [ 163]: âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
1481.7282 - 1500.8518 [ 46]: âââââââââââââââââââââââ
3.19/posix01-with-reader.data
# NumSamples = 45; Min = 1234.92; Max = 1450.74
# Mean = 1409.432073; Variance = 1146.435306; SD = 33.859051; Median 1416.858889
# each â represents a count of 1
1234.9186 - 1256.5012 [ 1]: â
1256.5012 - 1278.0838 [ 0]:
1278.0838 - 1299.6664 [ 0]:
1299.6664 - 1321.2490 [ 0]:
1321.2490 - 1342.8316 [ 0]:
1342.8316 - 1364.4142 [ 1]: â
1364.4142 - 1385.9968 [ 4]: ââââ
1385.9968 - 1407.5794 [ 12]: ââââââââââââ
1407.5794 - 1429.1620 [ 18]: ââââââââââââââââââ
1429.1620 - 1450.7446 [ 9]: âââââââââ
3.19.0+/posix01-with-reader.data
# NumSamples = 117; Min = 1301.80; Max = 1411.39
# Mean = 1379.963065; Variance = 519.145334; SD = 22.784761; Median 1383.988035
# each â represents a count of 1
1301.7995 - 1312.7584 [ 3]: âââ
1312.7584 - 1323.7172 [ 2]: ââ
1323.7172 - 1334.6761 [ 3]: âââ
1334.6761 - 1345.6350 [ 4]: ââââ
1345.6350 - 1356.5938 [ 0]:
1356.5938 - 1367.5527 [ 10]: ââââââââââ
1367.5527 - 1378.5115 [ 19]: âââââââââââââââââââ
1378.5115 - 1389.4704 [ 28]: ââââââââââââââââââââââââââââ
1389.4704 - 1400.4292 [ 35]: âââââââââââââââââââââââââââââââââââ
1400.4292 - 1411.3881 [ 13]: âââââââââââââ
3.19/posix02.data
# NumSamples = 458; Min = 18.61; Max = 75.56
# Mean = 23.772732; Variance = 18.547870; SD = 4.306724; Median 23.473403
# each â represents a count of 3
18.6111 - 24.3065 [ 297]: âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
24.3065 - 30.0018 [ 158]: ââââââââââââââââââââââââââââââââââââââââââââââââââââ
30.0018 - 35.6972 [ 0]:
35.6972 - 41.3926 [ 0]:
41.3926 - 47.0879 [ 0]:
47.0879 - 52.7833 [ 0]:
52.7833 - 58.4787 [ 0]:
58.4787 - 64.1740 [ 0]:
64.1740 - 69.8694 [ 1]:
69.8694 - 75.5648 [ 2]:
3.19.0+/posix02.data
# NumSamples = 2340; Min = 15.62; Max = 79.66
# Mean = 22.538333; Variance = 12.248801; SD = 3.499829; Median 22.106778
# each â represents a count of 15
15.6169 - 22.0211 [ 1167]: âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
22.0211 - 28.4252 [ 1101]: âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
28.4252 - 34.8294 [ 60]: ââââ
34.8294 - 41.2335 [ 3]:
41.2335 - 47.6377 [ 1]:
47.6377 - 54.0418 [ 0]:
54.0418 - 60.4459 [ 1]:
60.4459 - 66.8501 [ 2]:
66.8501 - 73.2542 [ 3]:
73.2542 - 79.6584 [ 2]:
3.19/posix02-with-reader.data
# NumSamples = 387; Min = 19.21; Max = 29.79
# Mean = 25.041294; Variance = 3.455306; SD = 1.858845; Median 25.111446
# each â represents a count of 1
19.2050 - 20.2634 [ 2]: ââ
20.2634 - 21.3218 [ 10]: ââââââââââ
21.3218 - 22.3802 [ 16]: ââââââââââââââââ
22.3802 - 23.4386 [ 44]: ââââââââââââââââââââââââââââââââââââââââââââ
23.4386 - 24.4970 [ 84]: ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
24.4970 - 25.5554 [ 74]: ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
25.5554 - 26.6138 [ 80]: ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
26.6138 - 27.6722 [ 55]: âââââââââââââââââââââââââââââââââââââââââââââââââââââââ
27.6722 - 28.7306 [ 13]: âââââââââââââ
28.7306 - 29.7890 [ 9]: âââââââââ
3.19.0+/posix02-with-reader.data
# NumSamples = 1689; Min = 16.97; Max = 85.43
# Mean = 23.973230; Variance = 21.079021; SD = 4.591189; Median 23.419958
# each â represents a count of 13
16.9744 - 23.8198 [ 993]: ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
23.8198 - 30.6652 [ 670]: âââââââââââââââââââââââââââââââââââââââââââââââââââ
30.6652 - 37.5106 [ 9]:
37.5106 - 44.3560 [ 3]:
44.3560 - 51.2015 [ 2]:
51.2015 - 58.0469 [ 2]:
58.0469 - 64.8923 [ 3]:
64.8923 - 71.7377 [ 3]:
71.7377 - 78.5831 [ 1]:
78.5831 - 85.4285 [ 3]:
Cc: Alexander Viro <viro@xxxxxxxxxxxxxxxxxx>
Cc: Jeff Layton <jlayton@xxxxxxxxxxxxxxx>
Cc: "J. Bruce Fields" <bfields@xxxxxxxxxxxx>
Cc: linux-fsdevel@xxxxxxxxxxxxxxx
Cc: linux-kernel@xxxxxxxxxxxxxxx
Daniel Wagner (5):
locks: Remove unnecessary IS_POSIX test
locks: Split insert/delete block functions into flock/posix parts
seq_file: Add percpu seq_hlist helpers with locking iterators
locks: Use percpu spinlocks to protect file_lock_list
locks: Use blocked_lock_lock only to protect blocked_hash
fs/locks.c | 148 ++++++++++++++++++++++++++++++-----------------
fs/seq_file.c | 83 ++++++++++++++++++++++++++
include/linux/seq_file.h | 13 +++++
3 files changed, 190 insertions(+), 54 deletions(-)
--
2.1.0
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/