summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Viro <viro@math.psu.edu>2002-02-27 20:24:00 -0800
committerLinus Torvalds <torvalds@penguin.transmeta.com>2002-02-27 20:24:00 -0800
commit94982b1e033ad4e680e63450ce3f54ea0634dd46 (patch)
treeb5f227918d7cdb52f75353640202a879e571f62a
parent6c4971a8a59d6ae4f1ff59126b20b62ad37222f1 (diff)
[PATCH] (6/7) kdev_t removals
* in intermezzo a bunch of places where we are comparing ->s_dev are replaced with comparing pointers to superblocks.
-rw-r--r--fs/intermezzo/cache.c24
-rw-r--r--fs/intermezzo/inode.c2
-rw-r--r--fs/intermezzo/presto.c4
-rw-r--r--fs/intermezzo/super.c6
-rw-r--r--fs/intermezzo/vfs.c6
-rw-r--r--include/linux/intermezzo_fs.h3
6 files changed, 21 insertions, 24 deletions
diff --git a/fs/intermezzo/cache.c b/fs/intermezzo/cache.c
index 0526fd33a351..7c3d32d4152f 100644
--- a/fs/intermezzo/cache.c
+++ b/fs/intermezzo/cache.c
@@ -44,16 +44,15 @@
#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 */
diff --git a/fs/intermezzo/inode.c b/fs/intermezzo/inode.c
index d756dcfc096d..111721845226 100644
--- a/fs/intermezzo/inode.c
+++ b/fs/intermezzo/inode.c
@@ -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;
diff --git a/fs/intermezzo/presto.c b/fs/intermezzo/presto.c
index ad89030bec0d..8c0d22467901 100644
--- a/fs/intermezzo/presto.c
+++ b/fs/intermezzo/presto.c
@@ -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;
}
diff --git a/fs/intermezzo/super.c b/fs/intermezzo/super.c
index 7081dbdd22c6..de9d181359dc 100644
--- a/fs/intermezzo/super.c
+++ b/fs/intermezzo/super.c
@@ -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;
diff --git a/fs/intermezzo/vfs.c b/fs/intermezzo/vfs.c
index f8fbdc96352d..2af4d255852f 100644
--- a/fs/intermezzo/vfs.c
+++ b/fs/intermezzo/vfs.c
@@ -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)
diff --git a/include/linux/intermezzo_fs.h b/include/linux/intermezzo_fs.h
index 240dd8f24fe6..a0fe6dbc4622 100644
--- a/include/linux/intermezzo_fs.h
+++ b/include/linux/intermezzo_fs.h
@@ -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 */