FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Redhat > Fedora Development

 
 
LinkBack Thread Tools
 
Old 02-11-2010, 01:26 PM
lakshmi pathi
 
Default giis-ext4 undelete

Hi all,
Here it's http://www.giis.co.in/giis/ , ext4 undelete tool.giis-ext4 uses ext2fs lib and sqlite,thus provides better/best performance than

giis for ext3.

giis-ext4 has less than 1000 LOC which is almost 5 times less original than giis and *giis-ext4 took just around 6 weekends (approx 15
days *, 2hrs / day) thanks to ext2fs library




Feedback/comments on giis-ext4 are most welcome.

ps: don't forget to check out the giis-ext4 screencasting.
--
----
Cheers,
Lakshmipathi.G
www.giis.co.in


_______________________________________________
Ext3-users mailing list
Ext3-users@redhat.com
https://www.redhat.com/mailman/listinfo/ext3-users
 
Old 02-11-2010, 01:29 PM
lakshmi pathi
 
Default giis-ext4 undelete

Hi all,
Here it's http://www.giis.co.in/giis/ , ext4 undelete tool.giis-ext4

uses ext2fs lib and sqlite,thus provides better/best performance than
giis for ext3.

giis-ext4 has less than 1000 LOC which is almost 5 times less original
than giis and *giis-ext4 took just around 6 weekends (approx 15

days *, 2hrs / day) thanks to ext2fs library

Feedback/comments on giis-ext4 are most welcome.
--
----
Cheers,
Lakshmipathi.G
www.giis.co.in


--
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
 
Old 02-13-2010, 06:47 AM
Christian Kujau
 
Default giis-ext4 undelete

On Thu, 11 Feb 2010 at 19:56, lakshmi pathi wrote:
> Feedback/comments on giis-ext4 are most welcome.

I'm always curious about these undeletion attempts and so I've tried it.
But without luck again:

# giis-ext4 -g
Enter your option: 1
giis-ext4: giis-ext4.c:863: open_db: Assertion `error == 0' failed.
Aborted
# echo $?
134

This has been compiled with
- e2fslibs-dev 1.41.10
- libsqlite3-dev 3.6.22
- gcc 4.4.3, with -g -ggdb

I've attached the gdb output and tune2fs output to this email.

HTH,
Christian.
--
BOFH excuse #24:

network packets travelling uphill (use a carrier pigeon)#
# Makefile
#
CFLAGS = -g -ggdb
LDFLAGS = -lext2fs -lsqlite3

giis-ext4:
gcc $(CFLAGS) $(LDFLAGS) src/giis-ext4.c -o giis-ext4

clean:
rm -f giis-ext4

all: giis-ext4

.PHONY: clean

.PHONY: giis-ext4 all
tune2fs 1.41.10 (10-Feb-2009)
Filesystem volume name: <none>
Last mounted on: /mnt/d1
Filesystem UUID: 65de9933-1be8-49cc-909c-e324a49f62d6
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 128016
Block count: 512000
Reserved block count: 25600
Free blocks: 485334
Free inodes: 128005
First block: 1
Block size: 1024
Fragment size: 1024
Reserved GDT blocks: 256
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 2032
Inode blocks per group: 254
Flex block group size: 16
Filesystem created: Sat Feb 13 07:35:00 2010
Last mount time: Sat Feb 13 07:35:09 2010
Last write time: Sat Feb 13 07:35:09 2010
Mount count: 1
Maximum mount count: 21
Last checked: Sat Feb 13 07:35:00 2010
Check interval: 15552000 (6 months)
Next check after: Thu Aug 12 08:35:00 2010
Lifetime writes: 24 MB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: 3990aa48-db93-4905-82dc-6e09c49ef971
Journal backup: inode blocks
# grep /mnt/d1 /proc/mounts
/dev/mapper/vg0-lv0 /mnt/d1 ext4 rw,relatime,barrier=1,data=ordered 0 0

# gdb /usr/local/src/giis-ext4/bin/giis-ext4
GNU gdb (GDB) 7.0.1-debian
This GDB was configured as "x86_64-linux-gnu".
Reading symbols from /usr/local/src/giis-ext4/bin/giis-ext4...(no debugging symbols found)...done.
(gdb) run -g
Starting program: /usr/local/src/giis-ext4/bin/giis-ext4 -g
[Thread debugging using libthread_db enabled]

Device Found : /dev/xvda1
press 1: get all user files
press 2: get specific user files
press 3: get specific file type
press 4: get specific file
press 5: get it by deleted date
Enter your option:1
giis-ext4: giis-ext4.c:863: open_db: Assertion `error == 0' failed.

