aboutsummaryrefslogtreecommitdiffstats
path: root/fs/jffs2/nodelist.h
diff options
context:
space:
mode:
authorDavid Woodhouse <dwmw2@infradead.org>2006-05-18 19:28:49 -0400
committerDavid Woodhouse <dwmw2@infradead.org>2006-05-18 19:28:49 -0400
commitaef9ab47841af45888d950baa6448072cc70bdd5 (patch)
tree79545ddc225f64bc38fa04525ac4125c86202cb8 /fs/jffs2/nodelist.h
parentf6a673b3f4f93c1c50e1b18f29254b0531b722a8 (diff)
[JFFS2] Support new device nodes
Device node major/minor numbers are just stored in the payload of a single data node. Just extend that to 4 bytes and use new_encode_dev() for it. We only use the 4-byte format if we _need_ to, if !old_valid_dev(foo). This preserves backwards compatibility with older code as much as possible. If we do make devices with major or minor numbers above 255, and then mount the file system with the old code, it'll just read the first two bytes and get the numbers wrong. If it comes to garbage-collect it, it'll then write back those wrong numbers. But that's about the best we can expect. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Diffstat (limited to 'fs/jffs2/nodelist.h')
-rw-r--r--fs/jffs2/nodelist.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/fs/jffs2/nodelist.h b/fs/jffs2/nodelist.h
index f6645afe88e4..24e0f28a8bac 100644
--- a/fs/jffs2/nodelist.h
+++ b/fs/jffs2/nodelist.h
@@ -268,6 +268,17 @@ static inline uint32_t ref_totlen(struct jffs2_sb_info *c,
268 268
269#define PAD(x) (((x)+3)&~3) 269#define PAD(x) (((x)+3)&~3)
270 270
271static inline int jffs2_encode_dev(union jffs2_device_node *jdev, dev_t rdev)
272{
273 if (old_valid_dev(rdev)) {
274 jdev->old = cpu_to_je16(old_encode_dev(rdev));
275 return sizeof(jdev->old);
276 } else {
277 jdev->new = cpu_to_je32(new_encode_dev(rdev));
278 return sizeof(jdev->new);
279 }
280}
281
271static inline struct jffs2_inode_cache *jffs2_raw_ref_to_ic(struct jffs2_raw_node_ref *raw) 282static inline struct jffs2_inode_cache *jffs2_raw_ref_to_ic(struct jffs2_raw_node_ref *raw)
272{ 283{
273 while(raw->next_in_ino) { 284 while(raw->next_in_ino) {