linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] fuse: limit debug log output during ring teardown
@ 2025-11-29 11:06 Long Li
  2025-12-02 17:40 ` Bernd Schubert
  0 siblings, 1 reply; 3+ messages in thread
From: Long Li @ 2025-11-29 11:06 UTC (permalink / raw)
  To: miklos; +Cc: linux-fsdevel, bschubert, leo.lilong, yangerkun, lonuxli.64

Currently, if there are pending entries in the queue after the teardown
timeout, the system keeps printing entry state information at very short
intervals (FUSE_URING_TEARDOWN_INTERVAL). This can flood the system logs.
Additionally, ring->stop_debug_log is set but not used.

Use ring->stop_debug_log as a control flag to only print entry state
information once after teardown timeout, preventing excessive debug
output. Also add a final message when all queues have stopped.

Signed-off-by: Long Li <leo.lilong@huawei.com>
---
 fs/fuse/dev_uring.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/fs/fuse/dev_uring.c b/fs/fuse/dev_uring.c
index 5ceb217ced1b..d71ccdf78887 100644
--- a/fs/fuse/dev_uring.c
+++ b/fs/fuse/dev_uring.c
@@ -453,13 +453,15 @@ static void fuse_uring_async_stop_queues(struct work_struct *work)
 	 * If there are still queue references left
 	 */
 	if (atomic_read(&ring->queue_refs) > 0) {
-		if (time_after(jiffies,
+		if (!ring->stop_debug_log && time_after(jiffies,
 			       ring->teardown_time + FUSE_URING_TEARDOWN_TIMEOUT))
 			fuse_uring_log_ent_state(ring);
 
 		schedule_delayed_work(&ring->async_teardown_work,
 				      FUSE_URING_TEARDOWN_INTERVAL);
 	} else {
+		if (ring->stop_debug_log)
+			pr_info("All queues in the ring=%p have stopped\n", ring);
 		wake_up_all(&ring->stop_waitq);
 	}
 }
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] fuse: limit debug log output during ring teardown
  2025-11-29 11:06 [PATCH] fuse: limit debug log output during ring teardown Long Li
@ 2025-12-02 17:40 ` Bernd Schubert
  2025-12-03  1:31   ` Long Li
  0 siblings, 1 reply; 3+ messages in thread
From: Bernd Schubert @ 2025-12-02 17:40 UTC (permalink / raw)
  To: Long Li, miklos; +Cc: linux-fsdevel, bschubert, yangerkun, lonuxli.64

Hi Long,

On 11/29/25 12:06, Long Li wrote:
> Currently, if there are pending entries in the queue after the teardown
> timeout, the system keeps printing entry state information at very short
> intervals (FUSE_URING_TEARDOWN_INTERVAL). This can flood the system logs.
> Additionally, ring->stop_debug_log is set but not used.
> 
> Use ring->stop_debug_log as a control flag to only print entry state
> information once after teardown timeout, preventing excessive debug
> output. Also add a final message when all queues have stopped.
> 
> Signed-off-by: Long Li <leo.lilong@huawei.com>
> ---
>  fs/fuse/dev_uring.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/fuse/dev_uring.c b/fs/fuse/dev_uring.c
> index 5ceb217ced1b..d71ccdf78887 100644
> --- a/fs/fuse/dev_uring.c
> +++ b/fs/fuse/dev_uring.c
> @@ -453,13 +453,15 @@ static void fuse_uring_async_stop_queues(struct work_struct *work)
>  	 * If there are still queue references left
>  	 */
>  	if (atomic_read(&ring->queue_refs) > 0) {
> -		if (time_after(jiffies,
> +		if (!ring->stop_debug_log && time_after(jiffies,
>  			       ring->teardown_time + FUSE_URING_TEARDOWN_TIMEOUT))
>  			fuse_uring_log_ent_state(ring);
>  
>  		schedule_delayed_work(&ring->async_teardown_work,
>  				      FUSE_URING_TEARDOWN_INTERVAL);
>  	} else {
> +		if (ring->stop_debug_log)
> +			pr_info("All queues in the ring=%p have stopped\n", ring);
>  		wake_up_all(&ring->stop_waitq);
>  	}
>  }


how about like this?

diff --git a/fs/fuse/dev_uring.c b/fs/fuse/dev_uring.c
index f6b12aebb8bb..a527e58b404a 100644
--- a/fs/fuse/dev_uring.c
+++ b/fs/fuse/dev_uring.c
@@ -452,9 +452,11 @@ static void fuse_uring_async_stop_queues(struct work_struct *work)
         * If there are still queue references left
         */
        if (atomic_read(&ring->queue_refs) > 0) {
-               if (time_after(jiffies,
-                              ring->teardown_time + FUSE_URING_TEARDOWN_TIMEOUT))
+               if (time_after(jiffies, ring->teardown_time +
+                                       FUSE_URING_TEARDOWN_TIMEOUT)) {
                        fuse_uring_log_ent_state(ring);
+                       ring->teardown_time = jiffies;
+               }
 
                schedule_delayed_work(&ring->async_teardown_work,
                                      FUSE_URING_TEARDOWN_INTERVAL);

Most of it is formatting, it just updates  "ring->teardown_time = jiffies",
idea is that is logs the remaining entries. If you run into it there is
probably a bug - io-uring will also start to spill warnings.


Thanks,
Bernd


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] fuse: limit debug log output during ring teardown
  2025-12-02 17:40 ` Bernd Schubert
