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] [day] [month] [year] [list]
Date:	Wed, 19 Jan 2011 17:17:39 +0900
From:	Kazuya Mio <k-mio@...jp.nec.com>
To:	"Ted Ts'o" <tytso@....edu>
CC:	ext4 <linux-ext4@...r.kernel.org>
Subject: Re: Problems with e4defrag -c

2011/01/08 4:38, Ted Ts'o wrote:
> If we do it that way, I'm not sure we really need to have access to
> the superblock to get various file system values. I can imagine requesting
> certain parameters --- if you have root access, you can grab the superblock
> and adjust the "threshold of perfection" down from 256MB to 32MB
> if flex_bg is not enabled, or based on the size of the flex_bg groups. But if
> you don't have access, it might be smarter just to use some default
> "threshold of perfection", as opposed to having lots of "do we have root"
> checks sprinkled all over the program.

I agree to use some default "threshold of perfection". In this case, 256MB is
too big because all files will get the worst score if flex_bg is disabled.
So I think "blocks_per_group - 2048" seems to be good threshold. 2048 means
the maximum block region of mballoc with the exception of more than
8KB blocksize. If we try to allocate the contiguous blocks including some
metadata blocks (backup of the superblock, blockgroup descriptor, etc.),
this threshold will judge that there is no fragmentation in the file.

e.g. Allocate 512MB contiguous blocks including some metadata blocks

# dd if=/dev/zero of=/mnt/mp1/file bs=1M count=512 oflag=sync
# filefrag -v /mnt/mp1/file
Filesystem type is: ef53
File size of /mnt/mp1/file is 536870912 (131072 blocks, blocksize 4096)
  ext logical physical expected length flags
    0       0    33280           30720
    1   30720    65536    63999  32768
    2   63488   100352    98303  32768
    3   96256   133120           30720
    4  126976   165888   163839   4096 eof

> Hmm, maybe the right answer is that we have a single function, located
> in libe2p, that calculates the "fragmentation score". We can separate that
> out from the e4defrag code, and make it be a library function. The programs
> that want to use it can call that library function. (Parameters to the
> fragmentation score, such as the "threshold of perfection", would be passed
> into the library function, along with a file descriptor to the file so that
> FIEMAP could be called on that file.)

OK. I'll create the new file "fragment_score.c" into lib/e2p and add
a function to this file. We can get the percent of the small extents in the
target file by calling this function.

> I'm not sure how useful it is to do a recursive tree walk just to display
> the information for all the files in the directory. Filefrag will already
> take a list of files on the command-line, and if you want to do a recursive
> tree walk, you can do a "find /path/to/dir -type f | xargs filefrag".

It's true that we should use find command if we really want to know
the fragmentation scores of all of the files in the directory.
I won't add a recursive tree walk to filefrag.

Regards,
Kazuya Mio
--
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