Program received signal SIGABRT, Aborted.
0x00007ffff7603f45 in *__GI_raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
in ../nptl/sysdeps/unix/sysv/linux/raise.c
(gdb) bt
#0 0x00007ffff7603f45 in *__GI_raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1 0x00007ffff7606d80 in *__GI_abort () at abort.c:88
#2 0x00007ffff75fd08a in *__GI___assert_fail (assertion=0x404304 "error == 0", file=<value optimized out>, line=863, function=0x404dbf "open_db") at assert.c:78
#3 0x0000000000403bdc in open_db ()
#4 0x00000000004024ce in giis_ext4_recover_all ()
#5 0x0000000000401831 in main ()

(gdb) bt full
#0 0x00007ffff7603f45 in *__GI_raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
pid = <value optimized out>
selftid = <value optimized out>
#1 0x00007ffff7606d80 in *__GI_abort () at abort.c:88
act = {__sigaction_handler = {sa_handler = 0x404304 <__dso_handle+1276>, sa_sigaction = 0x404304 <__dso_handle+1276>}, sa_mask = {__val = {140737344616945, 140737488348880, 863,
140737488349120, 140737343861862, 206158430232, 140737488349136, 140737488348912, 140737343776536, 206158430256, 140737488349160, 6357648, 6357632, 1, 4211460, 140737488350776}},
sa_flags = -143746404, sa_restorer = 0x4042f8 <__dso_handle+1264>}
sigs = {__val = {32, 0 <repeats 15 times>}}
#2 0x00007ffff75fd08a in *__GI___assert_fail (assertion=0x404304 "error == 0", file=<value optimized out>, line=863, function=0x404dbf "open_db") at assert.c:78
buf = 0x610290 ""
#3 0x0000000000403bdc in open_db ()
No symbol table info available.
#4 0x00000000004024ce in giis_ext4_recover_all ()
No symbol table info available.
#5 0x0000000000401831 in main ()
No symbol table info available.
(gdb) quit
A debugging session is active.

Inferior 1 [process 5065] will be killed.

Quit anyway? (y or n) y

# file /usr/local/src/giis-ext4/bin/giis-ext4
/usr/local/src/giis-ext4/bin/giis-ext4: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped

# ldd /usr/local/src/giis-ext4/bin/giis-ext4
linux-vdso.so.1 => (0x00007fffbbdff000)
libsqlite3.so.0 => /usr/lib/libsqlite3.so.0 (0x00007fdb7e324000)
libext2fs.so.2 => /lib/libext2fs.so.2 (0x00007fdb7e0f6000)
libc.so.6 => /lib/libc.so.6 (0x00007fdb7dda1000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007fdb7db85000)
libdl.so.2 => /lib/libdl.so.2 (0x00007fdb7d981000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0x00007fdb7d77d000)
/lib64/ld-linux-x86-64.so.2 (0x00007fdb7e5b8000)

# ls -lgo /usr/local/src/giis-ext4/bin/giis-ext4
-rwx------ 1 30800 Feb 10 20:24 /usr/local/src/giis-ext4/bin/giis-ext4
_______________________________________________
Ext3-users mailing list
Ext3-users@redhat.com
https://www.redhat.com/mailman/listinfo/ext3-users
 
