mbox series

[RFC,0/3] Shut down frozen filesystems on last unmount

Message ID 20221129230736.3462830-1-agruenba@redhat.com (mailing list archive)
Headers show
Series Shut down frozen filesystems on last unmount | expand

Message

Andreas Gruenbacher Nov. 29, 2022, 11:07 p.m. UTC
Hello,

currently, when a frozen filesystem is unmouted, it turns into a zombie
rather than being shut down; it can only be shut down after remounting
and thawing it.  That's silly for local filesystems, but it's worse for
filesystems like gfs2 which freeze the filesystem on all nodes when
fsfreeze is called on any of the nodes: there, the nodes that didn't
initiate the freeze cannot shut down the filesystem at all.

This is a non-working, first shot at allowing filesystems to shut down
on the last unmount.  Could you please have a look to let me know if
something like this makes sense?

The three patches in this series can be found at the tail of this tree:

https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git/log/?h=freeze%2bumount

The vfs patches apply directly on top of v6.1-rc5 -ish kernels.

The gfs2 patch depends on previous patches in the above tree, so please
grab that if you want the full context.

Thanks a lot,
Andreas

Andreas Gruenbacher (3):
  fs: Add activate_super function
  fs: Introduce { freeze, thaw }_active_super functions
  gfs2: Shut down frozen filesystem on last unmount

 fs/gfs2/glops.c    | 17 ++-------
 fs/gfs2/super.c    | 27 ++++++++++----
 fs/super.c         | 89 +++++++++++++++++++++++++++++++++++++++++-----
 include/linux/fs.h |  3 ++
 4 files changed, 108 insertions(+), 28 deletions(-)

Comments

Jan Kara Jan. 12, 2023, 12:25 p.m. UTC | #1
Hi Andreas!

On Wed 30-11-22 00:07:32, Andreas Gruenbacher wrote:
> currently, when a frozen filesystem is unmouted, it turns into a zombie
> rather than being shut down; it can only be shut down after remounting
> and thawing it.  That's silly for local filesystems, but it's worse for
> filesystems like gfs2 which freeze the filesystem on all nodes when
> fsfreeze is called on any of the nodes: there, the nodes that didn't
> initiate the freeze cannot shut down the filesystem at all.

I agree this situation is suboptimal ;)

> This is a non-working, first shot at allowing filesystems to shut down
> on the last unmount.  Could you please have a look to let me know if
> something like this makes sense?

So I had a look at the patches and I have to admit I'm not a huge fan of
this approach. For example if there's a utility doing disk image copy and
the filesystem gets unmounted, it could result in an inconsistent copy
AFAICT. Not for GFS2 as you argue but it seems a bit dangerous to provide
API that makes it easy to screw up. Also I dislike the fact that different
filesystem would behave differently wrt umount & freezing. Why cannot we
just block unmount when the filesystem is frozen like any other write
operation? I understand locking-wise it is a bit challenging because we
have to block in a place where we don't hold s_umount semaphore but
logically it would make sense to me. What do you think?

								Honza