Linux SoftwareSystemFilesystemsFL-COW 0.6

FL-COW 0.6


The library born to solve a problem I had when working with the Linux Kernel archives that I use to replicate using hard links
Developer:   Davide Libenzi
      more software by author →
Price:  0.00
License:   GPL (GNU General Public License)
File size:   298K
Language:   
OS:   
Rating:   0 /5 (0 votes)
Your vote:  
enlarge screenshot


The library born to solve a problem I had when working with the Linux Kernel archives that I use to replicate using hard links. Replicating archives with hard links is both fast and space saving, and it helped me a lot in speeding up my operations when working on the kernel source.

A recent Arch's mailing list thread that suggested that use of hard links to create archive cached revisions pushed me to write the FL-COW library. What is the problem with hard links when, for example, I'm working with kernel sources? The problem is that I do a:

$ cp -al linux-2.6-test6 linux-2.6-test6.vm-fix

This command replicate at light speed the vanilla (Linus) archive into an archive I can start hacking on. The problem is that I have to manually remember to break hard links on files I start working on, otherwise even the original copy get modified.

This might break because I forgot doing so and it might also break because other tools might eventually touch file they were not supposed to touch. If it happens that I forget to decouple a file hard link, the next command:

$ diff -Nru linux-2.6-test6 linux-2.6-test6.vm-fix

will skip all changes done on the file I forgot, because my changes has been applied to the original file also. The library works by intercepting all file open operations happening inside a configured path list, and by decoupling the hard link with a COW if a write operation is requested.

The library is installed using the environment variable LD_PRELOAD and in this way it is able to hook glibc open(2) functions and it is able to perform the COW when necessary. The environment variable FLCOW_PATH control which paths should be subject to COWing. The logic that the library follow to know if a file should be COWed is the following:

Is the file being opened with O_RDWR or O_WRONLY modes?
Is the file inside one of the paths listed inside the FLCOW_PATH environment variable?
Is the file being opened a regular file?
Is the (struct stat)->st_nlink variable greater than one?

If all those answers are yes, the file is COWed by leaving the calling application with a non hard linked version of the file. To setup the library you must start with building it doing a (for example):

$ ./configure --prefix=/usr
$ make
$ make check
$ su
# make install

If all those steps complete correctly you will have your library installed in /usr/lib/libflcow.so that is ready for use. I use to set the LD_PRELOAD inside my .bashrc file so that I am sure that no tool will screw up my hard-linked archives.

This is the relevant section of my .bashrc file:

export LD_PRELOAD=/usr/lib/libflcow.so:$LD_PRELOAD
export FLCOW_PATH=/usr/src/:/home/davide/arch-archives/
tags the file  the library  hard links  environment variable  the problem  flcow path  file being  being opened  hard linked  bashrc file  lib libflcow  usr lib  all those  

Download FL-COW 0.6


 http://www.xmailserver.org/fl-cow-0.6.tar.gz


Authors software

Portable Coroutine Library 1.6 (by Davide Libenzi)
Portable Coroutine Library (PCL) implements the low level functionality for coroutines

LibXDiff 0.22 (by Davide Libenzi)
LibXDiff implements basic and yet complete functionalities to create file differences/patches to both binary and text files.

The l

LibSysCTr 0.2 (by Davide Libenzi)
LibSysCTr is a utility library that can be used to intercept system call functions on a Linux system

ussp-push 0.9 (by Davide Libenzi)
ussp-push application is a OBEX object pusher for Linux, using the BlueZ BlueTooth stack

XMail 1.23 (by Davide Libenzi)
XMail is an Internet and intranet mail server featuring an SMTP server, POP3 server, finger server, multiple domains, no need for use


Similar software

FL-COW 0.6 (by Davide Libenzi)
The library born to solve a problem I had when working with the Linux Kernel archives that I use to replicate using hard links

Alternate Password Library 1.2.0 (by Steve Slaven)
Alternate Password Library (libaltpw) adds alternate password support dynamically with LD_PRELOAD or by linking the shared library wi

Zen Garden 0.6.92 (by Dem)
zengarden is a tool that watches over the installation and building of source archives

libband 0.01 (by Andrea)
LibBand is a simple library wrapper written in assembly and C (but I plan to rewrite everything in C) useful if you want to limit the

Bky 1.0.0 (by Angel Ortega)
Bky is a minimalistic, distributed Version Control System/Source Code Management tool

Sharefuzz 1.0 (by Dave Aitel)
Sharefuzz is the original environment variable fuzzer for Unixes that support loading a shared library.

Sharefuzz is a quick and d

syrep 0.9 (by Mezcalero)
syrep is a generic file repository synchronization tool

HTML::Links::Localize 0.2.4 (by Shlomi Fish)
HTML::Links::Localize is a Perl module that can convert HTML Files to be used on a hard disk.

SYNOPSIS

use HTML::Links::Loc

fEncH 3.1 (by Filip Brcic)
This is a fast and simple, yet hard to crack encryption program

FauBackup 0.5.9 (by Martin Waitz)
FauBackup uses a filesystem on a hard drive for incremental and full backups


Other software in this category

Aegis 4.22 (by Peter Miller)
Aegis is a transaction-based software configuration management system.

Aegis project provides a framework within which a team of dev

Davenport 0.9.10 (by eglass1)
Davenport is a servlet which provides a WebDAV gateway to SMB shared resources

xdiskusage 1.48 (by Bill Spitzak)
xdiskusage is a user-friendly program to show you what is using up all your disk space.

It is based on the design of xdu written b

DirsSync 2.1 RC2 (by vincent_delft)
This application has been written in Python using the wonderful wxPython libraries.

You can use it to compare a local directory (a

ext3 0.0.7a (by Stephen Tweedie)
ext3 adds journaling filesystem capabilities to ext2fs.

What is journaling?

It means you don't have to fsck after a crash

    search


Featured Software

jEdit 4.3 pre8
jEdit is an Open Source text editor written in Java

Opera 9.02
Surf the Internet in a safer, faster, and easier way with Opera browser

GNU Aspell 0.60.4
GNU Aspell is a Free and Open Source spell checker designed to eventually replace Ispell


Subscribe in Rojo
Google Reader
Add to My Yahoo!

Add to My AOL
Subscribe with Bloglines
Subscribe in NewsGator Online
Add 'nixbit linux software' to Newsburst from CNET News.com
del.icio.us nixbit linux software


Top tags