Old 02-13-2010, 01:46 PM
lakshmi pathi
 
Default giis-ext4 undelete

Thanks for your* feedback/comments.I have following queries,

1.Is your root file system (/dev/xvda1) is ext4?

2.Have you added the directory /mnt/d1 using "giis-ext4 --install" option?
Because you need to configure it to protect important directories, in this case add /mnt/d1 before running "giis-ext4 -g".


I get the same error message,when giis-ext4 -g is invoked without configuring it using "giis-ext4 --install"

-----------
giis-ext4: giis-ext4.c:863: open_db: Assertion `error == 0' failed.
Aborted (core dumped)

-------------

See my comments (/* */) on right-side in following output:
-------------------------
# giis-ext4 --install

*Device Found : /dev/mapper/vg_space-lv_root**** /** root device taken from /etc/mtab */

*giis : Taking snapshot of current File system ***

*giis-ext4:Installation begins..
*giis-ext4: header table created
*giis-ext4: file table created
*What's the maximum directory depth?5*** *** /*Max. directory depth involved */


*Enter the dirname name,that you would like to protect(Max. 7 directories)
*Enter dirname:/mnt/d1*** *** *** * /* Enter important directories to protect */

*Press 1 to add/protect another directory else Press 0 to complete: 1


*Enter dirname:/opt/testing *** *** */* Enter important directories* */

*Press 1 to add/protect another directory else Press 0 to complete: 0

*Check for newly files every 'auto update time' minutes.

Enter auto update time: 10*** *** /* Every 10 minutes giis-ext4 , searches for any *** *** *** *** *** *** modified/new files under protected dirs*/
-------------------

Now if you delete files from protected dirs (say /mnt/d1),then you can recover them using* "giis-ext4 -g " option.


Thanks for the Makefile too,I'll use it
If you are stilling getting same error , please let me know.


--
----
Cheers,
Lakshmipathi.G
www.giis.co.in





On Sat, Feb 13, 2010 at 1:17 PM, Christian Kujau <lists@nerdbynature.de> wrote:

On Thu, 11 Feb 2010 at 19:56, lakshmi pathi wrote:

> Feedback/comments on giis-ext4 are most welcome.



I'm always curious about these undeletion attempts and so I've tried it.

But without luck again:



* # giis-ext4 -g

* Enter your option: 1

* giis-ext4: giis-ext4.c:863: open_db: Assertion `error == 0' failed.

* Aborted

* # echo $?

* 134



This has been compiled with

*- e2fslibs-dev 1.41.10

*- libsqlite3-dev 3.6.22

*- gcc 4.4.3, with -g -ggdb



I've attached the gdb output and tune2fs output to this email.



HTH,

Christian.

--

BOFH excuse #24:



network packets travelling uphill (use a carrier pigeon)



_______________________________________________
Ext3-users mailing list
Ext3-users@redhat.com
https://www.redhat.com/mailman/listinfo/ext3-users
 
Old 02-13-2010, 08:20 PM
Christian Kujau
 
Default giis-ext4 undelete

On Sat, 13 Feb 2010 at 20:16, lakshmi pathi wrote:
> 1.Is your root file system (/dev/xvda1) is ext4?

My root filesystem is ext4 too, yet, but I tried to somehow convince
giis-ext4 to undeleted files from another device, mounted to /mnt/d1.

> 2.Have you added the directory /mnt/d1 using "giis-ext4 --install" option?

No, I did not do that. I have the the INSTALL file mentioning the "-i"
switch but I did not know what it meant with "which directories to
protect". I take it that giis-ext4 will be running as a cronjob, scanning
the "protected directories" and keeping a log of changes in there, to be
able to recover them later on?

> Because you need to configure it to protect important directories, in this
> case add /mnt/d1 before running "giis-ext4 -g".

I've tried that now. However, I cannot add /mnt/d1 (which is a ext4
mountpoint) to the list, as giis-ext4 will segfault then. When I add some
directory from the root filesystem, --install will run successfully.

