From: Anh Tuan Phan <tuananhlfc@gmail.com>
To: William Breathitt Gray <william.gray@linaro.org>
Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-kernel-mentees@lists.linuxfoundation.org, rongtao@cestc.cn,
ricardo@pardini.net
Subject: Re: [PATCH] tools/counter: Add checking directory exists for make clean
Date: Fri, 14 Jul 2023 20:57:21 +0700 [thread overview]
Message-ID: <e62f481d-f939-a12b-7f8a-ec1db95c7b8e@gmail.com> (raw)
In-Reply-To: <ZKtZ1WB9LdszbxU+@fedora>
Hi William, the race condition possibility is a good point. Thanks for
suggesting me. Will send a new version with using `rm -df` instead and
add the appropriate CC lists. Thank you!
On 7/10/23 08:07, William Breathitt Gray wrote:
> On Fri, Jul 07, 2023 at 09:08:35PM +0700, Anh Tuan Phan wrote:
>> rmdir requires the directory exist so it causes "make -C tools clean"
>> failed if someone only builds other tools but not counter. This commit
>> adds checking the directory exist before doing rmdir.
>>
>> Signed-off-by: Anh Tuan Phan <tuananhlfc@gmail.com>
>> ---
>> tools/counter/Makefile | 4 +++-
>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/tools/counter/Makefile b/tools/counter/Makefile
>> index a0f4cab71fe5..2907f3b3094b 100644
>> --- a/tools/counter/Makefile
>> +++ b/tools/counter/Makefile
>> @@ -40,7 +40,9 @@ $(OUTPUT)counter_example: $(COUNTER_EXAMPLE)
>> clean:
>> rm -f $(ALL_PROGRAMS)
>> rm -rf $(OUTPUT)include/linux/counter.h
>> - rmdir -p $(OUTPUT)include/linux
>> + @if [ -d $(OUTPUT)include/linux ]; then \
>> + rmdir -p $(OUTPUT)include/linux; \
>> + fi
>> find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.d' -delete
>>
>> install: $(ALL_PROGRAMS)
>> --
>> 2.34.1
>
> Hi Anh,
>
> Please CC <linux-iio@vger.kernel.org> and <linux-kernel@vger.kernel.org>
> as well in the future so Counter users and developers can become aware
> of relevant patches.
>
> One worry I have with this approach is the possible race condition where
> the check for existence succeeds but the directory is deleted by another
> agent before our rmdir executes. However, I'm not sure how we could
> achieve such behavior atomically to prevent the issue.
>
> One alternative I've considered is perhaps a single find command to
> search for and delete empty directories:
>
> find $(or $(OUTPUT),.) -type d -empty -delete
>
> But this will delete directories not created by the makefile which I
> consider an unexpected behavior for the user (or at least very rude of
> the script to do).
>
> Perhaps we should delete the directory tree explicitly:
>
> rm -df $(OUTPUT)include/linux
> rm -df $(OUTPUT)include
>
> Although we lose the symmetry of rmdir to our previous mkdir, this
> should prevent the race condition issue and succeed whether the
> directories still exist or not.
>
> William Breathitt Gray
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
WARNING: multiple messages have this Message-ID (diff)
From: Anh Tuan Phan <tuananhlfc@gmail.com>
To: William Breathitt Gray <william.gray@linaro.org>
Cc: linux-kernel-mentees@lists.linuxfoundation.org, rongtao@cestc.cn,
ricardo@pardini.net, linux-iio@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] tools/counter: Add checking directory exists for make clean
Date: Fri, 14 Jul 2023 20:57:21 +0700 [thread overview]
Message-ID: <e62f481d-f939-a12b-7f8a-ec1db95c7b8e@gmail.com> (raw)
In-Reply-To: <ZKtZ1WB9LdszbxU+@fedora>
Hi William, the race condition possibility is a good point. Thanks for
suggesting me. Will send a new version with using `rm -df` instead and
add the appropriate CC lists. Thank you!
On 7/10/23 08:07, William Breathitt Gray wrote:
> On Fri, Jul 07, 2023 at 09:08:35PM +0700, Anh Tuan Phan wrote:
>> rmdir requires the directory exist so it causes "make -C tools clean"
>> failed if someone only builds other tools but not counter. This commit
>> adds checking the directory exist before doing rmdir.
>>
>> Signed-off-by: Anh Tuan Phan <tuananhlfc@gmail.com>
>> ---
>> tools/counter/Makefile | 4 +++-
>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/tools/counter/Makefile b/tools/counter/Makefile
>> index a0f4cab71fe5..2907f3b3094b 100644
>> --- a/tools/counter/Makefile
>> +++ b/tools/counter/Makefile
>> @@ -40,7 +40,9 @@ $(OUTPUT)counter_example: $(COUNTER_EXAMPLE)
>> clean:
>> rm -f $(ALL_PROGRAMS)
>> rm -rf $(OUTPUT)include/linux/counter.h
>> - rmdir -p $(OUTPUT)include/linux
>> + @if [ -d $(OUTPUT)include/linux ]; then \
>> + rmdir -p $(OUTPUT)include/linux; \
>> + fi
>> find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.d' -delete
>>
>> install: $(ALL_PROGRAMS)
>> --
>> 2.34.1
>
> Hi Anh,
>
> Please CC <linux-iio@vger.kernel.org> and <linux-kernel@vger.kernel.org>
> as well in the future so Counter users and developers can become aware
> of relevant patches.
>
> One worry I have with this approach is the possible race condition where
> the check for existence succeeds but the directory is deleted by another
> agent before our rmdir executes. However, I'm not sure how we could
> achieve such behavior atomically to prevent the issue.
>
> One alternative I've considered is perhaps a single find command to
> search for and delete empty directories:
>
> find $(or $(OUTPUT),.) -type d -empty -delete
>
> But this will delete directories not created by the makefile which I
> consider an unexpected behavior for the user (or at least very rude of
> the script to do).
>
> Perhaps we should delete the directory tree explicitly:
>
> rm -df $(OUTPUT)include/linux
> rm -df $(OUTPUT)include
>
> Although we lose the symmetry of rmdir to our previous mkdir, this
> should prevent the race condition issue and succeed whether the
> directories still exist or not.
>
> William Breathitt Gray
next prev parent reply other threads:[~2023-07-14 13:57 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-07 14:08 [PATCH] tools/counter: Add checking directory exists for make clean Anh Tuan Phan
2023-07-10 1:07 ` William Breathitt Gray
2023-07-10 1:07 ` William Breathitt Gray
2023-07-14 13:57 ` Anh Tuan Phan [this message]
2023-07-14 13:57 ` Anh Tuan Phan
2023-07-14 11:34 ` William Breathitt Gray
2023-07-14 11:34 ` William Breathitt Gray
2023-07-13 19:42 ` Shuah Khan
2023-07-14 13:59 ` Anh Tuan Phan
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=e62f481d-f939-a12b-7f8a-ec1db95c7b8e@gmail.com \
--to=tuananhlfc@gmail.com \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel-mentees@lists.linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ricardo@pardini.net \
--cc=rongtao@cestc.cn \
--cc=william.gray@linaro.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.