diff options
author | Christoph Hellwig <hch@lst.de> | 2009-09-22 19:43:59 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-23 10:39:30 -0400 |
commit | 945ffe54bbd56ceed62de3b908800fd7c6ffb284 (patch) | |
tree | 1791ac5df7967107d4413f16f94ba9aae29e8df7 /fs/qnx4/bitmap.c | |
parent | 8a9f47ddb1d5cc3cda2d1f26f8da74e059fa7b87 (diff) |
qnx4: remove write support
qnx4 wrte support has never been fully implement, is broken since the dawn
of time and hasn't been actively developed since before git history
started.
Instead of letting it further bitrot and complicate API transition (like
the new truncate code) remove it.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Cc: Anders Larsen <al@alarsen.net>
Cc: Nick Piggin <npiggin@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
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 | ||