Discussion:
[ORLinux] [PATCH 0/3] asm-generic: Add renameat2, drop renameat by default
James Hogan
2014-04-23 10:08:04 UTC
Permalink
A few patches relating to the renameat2 syscall added for v3.15 and the
asm-generic syscall list.

The first adds it to the generic syscall list. I'll send this upstream
for v3.15 (but acks still welcome).

The second and third patches make the renameat syscall optional, since
renameat2 provides a superset of its functionality, and removes renameat
from the generic syscall list by default. All existing users now define
__ARCH_WANT_RENAMEAT so that nothing breaks, but new architectures are
expected not to define it. Unless anybody requests otherwise I'll await
an Ack from Arnd for these two and queue them for v3.16.

James Hogan (3):
asm-generic: Add renameat2 syscall
scripts/checksyscalls.sh: Make renameat optional
asm-generic: Drop renameat syscall from default list

arch/arc/include/uapi/asm/unistd.h | 1 +
arch/arm64/include/uapi/asm/unistd.h | 3 +++
arch/c6x/include/uapi/asm/unistd.h | 1 +
arch/hexagon/include/uapi/asm/unistd.h | 1 +
arch/metag/include/uapi/asm/unistd.h | 2 ++
arch/openrisc/include/uapi/asm/unistd.h | 1 +
arch/score/include/uapi/asm/unistd.h | 1 +
arch/tile/include/uapi/asm/unistd.h | 1 +
arch/unicore32/include/uapi/asm/unistd.h | 2 ++
include/uapi/asm-generic/unistd.h | 7 ++++++-
scripts/checksyscalls.sh | 5 ++++-
11 files changed, 23 insertions(+), 2 deletions(-)

Cc: Arnd Bergmann <arnd at arndb.de>
Cc: linux-arch at vger.kernel.org
Cc: Vineet Gupta <vgupta at synopsys.com>
Cc: Catalin Marinas <catalin.marinas at arm.com>
Cc: Will Deacon <will.deacon at arm.com>
Cc: linux-arm-kernel at lists.infradead.org
Cc: Mark Salter <msalter at redhat.com>
Cc: Aurelien Jacquiot <a-jacquiot at ti.com>
Cc: linux-c6x-dev at linux-c6x.org
Cc: Richard Kuo <rkuo at codeaurora.org>
Cc: linux-hexagon at vger.kernel.org
Cc: linux-metag at vger.kernel.org
Cc: Jonas Bonn <jonas at southpole.se>
Cc: linux at lists.openrisc.net
Cc: Chen Liqin <liqin.linux at gmail.com>
Cc: Lennox Wu <lennox.wu at gmail.com>
Cc: Chris Metcalf <cmetcalf at tilera.com>
Cc: Guan Xuetao <gxt at mprc.pku.edu.cn>
--
1.8.1.2
James Hogan
2014-04-23 10:08:05 UTC
Permalink
Add the renameat2 syscall to the generic syscall list, which is used by
the following architectures: arc, arm64, c6x, hexagon, metag, openrisc,
score, tile, unicore32.

Signed-off-by: James Hogan <james.hogan at imgtec.com>
Cc: Arnd Bergmann <arnd at arndb.de>
Cc: linux-arch at vger.kernel.org
Cc: Vineet Gupta <vgupta at synopsys.com>
Cc: Catalin Marinas <catalin.marinas at arm.com>
Cc: Will Deacon <will.deacon at arm.com>
Cc: linux-arm-kernel at lists.infradead.org
Cc: Mark Salter <msalter at redhat.com>
Cc: Aurelien Jacquiot <a-jacquiot at ti.com>
Cc: linux-c6x-dev at linux-c6x.org
Cc: Richard Kuo <rkuo at codeaurora.org>
Cc: linux-hexagon at vger.kernel.org
Cc: linux-metag at vger.kernel.org
Cc: Jonas Bonn <jonas at southpole.se>
Cc: linux at lists.openrisc.net
Cc: Chen Liqin <liqin.linux at gmail.com>
Cc: Lennox Wu <lennox.wu at gmail.com>
Cc: Chris Metcalf <cmetcalf at tilera.com>
Cc: Guan Xuetao <gxt at mprc.pku.edu.cn>
---
This patch is for v3.15.
---
include/uapi/asm-generic/unistd.h | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h
index 6db66783d268..333640608087 100644
--- a/include/uapi/asm-generic/unistd.h
+++ b/include/uapi/asm-generic/unistd.h
@@ -697,9 +697,11 @@ __SYSCALL(__NR_finit_module, sys_finit_module)
__SYSCALL(__NR_sched_setattr, sys_sched_setattr)
#define __NR_sched_getattr 275
__SYSCALL(__NR_sched_getattr, sys_sched_getattr)
+#define __NR_renameat2 276
+__SYSCALL(__NR_renameat2, sys_renameat2)

