lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 30 Aug 2012 14:54:33 +0530
From:	Ashish Sangwan <ashishsangwan2@...il.com>
To:	Jan Kara <jack@...e.cz>
Cc:	linux-ext4@...r.kernel.org
Subject: Re: query about truncate and orphan list

On Wed, Aug 29, 2012 at 6:47 PM, Jan Kara <jack@...e.cz> wrote:
> On Wed 29-08-12 14:52:22, Ashish Sangwan wrote:
>> I have a query about orphan list and truncate.
>> Currently these steps are performed in ext4_ext_truncate():
>> a) Start journal handle.
>> b) add inode to orphan list.
>> c) i_disksize is updated and inode is mark dirty.
>> d) actual truncate happen.
>> e) remove inode from orphan list.
>> f) handle stop.
>>
>> If system crash during step d) will i_disksize is actually updated on disk?
>> AFAIK i_disksize might be updated on the journal but not on its
>> original location because the transaction is not commited yet.
>   Yes, that can happen.
>
Ok,
To test it, I inserted a 10 seconds sleep between d) and e)
I created a 10MB file on new ext4 partition and tried to truncate it to 10KB.
After waiting for 10 seconds, unplug the device.
On remount, the inode was not present on the orphan list.
No matter how many times I repeat this operation, result is same.

After that I inserted a call to ext4_journal_restart() between step c)
and d.) and repeat the above operation.
This time the inode was present on orphan list and i_disksize was
updated (10KB) correctly too.
Is it the correct thing to do?

pardon me if my question seems silly. I am just trying to learn basics
about ext4 journalling.

Thanks,
Ashish
>> If this is the case than what is the use of re-starting truncate
>> operation while processing orphan inode list?
>   Because it can be on disk (noone guarantees when a transaction commits)
> and in that case we have to perform the truncate because some of the blocks
> might have been already freed by a transaction which is also committed.
>
>                                                                 Honza
> --
> Jan Kara <jack@...e.cz>
> SUSE Labs, CR
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