]> git.hungrycats.org Git - linux/commitdiff
[PATCH] (6/7) kdev_t removals
authorAlexander Viro <viro@math.psu.edu>
Thu, 28 Feb 2002 04:24:00 +0000 (20:24 -0800)
committerLinus Torvalds <torvalds@penguin.transmeta.com>
Thu, 28 Feb 2002 04:24:00 +0000 (20:24 -0800)
* in intermezzo a bunch of places where we are comparing ->s_dev
  are replaced with comparing pointers to superblocks.

fs/intermezzo/cache.c
fs/intermezzo/inode.c
fs/intermezzo/presto.c
fs/intermezzo/super.c
fs/intermezzo/vfs.c
include/linux/intermezzo_fs.h

index 0526fd33a351bdf165cc6b9015000ac0baaa2751..7c3d32d4152fb4501843a14a63bf57a0d7972e55 100644 (file)
 #define CACHES_MASK CACHES_SIZE - 1
 static struct list_head presto_caches[CACHES_SIZE];
 
-static inline int presto_cache_hash(kdev_t dev)
+static inline int presto_cache_hash(struct super_block *sb)
 {
-        return (CACHES_MASK) & ((0x000F & (kdev_val(dev))) + ((0x0F00 & (kdev_val(dev))) >>8));
+        return (CACHES_MASK) & ((unsigned long)sb / L1_CACHE_BYTES);
 }
 
-inline void presto_cache_add(struct presto_cache *cache, kdev_t dev)
+inline void presto_cache_add(struct presto_cache *cache, struct super_block *sb)
 {
         list_add(&cache->cache_chain,
-                 &presto_caches[presto_cache_hash(dev)]);
-        cache->cache_dev = dev;
+                 &presto_caches[presto_cache_hash(sb)]);
 }
 
 inline void presto_init_cache_hash(void)
@@ -65,17 +64,16 @@ inline void presto_init_cache_hash(void)
 }
 
 /* map a device to a cache */
-struct presto_cache *presto_find_cache(kdev_t dev)
+struct presto_cache *presto_find_cache(struct super_block *sb)
 {
         struct presto_cache *cache;
         struct list_head *lh, *tmp;
 
-        lh = tmp = &(presto_caches[presto_cache_hash(dev)]);
+        lh = tmp = &(presto_caches[presto_cache_hash(sb)]);
         while ( (tmp = lh->next) != lh ) {
                 cache = list_entry(tmp, struct presto_cache, cache_chain);
-                if ( kdev_same(cache->cache_dev, dev) ) {
+                if (cache->cache_sb == sb)
                         return cache;
-                }
         }
         return NULL;
 }
@@ -87,10 +85,10 @@ struct presto_cache *presto_get_cache(struct inode *inode)
         struct presto_cache *cache;
 
         /* find the correct presto_cache here, based on the device */
-        cache = presto_find_cache(inode->i_dev);
+        cache = presto_find_cache(inode->i_sb);
         if ( !cache ) {
-                printk("WARNING: no presto cache for dev %x, ino %ld\n",
-                       kdev_val(inode->i_dev), inode->i_ino);
+                printk("WARNING: no presto cache for dev %s, ino %ld\n",
+                       inode->i_sb->s_id, inode->i_ino);
                 EXIT;
                 return NULL;
         }
@@ -174,7 +172,7 @@ int presto_ispresto(struct inode *inode)
         cache = presto_get_cache(inode);
         if ( !cache )
                 return 0;
-        return (kdev_same(inode->i_dev, cache->cache_dev));
+        return (inode->i_sb == cache->cache_sb);
 }
 
 /* setup a cache structure when we need one */
index d756dcfc096d2bf478ace3f19ddfe90670c9d98a..111721845226c3fde41a38052c2fe025d7b21d65 100644 (file)
@@ -113,7 +113,7 @@ void presto_put_super(struct super_block *sb)
         struct list_head *lh;
 
        ENTRY;
