Jean-Philippe Georget wrote:
> [...]
> 
> Peux-tu faire une synth�se des infos n�cessaires � l'utilisation de la
> compression � la vol�e avec ext2 ?
Ce que j'ai fait se r�sume comme suit
1) Se procurer le patch  e2compr-0.4.39-patch-2.2.18.bz2

2) Patcher les sources du noyau 2.2.18. Personnelement, j'utilise des
sources issus de sources (!) diverses, en l'occurrence venant de Linux
magazine je crois.

3) Le patch a des bugs en deux endroits

a) La constante
>>
char inflate_copyright[] = " inflate 1.0.4 Copyright 1995-1996 Mark
Adler"
<<
dans le fichier /usr/src/linux/drivers/net/zlib.c est en conflit avec
>>
const char inflate_copyright[] = " inflate 1.1.3 Copyright 1995-1998
Mark Adler ";
<< 
dans /usr/src/linux/fs/ext2/gzip/inftrees.c

J'ai chang� cela en

/* rajout de _gzip pour �viter deux variables identiques
   dans le fichier ./drivers/net/zlib.c */
const char inflate_copyright_gzip[] =
 " inflate 1.1.3 Copyright 1995-1998 Mark Adler ";

Puis
b) Dans <linux>/fs/nfsd/vfs.c patch�:
Il y a une erreur de type dans les appels des fonctions up et down lors
de la compilation des modules. J'ai patch� le fichier vfs.c par
-------------------
[EMAIL PROTECTED]:/usr/src/linux/fs/nfsd$ diff vfs.c vfs.c~
363,364c363
< /* erreur � mon avis */
<                       down(&inode->i_sem);
---
>                       down(inode->i_sem);
368c367
<                       up(&inode->i_sem);
---
>                       up(inode->i_sem);
1145,1146c1144
< /* erreur � mon avis */
<       down(&inode->i_sem);
---
>       down(inode->i_sem);
1159c1157
<       up(&inode->i_sem);
---
>       up(inode->i_sem);
[EMAIL PROTECTED]:/usr/src/linux/fs/nfsd$

L� la compilation se passe bien.

3) Chargement des utilitaires: Je ne sais plus si j'ai b�tement charg�
le module e2fsprog de chez Debian o� si j'ai compil� les programmes �
partir des sources. Les paquets sont
e2fsprogs-e2c_1.18.9-1_i386.deb et e2cfsprogs_1.18.9.orig.tar.gz

4) Installation du noyau et des modules (m�thode usuelle)

5) Et l�, jouissance du syst�me:
Pour comprimer (compresser ?, il y a eu un d�bat l� dessus?) un fichier
faire
chattr +c <fichier>
Le fichier est comprim� mais cela est transparent � l'utilisation. Pour
voir l'efficacit� du proc�de, e2ratio est tr�s bien.
Un chattr +c <Repertoire> fait que tout fichier cr�e dans ce repertoire
sera comprim�.
Exemple:
[EMAIL PROTECTED]:~$ mkdir gre
[EMAIL PROTECTED]:~$ cd gre
[EMAIL PROTECTED]:~/gre$ cp ../nsmail/Inbox .
[EMAIL PROTECTED]:~/gre$ ls -l
total 651
-rw-------    1 francois francois   661601 mar 22 21:33 Inbox
[EMAIL PROTECTED]:~/gre$ lsattr
-----------  - -      Inbox
[EMAIL PROTECTED]:~/gre$ e2ratio
652     652     100.0%  .
[EMAIL PROTECTED]:~/gre$ chattr Inbox
Must use '-b', '-m', '-v', =, - or +
[EMAIL PROTECTED]:~/gre$ chattr +c Inbox
[EMAIL PROTECTED]:~/gre$ ls -l
total 343
-rw-------    1 francois francois   661601 mar 22 21:33 Inbox
[EMAIL PROTECTED]:~/gre$ e2ratio
652     344      52.8%  .
[EMAIL PROTECTED]:~/gre$ lsattr
--c----B--- 32 gzip8  Inbox
[EMAIL PROTECTED]:~/gre$ cp Inbox Inboxbis
[EMAIL PROTECTED]:~/gre$ ls -l
total 994
-rw-------    1 francois francois   661601 mar 22 21:33 Inbox
-rw-------    1 francois francois   661601 mar 22 21:35 Inboxbis
[EMAIL PROTECTED]:~/gre$ lsattr
--c----B--- 32 gzip8  Inbox
-----------  - -      Inboxbis
[EMAIL PROTECTED]:~/gre$ e2ratio
1303    995      76.4%  .
[EMAIL PROTECTED]:~/gre$ chattr -c Inbox
[EMAIL PROTECTED]:~/gre$ e2ratio
1303    1303    100.0%  .
[EMAIL PROTECTED]:~/gre$
[EMAIL PROTECTED]:~/gre$ cd ..
[EMAIL PROTECTED]:~$ chattr +c gre
[EMAIL PROTECTED]:~$ cd gre
[EMAIL PROTECTED]:~/gre$ cp Inbox Inboxter
[EMAIL PROTECTED]:~/gre$ lsattr
-----------  - -      Inbox
-----------  - -      Inboxbis
--c----B--- 32 gzip8  Inboxter
[EMAIL PROTECTED]:~/gre$ e2ratio /usr/src/linux/
[..]
120     59       49.2%  /usr/src/linux//Documentation/usb
3163    1343     42.5%  /usr/src/linux//Documentation
6       6       100.0%  /usr/src/linux//modules
95854   35350    36.9%  /usr/src/linux/
[EMAIL PROTECTED]:~/gre$

ATTENTION: e2fsck doit �tre patch�, le gag suivant mais arriv� lors du
d�but:

1) J'installe le bazar
2) Je teste sur un fichier /tmp/test
cela fait, je ne savais pas que le disque mont� sur / avait un patch sur
chaque supers blocks indiquant la pr�sence de fichiers compress�s.
Notamment, le block FFF..FF n'existe plus et indique la pr�sence d'un
bloc de 0 dans le fichier une fois d�compress�.
3) Content, je reboute sur mon vieux noyau (r�flexe touche sur LILO).
Pas de bol, ma racine doit �tre v�rifi� par e2fsck... et l�, batterie
d'erreurs sur un syst�me sain...: J'utilise le e2fsck patch� mais pas
avec le bon noyau...
4) J'ai pu r�cup�r� mon syst�me sans perte en reboutant sur le bon noyau
avec un  deuxi�me fsck.

Moralit�: Ne pas utiliser la compression sur le disque /. En cas de
plantage, on pourra le remettre d'aplomb avec une disquette standard.
Pour remettre le disque dans son �tat d'origine:

chattr -R -c /*
clear-e2c /dev/hda1 (par exemple)

Voil�, cela ne concerne que la compression � la vol�e du syst�me ext2.
J'en suis ravi!

Fran�ois Boisson



Répondre à