diff options
| author | Linus Torvalds <torvalds@athlon.transmeta.com> | 2002-02-04 20:19:17 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@athlon.transmeta.com> | 2002-02-04 20:19:17 -0800 |
| commit | e2f6721a0a1b07612c0682d8240d3e9bc0a445a4 (patch) | |
| tree | aa6410ac8fc965f7d695031fa4c467347138c485 /fs/devfs/base.c | |
| parent | 269f8f707739116e68aee38d78d0cfb3d896b856 (diff) | |
v2.4.9.14 -> v2.4.9.15
- Jan Harkes: make Coda work with arbitrary host filesystems, not
just filesystems that use generic_file_read/write
- Al Viro: block device cleanups
- Hugh Dickins: swap device lock fixes - fix swap readahead race
- me, Andrea: more reference bit cleanups
Diffstat (limited to 'fs/devfs/base.c')
| -rw-r--r-- | fs/devfs/base.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/fs/devfs/base.c b/fs/devfs/base.c index 58aedeca1907..974379d14d4d 100644 --- a/fs/devfs/base.c +++ b/fs/devfs/base.c @@ -2291,9 +2291,16 @@ static int devfs_statfs (struct super_block *sb, struct statfs *buf) return 0; } /* End Function devfs_statfs */ +static void devfs_clear_inode(struct inode *inode) +{ + if (S_ISBLK(inode->i_mode)) + bdput(inode->i_bdev); +} + static struct super_operations devfs_sops = { put_inode: force_delete, + clear_inode: devfs_clear_inode, statfs: devfs_statfs, }; @@ -2351,9 +2358,7 @@ static struct inode *get_vfs_inode (struct super_block *sb, { inode->i_rdev = MKDEV (de->u.fcb.u.device.major, de->u.fcb.u.device.minor); - inode->i_bdev = bdget ( kdev_t_to_nr (inode->i_rdev) ); - inode->i_mapping->a_ops = &def_blk_aops; - if (inode->i_bdev) + if (bd_acquire(inode) == 0) { if (!inode->i_bdev->bd_op && de->u.fcb.ops) inode->i_bdev->bd_op = de->u.fcb.ops; |
