From patchwork Thu Oct 20 00:52:36 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 684391 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3szqzt4CH8z9sCg for ; Thu, 20 Oct 2016 11:53:14 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b=rUV+S3nK; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id :mime-version:content-type; q=dns; s=default; b=HlqN5OnCLa5DUczU vFce+WRdpOueWPEFtvGcYYkU26A6UmMY52ofHc0wtLlcNkxwKGBPXOGcNy3lPyZF 3DMOL9wrJOhZKcnlzLqKLCG4RLWUG4WEYm3vrSss6srvxniPZZ0S/FmH0YgTky+O moSsPwGa0n0ykr4IuzTdQkPRgW4= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id :mime-version:content-type; s=default; bh=DzhWYeE0lrsBnp8iUjcTUJ VjYrI=; b=rUV+S3nK52JVtx8B++gpwtZ8sBSiMuAwGVlEoU4DOr0b+5bi392erv E0Du9nWBaes70bIe1ttV8BMUkztouBEjy4xlyd1XVL68XNmHM3/dOjb2IB8AGyCB +dtr9pY1vLUy9NX0B/D4nEX5qx50+J+ys3exfvY+BiA8AuruuGUqU= Received: (qmail 58992 invoked by alias); 20 Oct 2016 00:53:04 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 58970 invoked by uid 89); 20 Oct 2016 00:53:02 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=!defined, H*r:sk:mail-dm, isis, 2011-2016 X-HELO: NAM03-DM3-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; From: Yury Norov To: CC: , , , Yury Norov Subject: [PATCH v2] Linux: consolidate rename() Date: Thu, 20 Oct 2016 03:52:36 +0300 Message-ID: <1476924756-31448-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 X-ClientProxiedBy: AM2PR03CA0010.eurprd03.prod.outlook.com (10.160.207.20) To CY1PR07MB2248.namprd07.prod.outlook.com (10.164.112.150) X-MS-Office365-Filtering-Correlation-Id: a11d7ad3-da26-4131-e9bb-08d3f8836906 X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2248; 2:q5hZs9gp7Ak9W1zjwVPPldIc923LETdcKFnwtH7goc2H5jS6RMovwCVBiUa6CWxWxm5pKb9As04D4WmRU6aZmt8fJlLKiV3qmoVvYPZSA4zjn8u/w6RqbGqkRDkZ5bsCBKqwGtCCPjI6M70Q3cpuxyCUwUECO4HHpFqb/hOjO5/Rn9eFHOjX9aq5SLG6aD8ovTQO8ElLjbrkSGZAcY5A1A==; 3:JsHYfQWgOCxXYA9oISGpSpJaCiPzdfRmoK4qzbkuqK7xAsa2WN1JJ0l1kYK4B2RIG87nSkAT7WFl57D7aN/tATEYAiXh8wmfSxfEWi9k//Vfl7Crw87VGwcJGuBwPlT+6s6WBbPn8katTh9A2rkSqA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR07MB2248; X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2248; 25:xLmLaFfj5kiEMH2F6FznThTkNH7PcFXAj/ikayNgFZN11bGOMCN2B7sZJQ30uynq/4b/zO5N99RoTI0SMNfCV0V0SdbaRHh9J7PXxVmJCNE0eY6Wz03hLVz4hgDgeRU1euq19hF0e8E9i/GDPUK7DVLNpgj7FDrzwr/7U4+rMJ7yyKEBS2PexcY+dxk7VhhSrNYw6bazQcR9YADIWER19gHUiE5U9LYMQPmPCEA00+BaDL00kdMKJQO0NZv1rN1XeGScdcdmIIrLT7Ke4M4/HSgqPWhdTcLhcfItJEglw2EilCAxoVzF5+/aL4mW7lT5FNZdKQAtJHXXGD/mh9DTNhOjBcvzYCFyXcWjmuTIMXb4V4mYGWf2R1MwQJ+djeQhhqo1uuYANqSEwNaDs0GGxT0z7uc6lzR8KqAWK0Pe1PiOCpwPE1m7EtcRcs9w77j7yOyG3RWjabjklM6NCsPwsSZZHcSS0JTFrM+nAUWj+14LBKvXL5qGgshPX6ZmXrEeibm11d+zYkLsC20325+wHEtjChVe+f4ttd7e47Qa/uGXmxxtfZFhyPjYkY3sfupCjsxAXkAycLAXqh6booywVGveEJafl7G3BsEX7rxZRcZxvIk8iP1frpka1lAUsIolcVYrJzBUDy3m+FJeX5RmgwSskyNo2KY7XQ2hYEqvWul+BOHayThJJfUubwss5GaRFTCmhItsvTjRYsruGHUyxdUIGIZElID2+kgbKNNr4008vPfgq8B+4O0FRBMwhY6mnvAlU0B3K+0jfKRMC5c9lhPdF+5uPvFYxciu+XkEjV8HMK9pth6jfxlZlsIGsm3qNKradr9tMashhYJ5CUwtRwZ/1W3Lujp97+KqsfdGnObrnVtMHOF1OH5q+oudjd0DczSTnWQNpDKGRufqYoMNdQ== X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2248; 31:rgWePmEcALd9x2Fx7B8OgjY6Q98phI79G7YO+lHLswWZRk0o8uTVLM276fsqAGWhDgUR4IMmRrbyrG1fa7nT6kxwTp/vKgp0VxYW4/vBjXeloKanpZLWKBX+yza02YCJsEfQRk1sLo5o0ZBEcZgy1mRvD0KVpLo1+GTuzYtBGySd6CPcPEy1LLwhYA7ZyLMROec4F1OJK4Lmb7+fLPlkx/YDFEz7PZvz3Q4vEVlGJ5SGja76MykOBGB5IyUNnTlkbQS/EAOTeunUHfSh9x6QzA==; 20:0MdJatiiXV2wtn1cj3r3fVZh+qT6sSIjD4GA0oQiKmEJbEsMIgFfaze6CMC0MDhDqP6z+wjYTalEaKehMm7Mieo6hc5EKTErXIugkpCEymbsrRI+5WScMf7Rl9soIOZfsyKI+PK1fN/99rgV5S1+go9lK7twbSmlf3Pdt1a27LJFL1jbv4U9mB9RFOoiD1Eob3oaREnuvHHs3ylc4OTJxk1DsQ38m6N1ftLHYy7k30nY9yRkZ2NbVjMydZDvPWLSOgjO+83T7NUyL7/2sgNUIvWNZN8QTc5kXEu1pOloOi8pVJPFxEWO26Stf3zkfyJ5vfx2M4iD4/s7vZ2BhuqejUgTDoyx7eQkM2SHDE/TTeuemBMXA8yWYyqw7Z2ZvwJ/etIjbGnpSCzL2ZGk15CTkG+bUMRPYOBUq1rHnvVw0xEjVpM5CGRX4S0oVW6mB4wCGfNHG7FjE8dOWZWRGc5CGwcCwf+hnO9umi720cDqAkqvYYou0+YXBDG+UcTPVAqnaqpUv2RBC/nwSeBy0SlQlnLF6mzR9ho6Xv6UDAkLEdw3ujDopoj23Uz9bA7aNDZHrVYiSzBa2rS9izNA+IXErEM/f6jRoZ6lS9sJUlHUanA= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(250305191791016)(22074186197030)(166708455590820); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001); SRVR:CY1PR07MB2248; BCL:0; PCL:0; RULEID:; SRVR:CY1PR07MB2248; X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2248; 4:StjexgTUB84IocBRFRE3qCByqWKi1aItBuuhtZ2RHV0nKi8VlZeHbdbFei1uevAAEvfSet0W0PD87x/3un3ecm0/vWDhD7TaHayoroz2C8v8k5rblpm04sUbw7TDDLTdHpFVVsEBOORb5jK/nYb5BRc4TLdoZXBptzQcCTQ5eP9HuwXyHlPEU8D+D0cU/dizPaOFYBozNikKHgJcKx2KOkyVAKibF0lLMBIl5VyvaKwKLJ91f0FZq+K/NQVENNcUQ5zA+CQk6IHVo5EJN444VpMLQqGispNKbVFf9gNmpmUb2gyxiowxZSo56+3QB2lX9DWGa7l8tC87fNNlTFyHXGJAnjouYmiSuw9VJSuI2ou/rjWBvT8yeqB1KQDADVXqmOWATuD7lTcq5x5XJjtYBedzVFOC0bci9ZeZmDTXa9O/3rYSk0YKtdV6Z/+aFPDiQW9ZJOoFShjAsoKTCMHvAdrO6izSOmC3T2SpG8B9u/eRaLzFleuVt0zsyGpW6vu7H3oVXBrKGR8Uqq765artxA== X-Forefront-PRVS: 01018CB5B3 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(189002)(199003)(19580395003)(5660300001)(42186005)(5003940100001)(92566002)(36756003)(77096005)(50226002)(229853001)(7846002)(97736004)(19580405001)(50466002)(2351001)(4326007)(107886002)(575784001)(110136003)(2906002)(4001430100002)(6116002)(3846002)(586003)(81156014)(6916009)(101416001)(106356001)(81166006)(8676002)(66066001)(305945005)(68736007)(105586002)(7736002)(48376002)(189998001)(76506005)(15975445007)(6666003)(33646002)(47776003)(50986999)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR07MB2248; H:localhost; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: caviumnetworks.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR07MB2248; 23:9jCAdNYlCVw8MKSKznCWFyEw27zf7LYPg+U5UgeLJ?= =?us-ascii?Q?ElZZF8P17sLCrVDMJs4EVCsXZ2ZRhzapvN+JVtd+L8epG0iItm0VxaBMTyVZ?= =?us-ascii?Q?Wa1N4TZKbnZCfOP/gH9BpCgtGbC+3zqeuAaS3OvL1nxxUfIqX4ep7AtWc9pq?= =?us-ascii?Q?DKtl0DjTcQ01huYGZZ6AR2H4NDlYjHzk/LiKE5hezoehaOUv5XHBlAJIqGcP?= =?us-ascii?Q?mHgf/qP0lWmiqSdMf+2hRk3cAJaO+Cb1PRCzHlkFVk9hZKj9CpvK4TRJN+SY?= =?us-ascii?Q?kGXLmBDUK+j3BsfMleEfTRwnQ194YUOsh8gBErvX9Mxl2I2oC3+qaewTJeec?= =?us-ascii?Q?ml1axyTvgclQiB7mzgalcNnt4SxvZmh95fcGh2SZa8V1+B10UP3v3PuOaspX?= =?us-ascii?Q?HqlcSZ1gdvycPnPy/BkPzStmNCUF2eoJRpnjhX6+Bf+CuK02ddh5gIqBA8nh?= =?us-ascii?Q?5/8W0T8PlF082upXO6uwlgVcAoJ3x2QCcmNlTcMpMNvbDHSoFGF/L+Vj790N?= =?us-ascii?Q?ETqbXYuJh8v/iWUbfUoqAACHJDrjd7r4ANknyDPD2lC4MAVNIXMQA6tQ7XL4?= =?us-ascii?Q?PZVaCYewCnwI/1C4bsl5//a1HM/54Z9fV/DGksjB2qsoU+kibpm6CxGbltyI?= =?us-ascii?Q?jDAinOfBaUYuJlD8VzmiNxhmKHJ9vrMbtV+ToDn6QUR7xSdtDFFJ51vlmYVK?= =?us-ascii?Q?+O/x515wHO3j8/VTK0vrPK1a5bOG4sYlTe+Vxl48FNo4iaq8hcRE/RHhJRny?= =?us-ascii?Q?EqAcsBHf7piisj1A4qxTQYI9UpRizgSpzP1VRURugblPfHIbHraFchz4erDd?= =?us-ascii?Q?7JLuHndLaBzGMmx12MDyk9/CtD5jVC6uI8yG2hE7IhqrlNETuyO8f6oyssq3?= =?us-ascii?Q?j2pQc7L0u1kFONZbCwih29hMBsUN/0S6QBEPfYH02SykTIE9AB9Cradt4Bhc?= =?us-ascii?Q?ic4CJNNC0T/RML9ax2ewaQAGh3XB6GyqQ013WDT+t1/B09qCDmehEm5WVJpG?= =?us-ascii?Q?1aVR5JjXLSVZx1JzZXrWPbQivj1efhf6aQ+KnBiqe4J9J/rILF5EjHe0nALG?= =?us-ascii?Q?ba5/Ut9VpBTLurELzW8At2s+n7t0zI6ifEsyh0otbT5A4lVMxpMAjdbIYqf3?= =?us-ascii?Q?6dZzGv0G0FsBomq4amerlhRxpUmB225UvnD0HZVn8vH8UGgTb22Ahxq1Nm32?= =?us-ascii?Q?FT5/eXZ94uAsAdDIdIUPBl1VY0LZXuH+LvqDck56m+1+xzWgnOw6defXA=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2248; 6:m0/maGBaqDgewCrXubWdTnrKaOSSJQabHwoZhrZqURGTl9UXTJn34i8UVgZcW/xi8SL1UYzyTMjiYAmtq7sGCCqASduM/ikBQbFvpCT6tGkSzKE5HahJxK/j1U/ZAyN5zfcUBkYjm6SkdGN48gMwdx0DbGTgWJ4ndV/v6slQ+xra4kjVGFiB+3LUbKv33gvOLczSFKXxg0e3j+v82e0Y50FX50/wRnz2PskOCyhf2MK/4C91o9eq0DxLTB2otsORsbOPSMCYhl3AfCNNqz1xKNl/TA0HC2gHuROWOtrItVWHWfHNjUG6owgdnPfvM5tp; 5:/a8HlX2sd0ybf/sBOtbtBgzHu0Nrbz5tUEnhFM3jCTfdtR887z/YH85zFFWcEAYZaRAULxJSKY3bwrC9ixdBDmSgpDGD9P5vD7x7hrHbJeE1WKm+fCRZmrk1bbAhCioB/Q/UR9M63+MJy8vuiXUKPw==; 24:Ws+YGOLc9JiFjlkmsy2X2Pe6hGMZUEvLvxJR0nGa1zR8DuOYKnRL3kGIhXLY0YhtV1snuRKHG7III7t3VstWPmAhceFE7CKl4/H364APtAY=; 7:eNEmfWpB26Q5eBnx8POSreYyTVUtBqUXv9pYZ4kmCX2NrOn28s2OIOPX8i38xX/ogZYUYlbzn9LF0fywTgSxySHoQXtrfSKGKsoCwE/Jle6VvAPQ0dhzVLOagr9lcm7u48psN6CqgVowT+ZWfAfHts7zaZEOF7aZYZwEyiKC1ng0LKJiz4A/ep+dGdic89cRhmgfs69cp2H6n51+X7lzWdRkhaWnaYfr02v2KsshE43+3frO8RRa+cZJ1kDbrWZ4hXT12ceaDlwWgiC7ROn9IvZ2MxjIxG8A6mBPhxlgedxPfqm7esBUFKK9kH4kOENzqGnTtVElq9pEGBmDSUvyls0PbP5Pi5Qjvx/SGNlU77E= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2016 00:52:47.1933 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR07MB2248 renameat syscall was deprecated in kernel in patch b0da6d44 (asm-generic: Drop renameat syscall from default list). In this patch linux/ and linux/generic/ implementations of rename() and renameat() are consolidated and forced to call renameat2 if renameat is not exposed by kernel headers. The change affects only new ports. Old ports work as usual. Tested on arm64/lp64 which supports renameat and renameat2, and aarch64/ilp32 which supports renameat2 only. Kernel and glibc series for aarch64/ilp32: https://github.com/norov/linux/commits/ilp32-4.9 https://github.com/norov/glibc/commits/master-ilp32 v2: - rename() calls renameat() now; - renameat() is implemented in a file, not in syscalls.list; - __NR_renameat2 is used if kernel doesn't define __NR_renameat, which is the case for new platforms, currently only aarch64/ilp32; * sysdeps/unix/sysv/linux/generic/rename.c: Remove. * sysdeps/unix/sysv/linux/rename.c: New file. * sysdeps/unix/sysv/linux/renameat.c: New file. * sysdeps/unix/sysv/linux/syscalls.list: Drop renameat. Signed-off-by: Yury Norov --- sysdeps/unix/sysv/linux/generic/rename.c | 29 ------------------------ sysdeps/unix/sysv/linux/rename.c | 27 +++++++++++++++++++++++ sysdeps/unix/sysv/linux/renameat.c | 38 ++++++++++++++++++++++++++++++++ sysdeps/unix/sysv/linux/syscalls.list | 1 - 4 files changed, 65 insertions(+), 30 deletions(-) delete mode 100644 sysdeps/unix/sysv/linux/generic/rename.c create mode 100644 sysdeps/unix/sysv/linux/rename.c create mode 100644 sysdeps/unix/sysv/linux/renameat.c diff --git a/sysdeps/unix/sysv/linux/generic/rename.c b/sysdeps/unix/sysv/linux/generic/rename.c deleted file mode 100644 index 174c147..0000000 --- a/sysdeps/unix/sysv/linux/generic/rename.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (C) 2011-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#include -#include -#include -#include - -/* Rename the file OLD to NEW. */ -int -rename (const char *old, const char *new) -{ - return INLINE_SYSCALL (renameat, 4, AT_FDCWD, old, AT_FDCWD, new); -} diff --git a/sysdeps/unix/sysv/linux/rename.c b/sysdeps/unix/sysv/linux/rename.c new file mode 100644 index 0000000..8e14d7d --- /dev/null +++ b/sysdeps/unix/sysv/linux/rename.c @@ -0,0 +1,27 @@ +/* rename() implemantation. + Copyright (C) 2016 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include + +/* Rename the file OLD to NEW. */ +int +rename (const char *old, const char *new) +{ + return renameat (AT_FDCWD, old, AT_FDCWD, new); +} diff --git a/sysdeps/unix/sysv/linux/renameat.c b/sysdeps/unix/sysv/linux/renameat.c new file mode 100644 index 0000000..a735e2d --- /dev/null +++ b/sysdeps/unix/sysv/linux/renameat.c @@ -0,0 +1,38 @@ +/* renameat() syscall + Copyright (C) 2016 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Chris Metcalf , 2011. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#include +#include +#include +#include + +#if !defined (__NR_renameat) && !defined (__NR_renameat2) +# error "Both renameat and renameat2 not supported" +#endif + +/* Rename the file OLD to NEW. */ +int +renameat (int oldfd, const char *old, int newfd, const char *new) +{ +#ifdef __NR_renameat + return INLINE_SYSCALL_CALL (renameat, oldfd, old, newfd, new); +#else + return INLINE_SYSCALL_CALL (renameat2, oldfd, old, newfd, new, 0); +#endif +} diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index 68af897..4d7d71e 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -88,7 +88,6 @@ fchownat - fchownat i:isiii fchownat linkat - linkat i:isisi linkat mkdirat - mkdirat i:isi mkdirat readlinkat - readlinkat i:issi readlinkat -renameat - renameat i:isis renameat symlinkat - symlinkat i:sis symlinkat unlinkat - unlinkat i:isi unlinkat