Details
-
Bug
-
Resolution: Won't Fix
-
Minor
-
None
-
Lustre 2.7.0
-
None
-
3
-
17318
Description
In osd_declare_object_destroy():
/* declare that we'll remove object from fid-dnode mapping */ zapid = osd_get_name_n_idx(env, osd, fid, buf); dmu_tx_hold_bonus(oh->ot_tx, zapid); dmu_tx_hold_zap(oh->ot_tx, zapid, 0, buf); /* declare that we'll remove object from inode accounting ZAPs */ dmu_tx_hold_bonus(oh->ot_tx, osd->od_iusr_oid); dmu_tx_hold_zap(oh->ot_tx, osd->od_iusr_oid, 0, buf); dmu_tx_hold_bonus(oh->ot_tx, osd->od_igrp_oid); dmu_tx_hold_zap(oh->ot_tx, osd->od_igrp_oid, 0, buf);
The buf holds string representation of the FID, so it's wrong to use it in dmu_tx_hold_zap() calls for osd->od_iusr_oid and osd->od_igrp_oid where the keys should be obj->oo_attr.la_uid and obj->oo_attr.la_gid.
Same mistake in osd_declare_object_create().
Attachments
Issue Links
Activity
Resolution | New: Won't Fix [ 2 ] | |
Status | Original: Open [ 1 ] | New: Resolved [ 5 ] |
Description |
Original:
In osd_declare_object_destroy(): {noformat} /* declare that we'll remove object from fid-dnode mapping */ zapid = osd_get_name_n_idx(env, osd, fid, buf); dmu_tx_hold_bonus(oh->ot_tx, zapid); dmu_tx_hold_zap(oh->ot_tx, zapid, 0, buf); /* declare that we'll remove object from inode accounting ZAPs */ dmu_tx_hold_bonus(oh->ot_tx, osd->od_iusr_oid); dmu_tx_hold_zap(oh->ot_tx, osd->od_iusr_oid, 0, buf); dmu_tx_hold_bonus(oh->ot_tx, osd->od_igrp_oid); dmu_tx_hold_zap(oh->ot_tx, osd->od_igrp_oid, 0, buf); {noformat} The _buf_ holds string representation of the FID, so it's wrong to use it in dmu_tx_hold_zap() calls for osd->od_iusr_oid and osd->od_igrp_oid where the keys should be obj->oo_attr.la_uid and obj->oo_attr.la_gid. |
New:
In osd_declare_object_destroy(): {noformat} /* declare that we'll remove object from fid-dnode mapping */ zapid = osd_get_name_n_idx(env, osd, fid, buf); dmu_tx_hold_bonus(oh->ot_tx, zapid); dmu_tx_hold_zap(oh->ot_tx, zapid, 0, buf); /* declare that we'll remove object from inode accounting ZAPs */ dmu_tx_hold_bonus(oh->ot_tx, osd->od_iusr_oid); dmu_tx_hold_zap(oh->ot_tx, osd->od_iusr_oid, 0, buf); dmu_tx_hold_bonus(oh->ot_tx, osd->od_igrp_oid); dmu_tx_hold_zap(oh->ot_tx, osd->od_igrp_oid, 0, buf); {noformat} The _buf_ holds string representation of the FID, so it's wrong to use it in dmu_tx_hold_zap() calls for osd->od_iusr_oid and osd->od_igrp_oid where the keys should be obj->oo_attr.la_uid and obj->oo_attr.la_gid. Same mistake in osd_declare_object_create(). |
Affects Version/s | New: Lustre 2.7.0 [ 10631 ] |
Assignee | Original: WC Triage [ wc-triage ] | New: Isaac Huang [ isaac ] |
Isaac Huang (he.huang@intel.com) uploaded a new patch: http://review.whamcloud.com/13656
Subject:
LU-6195osd-zfs: dmu_tx_hold_zap() called with wrong keysProject: fs/lustre-release
Branch: master
Current Patch Set: 1
Commit: fd8fb80c6f71fedc476e82008fd309f9f4f8b418