| To: | LukÃÅ Czerner <lczerner@xxxxxxxxxx> |
|---|---|
| Subject: | Re: [PATCH v2 0/10] fs: Introduce FALLOC_FL_INSERT_RANGE for fallocate |
| From: | Theodore Ts'o <tytso@xxxxxxx> |
| Date: | Mon, 2 Jun 2014 11:02:58 -0400 |
| Cc: | Namjae Jeon <namjae.jeon@xxxxxxxxxxx>, 'Dave Chinner' <david@xxxxxxxxxxxxx>, 'linux-ext4' <linux-ext4@xxxxxxxxxxxxxxx>, xfs@xxxxxxxxxxx, linux-fsdevel@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, 'Ashish Sangwan' <a.sangwan@xxxxxxxxxxx> |
| Delivered-to: | xfs@xxxxxxxxxxx |
| Dkim-signature: | v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=thunk.org; s=ef5046eb; h=In-Reply-To:Content-Transfer-Encoding:Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date; bh=E2KnvncZeqZPWkScAXj54igcVMu2ny3Fr2jDwp1lT7w=; b=kyPHuxYexmDyI86EEeQ5UQozbbi7cVGwO6qmPZX8hd92nPE88OUS7sUP2QkRBxCGupiKJz0rrUweFbw7HPJKOlpHj1/I8PEEYowe7c75Q0G4ZGLd52x4ZDbnOXzDEol6yGDO5wQsE6Yv14n3AXYkkmKOclO1q8P8E1ubdmhqQ20=; |
| In-reply-to: | <alpine.LFD.2.00.1406021450541.2231@xxxxxxxxxxxxxxxxxxxxx> |
| Mail-followup-to: | Theodore Ts'o <tytso@xxxxxxx>, LukÃÅ Czerner <lczerner@xxxxxxxxxx>, Namjae Jeon <namjae.jeon@xxxxxxxxxxx>, 'Dave Chinner' <david@xxxxxxxxxxxxx>, 'linux-ext4' <linux-ext4@xxxxxxxxxxxxxxx>, xfs@xxxxxxxxxxx, linux-fsdevel@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, 'Ashish Sangwan' <a.sangwan@xxxxxxxxxxx> |
| References: | <003601cf6aa7$883103b0$98930b10$@samsung.com> <alpine.LFD.2.00.1405301238190.2009@xxxxxxxxxxxxxxxxxxxxx> <000d01cf7ca3$98335c50$c89a14f0$@samsung.com> <alpine.LFD.2.00.1406021204540.2231@xxxxxxxxxxxxxxxxxxxxx> <002201cf7e59$2e684c10$8b38e430$@samsung.com> <alpine.LFD.2.00.1406021450541.2231@xxxxxxxxxxxxxxxxxxxxx> |
| User-agent: | Mutt/1.5.23 (2014-03-12) |
On Mon, Jun 02, 2014 at 03:06:13PM +0200, LukÃÅ Czerner wrote:
> > > So what will happen when there is not enough space when "inserting a
> > > range" ? And how should user proceed from there ?
> > If insert range fails with an ENOSPC error, user could use collapse
> > range on the same range to remove the hole.
> > And after freeing more space, he can again try inserting range.
> > Ofcourse, this type of guidance should be properly documented in
> > manpage. When updating fallocate(2) manpage, I will keep in mind to
> > describe ENOSPC handling.
>
> Why collapse ? The hole is already there right ? Why not just use
> fallocate to allocate the space for the hole. And that's my point
> actually. Why not do it this way in the first place, because this is
> really counterintuitive.
It's worse than that. It's possible that the reason why you got the
ENOSPC warning was because the operation to move the extents down
required allocating a block, and it was *that* block allocation which
failed. So it's not deterministic whether or not the file's extent
mappings were modified after a ENOSPC error, and so it's not clear
whether or not a collapse_range function will undo the range that had
been inserted --- or whether it ends up deleting existing data blocks.
In generally, you really want system calls to have all-or-nothing
effects, where if the system call returns an error, the state of the
file has not been changed. And for that reason, I agree with LukÃÅ
that it is really a good idea to decouple moving the blocks down, and
allocating space --- and to make sure that if there is any failure
while inserting the range, the state of the file is not modified at all.
Cheers,
- Ted
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Re: [RFC 11/32] xfs: convert to struct inode_time, Arnd Bergmann |
|---|---|
| Next by Date: | Re: [RFC 11/32] xfs: convert to struct inode_time, Chuck Lever |
| Previous by Thread: | RE: [PATCH v2 0/10] fs: Introduce FALLOC_FL_INSERT_RANGE for fallocate, Lukáš Czerner |
| Next by Thread: | RE: [PATCH v2 0/10] fs: Introduce FALLOC_FL_INSERT_RANGE for fallocate, Namjae Jeon |
| Indexes: | [Date] [Thread] [Top] [All Lists] |