[LU-15163] osd_obj_map_recover() has to restart transaction Created: 25/Oct/21 Updated: 19/Jan/23 Resolved: 19/Jan/23 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | Upstream |
| Fix Version/s: | Lustre 2.16.0 |
| Type: | Bug | Priority: | Minor |
| Reporter: | Alex Zhuravlev | Assignee: | Alex Zhuravlev |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||
| Severity: | 3 | ||||||||
| Rank (Obsolete): | 9223372036854775807 | ||||||||
| Description |
|
osd_obj_map_recover() may stop current transaction to call vfs_unlink(), then continue to modify filesystem with no transaction:
ldiskfs_journal_stop(jh);
rc = -EEXIST;
/* If the src object has never been modified, then remove it. */
if (inode->i_size == 0 && inode->i_mode & S_ISUID &&
inode->i_mode & S_ISGID) {
rc = ll_vfs_unlink(src_parent, src_child);
if (unlikely(rc == -ENOENT))
rc = 0;
}
if (rc)
RETURN(rc);
}
bh = osd_ldiskfs_find_entry(src_parent, &src_child->d_name, &de,
NULL, NULL);
if (unlikely(IS_ERR(bh)))
GOTO(unlock, rc = PTR_ERR(bh));
rc = ldiskfs_delete_entry(jh, src_parent, de, bh);
|
| Comments |
| Comment by Gerrit Updater [ 26/Oct/21 ] |
|
"Alex Zhuravlev <bzzz@whamcloud.com>" uploaded a new patch: https://review.whamcloud.com/45368 |
| Comment by Gerrit Updater [ 19/Jan/23 ] |
|
"Oleg Drokin <green@whamcloud.com>" merged in patch https://review.whamcloud.com/c/fs/lustre-release/+/45368/ |
| Comment by Peter Jones [ 19/Jan/23 ] |
|
Landed for 2.16 |