diff options
Diffstat (limited to 'fs/qnx4/bitmap.c')
| -rw-r--r-- | fs/qnx4/bitmap.c | 81 | 
1 files changed, 0 insertions, 81 deletions
diff --git a/fs/qnx4/bitmap.c b/fs/qnx4/bitmap.c index e1cd061a25f7..0afba069d567 100644 --- a/fs/qnx4/bitmap.c +++ b/fs/qnx4/bitmap.c  | |||
| @@ -78,84 +78,3 @@ unsigned long qnx4_count_free_blocks(struct super_block *sb) | |||
| 78 | 78 | ||
| 79 | return total_free; | 79 | return total_free; | 
| 80 | } | 80 | } | 
| 81 | |||
| 82 | #ifdef CONFIG_QNX4FS_RW | ||
| 83 | |||
| 84 | int qnx4_is_free(struct super_block *sb, long block) | ||
| 85 | { | ||
| 86 | int start = le32_to_cpu(qnx4_sb(sb)->BitMap->di_first_xtnt.xtnt_blk) - 1; | ||
| 87 | int size = le32_to_cpu(qnx4_sb(sb)->BitMap->di_size); | ||
| 88 | struct buffer_head *bh; | ||
| 89 | const char *g; | ||
| 90 | int ret = -EIO; | ||
| 91 | |||
| 92 | start += block / (QNX4_BLOCK_SIZE * 8); | ||
| 93 | QNX4DEBUG(("qnx4: is_free requesting block [%lu], bitmap in block [%lu]\n", | ||
| 94 | (unsigned long) block, (unsigned long) start)); | ||
| 95 | (void) size; /* CHECKME */ | ||
| 96 | bh = sb_bread(sb, start); | ||
| 97 | if (bh == NULL) { | ||
| 98 | return -EIO; | ||
| 99 | } | ||
| 100 | g = bh->b_data + (block % QNX4_BLOCK_SIZE); | ||
| 101 | if (((*g) & (1 << (block % 8))) == 0) { | ||
| 102 | QNX4DEBUG(("qnx4: is_free -> block is free\n")); | ||
| 103 | ret = 1; | ||
| 104 | } else { | ||
| 105 | QNX4DEBUG(("qnx4: is_free -> block is busy\n")); | ||
| 106 | ret = 0; | ||
| 107 | } | ||
| 108 | brelse(bh); | ||
| 109 | |||
| 110 | return ret; | ||
| 111 | } | ||
| 112 | |||
| 113 | int qnx4_set_bitmap(struct super_block *sb, long block, int busy) | ||
| 114 | { | ||
| 115 | int start = le32_to_cpu(qnx4_sb(sb)->BitMap->di_first_xtnt.xtnt_blk) - 1; | ||
| 116 | int size = le32_to_cpu(qnx4_sb(sb)->BitMap->di_size); | ||
| 117 | struct buffer_head *bh; | ||
| 118 | char *g; | ||
| 119 | |||
| 120 | start += block / (QNX4_BLOCK_SIZE * 8); | ||
| 121 | QNX4DEBUG(("qnx4: set_bitmap requesting block [%lu], bitmap in block [%lu]\n", | ||
| 122 | (unsigned long) block, (unsigned long) start)); | ||
| 123 | (void) size; /* CHECKME */ | ||
| 124 | bh = sb_bread(sb, start); | ||
| 125 | if (bh == NULL) { | ||
| 126 | return -EIO; | ||
| 127 | } | ||
| 128 | g = bh->b_data + (block % QNX4_BLOCK_SIZE); | ||
| 129 | if (busy == 0) { | ||
| 130 | (*g) &= ~(1 << (block % 8)); | ||
| 131 | } else { | ||
| 132 | (*g) |= (1 << (block % 8)); | ||
| 133 | } | ||
| 134 | mark_buffer_dirty(bh); | ||
| 135 | brelse(bh); | ||
| 136 | |||
| 137 | return 0; | ||
| 138 | } | ||
| 139 | |||
| 140 | static void qnx4_clear_inode(struct inode *inode) | ||
| 141 | { | ||
| 142 | struct qnx4_inode_entry *qnx4_ino = qnx4_raw_inode(inode); | ||
| 143 | /* What for? */ | ||
| 144 | memset(qnx4_ino->di_fname, 0, sizeof qnx4_ino->di_fname); | ||
| 145 | qnx4_ino->di_size = 0; | ||
| 146 | qnx4_ino->di_num_xtnts = 0; | ||
| 147 | qnx4_ino->di_mode = 0; | ||
| 148 | qnx4_ino->di_status = 0; | ||
| 149 | } | ||
| 150 | |||
| 151 | void qnx4_free_inode(struct inode *inode) | ||
| 152 | { | ||
| 153 | if (inode->i_ino < 1) { | ||
| 154 | printk("free_inode: inode 0 or nonexistent inode\n"); | ||
| 155 | return; | ||
| 156 | } | ||
| 157 | qnx4_clear_inode(inode); | ||
| 158 | clear_inode(inode); | ||
| 159 | } | ||
| 160 | |||
| 161 | #endif | ||
