Save changelog open parameters since we reuse them later.

Signed-off-by: Thomas Leibovici <thomas.leibovici@cea.fr>
Reorganize cl_get_one() to support filesystem unmounts/remounts.

Previously, unmounting the filesystem would stop the changelog
reader, leaving Robinhood running with no purpose.
Now, the thread will stop only in --once mode. Otherwise it will
regularly try to re-open the filesystem.

Signed-off-by: Thomas Leibovici <thomas.leibovici@cea.fr>
migration: fix skipped and error counters.

The skipped and errors counters were reinitialized for each loop
of the migration pass.
migration: suspend current migration if error count and error rate
are too high.

New migration parameters suspend_error_pct and suspend_error_min
to control this.
add migration policy and lru_sort_attr tests
Fix migration policies based on last_archive.
migration: improved (smooth) provisionning of migration queue.
tests: added tests for suspend_error_count/pct parameters.
Fix minor compile warnings.
lustre_tools.c: fix stack overflow when handling files with wide stripes.

As reported by James Silva (LLNL), getstripe ioctl overwrite the stack
if the buffer argument is too small and before returning -EOVERFLOW.
So the caller has no chance to recover when getting EOVERFLOW,
as its stack is scratched...

IOC_MDC_GETFILESTRIPE:

>------->-------if (copy_to_user(lump, lmm, lmmsize)) {
>------->------->-------if (copy_to_user(lump, lmm, sizeof(*lump)))
                                GOTO(out_req, rc = -EFAULT);
                        rc = -EOVERFLOW;
                }

The solution is to allocate a large enough buffer on the heap:
sizeof(struct lov_user_md_v3) + (LOV_MAX_STRIPE_COUNT * sizeof(struct lov_user_ost_data_v1)