extern int _sysio_native_init();
+static int mnt_retry = 0;
+
char *lustre_path = NULL;
void __liblustre_setup_(void)
char *target = NULL;
char *lustre_driver = "lustre";
unsigned mntflgs = 0;
- int err;
+ int err, count;
lustre_path = getenv("LIBLUSTRE_MOUNT_POINT");
if (!lustre_path) {
lustre_path = "/mnt/lustre";
}
+ target = getenv("LIBLUSTRE_MOUNT_RETRY");
+ if (target) {
+ mnt_retry = atoi(target);
+ if (mnt_retry < 0)
+ mnt_retry = 0;
+ }
+
/* mount target */
target = getenv("LIBLUSTRE_MOUNT_TARGET");
if (!target) {
exit(1);
#endif /* INIT_SYSIO */
- err = mount(target, lustre_path, lustre_driver, mntflgs, NULL);
+ count = mnt_retry;
+ do {
+ err = mount(target, lustre_path, lustre_driver, mntflgs, NULL);
+ if (err && mnt_retry && (-- count)) {
+ fprintf(stderr, "Lustre mount failed: %s. "
+ "Will retry %d more times\n",
+ strerror(errno), mnt_retry - count );
+ sleep(2);
+ }
+ } while (err && count > 0);
if (err) {
fprintf(stderr, "Lustre mount failed: %s\n", strerror(errno));
exit(1);
MDS_MOUNT_OPTS=${MDS_MOUNT_OPTS/#,/-o } \
$SETUP
export LIBLUSTRE_MOUNT_POINT=$MOUNT2
+ export LIBLUSTRE_MOUNT_RETRY=5
export LIBLUSTRE_MOUNT_TARGET=$MGSNID:/$FSNAME
export LIBLUSTRE_TIMEOUT=`lctl get_param -n timeout`
#export LIBLUSTRE_DEBUG_MASK=`lctl get_param -n debug`