diff -Nur linux-2.4.18-2.27/fs/hpfs/buffer.c linux-2.4.6/fs/hpfs/buffer.c --- linux-2.4.18-2.27/fs/hpfs/buffer.c Mon Feb 25 20:38:08 2002 +++ linux-2.4.6/fs/hpfs/buffer.c Sat Dec 9 20:43:03 2000 @@ -122,9 +122,12 @@ void *hpfs_map_sector(struct super_block *s, unsigned secno, struct buffer_head **bhp, int ahead) { + kdev_t dev = s->s_dev; struct buffer_head *bh; - *bhp = bh = sb_bread(s, secno); + if (!ahead || secno + ahead >= s->s_hpfs_fs_size) + *bhp = bh = bread(dev, secno, 512); + else *bhp = bh = bread(dev, secno, 512); if (bh != NULL) return bh->b_data; else { @@ -140,7 +143,7 @@ struct buffer_head *bh; /*return hpfs_map_sector(s, secno, bhp, 0);*/ - if ((*bhp = bh = sb_getblk(s, secno)) != NULL) { + if ((*bhp = bh = getblk(s->s_dev, secno, 512)) != NULL) { if (!buffer_uptodate(bh)) wait_on_buffer(bh); mark_buffer_uptodate(bh, 1); return bh->b_data; @@ -155,6 +158,7 @@ void *hpfs_map_4sectors(struct super_block *s, unsigned secno, struct quad_buffer_head *qbh, int ahead) { + kdev_t dev = s->s_dev; struct buffer_head *bh; char *data; @@ -169,22 +173,24 @@ goto bail; } - qbh->bh[0] = bh = sb_bread(s, secno); + if (!ahead || secno + 4 + ahead > s->s_hpfs_fs_size) + qbh->bh[0] = bh = bread(dev, secno, 512); + else qbh->bh[0] = bh = bread(dev, secno, 512); if (!bh) goto bail0; memcpy(data, bh->b_data, 512); - qbh->bh[1] = bh = sb_bread(s, secno + 1); + qbh->bh[1] = bh = bread(dev, secno + 1, 512); if (!bh) goto bail1; memcpy(data + 512, bh->b_data, 512); - qbh->bh[2] = bh = sb_bread(s, secno + 2); + qbh->bh[2] = bh = bread(dev, secno + 2, 512); if (!bh) goto bail2; memcpy(data + 2 * 512, bh->b_data, 512); - qbh->bh[3] = bh = sb_bread(s, secno + 3); + qbh->bh[3] = bh = bread(dev, secno + 3, 512); if (!bh) goto bail3; memcpy(data + 3 * 512, bh->b_data, 512); diff -Nur linux-2.4.18-2.27/fs/hpfs/file.c linux-2.4.6/fs/hpfs/file.c --- linux-2.4.18-2.27/fs/hpfs/file.c Mon Aug 13 02:37:53 2001 +++ linux-2.4.6/fs/hpfs/file.c Fri Dec 29 23:07:57 2000 @@ -11,8 +11,6 @@ #include #include "hpfs_fn.h" -#define BLOCKS(size) (((size) + 511) >> 9) - /* HUH? */ int hpfs_open(struct inode *i, struct file *f) { @@ -48,7 +46,7 @@ unsigned n, disk_secno; struct fnode *fnode; struct buffer_head *bh; - if (BLOCKS(inode->u.hpfs_i.mmu_private) <= file_secno) return 0; + if (((inode->i_size + 511) >> 9) <= file_secno) return 0; n = file_secno - inode->i_hpfs_file_sec; if (n < inode->i_hpfs_n_secs) return inode->i_hpfs_disk_sec + n; if (!(fnode = hpfs_map_fnode(inode->i_sb, inode->i_ino, &bh))) return 0; diff -Nur linux-2.4.18-2.27/fs/hpfs/inode.c linux-2.4.6/fs/hpfs/inode.c --- linux-2.4.18-2.27/fs/hpfs/inode.c Mon Sep 10 16:31:25 2001 +++ linux-2.4.6/fs/hpfs/inode.c Mon Jan 22 19:40:47 2001 @@ -12,7 +12,6 @@ static struct file_operations hpfs_file_ops = { - llseek: generic_file_llseek, read: generic_file_read, write: hpfs_file_write, mmap: generic_file_mmap, @@ -300,12 +299,10 @@ { struct inode *inode = dentry->d_inode; int error; - if ((attr->ia_valid & ATTR_SIZE) && attr->ia_size > inode->i_size) - return -EINVAL; + if ((attr->ia_valid & ATTR_SIZE) && attr->ia_size > inode->i_size) return -EINVAL; if (inode->i_sb->s_hpfs_root == inode->i_ino) return -EINVAL; if ((error = inode_change_ok(inode, attr))) return error; - error = inode_setattr(inode, attr); - if (error) return error; + inode_setattr(inode, attr); hpfs_write_inode(inode); return 0; } diff -Nur linux-2.4.18-2.27/fs/hpfs/super.c linux-2.4.6/fs/hpfs/super.c --- linux-2.4.18-2.27/fs/hpfs/super.c Mon Feb 25 20:38:08 2002 +++ linux-2.4.6/fs/hpfs/super.c Tue Jun 12 04:15:27 2001 @@ -3,7 +3,7 @@ * * Mikulas Patocka (mikulas@artax.karlin.mff.cuni.cz), 1998-1999 * - * mounting, unmounting, error handling + * mouning, unmounting, error handling */ #include