Consistently check mount flag (MNTK_SUJ) rather than superblock
flag (FS_SUJ) when determining whether to do journaling-based operations. The mount flag is set only when journaling is active while the superblock flag is set to indicate that journaling is to be used. For example, when the filesystem is mounted read-only, the journaling may be present (FS_SUJ) but not active (MNTK_SUJ). Inappropriate checking of the FS_SUJ flag was causing some journaling actions to be attempted at inappropriate times.
This commit is contained in:
parent
fd66b2cc64
commit
ea2a83a8da
@ -5199,7 +5199,7 @@ newfreefrag(ip, blkno, size, lbn)
|
||||
freefrag->ff_blkno = blkno;
|
||||
freefrag->ff_fragsize = size;
|
||||
|
||||
if (fs->fs_flags & FS_SUJ) {
|
||||
if ((ip->i_ump->um_mountp->mnt_kern_flag & MNTK_SUJ) != 0) {
|
||||
freefrag->ff_jdep = (struct worklist *)
|
||||
newjfreefrag(freefrag, ip, blkno, size, lbn);
|
||||
} else {
|
||||
@ -8928,7 +8928,7 @@ softdep_setup_sbupdate(ump, fs, bp)
|
||||
struct sbdep *sbdep;
|
||||
struct worklist *wk;
|
||||
|
||||
if ((fs->fs_flags & FS_SUJ) == 0)
|
||||
if ((ump->um_mountp->mnt_kern_flag & MNTK_SUJ) == 0)
|
||||
return;
|
||||
LIST_FOREACH(wk, &bp->b_dep, wk_list)
|
||||
if (wk->wk_type == D_SBDEP)
|
||||
|
Loading…
x
Reference in New Issue
Block a user