All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Jan Kara <jack@suse.cz>
Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	 mcgrof@kernel.org, hch@infradead.org, david@fromorbit.com,
	rafael@kernel.org,  djwong@kernel.org, pavel@kernel.org,
	peterz@infradead.org, mingo@redhat.com,  will@kernel.org,
	boqun.feng@gmail.com
Subject: Re: [RFC PATCH 4/4] vfs: add filesystem freeze/thaw callbacks for power management
Date: Fri, 28 Mar 2025 10:36:00 -0400	[thread overview]
Message-ID: <a7e6dee45ac11519c33a297797990fce6bb32bff.camel@HansenPartnership.com> (raw)
In-Reply-To: <0104e4918cc9d1cd7e991699292cf3e7379b2291.camel@HansenPartnership.com>

On Fri, 2025-03-28 at 10:21 -0400, James Bottomley wrote:
> [...]
> That's right.  I'm happy to post my patch below, but it depends on Al
> accepting the simple_next_child() proposal, so it doesn't apply to
> any
> tree.

And here's the patch I forgot to attach.

Regards,

James

---

diff --git a/fs/efivarfs/internal.h b/fs/efivarfs/internal.h
index ac6a1dd0a6a5..f913b6824289 100644
--- a/fs/efivarfs/internal.h
+++ b/fs/efivarfs/internal.h
@@ -17,7 +17,6 @@ struct efivarfs_fs_info {
 	struct efivarfs_mount_opts mount_opts;
 	struct super_block *sb;
 	struct notifier_block nb;
-	struct notifier_block pm_nb;
 };
 
 struct efi_variable {
diff --git a/fs/efivarfs/super.c b/fs/efivarfs/super.c
index 7d47f8d7ad1d..3398ec5c60b3 100644
--- a/fs/efivarfs/super.c
+++ b/fs/efivarfs/super.c
@@ -119,12 +119,15 @@ static int efivarfs_statfs(struct dentry *dentry, struct kstatfs *buf)
 
 	return 0;
 }
+
+static int efivarfs_thaw(struct super_block *sb, enum freeze_holder who);
 static const struct super_operations efivarfs_ops = {
 	.statfs = efivarfs_statfs,
 	.drop_inode = generic_delete_inode,
 	.alloc_inode = efivarfs_alloc_inode,
 	.free_inode = efivarfs_free_inode,
 	.show_options = efivarfs_show_options,
+	.thaw_super = efivarfs_thaw,
 };
 
 /*
@@ -367,8 +370,6 @@ static int efivarfs_fill_super(struct super_block *sb, struct fs_context *fc)
 	if (err)
 		return err;
 
-	register_pm_notifier(&sfi->pm_nb);
-
 	return efivar_init(efivarfs_callback, sb, true);
 }
 
@@ -432,24 +433,17 @@ static int efivarfs_check_missing(efi_char16_t *name16, efi_guid_t vendor,
 	return err;
 }
 
-static int efivarfs_pm_notify(struct notifier_block *nb, unsigned long action,
-			      void *ptr)
+static int efivarfs_thaw(struct super_block *sb, enum freeze_holder who)
 {
-	struct efivarfs_fs_info *sfi = container_of(nb, struct efivarfs_fs_info,
-						    pm_nb);
 	static bool rescan_done = true;
-	struct dentry *parent = sfi->sb->s_root;
+	struct dentry *parent = sb->s_root;
 	struct dentry *child = NULL;
 
-	if (action == PM_HIBERNATION_PREPARE) {
-		rescan_done = false;
-		return NOTIFY_OK;
-	} else if (action != PM_POST_HIBERNATION) {
-		return NOTIFY_DONE;
-	}
+	if ((who & FREEZE_FOR_HIBERNATE) == 0)
+		return 0;
 
 	if (rescan_done)
-		return NOTIFY_DONE;
+		return 0;
 
 	pr_info("efivarfs: resyncing variable state\n");
 
@@ -488,9 +482,9 @@ static int efivarfs_pm_notify(struct notifier_block *nb, unsigned long action,
 	 * then loop over variables, creating them if there's no matching
 	 * dentry
 	 */
-	efivar_init(efivarfs_check_missing, sfi->sb, false);
+	efivar_init(efivarfs_check_missing, sb, false);
 
-	return NOTIFY_OK;
+	return 0;
 }
 
 static int efivarfs_init_fs_context(struct fs_context *fc)
@@ -510,9 +504,6 @@ static int efivarfs_init_fs_context(struct fs_context *fc)
 	fc->s_fs_info = sfi;
 	fc->ops = &efivarfs_context_ops;
 
-	sfi->pm_nb.notifier_call = efivarfs_pm_notify;
-	sfi->pm_nb.priority = 0;
-
 	return 0;
 }
 
@@ -521,7 +512,6 @@ static void efivarfs_kill_sb(struct super_block *sb)
 	struct efivarfs_fs_info *sfi = sb->s_fs_info;
 
 	blocking_notifier_chain_unregister(&efivar_ops_nh, &sfi->nb);
