]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
kclient: respond to control-c on slow mount
authorSage Weil <sage@newdream.net>
Thu, 16 Jul 2009 23:44:07 +0000 (16:44 -0700)
committerSage Weil <sage@newdream.net>
Fri, 17 Jul 2009 20:53:38 +0000 (13:53 -0700)
src/kernel/super.c

index b6dc6e1f3e43593299d0ac606614521ced20bbcb..8e2bd41e3325c750a94d1371995647f15eef2ef4 100644 (file)
@@ -773,7 +773,7 @@ static int ceph_mount(struct ceph_client *client, struct vfsmount *mnt,
        }
 
        /* send mount request, and wait for mon, mds, and osd maps */
-       while (!have_all_maps(client)) {
+       while (!have_all_maps(client) && !client->mount_err) {
                err = -EIO;
                if (timeout && time_after_eq(jiffies, started + timeout))
                        goto out;
@@ -800,7 +800,7 @@ static int ceph_mount(struct ceph_client *client, struct vfsmount *mnt,
                err = wait_event_interruptible_timeout(client->mount_wq,
                               client->mount_err || have_all_maps(client),
                               request_interval);
-               if (err == -EINTR)
+               if (err == -EINTR || err == -ERESTARTSYS)
                        goto out;
                if (client->mount_err) {
                        err = client->mount_err;