Commit d12c388
committed
Clean up locking in zfs_write().
There are three paths:
if pagingio and pagefile; lock Main Resource, then PagingIo
if pagingio and !pagefile; lock only PagingIo
if !pagingio; lock only MainResource
Use Exclusive locks for write path.
This should avoid the deadlock we had between
zfs_file_cleanup() -> CcMgr -> zfs_write(PAGINGIO)
which tried to lock MainResource twice.
Signed-off-by: Jorgen Lundman <lundman@lundman.net>1 parent 4cf9479 commit d12c388
1 file changed
Lines changed: 36 additions & 25 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5569 | 5569 | | |
5570 | 5570 | | |
5571 | 5571 | | |
5572 | | - | |
5573 | | - | |
5574 | | - | |
5575 | | - | |
5576 | | - | |
5577 | | - | |
5578 | | - | |
5579 | | - | |
5580 | | - | |
5581 | | - | |
5582 | 5572 | | |
5583 | 5573 | | |
5584 | 5574 | | |
| |||
5593 | 5583 | | |
5594 | 5584 | | |
5595 | 5585 | | |
5596 | | - | |
5597 | | - | |
5598 | | - | |
5599 | | - | |
5600 | | - | |
5601 | | - | |
5602 | | - | |
5603 | | - | |
| 5586 | + | |
| 5587 | + | |
| 5588 | + | |
| 5589 | + | |
| 5590 | + | |
| 5591 | + | |
| 5592 | + | |
| 5593 | + | |
| 5594 | + | |
| 5595 | + | |
| 5596 | + | |
| 5597 | + | |
| 5598 | + | |
| 5599 | + | |
| 5600 | + | |
| 5601 | + | |
| 5602 | + | |
| 5603 | + | |
5604 | 5604 | | |
5605 | | - | |
5606 | | - | |
5607 | 5605 | | |
5608 | 5606 | | |
5609 | | - | |
| 5607 | + | |
5610 | 5608 | | |
5611 | 5609 | | |
5612 | 5610 | | |
5613 | 5611 | | |
5614 | | - | |
| 5612 | + | |
| 5613 | + | |
| 5614 | + | |
| 5615 | + | |
| 5616 | + | |
| 5617 | + | |
| 5618 | + | |
| 5619 | + | |
| 5620 | + | |
| 5621 | + | |
| 5622 | + | |
| 5623 | + | |
| 5624 | + | |
| 5625 | + | |
5615 | 5626 | | |
5616 | 5627 | | |
5617 | 5628 | | |
| |||
5891 | 5902 | | |
5892 | 5903 | | |
5893 | 5904 | | |
5894 | | - | |
5895 | | - | |
5896 | | - | |
5897 | 5905 | | |
5898 | 5906 | | |
5899 | 5907 | | |
| 5908 | + | |
| 5909 | + | |
| 5910 | + | |
5900 | 5911 | | |
5901 | 5912 | | |
5902 | 5913 | | |
| |||
0 commit comments