summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/jfs/jfs_imap.c7
-rw-r--r--fs/jfs/jfs_incore.h3
-rw-r--r--fs/jfs/jfs_mount.c2
-rw-r--r--fs/jfs/namei.c3
4 files changed, 9 insertions, 6 deletions
diff --git a/fs/jfs/jfs_imap.c b/fs/jfs/jfs_imap.c
index 7ee8f04862cc..cb40b149bd12 100644
--- a/fs/jfs/jfs_imap.c
+++ b/fs/jfs/jfs_imap.c
@@ -3041,9 +3041,10 @@ static int copy_from_dinode(struct dinode * dip, struct inode *ip)
jfs_ip->next_index = le32_to_cpu(dip->di_next_index);
jfs_ip->otime = le32_to_cpu(dip->di_otime.tv_sec);
jfs_ip->acltype = le32_to_cpu(dip->di_acltype);
+ jfs_ip->dev = le32_to_cpu(dip->di_rdev);
if (S_ISCHR(ip->i_mode) || S_ISBLK(ip->i_mode))
- ip->i_rdev = le32_to_cpu(dip->di_rdev);
+ ip->i_rdev = old_decode_dev(jfs_ip->dev);
if (S_ISDIR(ip->i_mode)) {
memcpy(&jfs_ip->i_dirtable, &dip->di_dirtable, 384);
@@ -3100,9 +3101,7 @@ static void copy_to_dinode(struct dinode * dip, struct inode *ip)
dip->di_otime.tv_sec = cpu_to_le32(jfs_ip->otime);
dip->di_otime.tv_nsec = 0;
dip->di_acltype = cpu_to_le32(jfs_ip->acltype);
-
- if (S_ISCHR(ip->i_mode) || S_ISBLK(ip->i_mode))
- dip->di_rdev = cpu_to_le32(ip->i_rdev);
+ dip->di_rdev = cpu_to_le32(jfs_ip->dev);
}
#ifdef _JFS_DEBUG_IMAP
diff --git a/fs/jfs/jfs_incore.h b/fs/jfs/jfs_incore.h
index 2164d5cdfc10..15a99b075387 100644
--- a/fs/jfs/jfs_incore.h
+++ b/fs/jfs/jfs_incore.h
@@ -93,6 +93,7 @@ struct jfs_inode_info {
unchar _inline_ea[128]; /* 128: inline extended attr */
} link;
} u;
+ u32 dev; /* will die when we get wide dev_t */
struct inode vfs_inode;
};
#define i_xtroot u.file._xtroot
@@ -143,7 +144,7 @@ struct jfs_sb_info {
short nbperpage; /* blocks per page */
short l2nbperpage; /* log2 blocks per page */
short l2niperblk; /* log2 inodes per page */
- u32 logdev; /* external log device */
+ dev_t logdev; /* external log device */
uint aggregate; /* volume identifier in log record */
pxd_t logpxd; /* pxd describing log */
pxd_t fsckpxd; /* pxd describing fsck wkspc */
diff --git a/fs/jfs/jfs_mount.c b/fs/jfs/jfs_mount.c
index b97311299412..4180b7c87d8d 100644
--- a/fs/jfs/jfs_mount.c
+++ b/fs/jfs/jfs_mount.c
@@ -395,7 +395,7 @@ static int chkSuper(struct super_block *sb)
if (sbi->mntflag & JFS_INLINELOG)
sbi->logpxd = j_sb->s_logpxd;
else {
- sbi->logdev = le32_to_cpu(j_sb->s_logdev);
+ sbi->logdev = old_decode_dev(le32_to_cpu(j_sb->s_logdev));
memcpy(sbi->uuid, j_sb->s_uuid, sizeof(sbi->uuid));
memcpy(sbi->loguuid, j_sb->s_loguuid, sizeof(sbi->uuid));
}
diff --git a/fs/jfs/namei.c b/fs/jfs/namei.c
index ee62b39ee46c..71f3ccf53b77 100644
--- a/fs/jfs/namei.c
+++ b/fs/jfs/namei.c
@@ -1302,6 +1302,7 @@ int jfs_rename(struct inode *old_dir, struct dentry *old_dentry,
*/
int jfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t rdev)
{
+ struct jfs_inode_info *jfs_ip;
struct btstack btstack;
struct component_name dname;
ino_t ino;
@@ -1324,6 +1325,7 @@ int jfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t rdev)
rc = -ENOSPC;
goto out1;
}
+ jfs_ip = JFS_IP(ip);
tid = txBegin(dir->i_sb, 0);
@@ -1342,6 +1344,7 @@ int jfs_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t rdev)
goto out3;
ip->i_op = &jfs_file_inode_operations;
+ jfs_ip->dev = old_encode_dev(rdev);
init_special_inode(ip, ip->i_mode, rdev);
insert_inode_hash(ip);