]> Pileus Git - ~andy/linux/blobdiff - fs/gfs2/super.c
[UDP(-Lite)]: consolidate v4 and v6 get|setsockopt code
[~andy/linux] / fs / gfs2 / super.c
index 48fd4cb49c1e434cc7080ec67d64001adf6481f9..6a78b1b32e25597fac6a2ef0e0f13d7a2c3be78e 100644 (file)
@@ -4,7 +4,7 @@
  *
  * This copyrighted material is made available to anyone wishing to use,
  * modify, copy, or redistribute it subject to the terms and conditions
- * of the GNU General Public License v.2.
+ * of the GNU General Public License version 2.
  */
 
 #include <linux/sched.h>
 #include <linux/crc32.h>
 #include <linux/gfs2_ondisk.h>
 #include <linux/bio.h>
+#include <linux/lm_interface.h>
 
 #include "gfs2.h"
-#include "lm_interface.h"
 #include "incore.h"
 #include "bmap.h"
 #include "dir.h"
-#include "format.h"
 #include "glock.h"
 #include "glops.h"
 #include "inode.h"
 #include "trans.h"
 #include "util.h"
 
+static const u32 gfs2_old_fs_formats[] = {
+        0
+};
+
+static const u32 gfs2_old_multihost_formats[] = {
+        0
+};
+
 /**
  * gfs2_tune_init - Fill a gfs2_tune structure with default values
  * @gt: tune
@@ -167,11 +174,13 @@ static int end_bio_io_page(struct bio *bio, unsigned int bytes_done, int error)
 
        if (!error)
                SetPageUptodate(page);
+       else
+               printk(KERN_WARNING "gfs2: error %d reading superblock\n", error);
        unlock_page(page);
        return 0;
 }
 
-static struct page *gfs2_read_super(struct super_block *sb, sector_t sector)
+struct page *gfs2_read_super(struct super_block *sb, sector_t sector)
 {
        struct page *page;
        struct bio *bio;
@@ -196,7 +205,7 @@ static struct page *gfs2_read_super(struct super_block *sb, sector_t sector)
 
        bio->bi_end_io = end_bio_io_page;
        bio->bi_private = page;
-       submit_bio(READ | BIO_RW_SYNC, bio);
+       submit_bio(READ_SYNC | (1 << BIO_RW_META), bio);
        wait_on_page_locked(page);
        bio_put(bio);
        if (!PageUptodate(page)) {
@@ -216,8 +225,8 @@ static struct page *gfs2_read_super(struct super_block *sb, sector_t sector)
 
 int gfs2_read_sb(struct gfs2_sbd *sdp, struct gfs2_glock *gl, int silent)
 {
-       uint32_t hash_blocks, ind_blocks, leaf_blocks;
-       uint32_t tmp_blocks;
+       u32 hash_blocks, ind_blocks, leaf_blocks;
+       u32 tmp_blocks;
        unsigned int x;
        int error;
        struct page *page;
@@ -242,20 +251,20 @@ int gfs2_read_sb(struct gfs2_sbd *sdp, struct gfs2_glock *gl, int silent)
                               GFS2_BASIC_BLOCK_SHIFT;
        sdp->sd_fsb2bb = 1 << sdp->sd_fsb2bb_shift;
        sdp->sd_diptrs = (sdp->sd_sb.sb_bsize -
-                         sizeof(struct gfs2_dinode)) / sizeof(uint64_t);
+                         sizeof(struct gfs2_dinode)) / sizeof(u64);
        sdp->sd_inptrs = (sdp->sd_sb.sb_bsize -
-                         sizeof(struct gfs2_meta_header)) / sizeof(uint64_t);
+                         sizeof(struct gfs2_meta_header)) / sizeof(u64);
        sdp->sd_jbsize = sdp->sd_sb.sb_bsize - sizeof(struct gfs2_meta_header);
        sdp->sd_hash_bsize = sdp->sd_sb.sb_bsize / 2;
        sdp->sd_hash_bsize_shift = sdp->sd_sb.sb_bsize_shift - 1;
-       sdp->sd_hash_ptrs = sdp->sd_hash_bsize / sizeof(uint64_t);
+       sdp->sd_hash_ptrs = sdp->sd_hash_bsize / sizeof(u64);
        sdp->sd_qc_per_block = (sdp->sd_sb.sb_bsize -
                                sizeof(struct gfs2_meta_header)) /
                                sizeof(struct gfs2_quota_change);
 
        /* Compute maximum reservation required to add a entry to a directory */
 