@ 2025-12-03  1:31   ` Long Li
  0 siblings, 0 replies; 3+ messages in thread
From: Long Li @ 2025-12-03  1:31 UTC (permalink / raw)
  To: Bernd Schubert, miklos; +Cc: linux-fsdevel, bschubert, yangerkun, lonuxli.64

On Tue, Dec 02, 2025 at 06:40:10PM +0100, Bernd Schubert wrote:
> Hi Long,
> 
> On 11/29/25 12:06, Long Li wrote:
> > Currently, if there are pending entries in the queue after the teardown
> > timeout, the system keeps printing entry state information at very short
> > intervals (FUSE_URING_TEARDOWN_INTERVAL). This can flood the system logs.
> > Additionally, ring->stop_debug_log is set but not used.
> > 
> > Use ring->stop_debug_log as a control flag to only print entry state
> > information once after teardown timeout, preventing excessive debug
> > output. Also add a final message when all queues have stopped.
> > 
> > Signed-off-by: Long Li <leo.lilong@huawei.com>
> > ---
> >  fs/fuse/dev_uring.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/fs/fuse/dev_uring.c b/fs/fuse/dev_uring.c
> > index 5ceb217ced1b..d71ccdf78887 100644
> > --- a/fs/fuse/dev_uring.c
> > +++ b/fs/fuse/dev_uring.c
> > @@ -453,13 +453,15 @@ static void fuse_uring_async_stop_queues(struct work_struct *work)
> >  	 * If there are still queue references left
> >  	 */
> >  	if (atomic_read(&ring->queue_refs) > 0) {
> > -		if (time_after(jiffies,
> > +		if (!ring->stop_debug_log && time_after(jiffies,
> >  			       ring->teardown_time + FUSE_URING_TEARDOWN_TIMEOUT))
> >  			fuse_uring_log_ent_state(ring);
> >  
> >  		schedule_delayed_work(&ring->async_teardown_work,
> >  				      FUSE_URING_TEARDOWN_INTERVAL);
> >  	} else {
> > +		if (ring->stop_debug_log)
> > +			pr_info("All queues in the ring=%p have stopped\n", ring);
> >  		wake_up_all(&ring->stop_waitq);
> >  	}
> >  }
> 
> 
> how about like this?
> 
> diff --git a/fs/fuse/dev_uring.c b/fs/fuse/dev_uring.c
> index f6b12aebb8bb..a527e58b404a 100644
> --- a/fs/fuse/dev_uring.c
> +++ b/fs/fuse/dev_uring.c
> @@ -452,9 +452,11 @@ static void fuse_uring_async_stop_queues(struct work_struct *work)
>          * If there are still queue references left
>          */
>         if (atomic_read(&ring->queue_refs) > 0) {
> -               if (time_after(jiffies,
> -                              ring->teardown_time + FUSE_URING_TEARDOWN_TIMEOUT))
> +               if (time_after(jiffies, ring->teardown_time +
> +                                       FUSE_URING_TEARDOWN_TIMEOUT)) {
>                         fuse_uring_log_ent_state(ring);
> +                       ring->teardown_time = jiffies;
> +               }
>  
>                 schedule_delayed_work(&ring->async_teardown_work,
>                                       FUSE_URING_TEARDOWN_INTERVAL);
> 
> Most of it is formatting, it just updates  "ring->teardown_time = jiffies",
> idea is that is logs the remaining entries. If you run into it there is
> probably a bug - io-uring will also start to spill warnings.
> 
> 
> Thanks,
> Bernd
> 

Hi, Bernd

Thanks for your reply, if we want to continuously log entries that have
not been stopped, the change to update teardown_time looks good to me,
and ring->stop_debug_log can be deleted if it is not used.

Long Li
Thanks


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-12-03  1:34 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-29 11:06 [PATCH] fuse: limit debug log output during ring teardown Long Li
2025-12-02 17:40 ` Bernd Schubert
2025-12-03  1:31   ` Long Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).