xfs
[Top] [All Lists]

Re: [PATCH] Increase lockdep MAX_LOCK_DEPTH

To: Eric Sandeen <sandeen@xxxxxxxxxxx>
Subject: Re: [PATCH] Increase lockdep MAX_LOCK_DEPTH
From: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Date: Fri, 31 Aug 2007 08:39:49 +0200
Cc: linux-kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>, xfs-oss <xfs@xxxxxxxxxxx>, Dave Chinner <dgc@xxxxxxx>, Ingo Molnar <mingo@xxxxxxx>
In-reply-to: <46D79C62.1010304@xxxxxxxxxxx>
References: <46D79C62.1010304@xxxxxxxxxxx>
Sender: xfs-bounce@xxxxxxxxxxx
On Thu, 2007-08-30 at 23:43 -0500, Eric Sandeen wrote:
> The xfs filesystem can exceed the current lockdep 
> MAX_LOCK_DEPTH, because when deleting an entire cluster of inodes,
> they all get locked in xfs_ifree_cluster().  The normal cluster
> size is 8192 bytes, and with the default (and minimum) inode size 
> of 256 bytes, that's up to 32 inodes that get locked.  Throw in a 
> few other locks along the way, and 40 seems enough to get me through
> all the tests in the xfsqa suite on 4k blocks.  (block sizes
> above 8K will still exceed this though, I think)

As 40 will still not be enough for people with larger block sizes, this
does not seems like a solid solution. Could XFS possibly batch in
smaller (fixed sized) chunks, or does that have significant down sides?

> Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxxx>
> 
> Index: linux-2.6.23-rc3/include/linux/sched.h
> ===================================================================
> --- linux-2.6.23-rc3.orig/include/linux/sched.h
> +++ linux-2.6.23-rc3/include/linux/sched.h
> @@ -1125,7 +1125,7 @@ struct task_struct {
>       int softirq_context;
>  #endif
>  #ifdef CONFIG_LOCKDEP
> -# define MAX_LOCK_DEPTH 30UL
> +# define MAX_LOCK_DEPTH 40UL
>       u64 curr_chain_key;
>       int lockdep_depth;
>       struct held_lock held_locks[MAX_LOCK_DEPTH];
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/


<Prev in Thread] Current Thread [Next in Thread>