linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Randy Dunlap <rdunlap@infradead.org>
To: Dave Chinner <david@fromorbit.com>
Cc: Bagas Sanjaya <bagasdotme@gmail.com>,
	Luis Chamberlain <mcgrof@kernel.org>,
	corbet@lwn.net, jake@lwn.net, hch@infradead.org,
	djwong@kernel.org, dchinner@redhat.com, ritesh.list@gmail.com,
	rgoldwyn@suse.com, jack@suse.cz, linux-doc@vger.kernel.org,
	linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-block@vger.kernel.org, p.raghav@samsung.com,
	da.gomez@samsung.com, rohan.puri@samsung.com
Subject: Re: [PATCH] Documentation: add initial iomap kdoc
Date: Sun, 21 May 2023 09:43:17 -0700	[thread overview]
Message-ID: <45792779-dab2-ae63-470b-3c24ab02e1ca@infradead.org> (raw)
In-Reply-To: <ZGgFbmdCrlXtNFYS@dread.disaster.area>

Hi Dave,

On 5/19/23 16:25, Dave Chinner wrote:
> On Fri, May 19, 2023 at 08:13:50AM -0700, Randy Dunlap wrote:
>>
>>
>> On 5/19/23 02:28, Bagas Sanjaya wrote:
>>>> +/**
>>>> + * DOC:  Flags reported by the file system from iomap_begin
>>>>   *
>>>> - * IOMAP_F_NEW indicates that the blocks have been newly allocated and need
>>>> - * zeroing for areas that no data is copied to.
>>>> + * * IOMAP_F_NEW: indicates that the blocks have been newly allocated and need
>>>> + *	zeroing for areas that no data is copied to.
>>>>   *
>>>> - * IOMAP_F_DIRTY indicates the inode has uncommitted metadata needed to access
>>>> - * written data and requires fdatasync to commit them to persistent storage.
>>>> - * This needs to take into account metadata changes that *may* be made at IO
>>>> - * completion, such as file size updates from direct IO.
>>>> + * * IOMAP_F_DIRTY: indicates the inode has uncommitted metadata needed to access
>>>> + *	written data and requires fdatasync to commit them to persistent storage.
>>>> + *	This needs to take into account metadata changes that *may* be made at IO
>>>> + *	completion, such as file size updates from direct IO.
>>>>   *
>>>> - * IOMAP_F_SHARED indicates that the blocks are shared, and will need to be
>>>> - * unshared as part a write.
>>>> + * * IOMAP_F_SHARED: indicates that the blocks are shared, and will need to be
>>>> + *	unshared as part a write.
>>>>   *
>>>> - * IOMAP_F_MERGED indicates that the iomap contains the merge of multiple block
>>>> - * mappings.
>>>> + * * IOMAP_F_MERGED: indicates that the iomap contains the merge of multiple block
>>>> + *	mappings.
>>>>   *
>>>> - * IOMAP_F_BUFFER_HEAD indicates that the file system requires the use of
>>>> - * buffer heads for this mapping.
>>>> + * * IOMAP_F_BUFFER_HEAD: indicates that the file system requires the use of
>>>> + *	buffer heads for this mapping.
>>>>   *
>>>> - * IOMAP_F_XATTR indicates that the iomap is for an extended attribute extent
>>>> - * rather than a file data extent.
>>>> + * * IOMAP_F_XATTR: indicates that the iomap is for an extended attribute extent
>>>> + *	rather than a file data extent.
>>>>   */
>>> Why don't use kernel-doc comments to describe flags?
>>>
>>
>> Because kernel-doc handles functions, structs, unions, and enums.
>> Not defines.
> 
> So perhaps that should be fixed first?
> 
> I seriously dislike the implication here that we should accept
> poorly/inconsistently written comments and code just to work around
> deficiencies in documentation tooling.
> 
> Either modify the code to work cleanly and consistently with the
> tooling (e.g. change the code to use enums rather than #defines), or
> fix the tools that don't work with macro definitions in a way that
> matches the existing code documentation standards.
> 
> Forcing developers, reviewers and maintainers to understand, accept
> and then maintain inconsistent crap in the code just because some
> tool they never use is deficient is pretty much my definition of an
> unacceptible engineering process.

I started looking into this. It looks like Mauro added more support
to scripts/kernel-doc for typedefs and macros while I wasn't looking.
I don't know how well it works, but it's not clear to me how we
would want this to look.

For example, take the first set of defines from <linux/iomap.h> that
Luis modified:

/*
 * Types of block ranges for iomap mappings:
 */
#define IOMAP_HOLE	0	/* no blocks allocated, need allocation */
#define IOMAP_DELALLOC	1	/* delayed allocation blocks */
#define IOMAP_MAPPED	2	/* blocks allocated at @addr */
#define IOMAP_UNWRITTEN	3	/* blocks allocated at @addr in unwritten state */
#define IOMAP_INLINE	4	/* data inline in the inode */

and Luis changed that to:

/**
 * DOC: iomap block ranges types
 *
 * * IOMAP_HOLE		- no blocks allocated, need allocation
 * * IOMAP_DELALLOC	- delayed allocation blocks
 * * IOMAP_MAPPED	- blocks allocated at @addr
 * * IOMAP_UNWRITTEN	- blocks allocated at @addr in unwritten state
 * * IOMAP_INLINE	- data inline in the inode
 */


How would we want that to look? How would we express it in kernel-doc
format?  Currently it would have to be one macro at a time I think.

/*
 * Types of block ranges for iomap mappings:
 */
/**
 * IOMAP_HOLE - no blocks allocated, need allocation
 */
#define IOMAP_HOLE	0
/**
 * IOMAP_DELALLOC - delayed allocation blocks
 */
#define IOMAP_DELALLOC	1
/**
 * IOMAP_MAPPED - blocks allocated at @addr
 */
#define IOMAP_MAPPED	2
/**
 * IOMAP_UNWRITTEN - blocks allocated at @addr in unwritten state
 */
#define IOMAP_UNWRITTEN	3
/**
 * IOMAP_INLINE - data inline in the inode
 */
#define IOMAP_INLINE	4

That's ugly to my eyes. And it doesn't collect the set of macros
together in any manner.
The modification that Luis made looks pretty good to me ATM.

-- 
~Randy

      reply	other threads:[~2023-05-21 16:49 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-18 14:40 [PATCH] Documentation: add initial iomap kdoc Luis Chamberlain
2023-05-18 14:48 ` Christoph Hellwig
2023-05-18 14:50   ` Luis Chamberlain
2023-05-18 14:51     ` Christoph Hellwig
2023-05-18 14:54       ` Jonathan Corbet
2023-05-19  3:15       ` Theodore Ts'o
2023-05-19  9:28 ` Bagas Sanjaya
2023-05-19 15:13   ` Randy Dunlap
2023-05-19 23:25     ` Dave Chinner
2023-05-21 16:43       ` Randy Dunlap [this message]

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=45792779-dab2-ae63-470b-3c24ab02e1ca@infradead.org \
    --to=rdunlap@infradead.org \
    --cc=bagasdotme@gmail.com \
    --cc=corbet@lwn.net \
    --cc=da.gomez@samsung.com \
    --cc=david@fromorbit.com \
    --cc=dchinner@redhat.com \
    --cc=djwong@kernel.org \
    --cc=hch@infradead.org \
    --cc=jack@suse.cz \
    --cc=jake@lwn.net \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-xfs@vger.kernel.org \
    --cc=mcgrof@kernel.org \
    --cc=p.raghav@samsung.com \
    --cc=rgoldwyn@suse.com \
    --cc=ritesh.list@gmail.com \
    --cc=rohan.puri@samsung.com \
    /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;
as well as URLs for NNTP newsgroup(s).