On Fri, 2025-03-28 at 13:01 +0100, Christian Brauner wrote: > On Thu, Mar 27, 2025 at 10:06:13AM -0400, James Bottomley wrote: [...] > > diff --git a/fs/super.c b/fs/super.c > > index 76785509d906..b4b0986414b0 100644 > > --- a/fs/super.c > > +++ b/fs/super.c > > @@ -1461,6 +1461,67 @@ static struct super_block > > *get_bdev_super(struct block_device *bdev) > > return sb; > > } > > > > +/* > > + * Kernel freezing and thawing is only done in the power > > management > > + * subsystem and is thus single threaded (so we don't have to > > worry > > + * here about multiple calls to filesystems_freeze/thaw(). > > + */ > > + > > +static int freeze_flags; > > + > > +static void filesystems_freeze_callback(struct super_block *sb) > > +{ > > + /* errors don't fail suspend so ignore them */ > > + if (sb->s_op->freeze_super) > > + sb->s_op->freeze_super(sb, FREEZE_MAY_NEST > > + | FREEZE_HOLDER_KERNEL > > + | freeze_flags); > > + else if (sb->s_bdev) > > + freeze_super(sb, FREEZE_MAY_NEST | > > FREEZE_HOLDER_KERNEL > > + | freeze_flags); > > + else { > > + pr_info("Ignoring filesystem %s\n", sb->s_type- > > >name); > > + return; > > + } > > + > > + pr_info("frozen %s, now syncing block ...", sb->s_type- > > >name); > > + sync_blockdev(sb->s_bdev); > > Unnecessary, either the filesystem is responsible for this if it > provides its own ->freeze_super() or freeze_super() does it in > sync_filesystem. I simply copied it from super.c:fs_bdev_freeze(), so is the sync_blockdev() in there unnecessary as well? Regards, James