diff options
| author | Alexander Viro <viro@math.psu.edu> | 2002-02-27 20:24:00 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@penguin.transmeta.com> | 2002-02-27 20:24:00 -0800 |
| commit | 94982b1e033ad4e680e63450ce3f54ea0634dd46 (patch) | |
| tree | b5f227918d7cdb52f75353640202a879e571f62a | |
| parent | 6c4971a8a59d6ae4f1ff59126b20b62ad37222f1 (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.c | 24 | ||||
| -rw-r--r-- | fs/intermezzo/inode.c | 2 | ||||
| -rw-r--r-- | fs/intermezzo/presto.c | 4 | ||||
| -rw-r--r-- | fs/intermezzo/super.c | 6 | ||||
| -rw-r--r-- | fs/intermezzo/vfs.c | 6 | ||||
| -rw-r--r-- | include/linux/intermezzo_fs.h | 3 |
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 */ |