#undef __NR_syscalls
-#define __NR_syscalls 276
+#define __NR_syscalls 277

/*
* All syscalls below here should go away really,
--
1.8.1.2
Arnd Bergmann
2014-04-23 12:13:52 UTC
Permalink
Post by James Hogan
Add the renameat2 syscall to the generic syscall list, which is used by
the following architectures: arc, arm64, c6x, hexagon, metag, openrisc,
score, tile, unicore32.
Signed-off-by: James Hogan <james.hogan at imgtec.com>
Cc: Arnd Bergmann <arnd at arndb.de>
Cc: linux-arch at vger.kernel.org
Cc: Vineet Gupta <vgupta at synopsys.com>
Cc: Catalin Marinas <catalin.marinas at arm.com>
Cc: Will Deacon <will.deacon at arm.com>
Cc: linux-arm-kernel at lists.infradead.org
Cc: Mark Salter <msalter at redhat.com>
Cc: Aurelien Jacquiot <a-jacquiot at ti.com>
Cc: linux-c6x-dev at linux-c6x.org
Cc: Richard Kuo <rkuo at codeaurora.org>
Cc: linux-hexagon at vger.kernel.org
Cc: linux-metag at vger.kernel.org
Cc: Jonas Bonn <jonas at southpole.se>
Cc: linux at lists.openrisc.net
Cc: Chen Liqin <liqin.linux at gmail.com>
Cc: Lennox Wu <lennox.wu at gmail.com>
Cc: Chris Metcalf <cmetcalf at tilera.com>
Cc: Guan Xuetao <gxt at mprc.pku.edu.cn>
Acked-by: Arnd Bergmann <arnd at arndb.de>
James Hogan
2014-04-23 10:08:07 UTC
Permalink
The new renameat2 syscall provides all the functionality provided by the
renameat syscall and adds flags, so future architectures won't need to
include renameat.

Therefore drop the renameat syscall from the generic syscall list unless
__ARCH_WANT_RENAMEAT is defined by the architecture's unistd.h prior to
including asm-generic/unistd.h, and adjust all architectures using the
generic syscall list to define it so that no in-tree architectures are
affected.

Signed-off-by: James Hogan <james.hogan at imgtec.com>
Cc: Arnd Bergmann <arnd at arndb.de>
Cc: linux-arch at vger.kernel.org
Cc: Vineet Gupta <vgupta at synopsys.com>
Cc: Catalin Marinas <catalin.marinas at arm.com>
Cc: Will Deacon <will.deacon at arm.com>
Cc: linux-arm-kernel at lists.infradead.org
Cc: Mark Salter <msalter at redhat.com>
Cc: Aurelien Jacquiot <a-jacquiot at ti.com>
Cc: linux-c6x-dev at linux-c6x.org
Cc: Richard Kuo <rkuo at codeaurora.org>
Cc: linux-hexagon at vger.kernel.org
Cc: linux-metag at vger.kernel.org
Cc: Jonas Bonn <jonas at southpole.se>
Cc: linux at lists.openrisc.net
Cc: Chen Liqin <liqin.linux at gmail.com>
Cc: Lennox Wu <lennox.wu at gmail.com>
Cc: Chris Metcalf <cmetcalf at tilera.com>
Cc: Guan Xuetao <gxt at mprc.pku.edu.cn>
---
Is this the approach we want to take to keep the default syscall list
minimal? We could for example have made renameat2 use the renameat
syscall number for new arches, but it seemed best to leave a gap for new
arches to improve consistency of numbering.

This patch is a no-op for arches in tree, so there's no harm for this to
wait for the v3.16 merge window.
---
arch/arc/include/uapi/asm/unistd.h | 1 +
arch/arm64/include/uapi/asm/unistd.h | 3 +++
arch/c6x/include/uapi/asm/unistd.h | 1 +
arch/hexagon/include/uapi/asm/unistd.h | 1 +
arch/metag/include/uapi/asm/unistd.h | 2 ++
arch/openrisc/include/uapi/asm/unistd.h | 1 +
arch/score/include/uapi/asm/unistd.h | 1 +
arch/tile/include/uapi/asm/unistd.h | 1 +
arch/unicore32/include/uapi/asm/unistd.h | 2 ++
include/uapi/asm-generic/unistd.h | 3 +++
10 files changed, 16 insertions(+)

diff --git a/arch/arc/include/uapi/asm/unistd.h b/arch/arc/include/uapi/asm/unistd.h
index 39e58d1cdf90..41fa2ec9e02c 100644
--- a/arch/arc/include/uapi/asm/unistd.h
+++ b/arch/arc/include/uapi/asm/unistd.h
@@ -15,6 +15,7 @@
#if !defined(_UAPI_ASM_ARC_UNISTD_H) || defined(__SYSCALL)
#define _UAPI_ASM_ARC_UNISTD_H

+#define __ARCH_WANT_RENAMEAT
#define __ARCH_WANT_SYS_EXECVE
#define __ARCH_WANT_SYS_CLONE
#define __ARCH_WANT_SYS_VFORK
diff --git a/arch/arm64/include/uapi/asm/unistd.h b/arch/arm64/include/uapi/asm/unistd.h
index 1caadc24e3fe..043d17a21342 100644
--- a/arch/arm64/include/uapi/asm/unistd.h
+++ b/arch/arm64/include/uapi/asm/unistd.h
@@ -13,4 +13,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
+#define __ARCH_WANT_RENAMEAT
+
#include <asm-generic/unistd.h>
diff --git a/arch/c6x/include/uapi/asm/unistd.h b/arch/c6x/include/uapi/asm/unistd.h
index e7d09a614d10..12d73d9d81f5 100644
--- a/arch/c6x/include/uapi/asm/unistd.h
+++ b/arch/c6x/include/uapi/asm/unistd.h
@@ -14,6 +14,7 @@
* more details.
*/

