I have still problems with diskless assignments. I create them
with:

   ($rc, $res) = $hdl->assign($nodename, $volname, { diskless => 'true' });

which works, but I need to wait until the device is accessible. I currently do
this with a clumsy hack using 'dd':

    # wait until device is acessitble
    my $print_warning = 1;
    my $max_wait_time = 20;
    for (my $i = 0;; $i++) {
        last if system("dd if=$path of=/dev/null bs=512 count=1 >/dev/null 
2>&1") == 0;
        die "aborting wait - device '$path' still not readable\n" if $i >
$max_wait_time;
        print "waiting for device '$path' to become ready...\n" if 
$print_warning;
        $print_warning = 0;
        sleep(1);
    }

This works, but Philipp told me to do it by querying assignment status.
So I tried this:

    # wait until device is acessible
    my $print_warning = 1;
    my $max_wait_time = 20;
    for (my $i = 0;; $i++) {
        # correct, but does not work?
        ($rc, $res) = $hdl->list_assignments([$nodename], [$volname], 0, {
"cstate:deploy" => "true" }, []);
        check_drbd_res($rc);
        my $len = scalar(@$res);
        last if $len > 0;
        die "aborting wait - device '$path' still not readable\n" if $i >
$max_wait_time;
        print "waiting for device '$path' to become ready...\n" if 
$print_warning;
        $print_warning = 0;
        sleep(1);
    }

But it does not work. Seems I get cstate:deploy" => "true", but
the device is not ready to use?

_______________________________________________
drbd-user mailing list
[email protected]
http://lists.linbit.com/mailman/listinfo/drbd-user

Reply via email to