Christian.


Script started on Sat Feb 13 21:59:34 2010
# df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg0-lv0 485M 35M 425M 8% /mnt/d1

# gdb /usr/local/src/giis-ext4/bin/giis-ext4
GNU gdb (GDB) 7.0.1-debian
Reading symbols from /usr/local/src/giis-ext4/bin/giis-ext4...(no debugging symbols found)...done.
(gdb) run -i
Starting program: /usr/local/src/giis-ext4/bin/giis-ext4 -i
[Thread debugging using libthread_db enabled]

Device Found : /dev/xvda1
giis : Taking snapshot of current File system
[New Thread 0x7ffff6fae910 (LWP 6592)]

[Thread 0x7ffff6fae910 (LWP 6592) exited]
giis-ext4:Installation begins..
giis-ext4: header table created
giis-ext4: file table created
What's the maximum directory depth?5

Enter the dirname name,that you would like to protect(Max. 7 directories)
Enter dirname:/mnt/d1

Press 1 to add/protect another directory else Press 0 to complete: 0

Check for newly files every 'auto update time' minutes.
Enter auto update time: 10

Parsing directory : /mnt/d1

Program received signal SIGSEGV, Segmentation fault.
strlen () at ../sysdeps/x86_64/strlen.S:31
31 ../sysdeps/x86_64/strlen.S: No such file or directory.
in ../sysdeps/x86_64/strlen.S
Current language: auto
The current source language is "auto; currently asm".
(gdb) bt
#0 strlen () at ../sysdeps/x86_64/strlen.S:31
#1 0x0000000000402134 in giis_ext4_sqlite_insert_record ()
#2 0x0000000000401c05 in giis_ext4_parse_dir ()
#3 0x0000000000401ad2 in giis_ext4_parse_dir ()
#4 0x0000000000403ae6 in giis_ext4_update_dirs ()
#5 0x0000000000401707 in main ()
(gdb) bt full
#0 strlen () at ../sysdeps/x86_64/strlen.S:31
No locals.
#1 0x0000000000402134 in giis_ext4_sqlite_insert_record ()
No symbol table info available.
#2 0x0000000000401c05 in giis_ext4_parse_dir ()
No symbol table info available.
#3 0x0000000000401ad2 in giis_ext4_parse_dir ()
No symbol table info available.
#4 0x0000000000403ae6 in giis_ext4_update_dirs ()
No symbol table info available.
#5 0x0000000000401707 in main ()
No symbol table info available.
(gdb) quit
A debugging session is active.

Inferior 1 [process 6589] will be killed.

Quit anyway? (y or n) y
# exit

Script done on Sat Feb 13 22:01:05 2010
--
BOFH excuse #283:

Lawn mower blade in your fan need sharpening

_______________________________________________
Ext3-users mailing list
Ext3-users@redhat.com
https://www.redhat.com/mailman/listinfo/ext3-users
 
Old 02-14-2010, 03:10 AM
lakshmi pathi
 
Default giis-ext4 undelete

My root filesystem is ext4 too, yet, but I tried to somehow convince

giis-ext4 to undeleted files from another device, mounted to /mnt/d1.

okay,mounting another ext4 device should be fine with giis-ext4.

No, I did not do that.
So that's reason for previous error message on "open_db".


giis-ext4 will be running as a cronjob, scanning

the "protected directories" and keeping a log of changes in there, to be

able to recover them later on?

giis-ext4 will run from cronjob from every "auto update time"
and scanning protected directories and keeps track of files meta-data (inode) but not actual file contents.(data blocks)

If something deleted and assuming the deleted files contents are not overwritten,yet. It recovers them using files meta-data.
So the disadvantage is , giis-ext4 won't recover files deleted before it's installation.



Program received signal SIGSEGV, Segmentation fault.

strlen () at ../sysdeps/x86_64/strlen.S:31

