Metadata writeback cache support
(LU-10938)
|
|
| Status: | Open |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Technical task | Priority: | Minor |
| Reporter: | Qian Yingjin | Assignee: | Qian Yingjin |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Rank (Obsolete): | 9223372036854775807 |
| Description |
|
When benchmark with IOR, we found the following deadlock:
memfs_file_write_iter()
{
....
down_read(&wbci->wbci_rw_sem); // lock 1
if (wbc_inode_data_caching(wbci)) {
inode_lock(inode); // lock 2
rc = generic_write_checks(iocb, iter);
if (rc > 0)
rc = __generic_file_write_iter(iocb, iter);
inode_unlock(inode);
....
}
up_read(&wbci->wbci_rw_sem);
....
}
memfs_write_begin(...)
{
rc = memfs_write_getpage(inode, index, pagep);
if (rc == -ENOSPC) {
int rc2;
// need to call inode_unlock(inode);
up_read(&wbci->wbci_rw_sem);
rc2 = wbc_make_data_commit(file->f_path.dentry);
down_read(&wbci->wbci_rw_sem);
// need to call inode_lock(inode);
if (rc2 < 0)
rc = rc2;
}
|
| Comments |
| Comment by Gerrit Updater [ 29/Jan/22 ] |
|
"Yingjin Qian <qian@ddn.com>" uploaded a new patch: https://review.whamcloud.com/46376 |