-	unregister_pm_notifier(&sfi->pm_nb);
 	kill_litter_super(sb);
 
 	kfree(sfi);


  reply	other threads:[~2025-03-28 14:36 UTC|newest]

Thread overview: 121+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-27 14:06 [RFC PATCH 0/4] vfs freeze/thaw on suspend/resume James Bottomley
2025-03-27 14:06 ` [RFC PATCH 1/4] locking/percpu-rwsem: add freezable alternative to down_read James Bottomley
2025-03-31 19:51   ` James Bottomley
2025-03-31 23:32     ` Christian Brauner
2025-04-01  1:13       ` James Bottomley
2025-04-01 11:20         ` Jan Kara
2025-04-01 12:50           ` Christian Brauner
2025-04-01 12:52           ` James Bottomley
2025-04-02 11:47             ` Jan Kara
2025-03-27 14:06 ` [RFC PATCH 2/4] vfs: make sb_start_write freezable James Bottomley
2025-03-27 17:36   ` Jan Kara
2025-03-27 14:06 ` [RFC PATCH 3/4] fs/super.c: introduce reverse superblock iterator and use it in emergency remount James Bottomley
2025-03-28 11:56   ` Christian Brauner
2025-03-28 12:38     ` James Bottomley
2025-03-28 16:15     ` [PATCH 0/6] Extend freeze support to suspend and hibernate Christian Brauner
2025-03-28 16:15       ` [PATCH 1/6] super: remove pointless s_root checks Christian Brauner
2025-03-28 16:15       ` [PATCH 2/6] super: simplify user_get_super() Christian Brauner
2025-03-28 16:15       ` [PATCH 3/6] super: skip dying superblocks early Christian Brauner
2025-03-28 16:15       ` [PATCH 4/6] super: use a common iterator (Part 1) Christian Brauner
2025-03-28 16:15       ` [PATCH 5/6] super: use common iterator (Part 2) Christian Brauner
2025-03-28 18:58         ` James Bottomley
2025-03-29  7:34           ` Christian Brauner
2025-03-28 16:15       ` [PATCH 6/6] super: add filesystem freezing helpers for suspend and hibernate Christian Brauner
2025-03-29  8:42       ` [PATCH v2 0/6] Extend freeze support to " Christian Brauner
2025-03-29  8:42         ` [PATCH v2 1/6] super: remove pointless s_root checks Christian Brauner
2025-03-31  9:57           ` Jan Kara
2025-06-11 16:26           ` Darrick J. Wong
2025-06-12 12:20             ` Christian Brauner
2025-03-29  8:42         ` [PATCH v2 2/6] super: simplify user_get_super() Christian Brauner
2025-03-31  9:58           ` Jan Kara
2025-03-29  8:42         ` [PATCH v2 3/6] super: skip dying superblocks early Christian Brauner
2025-03-31 10:00           ` Jan Kara
2025-03-29  8:42         ` [PATCH v2 4/6] super: use a common iterator (Part 1) Christian Brauner
2025-03-31 10:01           ` Jan Kara
2025-03-29  8:42         ` [PATCH v2 5/6] super: use common iterator (Part 2) Christian Brauner
2025-03-31 10:07           ` Jan Kara
2025-03-31 10:15             ` Christian Brauner
2025-03-29  8:42         ` [PATCH v2 6/6] super: add filesystem freezing helpers for suspend and hibernate Christian Brauner
2025-03-29  8:46           ` Christian Brauner
2025-03-29 11:30           ` kernel test robot
2025-03-31 10:23           ` Jan Kara
2025-03-31 10:25             ` Christian Brauner
2025-03-29 14:04         ` [PATCH v2 0/6] Extend freeze support to " James Bottomley
2025-03-29 17:02           ` James Bottomley
2025-03-30  8:33             ` Christian Brauner
2025-03-30 11:53               ` Christian Brauner
2025-03-30 14:00               ` James Bottomley
2025-03-31  9:13                 ` Christian Brauner
2025-03-31 10:36             ` Jan Kara
2025-03-31 14:49               ` James Bottomley
2025-03-31 23:33               ` Christian Brauner
2025-03-31 12:42         ` [PATCH 0/2] efivarfs: support freeze/thaw Christian Brauner
2025-03-31 12:42           ` [PATCH 1/2] libfs: export find_next_child() Christian Brauner
2025-03-31 12:42           ` [PATCH 2/2] efivarfs: support freeze/thaw Christian Brauner
2025-03-31 14:46             ` James Bottomley
2025-03-31 15:03               ` Christian Brauner
2025-04-01 19:31             ` James Bottomley
2025-04-02  7:44               ` Christian Brauner
2025-03-31 14:05           ` [PATCH 0/2] " Ard Biesheuvel
2025-04-01  0:32           ` [PATCH 0/6] power: wire-up filesystem freeze/thaw with suspend/resume Christian Brauner
2025-04-01  0:32             ` [PATCH 1/6] ext4: replace kthread freezing with auto fs freezing Christian Brauner
2025-04-01  9:16               ` Jan Kara
2025-04-01  9:35                 ` Christian Brauner
2025-04-01 10:08                   ` Jan Kara
2025-04-01  0:32             ` [PATCH 2/6] btrfs: " Christian Brauner
2025-04-01  0:32             ` [PATCH 3/6] xfs: " Christian Brauner
2025-04-01  1:11               ` Dave Chinner
2025-04-01  7:17                 ` Christian Brauner
2025-04-01 11:35                   ` Dave Chinner
2025-04-01 12:45                     ` Christian Brauner
2025-04-01  0:32             ` [PATCH 4/6] fs: add owner of freeze/thaw Christian Brauner
2025-04-01  0:32             ` [PATCH 5/6] fs: allow pagefault based writers to be frozen Christian Brauner
2025-04-01  0:32             ` [PATCH 6/6] power: freeze filesystems during suspend/resume Christian Brauner
2025-04-01  8:16             ` [PATCH 0/6] power: wire-up filesystem freeze/thaw with suspend/resume Christian Brauner
2025-04-01  9:32             ` Jan Kara
2025-04-01 13:03               ` Christian Brauner
2025-04-01 16:57                 ` Jan Kara
2025-04-02 14:07                   ` [PATCH v2 0/4] " Christian Brauner
2025-04-02 14:07                     ` [PATCH v2 1/4] fs: add owner of freeze/thaw Christian Brauner
2025-04-03 14:56                       ` Jan Kara
2025-04-03 19:33                         ` Christian Brauner
2025-04-04 10:24                         ` [PATCH] fs: allow nesting with FREEZE_EXCL Christian Brauner
2025-04-07  9:08                           ` Christoph Hellwig
2025-05-07 11:18                           ` Jan Kara
2025-05-09 10:38                             ` Christian Brauner
2025-04-02 14:07                     ` [PATCH v2 2/4] fs: allow all writers to be frozen Christian Brauner
2025-04-02 15:32                       ` Christian Brauner
2025-04-02 16:03                         ` James Bottomley
2025-04-02 16:13                           ` Christian Brauner
2025-04-03 14:59                       ` Jan Kara
2025-04-02 14:07                     ` [PATCH v2 3/4] power: freeze filesystems during suspend/resume Christian Brauner
2025-04-03 16:29                       ` Jan Kara
2025-04-02 14:07                     ` [PATCH v2 4/4] kernfs: add warning about implementing freeze/thaw Christian Brauner
2025-04-03 15:00                       ` Jan Kara
2025-07-20 19:23                     ` [PATCH v2 0/4] power: wire-up filesystem freeze/thaw with suspend/resume Askar Safin
2025-07-21 12:09                       ` Jan Kara
2025-08-04  5:31                         ` Miklos Szeredi
2025-08-04  6:02                           ` Askar Safin
2025-08-04  6:51                             ` Sergey Senozhatsky
2025-04-01 14:14             ` [PATCH 0/6] " Peter Zijlstra
2025-04-01 14:40               ` Christian Brauner
2025-04-01 14:59                 ` Peter Zijlstra
2025-04-01 17:02             ` James Bottomley
2025-04-02  7:46               ` Christian Brauner
2025-04-08 15:43                 ` James Bottomley
2025-04-08 17:09                   ` Luis Chamberlain
2025-04-08 17:20                     ` Luis Chamberlain
2025-04-08 17:26                       ` James Bottomley
2025-04-08 17:24                     ` James Bottomley
2025-04-09  7:17                   ` Christian Brauner
2025-03-27 14:06 ` [RFC PATCH 4/4] vfs: add filesystem freeze/thaw callbacks for power management James Bottomley
2025-03-27 18:20   ` Jan Kara
2025-03-28 14:21     ` James Bottomley
2025-03-28 14:36       ` James Bottomley [this message]
2025-03-28 10:08   ` Christian Brauner
2025-03-28 14:14     ` James Bottomley
2025-03-28 15:52       ` Christian Brauner
2025-03-28 16:15         ` James Bottomley
2025-03-29  8:23           ` Christian Brauner
2025-03-28 12:01   ` Christian Brauner
2025-03-28 14:40     ` James Bottomley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a7e6dee45ac11519c33a297797990fce6bb32bff.camel@HansenPartnership.com \
    --to=james.bottomley@hansenpartnership.com \
    --cc=boqun.feng@gmail.com \
    --cc=david@fromorbit.com \
    --cc=djwong@kernel.org \
    --cc=hch@infradead.org \
    --cc=jack@suse.cz \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mcgrof@kernel.org \
    --cc=mingo@redhat.com \
    --cc=pavel@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rafael@kernel.org \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.