I haven't seen this error with Fedora/Ubuntu , I'll debug more about this and hopefully find a solution and post it here.

Thanks.

--
----
Cheers,

Lakshmipathi.G
www.giis.co.in

On Sun, Feb 14, 2010 at 2:50 AM, Christian Kujau <lists@nerdbynature.de> wrote:

On Sat, 13 Feb 2010 at 20:16, lakshmi pathi wrote:

> 1.Is your root file system (/dev/xvda1) is ext4?



My root filesystem is ext4 too, yet, but I tried to somehow convince

giis-ext4 to undeleted files from another device, mounted to /mnt/d1.



> 2.Have you added the directory /mnt/d1 using "giis-ext4 --install" option?



No, I did not do that. I have the the INSTALL file mentioning the "-i"

switch but I did not know what it meant with "which directories to

protect". I take it that giis-ext4 will be running as a cronjob, scanning

the "protected directories" and keeping a log of changes in there, to be

able to recover them later on?



> Because you need to configure it to protect important directories, in this

> case add /mnt/d1 before running "giis-ext4 -g".



I've tried that now. However, I cannot add /mnt/d1 (which is a ext4

mountpoint) to the list, as giis-ext4 will segfault then. When I add some

directory from the root filesystem, --install will run successfully.



Christian.





Script started on Sat Feb 13 21:59:34 2010

# df -h .

Filesystem * * * * * *Size *Used Avail Use% Mounted on

/dev/mapper/vg0-lv0 * 485M * 35M *425M * 8% /mnt/d1



# gdb /usr/local/src/giis-ext4/bin/giis-ext4

GNU gdb (GDB) 7.0.1-debian

Reading symbols from /usr/local/src/giis-ext4/bin/giis-ext4...(no debugging symbols found)...done.

(gdb) run -i

Starting program: /usr/local/src/giis-ext4/bin/giis-ext4 -i

[Thread debugging using libthread_db enabled]



*Device Found : /dev/xvda1

*giis : Taking snapshot of current File system

[New Thread 0x7ffff6fae910 (LWP 6592)]



[Thread 0x7ffff6fae910 (LWP 6592) exited]

*giis-ext4:Installation begins..

*giis-ext4: header table created

*giis-ext4: file table created

*What's the maximum directory depth?5



*Enter the dirname name,that you would like to protect(Max. 7 directories)

*Enter dirname:/mnt/d1



*Press 1 to add/protect another directory else Press 0 to complete: 0



*Check for newly files every 'auto update time' minutes.

Enter auto update time: 10



*Parsing directory *: /mnt/d1



Program received signal SIGSEGV, Segmentation fault.

strlen () at ../sysdeps/x86_64/strlen.S:31

31 * * *../sysdeps/x86_64/strlen.S: No such file or directory.

* * * *in ../sysdeps/x86_64/strlen.S

Current language: *auto

The current source language is "auto; currently asm".

(gdb) bt

#0 *strlen () at ../sysdeps/x86_64/strlen.S:31

#1 *0x0000000000402134 in giis_ext4_sqlite_insert_record ()

#2 *0x0000000000401c05 in giis_ext4_parse_dir ()

#3 *0x0000000000401ad2 in giis_ext4_parse_dir ()

#4 *0x0000000000403ae6 in giis_ext4_update_dirs ()

#5 *0x0000000000401707 in main ()

(gdb) bt full

#0 *strlen () at ../sysdeps/x86_64/strlen.S:31

No locals.

#1 *0x0000000000402134 in giis_ext4_sqlite_insert_record ()

No symbol table info available.

#2 *0x0000000000401c05 in giis_ext4_parse_dir ()

No symbol table info available.

#3 *0x0000000000401ad2 in giis_ext4_parse_dir ()

No symbol table info available.

#4 *0x0000000000403ae6 in giis_ext4_update_dirs ()

No symbol table info available.

#5 *0x0000000000401707 in main ()

No symbol table info available.

