]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/reiserfs/super.c
proc: convert /proc/$PID/hardwall to seq_file interface
[karo-tx-linux.git] / fs / reiserfs / super.c
index e26ec564758f8f4599cfe29f99a4c187d7e6b4b8..709ea92d716f03ca78b7e45b6f2677ac50b3ba1d 100644 (file)
@@ -15,7 +15,7 @@
 #include <linux/slab.h>
 #include <linux/vmalloc.h>
 #include <linux/time.h>
-#include <asm/uaccess.h>
+#include <linux/uaccess.h>
 #include "reiserfs.h"
 #include "acl.h"
 #include "xattr.h"
@@ -331,7 +331,7 @@ static int finish_unfinished(struct super_block *s)
                         * not completed truncate found. New size was
                         * committed together with "save" link
                         */
-                       reiserfs_info(s, "Truncating %k to %Ld ..",
+                       reiserfs_info(s, "Truncating %k to %lld ..",
                                      INODE_PKEY(inode), inode->i_size);
 
                        /* don't update modification time */
@@ -1577,7 +1577,7 @@ static int read_super_block(struct super_block *s, int offset)
        rs = (struct reiserfs_super_block *)bh->b_data;
        if (sb_blocksize(rs) != s->s_blocksize) {
                reiserfs_warning(s, "sh-2011", "can't find a reiserfs "
-                                "filesystem on (dev %s, block %Lu, size %lu)",
+                                "filesystem on (dev %s, block %llu, size %lu)",
                                 s->s_id,
                                 (unsigned long long)bh->b_blocknr,
                                 s->s_blocksize);
@@ -1668,71 +1668,60 @@ static __u32 find_hash_out(struct super_block *s)
        struct cpu_key key;
        INITIALIZE_PATH(path);
        struct reiserfs_dir_entry de;
+       struct reiserfs_de_head *deh;
        __u32 hash = DEFAULT_HASH;
+       __u32 deh_hashval, teahash, r5hash, yurahash;
 
        inode = s->s_root->d_inode;
 
-       do {                    /* Some serious "goto"-hater was there ;) */
-               u32 teahash, r5hash, yurahash;
+       make_cpu_key(&key, inode, ~0, TYPE_DIRENTRY, 3);
+       retval = search_by_entry_key(s, &key, &path, &de);
+       if (retval == IO_ERROR) {
+               pathrelse(&path);
+               return UNSET_HASH;
+       }
+       if (retval == NAME_NOT_FOUND)
+               de.de_entry_num--;
 
-               make_cpu_key(&key, inode, ~0, TYPE_DIRENTRY, 3);
-               retval = search_by_entry_key(s, &key, &path, &de);
-               if (retval == IO_ERROR) {
-                       pathrelse(&path);
-                       return UNSET_HASH;
-               }
-               if (retval == NAME_NOT_FOUND)
-                       de.de_entry_num--;
-               set_de_name_and_namelen(&de);
-               if (deh_offset(&(de.de_deh[de.de_entry_num])) == DOT_DOT_OFFSET) {
-                       /* allow override in this case */
-                       if (reiserfs_rupasov_hash(s)) {
-                               hash = YURA_HASH;
-                       }
-                       reiserfs_info(s, "FS seems to be empty, autodetect "
-                                        "is using the default hash\n");
-                       break;
-               }
-               r5hash = GET_HASH_VALUE(r5_hash(de.de_name, de.de_namelen));
-               teahash = GET_HASH_VALUE(keyed_hash(de.de_name, de.de_namelen));
-               yurahash = GET_HASH_VALUE(yura_hash(de.de_name, de.de_namelen));
-               if (((teahash == r5hash)
-                    &&
-                    (GET_HASH_VALUE(deh_offset(&(de.de_deh[de.de_entry_num])))
-                     == r5hash)) || ((teahash == yurahash)
-                                     && (yurahash ==
-                                         GET_HASH_VALUE(deh_offset
-                                                        (&
-                                                         (de.
-                                                          de_deh[de.
-                                                                 de_entry_num])))))
-                   || ((r5hash == yurahash)
-                       && (yurahash ==
-                           GET_HASH_VALUE(deh_offset
-                                          (&(de.de_deh[de.de_entry_num])))))) {
-                       reiserfs_warning(s, "reiserfs-2506", "Unable to "
-                                        "automatically detect hash function. "
-                                        "Please mount with -o "
-                                        "hash={tea,rupasov,r5}");
-                       hash = UNSET_HASH;
-                       break;
-               }
-               if (GET_HASH_VALUE(deh_offset(&(de.de_deh[de.de_entry_num]))) ==
-                   yurahash)
+       set_de_name_and_namelen(&de);
+       deh = de.de_deh + de.de_entry_num;
+
+       if (deh_offset(deh) == DOT_DOT_OFFSET) {
+               /* allow override in this case */
+               if (reiserfs_rupasov_hash(s))
                        hash = YURA_HASH;
-               else if (GET_HASH_VALUE
-                        (deh_offset(&(de.de_deh[de.de_entry_num]))) == teahash)
-                       hash = TEA_HASH;
-               else if (GET_HASH_VALUE
-                        (deh_offset(&(de.de_deh[de.de_entry_num]))) == r5hash)
-                       hash = R5_HASH;
-               else {
-                       reiserfs_warning(s, "reiserfs-2506",
-                                        "Unrecognised hash function");
-                       hash = UNSET_HASH;
-               }
-       } while (0);
+               reiserfs_info(s, "FS seems to be empty, autodetect is using the default hash\n");
+               goto out;
+       }
 
+       deh_hashval = GET_HASH_VALUE(deh_offset(deh));
+       r5hash = GET_HASH_VALUE(r5_hash(de.de_name, de.de_namelen));
+       teahash = GET_HASH_VALUE(keyed_hash(de.de_name, de.de_namelen));
+       yurahash = GET_HASH_VALUE(yura_hash(de.de_name, de.de_namelen));
+
+       if ((teahash == r5hash && deh_hashval == r5hash) ||
+           (teahash == yurahash && deh_hashval == yurahash) ||
+           (r5hash == yurahash && deh_hashval == yurahash)) {
+               reiserfs_warning(s, "reiserfs-2506",
+                                "Unable to automatically detect hash "
+                                "function. Please mount with -o "
+                                "hash={tea,rupasov,r5}");
+               hash = UNSET_HASH;
+               goto out;
+       }
+
+       if (deh_hashval == yurahash)
+               hash = YURA_HASH;
+       else if (deh_hashval == teahash)
+               hash = TEA_HASH;
+       else if (deh_hashval == r5hash)
+               hash = R5_HASH;
+       else {
+               reiserfs_warning(s, "reiserfs-2506",
+                                "Unrecognised hash function");
+               hash = UNSET_HASH;
+       }
+out:
        pathrelse(&path);
        return hash;
 }
@@ -2452,8 +2441,7 @@ static ssize_t reiserfs_quota_write(struct super_block *sb, int type,
        struct buffer_head tmp_bh, *bh;
 
        if (!current->journal_info) {
-               printk(KERN_WARNING "reiserfs: Quota write (off=%Lu, len=%Lu)"
-                       " cancelled because transaction is not started.\n",
+               printk(KERN_WARNING "reiserfs: Quota write (off=%llu, len=%llu) cancelled because transaction is not started.\n",
                        (unsigned long long)off, (unsigned long long)len);
                return -EIO;
        }