staging: lustre: lmv: correctly iput lmo_root
Commit8f18c8a48b
("staging: lustre: lmv: separate master object with master stripe") changed how lmo_root inodes were managed, particularly when LMV_HASH_FLAG_MIGRATION is not set. Previously lsm_md_oinfo[0].lmo_root was always a borrowed inode reference and didn't need to by iput(). Since the change, that special case only applies when LMV_HASH_FLAG_MIGRATION is set In the upstream (lustre-release) version of this patch [Commit 60e07b972114 ("LU-4690 lod: separate master object with master stripe")] the for loop in the lmv_unpack_md() was changed to count from 0 and to ignore entry 0 if LMV_HASH_FLAG_MIGRATION is set. In the patch that got applied to Linux, that change was missing, so lsm_md_oinfo[0].lmo_root is never iput(). This results in a "VFS: Busy inodes" warning at unmount. Fixes:8f18c8a48b
("staging: lustre: lmv: separate master object with master stripe") Signed-off-by: NeilBrown <neilb@suse.com> Reviewed-by: James Simmons <jsimmons@infradead.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
01220025b1
commit
17556cdbe6
|
@ -2695,7 +2695,7 @@ static int lmv_unpackmd(struct obd_export *exp, struct lmv_stripe_md **lsmp,
|
|||
if (lsm && !lmm) {
|
||||
int i;
|
||||
|
||||
for (i = 1; i < lsm->lsm_md_stripe_count; i++) {
|
||||
for (i = 0; i < lsm->lsm_md_stripe_count; i++) {
|
||||
/*
|
||||
* For migrating inode, the master stripe and master
|
||||
* object will be the same, so do not need iput, see
|
||||
|
|
Loading…
Reference in New Issue