]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - fs/gfs2/sys.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
[mv-sheeva.git] / fs / gfs2 / sys.c
index 443cabcfcd23f834f64bc800c6c4cd518a0e58db..d33172c291bad63064dba6eebdddc8daba16b3f6 100644 (file)
@@ -298,7 +298,7 @@ static ssize_t block_show(struct gfs2_sbd *sdp, char *buf)
        ssize_t ret;
        int val = 0;
 
-       if (test_bit(DFL_BLOCK_LOCKS, &ls->ls_flags))
+       if (test_bit(DFL_BLOCK_LOCKS, &ls->ls_recover_flags))
                val = 1;
        ret = sprintf(buf, "%d\n", val);
        return ret;
@@ -313,9 +313,9 @@ static ssize_t block_store(struct gfs2_sbd *sdp, const char *buf, size_t len)
        val = simple_strtol(buf, NULL, 0);
 
        if (val == 1)
-               set_bit(DFL_BLOCK_LOCKS, &ls->ls_flags);
+               set_bit(DFL_BLOCK_LOCKS, &ls->ls_recover_flags);
        else if (val == 0) {
-               clear_bit(DFL_BLOCK_LOCKS, &ls->ls_flags);
+               clear_bit(DFL_BLOCK_LOCKS, &ls->ls_recover_flags);
                smp_mb__after_clear_bit();
                gfs2_glock_thaw(sdp);
        } else {
@@ -350,8 +350,8 @@ static ssize_t lkfirst_store(struct gfs2_sbd *sdp, const char *buf, size_t len)
                goto out;
        if (sdp->sd_lockstruct.ls_ops->lm_mount == NULL)
                goto out;
-        sdp->sd_lockstruct.ls_first = first;
-        rv = 0;
+       sdp->sd_lockstruct.ls_first = first;
+       rv = 0;
 out:
         spin_unlock(&sdp->sd_jindex_spin);
         return rv ? rv : len;
@@ -360,19 +360,14 @@ out:
 static ssize_t first_done_show(struct gfs2_sbd *sdp, char *buf)
 {
        struct lm_lockstruct *ls = &sdp->sd_lockstruct;
-       return sprintf(buf, "%d\n", ls->ls_first_done);
+       return sprintf(buf, "%d\n", !!test_bit(DFL_FIRST_MOUNT_DONE, &ls->ls_recover_flags));
 }
 
-static ssize_t recover_store(struct gfs2_sbd *sdp, const char *buf, size_t len)
+int gfs2_recover_set(struct gfs2_sbd *sdp, unsigned jid)
 {
-       unsigned jid;
        struct gfs2_jdesc *jd;
        int rv;
 
-       rv = sscanf(buf, "%u", &jid);
-       if (rv != 1)
-               return -EINVAL;
-
        rv = -ESHUTDOWN;
        spin_lock(&sdp->sd_jindex_spin);
        if (test_bit(SDF_NORECOVERY, &sdp->sd_flags))
@@ -389,6 +384,20 @@ static ssize_t recover_store(struct gfs2_sbd *sdp, const char *buf, size_t len)
        }
 out:
        spin_unlock(&sdp->sd_jindex_spin);
+       return rv;
+}
+
+static ssize_t recover_store(struct gfs2_sbd *sdp, const char *buf, size_t len)
+{
+       unsigned jid;
+       int rv;
+
+       rv = sscanf(buf, "%u", &jid);
+       if (rv != 1)
+               return -EINVAL;
+
+       rv = gfs2_recover_set(sdp, jid);
+
        return rv ? rv : len;
 }