coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] mv: add --swap (-s) option to atomically swap 2 paths


From: Pádraig Brady
Subject: Re: [PATCH] mv: add --swap (-s) option to atomically swap 2 paths
Date: Sat, 2 Mar 2024 11:01:42 +0000
User-agent: Mozilla Thunderbird

On 02/03/2024 01:41, Rob Landley wrote:
On 3/1/24 05:05, Petr Malat wrote:
Hi!
On Fri, Mar 01, 2024 at 09:18:31AM +0000, Padraig Brady wrote:
On 29/02/2024 22:02, Petr Malat wrote:
renameat2() syscall allows atomically swapping 2 paths on one
file system. Expose this ability to the user using -s option.

* NEWS: Mention the new option

Thanks for the patch.

That was suggested previously:
https://lists.gnu.org/archive/html/coreutils/2021-05/msg00030.html

I agree this is useful functionality,
but the thinking is we should add this to a "replace" utility
rather than to mv.

I have modified mv, because for me it would be a logical place where
to look for such a feature, and to make something usable, it must be
easy to find.

I used "mv -x" for it, but if you have a strong preference for -s it hasn't been
in a release version yet.

I can submit a patch to busybox to add it there if we agree on a UI. (I will not
be adding a "replace" command to toybox: mv already replaces files and this is a
flag to the rename() system call that "mv" is already built around. This is an
atomic exchange, the new flag is RENAME_EXCHANGE, hence "-x" meaning exchange.)

Ok so there seems to be a bit of consensus for adding this to mv.

I've a slight preference for --swap, and that's short enough
that there is little benefit to a short option.

I realize toybox nor bsd support long options, so since -x is already used by 
toybox
we can use that for compat.  Also install(1) already has -s taken, and this 
functionality
might also be a consideration for use there.
So how about -x,--swap as the short and long options?
Should we add this to install(1) ?

Petr, I've adjusted your patch a bit to better diagnose the "not supported" 
case,
which is also used to make the test more robust, when run on (file) systems
that don't support the option.

I'll apply this soon, after waiting a while for comment.

thanks,
Pádraig

Attachment: mv--swap.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]