-        cache = presto_find_cache(sb->s_dev);
+        cache = presto_find_cache(sb);
         if (!cache) {
                EXIT;
                 goto exit;
index ad89030bec0da3a112235970b0bb86157a79892f..8c0d22467901abb8dc02d0685058bb7d97ebdbd0 100644 (file)
@@ -71,8 +71,8 @@ int presto_i2m(struct inode *inode)
         cache = presto_get_cache(inode);
         CDEBUG(D_PSDEV, "\n");
         if ( !cache ) {
-                printk("PRESTO: BAD: cannot find cache for dev %x, ino %ld\n",
-                       kdev_val(inode->i_dev), inode->i_ino);
+                printk("PRESTO: BAD: cannot find cache for dev %s, ino %ld\n",
+                       inode->i_sb->s_id, inode->i_ino);
                 EXIT;
                 return -1;
         }
index 7081dbdd22c6b7f55aaefcc7f28b003396b0696f..de9d181359dcfe9e33bd677e5edb5d789f7e8a07 100644 (file)
@@ -39,7 +39,7 @@ long presto_kmemory = 0;
 #endif
 
 extern struct presto_cache *presto_init_cache(void);
-extern inline void presto_cache_add(struct presto_cache *cache, kdev_t dev);
+extern inline void presto_cache_add(struct presto_cache *cache, struct super_block *sb);
 extern inline void presto_init_cache_hash(void);
 
 int presto_remount(struct super_block *, int *, char *);
@@ -325,7 +325,7 @@ struct super_block * presto_read_super(struct super_block * presto_sb,
         filter_setup_journal_ops(cache->cache_filter, cache->cache_type); 
 
         /* we now know the dev of the cache: hash the cache */
-        presto_cache_add(cache, mysb->s_dev);
+        presto_cache_add(cache, mysb);
 
         /* make sure we have our own super operations: mysb
            still contains the cache operations */
@@ -402,7 +402,7 @@ int presto_remount(struct super_block * sb, int *flags, char *data)
                 }
         }
 
-        cache = presto_find_cache(sb->s_dev);
+        cache = presto_find_cache(sb);
         if (!cache) {
                 printk(__FUNCTION__ ": cannot find cache on remount\n");
                 err = -ENODEV;
index f8fbdc96352dc5c1b5adc1772f65230b716dd632..2af4d255852faa1a881bdd3c07cab8affd885396 100644 (file)
@@ -602,7 +602,7 @@ int presto_do_link(struct presto_file_set *fset, struct dentry *old_dentry,
                 goto exit_lock;
 
         error = -EXDEV;
-        if (!kdev_same(dir->d_inode->i_dev, inode->i_dev))
+        if (dir->d_inode->i_sb != inode->i_sb)
                 goto exit_lock;
 
         /*
@@ -1609,7 +1609,7 @@ int presto_rename_dir(struct presto_file_set *fset, struct dentry *old_parent,
         if (error)
                 return error;
 
-        if (!kdev_same(new_dir->i_dev, old_dir->i_dev))
+        if (new_dir->i_sb != old_dir->i_sb)
                 return -EXDEV;
 
         if (!new_dentry->d_inode)
@@ -1690,7 +1690,7 @@ int presto_rename_other(struct presto_file_set *fset, struct dentry *old_parent,
         if (error)
                 return error;
 
-        if (!kdev_same(new_dir->i_dev, old_dir->i_dev))
+        if (new_dir->i_sb != old_dir->i_sb)
                 return -EXDEV;
 
         if (!new_dentry->d_inode)
index 240dd8f24fe678b26d4930a7a3ed4cc10ff790a1..a0fe6dbc4622d304a70599fdd8fee631ad2f9578 100644 (file)
@@ -68,7 +68,7 @@ struct  kml_fsdata
 };
 
 /* super.c */
-struct presto_cache *presto_find_cache(kdev_t dev) ;
+struct presto_cache *presto_find_cache(struct super_block *sb) ;
 extern struct file_system_type presto_fs_type;
 extern int init_intermezzo_fs(void);
 
@@ -89,7 +89,6 @@ struct presto_cache {
         int   cache_flags;
         char *cache_root_fileset;  /* fileset mounted on cache "/"  */
 
-        kdev_t cache_dev;            /* underlying block device */
        struct super_block *cache_sb;
         struct dentry *cache_mtde;  /* unix mtpt of cache XXX NOT VALID XXX */
         char *cache_mtpt;           /*  again */