mirror of
https://github.com/nxp-imx/linux-imx.git
synced 2025-07-17 22:59:37 +02:00
ocfs2: fix the la space leak when unmounting an ocfs2 volume
commit dfe6c5692f
upstream.
This bug has existed since the initial OCFS2 code. The code logic in
ocfs2_sync_local_to_main() is wrong, as it ignores the last contiguous
free bits, which causes an OCFS2 volume to lose the last free clusters of
LA window on each umount command.
Link: https://lkml.kernel.org/r/20240719114310.14245-1-heming.zhao@suse.com
Signed-off-by: Heming Zhao <heming.zhao@suse.com>
Reviewed-by: Su Yue <glass.su@suse.com>
Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
Cc: Mark Fasheh <mark@fasheh.com>
Cc: Joel Becker <jlbec@evilplan.org>
Cc: Junxiao Bi <junxiao.bi@oracle.com>
Cc: Changwei Ge <gechangwei@live.cn>
Cc: Gang He <ghe@suse.com>
Cc: Jun Piao <piaojun@huawei.com>
Cc: Heming Zhao <heming.zhao@suse.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
e3a9fc1520
commit
e7a8010147
|
@ -1008,6 +1008,25 @@ static int ocfs2_sync_local_to_main(struct ocfs2_super *osb,
|
||||||
start = bit_off + 1;
|
start = bit_off + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* clear the contiguous bits until the end boundary */
|
||||||
|
if (count) {
|
||||||
|
blkno = la_start_blk +
|
||||||
|
ocfs2_clusters_to_blocks(osb->sb,
|
||||||
|
start - count);
|
||||||
|
|
||||||
|
trace_ocfs2_sync_local_to_main_free(
|
||||||
|
count, start - count,
|
||||||
|
(unsigned long long)la_start_blk,
|
||||||
|
(unsigned long long)blkno);
|
||||||
|
|
||||||
|
status = ocfs2_release_clusters(handle,
|
||||||
|
main_bm_inode,
|
||||||
|
main_bm_bh, blkno,
|
||||||
|
count);
|
||||||
|
if (status < 0)
|
||||||
|
mlog_errno(status);
|
||||||
|
}
|
||||||
|
|
||||||
bail:
|
bail:
|
||||||
if (status)
|
if (status)
|
||||||
mlog_errno(status);
|
mlog_errno(status);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user