+#define __ARCH_WANT_RENAMEAT
#define __ARCH_WANT_SYS_CLONE

/* Use the standard ABI for syscalls. */
diff --git a/arch/hexagon/include/uapi/asm/unistd.h b/arch/hexagon/include/uapi/asm/unistd.h
index ffee405d6803..21517600432b 100644
--- a/arch/hexagon/include/uapi/asm/unistd.h
+++ b/arch/hexagon/include/uapi/asm/unistd.h
@@ -27,6 +27,7 @@
*/

#define sys_mmap2 sys_mmap_pgoff
+#define __ARCH_WANT_RENAMEAT
#define __ARCH_WANT_SYS_EXECVE
#define __ARCH_WANT_SYS_CLONE
#define __ARCH_WANT_SYS_VFORK
diff --git a/arch/metag/include/uapi/asm/unistd.h b/arch/metag/include/uapi/asm/unistd.h
index b80b8e899d22..459b6ec15848 100644
--- a/arch/metag/include/uapi/asm/unistd.h
+++ b/arch/metag/include/uapi/asm/unistd.h
@@ -7,6 +7,8 @@
* (at your option) any later version.
*/

+#define __ARCH_WANT_RENAMEAT
+
/* Use the standard ABI for syscalls. */
#include <asm-generic/unistd.h>

diff --git a/arch/openrisc/include/uapi/asm/unistd.h b/arch/openrisc/include/uapi/asm/unistd.h
index ce40b71df006..471905bd7745 100644
--- a/arch/openrisc/include/uapi/asm/unistd.h
+++ b/arch/openrisc/include/uapi/asm/unistd.h
@@ -20,6 +20,7 @@

#define sys_mmap2 sys_mmap_pgoff

+#define __ARCH_WANT_RENAMEAT
#define __ARCH_WANT_SYS_FORK
#define __ARCH_WANT_SYS_CLONE