(gdb) quit

A debugging session is active.



* * * *Inferior 1 [process 6589] will be killed.



Quit anyway? (y or n) y

# exit



Script done on Sat Feb 13 22:01:05 2010

--

BOFH excuse #283:



Lawn mower blade in your fan need sharpening





_______________________________________________
Ext3-users mailing list
Ext3-users@redhat.com
https://www.redhat.com/mailman/listinfo/ext3-users
 
Old 02-15-2010, 08:55 PM
"Pavel Alexeev (aka Pahan-Hubbitus)"
 
Default giis-ext4 undelete

It is part of giis or should be packaged separately?

Giis is not in Fedora yet. Upstream author ask there who can package
it, I volunteered, but when work had be almost done author stop answer
on my emails...



On 11.02.2010 17:29, lakshmi pathi wrote:
Hi all,

Here it's http://www.giis.co.in/giis/
, ext4 undelete tool.giis-ext4

uses ext2fs lib and sqlite,thus provides better/best performance than

giis for ext3.


giis-ext4 has less than 1000 LOC which is almost 5 times less
original

than giis and *giis-ext4 took just around 6 weekends (approx 15

days *, 2hrs / day) thanks to ext2fs library



Feedback/comments on giis-ext4 are most welcome.


--

----

Cheers,

Lakshmipathi.G

www.giis.co.in








--
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
 
Old 02-16-2010, 06:43 PM
lakshmi pathi
 
Default giis-ext4 undelete

Hi Pavel,
Hope you are doing well.I found your reply.Sorry , I think ,there is miscommunication/misunderstanding. I think I have sent you below mail , but not sure about receiving replies from you. So I thought , you are busy with other activities and didn't mail you further.


This can be packaged separately as "giis-ext4" , because it uses ext2lib and sqlite3. And also I have followed your suggestion to use /usr/local instead of /


--
----
Cheers,
Lakshmipathi.G

www.giis.co.in


++++++++++++++++
From: lakshmi pathi <lakshmipathi.g@gmail.com>
Date: Mon, Mar 2, 2009 at 11:31 AM

Subject: Hi
To: forum@ru.bir.ru


Hi,
Busy with your work?Had free time to check config file setup of tool
(giis4.4 which sent to you)?
If you are busy,please take your own time to work with open source

source activites,
i'm not in any hurry.

Cheers,
Lakshmipathi.G


++++++++++++++++++++++



------------------------------



Date: Tue, 16 Feb 2010 00:55:37 +0300

From: "Pavel Alexeev (aka Pahan-Hubbitus)" <forum@hubbitus.com.ru>

Subject: Re: giis-ext4 undelete

To: Development discussions related to Fedora

* * * *<devel@lists.fedoraproject.org>

Message-ID: <4B79C2D9.3050901@ru.bir.ru>

Content-Type: text/plain; charset="iso-8859-1"



It is part of giis or should be packaged separately?

Giis is not in Fedora yet. Upstream author ask there who can package it,

I volunteered, but when work had be almost done author stop answer on my

emails...



On 11.02.2010 17:29, lakshmi pathi wrote:

> Hi all,

> Here it's http://www.giis.co.in/giis/

> <http://www.google.com/url?sa=D&q=http://www.giis.co.in/giis/&usg=AFQjCNF-HqYzAJyM648v-oepVtmcFeB50A>


> , ext4 undelete tool.giis-ext4

> uses ext2fs lib and sqlite,thus provides better/best performance than

> giis for ext3.

>

> giis-ext4 has less than 1000 LOC which is almost 5 times less original

> than giis and *giis-ext4 took just around 6 weekends (approx 15

> days *, 2hrs / day) thanks to ext2fs library

>

> Feedback/comments on giis-ext4 are most welcome.

>

> --

> ----

> Cheers,

> Lakshmipathi.G

> www.giis.co.in







--
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
 

Thread Tools




All times are GMT. The time now is 09:06 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org