-       hash_blocks = DIV_ROUND_UP(sizeof(uint64_t) * (1 << GFS2_DIR_MAX_DEPTH),
+       hash_blocks = DIV_ROUND_UP(sizeof(u64) * (1 << GFS2_DIR_MAX_DEPTH),
                             sdp->sd_jbsize);
 
        ind_blocks = 0;
@@ -272,8 +281,8 @@ int gfs2_read_sb(struct gfs2_sbd *sdp, struct gfs2_glock *gl, int silent)
                                sizeof(struct gfs2_dinode);
        sdp->sd_heightsize[1] = sdp->sd_sb.sb_bsize * sdp->sd_diptrs;
        for (x = 2;; x++) {
-               uint64_t space, d;
-               uint32_t m;
+               u64 space, d;
+               u32 m;
 
                space = sdp->sd_heightsize[x - 1] * sdp->sd_inptrs;
                d = space;
@@ -290,8 +299,8 @@ int gfs2_read_sb(struct gfs2_sbd *sdp, struct gfs2_glock *gl, int silent)
                                 sizeof(struct gfs2_dinode);
        sdp->sd_jheightsize[1] = sdp->sd_jbsize * sdp->sd_diptrs;
        for (x = 2;; x++) {
-               uint64_t space, d;
-               uint32_t m;
+               u64 space, d;
+               u32 m;
 
                space = sdp->sd_jheightsize[x - 1] * sdp->sd_inptrs;
                d = space;
@@ -526,7 +535,7 @@ int gfs2_make_fs_rw(struct gfs2_sbd *sdp)
 
        error = gfs2_quota_init(sdp);
        if (error)
-               goto fail_unlinked;
+               goto fail;
 
        set_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags);
 
@@ -534,9 +543,7 @@ int gfs2_make_fs_rw(struct gfs2_sbd *sdp)
 
        return 0;
 
- fail_unlinked:
-
- fail:
+fail:
        t_gh.gh_flags |= GL_NOCACHE;
        gfs2_glock_dq_uninit(&t_gh);
 
@@ -616,17 +623,15 @@ int gfs2_statfs_init(struct gfs2_sbd *sdp)
                brelse(l_bh);
        }
 
- out_m_bh:
+out_m_bh:
        brelse(m_bh);
-
- out:
+out:
        gfs2_glock_dq_uninit(&gh);
-
        return 0;
 }
 
-void gfs2_statfs_change(struct gfs2_sbd *sdp, int64_t total, int64_t free,
-                       int64_t dinodes)
+void gfs2_statfs_change(struct gfs2_sbd *sdp, s64 total, s64 free,
+                       s64 dinodes)
 {
        struct gfs2_inode *l_ip = GFS2_I(sdp->sd_sc_inode);
        struct gfs2_statfs_change *l_sc = &sdp->sd_statfs_local;
@@ -645,8 +650,7 @@ void gfs2_statfs_change(struct gfs2_sbd *sdp, int64_t total, int64_t free,
        l_sc->sc_total += total;
        l_sc->sc_free += free;
        l_sc->sc_dinodes += dinodes;
-       gfs2_statfs_change_out(l_sc, l_bh->b_data +
-                              sizeof(struct gfs2_dinode));     
+       gfs2_statfs_change_out(l_sc, l_bh->b_data + sizeof(struct gfs2_dinode));
        spin_unlock(&sdp->sd_statfs_spin);
 
        brelse(l_bh);
@@ -673,7 +677,7 @@ int gfs2_statfs_sync(struct gfs2_sbd *sdp)
 
        spin_lock(&sdp->sd_statfs_spin);
        gfs2_statfs_change_in(m_sc, m_bh->b_data +
-                             sizeof(struct gfs2_dinode));      
+                             sizeof(struct gfs2_dinode));
        if (!l_sc->sc_total && !l_sc->sc_free && !l_sc->sc_dinodes) {
                spin_unlock(&sdp->sd_statfs_spin);
                goto out_bh;
@@ -706,15 +710,12 @@ int gfs2_statfs_sync(struct gfs2_sbd *sdp)
 
        gfs2_trans_end(sdp);
 
- out_bh2:
+out_bh2:
        brelse(l_bh);
-
- out_bh:
+out_bh:
        brelse(m_bh);
-
- out:
+out:
        gfs2_glock_dq_uninit(&gh);
-
        return error;
 }
 
@@ -844,9 +845,8 @@ int gfs2_statfs_slow(struct gfs2_sbd *sdp, struct gfs2_statfs_change *sc)
 
        gfs2_glock_dq_uninit(&ri_gh);
 
- out:
+out:
        kfree(gha);
-
        return error;
 }
 
@@ -915,7 +915,7 @@ static int gfs2_lock_fs_check_clean(struct gfs2_sbd *sdp,
        if (error)
                gfs2_glock_dq_uninit(t_gh);
 
- out:
+out:
        while (!list_empty(&list)) {
                lfcc = list_entry(list.next, struct lfcc, list);
                list_del(&lfcc->list);
@@ -923,7 +923,6 @@ static int gfs2_lock_fs_check_clean(struct gfs2_sbd *sdp,
                kfree(lfcc);
        }
        gfs2_glock_dq_uninit(&ji_gh);
-
        return error;
 }