Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933194AbXAZLRm (ORCPT ); Fri, 26 Jan 2007 06:17:42 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S933199AbXAZLRl (ORCPT ); Fri, 26 Jan 2007 06:17:41 -0500 Received: from mailhub.sw.ru ([195.214.233.200]:35627 "EHLO relay.sw.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933194AbXAZLRk (ORCPT ); Fri, 26 Jan 2007 06:17:40 -0500 Date: Fri, 26 Jan 2007 14:23:45 +0300 From: Alexey Dobriyan To: akpm@osdl.org Cc: devel@openvz.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/3] lutimesat: actual syscall and wire-up on i386 Message-ID: <20070126112345.GC11128@localhost.sw.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.11 Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1821 Lines: 62 lutimesat(2) does everything futimesat(2) does except it doesn't follow symlinks. It could be used by tar(1) and cp(1). FreeBSD and NetBSD have lutimes(2) which can be emulated by C library: lutimesat(AT_FDCWD, filename, utimes) Closes http://bugme.osdl.org/show_bug.cgi?id=4433 Signed-off-by: Alexey Dobriyan --- arch/i386/kernel/syscall_table.S | 1 + fs/utimes.c | 9 +++++++++ include/asm-i386/unistd.h | 3 ++- 3 files changed, 12 insertions(+), 1 deletion(-) --- a/arch/i386/kernel/syscall_table.S +++ b/arch/i386/kernel/syscall_table.S @@ -319,3 +319,4 @@ ENTRY(sys_call_table) .long sys_move_pages .long sys_getcpu .long sys_epoll_pwait + .long sys_lutimesat /* 320 */ --- a/fs/utimes.c +++ b/fs/utimes.c @@ -105,3 +105,12 @@ asmlinkage long sys_utimes(char __user * { return sys_futimesat(AT_FDCWD, filename, utimes); } + +asmlinkage long sys_lutimesat(int dfd, char __user *filename, struct timeval __user *utimes) +{ + struct timeval times[2]; + + if (utimes && copy_from_user(×, utimes, sizeof(times))) + return -EFAULT; + return do_utimes(dfd, filename, utimes ? times : NULL, AT_SYMLINK_NOFOLLOW); +} --- a/include/asm-i386/unistd.h +++ b/include/asm-i386/unistd.h @@ -325,10 +325,11 @@ #define __NR_vmsplice 316 #define __NR_move_pages 317 #define __NR_getcpu 318 #define __NR_epoll_pwait 319 +#define __NR_lutimesat 320 #ifdef __KERNEL__ -#define NR_syscalls 320 +#define NR_syscalls 321 #define __ARCH_WANT_IPC_PARSE_VERSION #define __ARCH_WANT_OLD_READDIR - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/