[Top] [All Lists]

Re: [PATCH 1/9] xfs: struct xfs_buf_log_format isn't variable sized.

To: Dave Chinner <david@xxxxxxxxxxxxx>
Subject: Re: [PATCH 1/9] xfs: struct xfs_buf_log_format isn't variable sized.
From: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date: Tue, 26 Jun 2012 06:14:11 -0400
Cc: xfs@xxxxxxxxxxx
In-reply-to: <1340355015-26250-2-git-send-email-david@xxxxxxxxxxxxx>
References: <1340355015-26250-1-git-send-email-david@xxxxxxxxxxxxx> <1340355015-26250-2-git-send-email-david@xxxxxxxxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
On Fri, Jun 22, 2012 at 06:50:07PM +1000, Dave Chinner wrote:
> From: Dave Chinner <dchinner@xxxxxxxxxx>
> The struct xfs_buf_log_format wants to think the dirty bitmap is
> variable sized.  In fact, it is variable size on disk simply due to
> the way we map it from the in-memory structure, but we still just
> use a fixed size memory allocation for the in-memory structure.
> Hence it makes no sense to set the function up as a variable sized
> structure when we already know it's maximum size, and we always
> allocate it as such. Simplify the structure by making the dirty
> bitmap a fixed sized array and just using the size of the structure
> for the allocation size.
> This will make it much simpler to allocate and manipulate an array
> of format structures for discontiguous buffer support.
> The previous struct xfs_buf_log_item size according to
> /proc/slabinfo was 224 bytes. pahole doesn't give the same size
> because of the variable size definition. With this modification,
> pahole reports the same as /proc/slabinfo:
>       /* size: 224, cachelines: 4, members: 6 */
> Because the xfs_buf_log_item size is now determined by the maximum
> supported block size we introduce a dependency on xfs_alloc_btree.h.
> Avoid this dependency by moving the idefines for the maximum block
> sizes supported to xfs_types.h with all the other max/min type
> defines to avoid any new dependencies.
> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>

Looks good,

Reviewed-by: Christoph Hellwig <hch@xxxxxx>

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