From: Ted Ts'o Subject: Re: unlink(nonexistent): EROFS or ENOENT? Date: Mon, 6 Jun 2011 15:55:55 -0400 Message-ID: <20110606195555.GB20818@thunk.org> References: <4DE26F97.9050607@msgid.tls.msk.ru> <20110606033949.GE7180@thunk.org> <4DED0AB3.6060708@msgid.tls.msk.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Linux-kernel , linux-fsdevel To: Michael Tokarev Return-path: Received: from li9-11.members.linode.com ([67.18.176.11]:37074 "EHLO test.thunk.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755417Ab1FFTz7 (ORCPT ); Mon, 6 Jun 2011 15:55:59 -0400 Content-Disposition: inline In-Reply-To: <4DED0AB3.6060708@msgid.tls.msk.ru> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Mon, Jun 06, 2011 at 09:13:23PM +0400, Michael Tokarev wrote: > Thank you for the answer. I thought noone will reply... ;) > > >> Just noticed that at least on ext4, unlinking a > >> non-existing file from a read-only filesystem > >> results in EROFS instead of ENOENT. I'd expect > >> it return ENOENT - it is more logical, at least > >> in my opinion. > /* The unlinkat from kernels like linux-2.6.32 reports EROFS even for > nonexistent files. When the file is indeed missing, map that to ENOENT, > so that rm -f ignores it, as required. Even without -f, this is useful > because it makes rm print the more precise diagnostic. */ OK, I see what's going on. This check is in the VFS layer, so it affects all filesystems; it's not an ext4-specific thing. Patch coming shortly. - Ted