diff --git a/arch/score/include/uapi/asm/unistd.h b/arch/score/include/uapi/asm/unistd.h
index 9cb4260a5f3e..d4008c339e89 100644
--- a/arch/score/include/uapi/asm/unistd.h
+++ b/arch/score/include/uapi/asm/unistd.h
@@ -1,5 +1,6 @@
#define __ARCH_HAVE_MMU

+#define __ARCH_WANT_RENAMEAT
#define __ARCH_WANT_SYSCALL_NO_AT
#define __ARCH_WANT_SYSCALL_NO_FLAGS
#define __ARCH_WANT_SYSCALL_OFF_T
diff --git a/arch/tile/include/uapi/asm/unistd.h b/arch/tile/include/uapi/asm/unistd.h
index 3866397aaf5a..24e9187e85a8 100644
--- a/arch/tile/include/uapi/asm/unistd.h
+++ b/arch/tile/include/uapi/asm/unistd.h
@@ -12,6 +12,7 @@
* more details.
*/

+#define __ARCH_WANT_RENAMEAT
#if !defined(__LP64__) || defined(__SYSCALL_COMPAT)
/* Use the flavor of this syscall that matches the 32-bit API better. */
#define __ARCH_WANT_SYNC_FILE_RANGE2
diff --git a/arch/unicore32/include/uapi/asm/unistd.h b/arch/unicore32/include/uapi/asm/unistd.h
index d4cc4559d848..1f63c476528e 100644
--- a/arch/unicore32/include/uapi/asm/unistd.h
+++ b/arch/unicore32/include/uapi/asm/unistd.h
@@ -10,6 +10,8 @@
* published by the Free Software Foundation.
*/

+#define __ARCH_WANT_RENAMEAT
+
/* Use the standard ABI for syscalls. */
#include <asm-generic/unistd.h>
#define __ARCH_WANT_SYS_CLONE
diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h
index 333640608087..947a864fa7d3 100644
--- a/include/uapi/asm-generic/unistd.h
+++ b/include/uapi/asm-generic/unistd.h
@@ -127,8 +127,11 @@ __SYSCALL(__NR_unlinkat, sys_unlinkat)
__SYSCALL(__NR_symlinkat, sys_symlinkat)
#define __NR_linkat 37
__SYSCALL(__NR_linkat, sys_linkat)
+#ifdef __ARCH_WANT_RENAMEAT
+/* renameat is superseded with flags by renameat2 */
#define __NR_renameat 38
__SYSCALL(__NR_renameat, sys_renameat)
+#endif /* __ARCH_WANT_RENAMEAT */

/* fs/namespace.c */
#define __NR_umount2 39
--
1.8.1.2
Arnd Bergmann
2014-04-23 12:18:04 UTC
Permalink
Post by James Hogan
The new renameat2 syscall provides all the functionality provided by the
renameat syscall and adds flags, so future architectures won't need to
include renameat.
Therefore drop the renameat syscall from the generic syscall list unless
__ARCH_WANT_RENAMEAT is defined by the architecture's unistd.h prior to
including asm-generic/unistd.h, and adjust all architectures using the
generic syscall list to define it so that no in-tree architectures are
affected.
I should have read this one before replying to patch 2 ;-)
Post by James Hogan
Signed-off-by: James Hogan <james.hogan at imgtec.com>
Cc: Arnd Bergmann <arnd at arndb.de>
Cc: linux-arch at vger.kernel.org
Cc: Vineet Gupta <vgupta at synopsys.com>
Cc: Catalin Marinas <catalin.marinas at arm.com>
Cc: Will Deacon <will.deacon at arm.com>
Cc: linux-arm-kernel at lists.infradead.org
Cc: Mark Salter <msalter at redhat.com>
Cc: Aurelien Jacquiot <a-jacquiot at ti.com>
Cc: linux-c6x-dev at linux-c6x.org
Cc: Richard Kuo <rkuo at codeaurora.org>
Cc: linux-hexagon at vger.kernel.org
Cc: linux-metag at vger.kernel.org
Cc: Jonas Bonn <jonas at southpole.se>
Cc: linux at lists.openrisc.net
Cc: Chen Liqin <liqin.linux at gmail.com>
Cc: Lennox Wu <lennox.wu at gmail.com>
Cc: Chris Metcalf <cmetcalf at tilera.com>
Cc: Guan Xuetao <gxt at mprc.pku.edu.cn>
---
Is this the approach we want to take to keep the default syscall list
minimal? We could for example have made renameat2 use the renameat
syscall number for new arches, but it seemed best to leave a gap for new
arches to improve consistency of numbering.
I think leaving the hole is best.
Post by James Hogan
This patch is a no-op for arches in tree, so there's no harm for this to
wait for the v3.16 merge window.
Sounds good. I guess I'll have to put this into my asm-generic tree
then, unless I can get the nios2 maintainers to pick it up.

