diff options
| author | Tony Luck <tony.luck@intel.com> | 2005-10-20 13:41:44 -0400 |
|---|---|---|
| committer | Tony Luck <tony.luck@intel.com> | 2005-10-20 13:41:44 -0400 |
| commit | 9cec58dc138d6fcad9f447a19c8ff69f6540e667 (patch) | |
| tree | 4fe1cca94fdba8b705c87615bee06d3346f687ce /fs/bfs/inode.c | |
| parent | 17e5ad6c0ce5a970e2830d0de8bdd60a2f077d38 (diff) | |
| parent | ac9b9c667c2e1194e22ebe0a441ae1c37aaa9b90 (diff) | |
Update from upstream with manual merge of Yasunori Goto's
changes to swiotlb.c made in commit 281dd25cdc0d6903929b79183816d151ea626341
since this file has been moved from arch/ia64/lib/swiotlb.c to
lib/swiotlb.c
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'fs/bfs/inode.c')
| -rw-r--r-- | fs/bfs/inode.c | 44 |
1 files changed, 31 insertions, 13 deletions
diff --git a/fs/bfs/inode.c b/fs/bfs/inode.c index c7b39aa279d7..3af6c73c5b5a 100644 --- a/fs/bfs/inode.c +++ b/fs/bfs/inode.c | |||
| @@ -357,28 +357,46 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent) | |||
| 357 | } | 357 | } |
| 358 | 358 | ||
| 359 | info->si_blocks = (le32_to_cpu(bfs_sb->s_end) + 1)>>BFS_BSIZE_BITS; /* for statfs(2) */ | 359 | info->si_blocks = (le32_to_cpu(bfs_sb->s_end) + 1)>>BFS_BSIZE_BITS; /* for statfs(2) */ |
| 360 | info->si_freeb = (le32_to_cpu(bfs_sb->s_end) + 1 - cpu_to_le32(bfs_sb->s_start))>>BFS_BSIZE_BITS; | 360 | info->si_freeb = (le32_to_cpu(bfs_sb->s_end) + 1 - le32_to_cpu(bfs_sb->s_start))>>BFS_BSIZE_BITS; |
| 361 | info->si_freei = 0; | 361 | info->si_freei = 0; |
| 362 | info->si_lf_eblk = 0; | 362 | info->si_lf_eblk = 0; |
| 363 | info->si_lf_sblk = 0; | 363 | info->si_lf_sblk = 0; |
| 364 | info->si_lf_ioff = 0; | 364 | info->si_lf_ioff = 0; |
| 365 | bh = NULL; | ||
| 365 | for (i=BFS_ROOT_INO; i<=info->si_lasti; i++) { | 366 | for (i=BFS_ROOT_INO; i<=info->si_lasti; i++) { |
| 366 | inode = iget(s,i); | 367 | struct bfs_inode *di; |
| 367 | if (BFS_I(inode)->i_dsk_ino == 0) | 368 | int block = (i - BFS_ROOT_INO)/BFS_INODES_PER_BLOCK + 1; |
| 369 | int off = (i - BFS_ROOT_INO) % BFS_INODES_PER_BLOCK; | ||
| 370 | unsigned long sblock, eblock; | ||
| 371 | |||
| 372 | if (!off) { | ||
| 373 | brelse(bh); | ||
| 374 | bh = sb_bread(s, block); | ||
| 375 | } | ||
| 376 | |||
| 377 | if (!bh) | ||
| 378 | continue; | ||
| 379 | |||
| 380 | di = (struct bfs_inode *)bh->b_data + off; | ||
| 381 | |||
| 382 | if (!di->i_ino) { | ||
| 368 | info->si_freei++; | 383 | info->si_freei++; |
| 369 | else { | 384 | continue; |
| 370 | set_bit(i, info->si_imap); | 385 | } |
| 371 | info->si_freeb -= inode->i_blocks; | 386 | set_bit(i, info->si_imap); |
| 372 | if (BFS_I(inode)->i_eblock > info->si_lf_eblk) { | 387 | info->si_freeb -= BFS_FILEBLOCKS(di); |
| 373 | info->si_lf_eblk = BFS_I(inode)->i_eblock; | 388 | |
| 374 | info->si_lf_sblk = BFS_I(inode)->i_sblock; | 389 | sblock = le32_to_cpu(di->i_sblock); |
| 375 | info->si_lf_ioff = BFS_INO2OFF(i); | 390 | eblock = le32_to_cpu(di->i_eblock); |
| 376 | } | 391 | if (eblock > info->si_lf_eblk) { |
| 392 | info->si_lf_eblk = eblock; | ||
| 393 | info->si_lf_sblk = sblock; | ||
| 394 | info->si_lf_ioff = BFS_INO2OFF(i); | ||
| 377 | } | 395 | } |
| 378 | iput(inode); | ||
| 379 | } | 396 | } |
| 397 | brelse(bh); | ||
| 380 | if (!(s->s_flags & MS_RDONLY)) { | 398 | if (!(s->s_flags & MS_RDONLY)) { |
| 381 | mark_buffer_dirty(bh); | 399 | mark_buffer_dirty(info->si_sbh); |
| 382 | s->s_dirt = 1; | 400 | s->s_dirt = 1; |
| 383 | } | 401 | } |
| 384 | dump_imap("read_super", s); | 402 | dump_imap("read_super", s); |
