plfs: better container deletion

Defer container deletion until last moment so that if anything fails in the
middle, the container informantion remains.

Change-Id: I035d892b6e344ba5faa94b2184c5327153e84128
Implement small file mode for PLFS.

Small file aggregation mode can enable aggregation on both data
and metadata which can greatly improve the performance for small
IOs such as creating lots of files and appending data to them.
Merge pull request #1 from bergwolf/container_delete_for_qa

plfs: better container deletion
Merge pull request #169 from zhang-jingwang/small_file

Small file
fixed the plfs: prefix condition for the core library, added a function is_plfs_path that determines if a path would be inside a plfs mount, and renamed is_plfs_file to is_container_file (while isolating it to container_internals.cpp)
temporary fix for the statvfs warning we often see when linking against plfs, would like to get #define HAVE_CONFIG_H working, so far no luck, Also redid is_plfs_path to return 1 if True, 0 otherwise
fixed a comment in plfs.h about is_plfs_path
plfs: defer data/index dropping creation

In open for write, don't create empty data and index files.
Only create them in the first write. Hostdir creation is also
deferred to the first write when possible.

A configurable is added in plfsrc to control the logic.
Add "lazy_droppings 0" to plfsrc to disable the feature.
Merge pull request #177 from bergwolf/container_empty_files_rebased

plfs: defer data/index dropping creation
Merge branch 'small_file' into small_file_fix_paths
Fixed use of uninitialized memory
removed config.h from plfs.h since we don't want it exposed on the api. The statvfs warning will come back, but I have a fix in mind for cmake
Merge pull request #193 from agtorre/master

Merging small file into master to tag 2.3.1rc1
added an extra header to LogMessage.h to make it compatible with gcc 4.7.2
Merge pull request #194 from agtorre/master

added an extra header to LogMessage.h to make it compatible with gcc 4.7.2
Add virtual destructor for IOSHandle and IOSDirHandle.

The destructor should be virtual so that when a base pointer is
deleted, the correct destructor can be called.
Add prefix to metalinks in order to compare them correctly.

According to line 832: prefix should be included in metalinks.
So when we get the content of the links, we should use exactly
the same way to construct the string 'tmp' as 'shadow'. Otherwise
the comparison is incorrect.
Add PLFS source code directory to the front of LDFLAGS.

Otherwise old plfs library in the system might break the build
process.
Merge pull request #195 from zhang-jingwang/master

Two small fixes for IOStore and metalink.
Fix an assertion due to wrong argument in GlibStore

We should pass flags instead of mode to the function
flags_to_restrict_mode().