If you don't mind, can you submit the first two patches to Linus
directly?

Arnd
James Hogan
2014-04-23 12:41:37 UTC
Permalink
Post by Arnd Bergmann
Post by James Hogan
The new renameat2 syscall provides all the functionality provided by the
renameat syscall and adds flags, so future architectures won't need to
include renameat.
Therefore drop the renameat syscall from the generic syscall list unless
__ARCH_WANT_RENAMEAT is defined by the architecture's unistd.h prior to
including asm-generic/unistd.h, and adjust all architectures using the
generic syscall list to define it so that no in-tree architectures are
affected.
I should have read this one before replying to patch 2 ;-)
Post by James Hogan
Signed-off-by: James Hogan <james.hogan at imgtec.com>
Cc: Arnd Bergmann <arnd at arndb.de>
Cc: linux-arch at vger.kernel.org
Cc: Vineet Gupta <vgupta at synopsys.com>
Cc: Catalin Marinas <catalin.marinas at arm.com>
Cc: Will Deacon <will.deacon at arm.com>
Cc: linux-arm-kernel at lists.infradead.org
Cc: Mark Salter <msalter at redhat.com>
Cc: Aurelien Jacquiot <a-jacquiot at ti.com>
Cc: linux-c6x-dev at linux-c6x.org
Cc: Richard Kuo <rkuo at codeaurora.org>
Cc: linux-hexagon at vger.kernel.org
Cc: linux-metag at vger.kernel.org
Cc: Jonas Bonn <jonas at southpole.se>
Cc: linux at lists.openrisc.net
Cc: Chen Liqin <liqin.linux at gmail.com>
Cc: Lennox Wu <lennox.wu at gmail.com>
Cc: Chris Metcalf <cmetcalf at tilera.com>
Cc: Guan Xuetao <gxt at mprc.pku.edu.cn>
---
Is this the approach we want to take to keep the default syscall list
minimal? We could for example have made renameat2 use the renameat
syscall number for new arches, but it seemed best to leave a gap for new
arches to improve consistency of numbering.
I think leaving the hole is best.
Post by James Hogan
This patch is a no-op for arches in tree, so there's no harm for this to
wait for the v3.16 merge window.
Sounds good. I guess I'll have to put this into my asm-generic tree
then, unless I can get the nios2 maintainers to pick it up.
Okay, thanks.
Post by Arnd Bergmann
If you don't mind, can you submit the first two patches to Linus
directly?
It appears Miklos Szeredi beat me to it with patch 1 (adding renameat2
syscall to asm-generic unistd.h), and will be submitting it to Linus
at some point as part of his renameat2 series.
Miklos: Do you think it makes sense for you to include my second patch
in your series too since it's renameat2 related?
http://marc.info/?l=linux-kernel&m=139824773305016&w=2

Otherwise I'm happy to take it or both patches for v3.15.

Cheers
James
James Hogan
2014-05-14 16:16:57 UTC
Permalink
Hi Miklos,
Post by James Hogan
It appears Miklos Szeredi beat me to it with patch 1 (adding renameat2
syscall to asm-generic unistd.h), and will be submitting it to Linus
at some point as part of his renameat2 series.
Miklos: Do you think it makes sense for you to include my second patch
in your series too since it's renameat2 related?
http://marc.info/?l=linux-kernel&m=139824773305016&w=2
I've queued up the first two patches with acks from Arnd.
Were you planning to send a pull request for your renameat2 patches for
v3.15?

Cheers
James

Loading...