mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Amir Goldstein <amir73il@gmail.com>
To: Chunsheng Luo <luochunsheng@ustc.edu>
Cc: miklos@szeredi.hu, linux-fsdevel@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [RFC 1/2] fuse: add close all in passthrough backing close for crash recovery
Date: Thu, 15 Jan 2026 13:23:43 +0100	[thread overview]
Message-ID: <aWjcT6snaivGXvxq@amir-ThinkPad-T480> (raw)
In-Reply-To: <20260115072032.402-2-luochunsheng@ustc.edu>

On Thu, Jan 15, 2026 at 03:20:30PM +0800, Chunsheng Luo wrote:
> Simplify FUSE daemon crash recovery by avoiding persistence of
> backing_ids, thereby improving availability and reducing performance
> overhead.
> 
> Non-persistent backing_ids after crash recovery may lead to resource
> leaks if backing file resources are not properly cleaned up during
> daemon restart.
> 
> Add a close_all handler to the backing close operation. This ensures
> comprehensive cleanup of all backing file resources when the FUSE
> daemon restarts, preventing resource leaks while maintaining the
> simplified recovery approach.

Am I correct to assume that you are referring to FUSE server restart
where the /dev/fuse fd is stored in an external fd store and reused by
the new FUSE server instance?

> 
> Signed-off-by: Chunsheng Luo <luochunsheng@ustc.edu>
> ---
>  fs/fuse/backing.c | 14 ++++++++++++++
>  fs/fuse/dev.c     |  5 +++++
>  fs/fuse/fuse_i.h  |  1 +
>  3 files changed, 20 insertions(+)
> 
> diff --git a/fs/fuse/backing.c b/fs/fuse/backing.c
> index 4afda419dd14..34d0ea62fb9b 100644
> --- a/fs/fuse/backing.c
> +++ b/fs/fuse/backing.c
> @@ -166,6 +166,20 @@ int fuse_backing_close(struct fuse_conn *fc, int backing_id)
>  	return err;
>  }
>  
> +static int fuse_backing_close_one(int id, void *p, void *data)
> +{
> +	struct fuse_conn *fc = data;
> +
> +	fuse_backing_close(fc, id);
> +
> +	return 0;
> +}
> +
> +void fuse_backing_close_all(struct fuse_conn *fc)
> +{
> +	idr_for_each(&fc->backing_files_map, fuse_backing_close_one, fc);
> +}
> +
>  struct fuse_backing *fuse_backing_lookup(struct fuse_conn *fc, int backing_id)
>  {
>  	struct fuse_backing *fb;
> diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
> index 6d59cbc877c6..25f6bb58623d 100644
> --- a/fs/fuse/dev.c
> +++ b/fs/fuse/dev.c
> @@ -2651,6 +2651,11 @@ static long fuse_dev_ioctl_backing_close(struct file *file, __u32 __user *argp)
>  	if (get_user(backing_id, argp))
>  		return -EFAULT;
>  
> +	if (backing_id == -1) {
> +		fuse_backing_close_all(fud->fc);
> +		return 0;
> +	}
> +

I think that an explicit new ioctl FUSE_DEV_IOC_BACKING_CLOSE_ALL
is called for this very intrusive operation.

Sending FUSE_DEV_IOC_BACKING_CLOSE with backing_id -1 could
just as well happen by mistake.

Thanks,
Amir.

  reply	other threads:[~2026-01-15 12:23 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-15  7:20 [RFC 0/2] fuse/passthrough: simplify daemon " Chunsheng Luo
2026-01-15  7:20 ` [RFC 1/2] fuse: add close all in passthrough backing close for " Chunsheng Luo
2026-01-15 12:23   ` Amir Goldstein [this message]
2026-01-15 13:30     ` Chunsheng Luo
2026-01-15  7:20 ` [RFC 2/2] fuse: Add new flag to reuse the backing file of fuse_inode Chunsheng Luo
2026-01-15 13:09   ` Amir Goldstein
2026-01-15 14:34     ` Chunsheng Luo
2026-01-15 15:31       ` Amir Goldstein
2026-01-16  2:43         ` Chunsheng Luo
2026-01-16 19:08           ` Amir Goldstein
2026-01-17 15:26             ` Chunsheng Luo
2026-01-15 15:43 ` [RFC 0/2] fuse/passthrough: simplify daemon crash recovery Amir Goldstein
2026-01-16  1:57   ` Chunsheng Luo

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=aWjcT6snaivGXvxq@amir-ThinkPad-T480 \
    --to=amir73il@gmail.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luochunsheng@ustc.edu \
    --cc=miklos@szeredi.hu \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®