From: Tejun Heo <htejun@gmail.com>
To: Jeff Garzik <jgarzik@pobox.com>
Cc: axboe@suse.de, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] block: kill not-so-popular simple flag testing macros
Date: Fri, 10 Feb 2006 09:21:04 +0900 [thread overview]
Message-ID: <43EBDC70.6050302@gmail.com> (raw)
In-Reply-To: <43EB8D2C.6020708@pobox.com>
Jeff Garzik wrote:
> Tejun Heo wrote:
>
>> This patch kills the following request flag testing macros.
>>
>> blk_noretry_request()
>> blk_rq_started()
>> blk_pm_suspend_request()
>> blk_pm_resume_request()
>> blk_sorted_rq()
>> blk_barrier_rq()
>> blk_fua_rq()
>>
>> All above macros test for single request flag and not used widely and
>> seem to contribute more to obscurity than readability.
>>
>> Signed-off-by: Tejun Heo <htejun@gmail.com>
>
>
> heh, I guess that's a manner of opinion :)
>
> To me, your patch makes things less readable. Example:
>
>> - int is_barrier = blk_fs_request(rq) && blk_barrier_rq(rq);
>> + int is_barrier = blk_fs_request(rq) && rq->flags & REQ_HARDBARRIER;
>
>
> After your change is applied, the above statement is no longer visually
> consistent with itself. The reader must decode two different styles of
> test in his brain, as opposed to one.
>
Hello, Jeff.
Yeah, I didn't like that line either, but the thing that triggered this
patch is this message from Linus. This is a reply to Andrew's
dropped-from-rc message so not on lkml.
> I'm applying this under protest.
>
> The code may be right, but it visually makes _zero_ sense.
>
> The fact that "blk_barrier_rq()" only triggers on hard barriers means that
> it does what you describe in the changelog, but read the code and see how
> little sense it makes when you _read_ it. You just checked that the rq has
> a barrier (either a soft or a hard one), and now you check "again" whether
> it has a barrier.
>
> That's what it looks like from reading the code. Confusing. And thus prone
> to bugs.
>
The code he was talking about looks like.
if (rq->flags & (REQ_SOFTBARRIER | REQ_HARDBARRIER) {
....
if (blk_barrier_rq(rq))
q->ordcolor ^= 1;
....
}
We could add blk_barrier_rq() to test for both flags and add
blk_hardbarrier_rq() and blk_softbarrier_rq(), but the flags are not
used that widely and some other flag testing macros are used only few
times in core block layer, so I determined to kill infrequently used macros.
I agree that the change makes code harder to eyes in some places, but it
doesn't obfuscate the code and results in less maintenance overhead in
general. Remember a few testing macros is okay but remembering a dozen
gets a bit annoying, IMHO.
Thanks.
--
tejun
next prev parent reply other threads:[~2006-02-10 0:21 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-02-08 8:57 [PATCH] block: kill not-so-popular simple flag testing macros Tejun Heo
2006-02-08 9:04 ` Jens Axboe
2006-02-09 18:42 ` Jeff Garzik
2006-02-10 0:21 ` Tejun Heo [this message]
2006-02-10 1:19 ` Jeff Garzik
2006-02-10 7:25 ` Jens Axboe
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=43EBDC70.6050302@gmail.com \
--to=htejun@gmail.com \
--cc=axboe@suse.de \
--cc=jgarzik@pobox.com \
--cc=linux-kernel@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.