diff --git a/drivers/mtd/mtdsuper.c b/drivers/mtd/mtdsuper.c
index d58a61c09304..f5346de9b29d 100644
--- a/drivers/mtd/mtdsuper.c
+++ b/drivers/mtd/mtdsuper.c
@@ -51,7 +51,7 @@ static int get_sb_mtd_set(struct super_block *sb, void *_mtd)
 	struct mtd_info *mtd = _mtd;
 
 	sb->s_mtd = mtd;
-	sb->s_dev = MKDEV(MTD_BLOCK_MAJOR, mtd->index);
+	sb->s_view.v_dev = MKDEV(MTD_BLOCK_MAJOR, mtd->index);
 	sb->s_bdi = bdi_get(mtd_bdi);
 
 	return 0;
diff --git a/drivers/staging/lustre/lustre/llite/llite_lib.c b/drivers/staging/lustre/lustre/llite/llite_lib.c
index 6f6df27635d4..ffa6e7d92080 100644
--- a/drivers/staging/lustre/lustre/llite/llite_lib.c
+++ b/drivers/staging/lustre/lustre/llite/llite_lib.c
@@ -524,7 +524,7 @@ static int client_common_fill_super(struct super_block *sb, char *md, char *dt)
 		goto out_lock_cn_cb;
 	}
 
-	sbi->ll_sdev_orig = sb->s_dev;
+	sbi->ll_sdev_orig = sb->s_view.v_dev;
 
 	/* We set sb->s_dev equal on all lustre clients in order to support
 	 * NFS export clustering.  NFSD requires that the FSID be the same
@@ -535,7 +535,7 @@ static int client_common_fill_super(struct super_block *sb, char *md, char *dt)
 	 */
 	uuid = obd_get_uuid(sbi->ll_md_exp);
 	if (uuid) {
-		sb->s_dev = get_uuid2int(uuid->uuid, strlen(uuid->uuid));
+		sb->s_view.v_dev = get_uuid2int(uuid->uuid, strlen(uuid->uuid));
 		get_uuid2fsid(uuid->uuid, strlen(uuid->uuid), &sbi->ll_fsid);
 	}
 
@@ -670,7 +670,7 @@ void ll_kill_super(struct super_block *sb)
 	 * in put_super not affected real removing devices
 	 */
 	if (sbi) {
-		sb->s_dev = sbi->ll_sdev_orig;
+		sb->s_view.v_dev = sbi->ll_sdev_orig;
 		sbi->ll_umounting = 1;
 
 		/* wait running statahead threads to quit */
diff --git a/fs/autofs4/autofs_i.h b/fs/autofs4/autofs_i.h
index 4737615f0eaa..31fcf15108eb 100644
--- a/fs/autofs4/autofs_i.h
+++ b/fs/autofs4/autofs_i.h
@@ -225,7 +225,7 @@ void autofs4_catatonic_mode(struct autofs_sb_info *);
 
 static inline u32 autofs4_get_dev(struct autofs_sb_info *sbi)
 {
-	return new_encode_dev(sbi->sb->s_dev);
+	return new_encode_dev(sbi->sb->s_view.v_dev);
 }
 
 static inline u64 autofs4_get_ino(struct autofs_sb_info *sbi)
diff --git a/fs/autofs4/dev-ioctl.c b/fs/autofs4/dev-ioctl.c
index 6b28b01e5022..6d1f1bc5db06 100644
--- a/fs/autofs4/dev-ioctl.c
+++ b/fs/autofs4/dev-ioctl.c
@@ -231,7 +231,7 @@ static int find_autofs_mount(const char *pathname,
 
 static int test_by_dev(const struct path *path, void *p)
 {
-	return path->dentry->d_sb->s_dev == *(dev_t *)p;
+	return path->dentry->d_sb->s_view.v_dev == *(dev_t *)p;
 }
 
 static int test_by_type(const struct path *path, void *p)
@@ -243,7 +243,7 @@ static int test_by_type(const struct path *path, void *p)
 
 /*
  * Open a file descriptor on the autofs mount point corresponding
- * to the given path and device number (aka. new_encode_dev(sb->s_dev)).
+ * to the given path and device number (aka. new_encode_dev(sb->s_view.v_dev)).
  */
 static int autofs_dev_ioctl_open_mountpoint(const char *name, dev_t devid)
 {
@@ -451,7 +451,7 @@ static int autofs_dev_ioctl_requester(struct file *fp,
 		goto out;
 	}
 
-	devid = sbi->sb->s_dev;
+	devid = sbi->sb->s_view.v_dev;
 
 	param->requester.uid = param->requester.gid = -1;
 
@@ -554,14 +554,14 @@ static int autofs_dev_ioctl_ismountpoint(struct file *fp,
 						test_by_type, &type);
 		if (err)
 			goto out;
-		devid = new_encode_dev(path.dentry->d_sb->s_dev);
+		devid = new_encode_dev(path.dentry->d_sb->s_view.v_dev);
 		err = 0;
 		if (path.mnt->mnt_root == path.dentry) {
 			err = 1;
 			magic = path.dentry->d_sb->s_magic;
 		}
 	} else {
-		dev_t dev = sbi->sb->s_dev;
+		dev_t dev = sbi->sb->s_view.v_dev;
 
 		err = find_autofs_mount(name, &path, test_by_dev, &dev);
 		if (err)
diff --git a/fs/ceph/super.c b/fs/ceph/super.c
index fb2bc9c15a23..2f6c4c16a5ad 100644
--- a/fs/ceph/super.c
+++ b/fs/ceph/super.c
@@ -1055,7 +1055,7 @@ static struct dentry *ceph_mount(struct file_system_type *fs_type,
 static void ceph_kill_sb(struct super_block *s)
 {
 	struct ceph_fs_client *fsc = ceph_sb_to_client(s);
-	dev_t dev = s->s_dev;
+	dev_t dev = s->s_view.v_dev;
 
 	dout("kill_sb %p\n", s);
 
diff --git a/fs/cramfs/inode.c b/fs/cramfs/inode.c
index eb633de7ccbe..239ec223433f 100644
--- a/fs/cramfs/inode.c
+++ b/fs/cramfs/inode.c
@@ -674,8 +674,8 @@ static int cramfs_statfs(struct dentry *dentry, struct kstatfs *buf)
 
 	if (sb->s_bdev)
 		id = huge_encode_dev(sb->s_bdev->bd_dev);
-	else if (sb->s_dev)
-		id = huge_encode_dev(sb->s_dev);
+	else if (sb->s_view.v_dev)
+		id = huge_encode_dev(sb->s_view.v_dev);
 
 	buf->f_type = CRAMFS_MAGIC;
 	buf->f_bsize = PAGE_SIZE;
diff --git a/fs/exofs/super.c b/fs/exofs/super.c
index 179cd5c2f52a..6149c1bc02ff 100644
--- a/fs/exofs/super.c
+++ b/fs/exofs/super.c
@@ -760,7 +760,7 @@ static int exofs_fill_super(struct super_block *sb, void *data, int silent)
 	sb->s_max_links = EXOFS_LINK_MAX;
 	atomic_set(&sbi->s_curr_pending, 0);
 	sb->s_bdev = NULL;
-	sb->s_dev = 0;
+	sb->s_view.v_dev = 0;
 
 	comp.obj.partition = sbi->one_comp.obj.partition;
 	comp.obj.id = EXOFS_SUPER_ID;
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index d6d2fbe6c3ec..3b4d753b8c70 100644
--- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c
@@ -1103,7 +1103,7 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent)
 	if (!fud)
 		goto err_put_conn;
 
-	fc->dev = sb->s_dev;
+	fc->dev = sb->s_view.v_dev;
 	fc->sb = sb;
 	err = fuse_bdi_init(fc, sb);
 	if (err)
diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c
index e6a0a8a89ea7..25a93cacaa1d 100644
--- a/fs/gfs2/ops_fstype.c
+++ b/fs/gfs2/ops_fstype.c
@@ -1222,7 +1222,7 @@ static int fill_super(struct super_block *sb, struct gfs2_args *args, int silent
 static int set_gfs2_super(struct super_block *s, void *data)
 {
 	s->s_bdev = data;
-	s->s_dev = s->s_bdev->bd_dev;
+	s->s_view.v_dev = s->s_bdev->bd_dev;
 	s->s_bdi = bdi_get(s->s_bdev->bd_bdi);
 	return 0;
 }
diff --git a/fs/gfs2/quota.c b/fs/gfs2/quota.c
index 7a98abd340ee..21499dd4ad5c 100644
--- a/fs/gfs2/quota.c
+++ b/fs/gfs2/quota.c
@@ -1227,7 +1227,7 @@ int gfs2_quota_check(struct gfs2_inode *ip, kuid_t uid, kgid_t gid,
 						      &qd->qd_flags)) {
 					print_message(qd, "exceeded");
 					quota_send_warning(qd->qd_id,
-							   sdp->sd_vfs->s_dev,
+							   sdp->sd_vfs->s_view.v_dev,
 							   QUOTA_NL_BHARDWARN);
 				}
 				error = -EDQUOT;
@@ -1238,7 +1238,8 @@ int gfs2_quota_check(struct gfs2_inode *ip, kuid_t uid, kgid_t gid,
 					 gfs2_tune_get(sdp, gt_quota_warn_period)
 					 * HZ)) {
 			quota_send_warning(qd->qd_id,
-					   sdp->sd_vfs->s_dev, QUOTA_NL_BSOFTWARN);
+					   sdp->sd_vfs->s_view.v_dev,
+					   QUOTA_NL_BSOFTWARN);
 			error = print_message(qd, "warning");
 			qd->qd_last_warn = jiffies;
 		}
diff --git a/fs/gfs2/sys.c b/fs/gfs2/sys.c
index c191fa58a1df..d5036ad407b6 100644
--- a/fs/gfs2/sys.c
+++ b/fs/gfs2/sys.c
@@ -63,7 +63,8 @@ static struct kset *gfs2_kset;
 static ssize_t id_show(struct gfs2_sbd *sdp, char *buf)
 {
 	return snprintf(buf, PAGE_SIZE, "%u:%u\n",
-			MAJOR(sdp->sd_vfs->s_dev), MINOR(sdp->sd_vfs->s_dev));
+			MAJOR(sdp->sd_vfs->s_view.v_dev),
+			MINOR(sdp->sd_vfs->s_view.v_dev));
 }
 
 static ssize_t fsname_show(struct gfs2_sbd *sdp, char *buf)
diff --git a/fs/gfs2/trace_gfs2.h b/fs/gfs2/trace_gfs2.h
index b9318b49ff8f..b25112935281 100644
--- a/fs/gfs2/trace_gfs2.h
+++ b/fs/gfs2/trace_gfs2.h
@@ -106,7 +106,7 @@ TRACE_EVENT(gfs2_glock_state_change,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= gl->gl_name.ln_sbd->sd_vfs->s_dev;
+		__entry->dev		= gl->gl_name.ln_sbd->sd_vfs->s_view.v_dev;
 		__entry->glnum		= gl->gl_name.ln_number;
 		__entry->gltype		= gl->gl_name.ln_type;
 		__entry->cur_state	= glock_trace_state(gl->gl_state);
@@ -142,7 +142,7 @@ TRACE_EVENT(gfs2_glock_put,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= gl->gl_name.ln_sbd->sd_vfs->s_dev;
+		__entry->dev		= gl->gl_name.ln_sbd->sd_vfs->s_view.v_dev;
 		__entry->gltype		= gl->gl_name.ln_type;
 		__entry->glnum		= gl->gl_name.ln_number;
 		__entry->cur_state	= glock_trace_state(gl->gl_state);
@@ -176,7 +176,7 @@ TRACE_EVENT(gfs2_demote_rq,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= gl->gl_name.ln_sbd->sd_vfs->s_dev;
+		__entry->dev		= gl->gl_name.ln_sbd->sd_vfs->s_view.v_dev;
 		__entry->gltype		= gl->gl_name.ln_type;
 		__entry->glnum		= gl->gl_name.ln_number;
 		__entry->cur_state	= glock_trace_state(gl->gl_state);
@@ -211,7 +211,7 @@ TRACE_EVENT(gfs2_promote,
 	),
 
 	TP_fast_assign(
-		__entry->dev	= gh->gh_gl->gl_name.ln_sbd->sd_vfs->s_dev;
+		__entry->dev	= gh->gh_gl->gl_name.ln_sbd->sd_vfs->s_view.v_dev;
 		__entry->glnum	= gh->gh_gl->gl_name.ln_number;
 		__entry->gltype	= gh->gh_gl->gl_name.ln_type;
 		__entry->first	= first;
@@ -241,7 +241,7 @@ TRACE_EVENT(gfs2_glock_queue,
 	),
 
 	TP_fast_assign(
-		__entry->dev	= gh->gh_gl->gl_name.ln_sbd->sd_vfs->s_dev;
+		__entry->dev	= gh->gh_gl->gl_name.ln_sbd->sd_vfs->s_view.v_dev;
 		__entry->glnum	= gh->gh_gl->gl_name.ln_number;
 		__entry->gltype	= gh->gh_gl->gl_name.ln_type;
 		__entry->queue	= queue;
@@ -280,7 +280,7 @@ TRACE_EVENT(gfs2_glock_lock_time,
 	),
 
 	TP_fast_assign(
-		__entry->dev            = gl->gl_name.ln_sbd->sd_vfs->s_dev;
+		__entry->dev            = gl->gl_name.ln_sbd->sd_vfs->s_view.v_dev;
 		__entry->glnum          = gl->gl_name.ln_number;
 		__entry->gltype         = gl->gl_name.ln_type;
 		__entry->status		= gl->gl_lksb.sb_status;
@@ -335,7 +335,7 @@ TRACE_EVENT(gfs2_pin,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= bd->bd_gl->gl_name.ln_sbd->sd_vfs->s_dev;
+		__entry->dev		= bd->bd_gl->gl_name.ln_sbd->sd_vfs->s_view.v_dev;
 		__entry->pin		= pin;
 		__entry->len		= bd->bd_bh->b_size;
 		__entry->block		= bd->bd_bh->b_blocknr;
@@ -365,7 +365,7 @@ TRACE_EVENT(gfs2_log_flush,
 	),
 
 	TP_fast_assign(
-		__entry->dev            = sdp->sd_vfs->s_dev;
+		__entry->dev            = sdp->sd_vfs->s_view.v_dev;
 		__entry->start		= start;
 		__entry->log_seq	= sdp->sd_log_sequence;
 		__entry->flags		= flags;
@@ -391,7 +391,7 @@ TRACE_EVENT(gfs2_log_blocks,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= sdp->sd_vfs->s_dev;
+		__entry->dev		= sdp->sd_vfs->s_view.v_dev;
 		__entry->blocks		= blocks;
 	),
 
@@ -414,7 +414,7 @@ TRACE_EVENT(gfs2_ail_flush,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= sdp->sd_vfs->s_dev;
+		__entry->dev		= sdp->sd_vfs->s_view.v_dev;
 		__entry->start		= start;
 		__entry->sync_mode	= wbc->sync_mode;
 		__entry->nr_to_write	= wbc->nr_to_write;
@@ -454,7 +454,7 @@ TRACE_EVENT(gfs2_bmap,
 	),
 
 	TP_fast_assign(
-		__entry->dev            = ip->i_gl->gl_name.ln_sbd->sd_vfs->s_dev;
+		__entry->dev            = ip->i_gl->gl_name.ln_sbd->sd_vfs->s_view.v_dev;
 		__entry->lblock		= lblock;
 		__entry->pblock		= buffer_mapped(bh) ?  bh->b_blocknr : 0;
 		__entry->inum		= ip->i_no_addr;
@@ -490,7 +490,7 @@ TRACE_EVENT(gfs2_iomap_start,
 	),
 
 	TP_fast_assign(
-		__entry->dev            = ip->i_gl->gl_name.ln_sbd->sd_vfs->s_dev;
+		__entry->dev            = ip->i_gl->gl_name.ln_sbd->sd_vfs->s_view.v_dev;
 		__entry->inum		= ip->i_no_addr;
 		__entry->pos		= pos;
 		__entry->length		= length;
@@ -521,7 +521,7 @@ TRACE_EVENT(gfs2_iomap_end,
 	),
 
 	TP_fast_assign(
-		__entry->dev            = ip->i_gl->gl_name.ln_sbd->sd_vfs->s_dev;
+		__entry->dev            = ip->i_gl->gl_name.ln_sbd->sd_vfs->s_view.v_dev;
 		__entry->inum		= ip->i_no_addr;
 		__entry->offset		= iomap->offset;
 		__entry->length		= iomap->length;
@@ -558,7 +558,7 @@ TRACE_EVENT(gfs2_block_alloc,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= rgd->rd_gl->gl_name.ln_sbd->sd_vfs->s_dev;
+		__entry->dev		= rgd->rd_gl->gl_name.ln_sbd->sd_vfs->s_view.v_dev;
 		__entry->start		= block;
 		__entry->inum		= ip->i_no_addr;
 		__entry->len		= len;
@@ -597,7 +597,7 @@ TRACE_EVENT(gfs2_rs,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= rs->rs_rbm.rgd->rd_sbd->sd_vfs->s_dev;
+		__entry->dev		= rs->rs_rbm.rgd->rd_sbd->sd_vfs->s_view.v_dev;
 		__entry->rd_addr	= rs->rs_rbm.rgd->rd_addr;
 		__entry->rd_free_clone	= rs->rs_rbm.rgd->rd_free_clone;
 		__entry->rd_reserved	= rs->rs_rbm.rgd->rd_reserved;
diff --git a/fs/nfs/nfs4trace.h b/fs/nfs/nfs4trace.h
index 07f81f981792..4cdb6e356742 100644
--- a/fs/nfs/nfs4trace.h
+++ b/fs/nfs/nfs4trace.h
@@ -410,7 +410,7 @@ DECLARE_EVENT_CLASS(nfs4_open_event,
 			__entry->error = error;
 			__entry->flags = flags;
 			__entry->fmode = (__force unsigned int)ctx->mode;
-			__entry->dev = ctx->dentry->d_sb->s_dev;
+			__entry->dev = ctx->dentry->d_sb->s_view.v_dev;
 			if (!IS_ERR_OR_NULL(state)) {
 				inode = state->inode;
 				__entry->stateid_seq =
diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index 5e470e233c83..5dc8226409f1 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -2321,7 +2321,7 @@ static void nfs_initialise_sb(struct super_block *sb)
 
 	/* We probably want something more informative here */
 	snprintf(sb->s_id, sizeof(sb->s_id),
-		 "%u:%u", MAJOR(sb->s_dev), MINOR(sb->s_dev));
+		 "%u:%u", MAJOR(sb->s_view.v_dev), MINOR(sb->s_view.v_dev));
 
 	if (sb->s_blocksize == 0)
 		sb->s_blocksize = nfs_block_bits(server->wsize,
@@ -2433,7 +2433,7 @@ static int nfs_set_super(struct super_block *s, void *data)
 	s->s_d_op = server->nfs_client->rpc_ops->dentry_ops;
 	ret = set_anon_super(s, server);
 	if (ret == 0)
-		server->s_dev = s->s_dev;
+		server->s_dev = s->s_view.v_dev;
 	return ret;
 }
 
@@ -2708,7 +2708,7 @@ EXPORT_SYMBOL_GPL(nfs_fs_mount);
 void nfs_kill_super(struct super_block *s)
 {
 	struct nfs_server *server = NFS_SB(s);
-	dev_t dev = s->s_dev;
+	dev_t dev = s->s_view.v_dev;
 
 	generic_shutdown_super(s);
 
diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c
index 1a70581e1cb2..d432f7020d39 100644
--- a/fs/nfsd/nfs3xdr.c
+++ b/fs/nfsd/nfs3xdr.c
@@ -147,7 +147,7 @@ static __be32 *encode_fsid(__be32 *p, struct svc_fh *fhp)
 	default:
 	case FSIDSOURCE_DEV:
 		p = xdr_encode_hyper(p, (u64)huge_encode_dev
-				     (fhp->fh_dentry->d_sb->s_dev));
+				     (fhp->fh_dentry->d_sb->s_view.v_dev));
 		break;
 	case FSIDSOURCE_FSID:
 		p = xdr_encode_hyper(p, (u64) fhp->fh_export->ex_fsid);
diff --git a/fs/nfsd/nfsfh.c b/fs/nfsd/nfsfh.c
index 8aa011820c4a..2f819ae8f47e 100644
--- a/fs/nfsd/nfsfh.c
+++ b/fs/nfsd/nfsfh.c
@@ -440,7 +440,7 @@ static bool fsid_type_ok_for_exp(u8 fsid_type, struct svc_export *exp)
 {
 	switch (fsid_type) {
 	case FSID_DEV:
-		if (!old_valid_dev(exp_sb(exp)->s_dev))
+		if (!old_valid_dev(exp_sb(exp)->s_view.v_dev))
 			return 0;
 		/* FALL THROUGH */
 	case FSID_MAJOR_MINOR:
@@ -505,7 +505,7 @@ static void set_version_and_fsid_type(struct svc_fh *fhp, struct svc_export *exp
 			else
 				fsid_type = FSID_UUID4_INUM;
 		}
-	} else if (!old_valid_dev(exp_sb(exp)->s_dev))
+	} else if (!old_valid_dev(exp_sb(exp)->s_view.v_dev))
 		/* for newer device numbers, we must use a newer fsid format */
 		fsid_type = FSID_ENCODE_DEV;
 	else
@@ -528,7 +528,7 @@ fh_compose(struct svc_fh *fhp, struct svc_export *exp, struct dentry *dentry,
 	 */
 
 	struct inode * inode = d_inode(dentry);
-	dev_t ex_dev = exp_sb(exp)->s_dev;
+	dev_t ex_dev = exp_sb(exp)->s_view.v_dev;
 
 	dprintk("nfsd: fh_compose(exp %02x:%02x/%ld %pd2, ino=%ld)\n",
 		MAJOR(ex_dev), MINOR(ex_dev),
diff --git a/fs/nilfs2/super.c b/fs/nilfs2/super.c
index 6ffeca84d7c3..0239b1b495db 100644
--- a/fs/nilfs2/super.c
+++ b/fs/nilfs2/super.c
@@ -1267,7 +1267,7 @@ static int nilfs_identify(char *data, struct nilfs_super_data *sd)
 static int nilfs_set_bdev_super(struct super_block *s, void *data)
 {
 	s->s_bdev = data;
-	s->s_dev = s->s_bdev->bd_dev;
+	s->s_view.v_dev = s->s_bdev->bd_dev;
 	return 0;
 }
 
diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c
index e0047816c7b7..520c3cdee1e1 100644
--- a/fs/ocfs2/journal.c
+++ b/fs/ocfs2/journal.c
@@ -1435,7 +1435,8 @@ static int __ocfs2_recovery_thread(void *arg)
 			mlog(ML_ERROR,
 			     "Error %d recovering node %d on device (%u,%u)!\n",
 			     status, node_num,
-			     MAJOR(osb->sb->s_dev), MINOR(osb->sb->s_dev));
+			     MAJOR(osb->sb->s_view.v_dev),
+			     MINOR(osb->sb->s_view.v_dev));
 			mlog(ML_ERROR, "Volume requires unmount.\n");
 		}
 
@@ -1624,8 +1625,9 @@ static int ocfs2_replay_journal(struct ocfs2_super *osb,
 	ocfs2_replay_map_set_state(osb, REPLAY_NEEDED);
 
 	printk(KERN_NOTICE "ocfs2: Begin replay journal (node %d, slot %d) on "\
-	       "device (%u,%u)\n", node_num, slot_num, MAJOR(osb->sb->s_dev),
-	       MINOR(osb->sb->s_dev));
+	       "device (%u,%u)\n", node_num, slot_num,
+	       MAJOR(osb->sb->s_view.v_dev),
+	       MINOR(osb->sb->s_view.v_dev));
 
 	OCFS2_I(inode)->ip_clusters = le32_to_cpu(fe->i_clusters);
 
@@ -1681,8 +1683,9 @@ static int ocfs2_replay_journal(struct ocfs2_super *osb,
 	jbd2_journal_destroy(journal);
 
 	printk(KERN_NOTICE "ocfs2: End replay journal (node %d, slot %d) on "\
-	       "device (%u,%u)\n", node_num, slot_num, MAJOR(osb->sb->s_dev),
-	       MINOR(osb->sb->s_dev));
+	       "device (%u,%u)\n", node_num, slot_num,
+	       MAJOR(osb->sb->s_view.v_dev),
+	       MINOR(osb->sb->s_view.v_dev));
 done:
 	/* drop the lock on this nodes journal */
 	if (got_lock)
diff --git a/fs/ocfs2/ocfs2_trace.h b/fs/ocfs2/ocfs2_trace.h
index e2a11aaece10..cb9b7bd9e0c4 100644
--- a/fs/ocfs2/ocfs2_trace.h
+++ b/fs/ocfs2/ocfs2_trace.h
@@ -700,8 +700,8 @@ TRACE_EVENT(ocfs2_trim_extent,
 		__field(__u64,	count)
 	),
 	TP_fast_assign(
-		__entry->dev_major = MAJOR(sb->s_dev);
-		__entry->dev_minor = MINOR(sb->s_dev);
+		__entry->dev_major = MAJOR(sb->s_view.v_dev);
+		__entry->dev_minor = MINOR(sb->s_view.v_dev);
 		__entry->blk = blk;
 		__entry->count = count;
 	),
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c
index ffa4952d432b..7d9d34c360e4 100644
--- a/fs/ocfs2/super.c
+++ b/fs/ocfs2/super.c
@@ -1973,7 +1973,7 @@ static void ocfs2_dismount_volume(struct super_block *sb, int mnt_err)
 
 	ocfs2_delete_osb(osb);
 	kfree(osb);
-	sb->s_dev = 0;
+	sb->s_view.v_dev = 0;
 	sb->s_fs_info = NULL;
 }
 
@@ -2102,7 +2102,7 @@ static int ocfs2_initialize_super(struct super_block *sb,
 	ocfs2_init_node_maps(osb);
 
 	snprintf(osb->dev_str, sizeof(osb->dev_str), "%u,%u",
-		 MAJOR(osb->sb->s_dev), MINOR(osb->sb->s_dev));
+		 MAJOR(osb->sb->s_view.v_dev), MINOR(osb->sb->s_view.v_dev));
 
 	osb->max_slots = le16_to_cpu(di->id2.i_super.s_max_slots);
 	if (osb->max_slots > OCFS2_MAX_SLOTS || osb->max_slots == 0) {
diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c
index ebf2a857d547..6169f36337bf 100644
--- a/fs/overlayfs/inode.c
+++ b/fs/overlayfs/inode.c
@@ -132,7 +132,7 @@ int ovl_getattr(const struct path *path, struct kstat *stat,
 			 * number are unique, so we use the overlay st_dev,
 			 * which is friendly to du -x.
 			 */
-			stat->dev = dentry->d_sb->s_dev;
+			stat->dev = dentry->d_sb->s_view.v_dev;
 		} else if (!OVL_TYPE_UPPER(type)) {
 			/*
 			 * For non-samefs setup, to make sure that st_dev/st_ino
@@ -151,7 +151,7 @@ int ovl_getattr(const struct path *path, struct kstat *stat,
 		 * overlay st_dev} is not unique, so use the non persistent
 		 * overlay st_ino for directories.
 		 */
-		stat->dev = dentry->d_sb->s_dev;
+		stat->dev = dentry->d_sb->s_view.v_dev;
 		stat->ino = dentry->d_inode->i_ino;
 	}
 
diff --git a/fs/overlayfs/readdir.c b/fs/overlayfs/readdir.c
index c11f5c0906c3..3b2ce71de48d 100644
--- a/fs/overlayfs/readdir.c
+++ b/fs/overlayfs/readdir.c
@@ -489,7 +489,7 @@ static int ovl_cache_update_ino(struct path *path, struct ovl_cache_entry *p)
 		if (err)
 			goto fail;
 
-		WARN_ON_ONCE(dir->d_sb->s_dev != stat.dev);
+		WARN_ON_ONCE(dir->d_sb->s_view.v_dev != stat.dev);
 		ino = stat.ino;
 	}
 
@@ -660,7 +660,7 @@ static int ovl_iterate_real(struct file *file, struct dir_context *ctx)
 		if (err)
 			return err;
 
-		WARN_ON_ONCE(dir->d_sb->s_dev != stat.dev);
+		WARN_ON_ONCE(dir->d_sb->s_view.v_dev != stat.dev);
 		rdt.parent_ino = stat.ino;
 	}
 
diff --git a/fs/proc_namespace.c b/fs/proc_namespace.c
index e16fb8f2049e..842d6f4fe014 100644
--- a/fs/proc_namespace.c
+++ b/fs/proc_namespace.c
@@ -137,7 +137,7 @@ static int show_mountinfo(struct seq_file *m, struct vfsmount *mnt)
 	int err;
 
 	seq_printf(m, "%i %i %u:%u ", r->mnt_id, r->mnt_parent->mnt_id,
-		   MAJOR(sb->s_dev), MINOR(sb->s_dev));
+		   MAJOR(sb->s_view.v_dev), MINOR(sb->s_view.v_dev));
 	if (sb->s_op->show_path) {
 		err = sb->s_op->show_path(m, mnt->mnt_root);
 		if (err)
diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
index ba6d549323cb..124f8dff5214 100644
--- a/fs/quota/dquot.c
+++ b/fs/quota/dquot.c
@@ -1242,7 +1242,7 @@ static void flush_warnings(struct dquot_warn *warn)
 		print_warning(&warn[i]);
 #endif
 		quota_send_warning(warn[i].w_dq_id,
-				   warn[i].w_sb->s_dev, warn[i].w_type);
+				   warn[i].w_sb->s_view.v_dev, warn[i].w_type);
 	}
 }
 
diff --git a/fs/reiserfs/journal.c b/fs/reiserfs/journal.c
index aefcb77de3fd..7c20afe62014 100644
--- a/fs/reiserfs/journal.c
+++ b/fs/reiserfs/journal.c
@@ -2613,14 +2613,14 @@ static int journal_init_dev(struct super_block *super,
 
 	journal->j_dev_bd = NULL;
 	jdev = SB_ONDISK_JOURNAL_DEVICE(super) ?
-	    new_decode_dev(SB_ONDISK_JOURNAL_DEVICE(super)) : super->s_dev;
+	    new_decode_dev(SB_ONDISK_JOURNAL_DEVICE(super)) : super->s_view.v_dev;
 
 	if (bdev_read_only(super->s_bdev))
 		blkdev_mode = FMODE_READ;
 
 	/* there is no "jdev" option and journal is on separate device */
 	if ((!jdev_name || !jdev_name[0])) {
-		if (jdev == super->s_dev)
+		if (jdev == super->s_view.v_dev)
 			blkdev_mode &= ~FMODE_EXCL;
 		journal->j_dev_bd = blkdev_get_by_dev(jdev, blkdev_mode,
 						      journal);
@@ -2632,7 +2632,7 @@ static int journal_init_dev(struct super_block *super,
 					 "cannot init journal device '%s': %i",
 					 __bdevname(jdev, b), result);
 			return result;
-		} else if (jdev != super->s_dev)
+		} else if (jdev != super->s_view.v_dev)
 			set_blocksize(journal->j_dev_bd, super->s_blocksize);
 
 		return 0;
diff --git a/fs/romfs/super.c b/fs/romfs/super.c
index eb0b7d3775bb..f9d9d99a32e9 100644
--- a/fs/romfs/super.c
+++ b/fs/romfs/super.c
@@ -433,8 +433,8 @@ static int romfs_statfs(struct dentry *dentry, struct kstatfs *buf)
 	 */
 	if (sb->s_bdev)
 		id = huge_encode_dev(sb->s_bdev->bd_dev);
-	else if (sb->s_dev)
-		id = huge_encode_dev(sb->s_dev);
+	else if (sb->s_view.v_dev)
+		id = huge_encode_dev(sb->s_view.v_dev);
 
 	buf->f_type = ROMFS_MAGIC;
 	buf->f_namelen = ROMFS_MAXFN;
@@ -510,7 +510,7 @@ static int romfs_fill_super(struct super_block *sb, void *data, int silent)
 #ifdef CONFIG_ROMFS_ON_MTD
 	/* Use same dev ID from the underlying mtdblock device */
 	if (sb->s_mtd)
-		sb->s_dev = MKDEV(MTD_BLOCK_MAJOR, sb->s_mtd->index);
+		sb->s_view.v_dev = MKDEV(MTD_BLOCK_MAJOR, sb->s_mtd->index);
 #endif
 	/* read the image superblock and check it */
 	rsb = kmalloc(512, GFP_KERNEL);
diff --git a/fs/super.c b/fs/super.c
index 5258a57d410a..dfb5b1c8ef20 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -781,7 +781,7 @@ struct super_block *user_get_super(dev_t dev)
 	list_for_each_entry(sb, &super_blocks, s_list) {
 		if (hlist_unhashed(&sb->s_instances))
 			continue;
-		if (sb->s_dev ==  dev) {
+		if (sb->s_view.v_dev ==  dev) {
 			sb->s_count++;
 			spin_unlock(&sb_lock);
 			down_read(&sb->s_umount);
@@ -981,14 +981,14 @@ EXPORT_SYMBOL(free_anon_bdev);
 
 int set_anon_super(struct super_block *s, void *data)
 {
-	return get_anon_bdev(&s->s_dev);
+	return get_anon_bdev(&s->s_view.v_dev);
 }
 
 EXPORT_SYMBOL(set_anon_super);
 
 void kill_anon_super(struct super_block *sb)
 {
-	dev_t dev = sb->s_dev;
+	dev_t dev = sb->s_view.v_dev;
 	generic_shutdown_super(sb);
 	free_anon_bdev(dev);
 }
@@ -1052,7 +1052,7 @@ EXPORT_SYMBOL(mount_ns);
 static int set_bdev_super(struct super_block *s, void *data)
 {
 	s->s_bdev = data;
-	s->s_dev = s->s_bdev->bd_dev;
+	s->s_view.v_dev = s->s_bdev->bd_dev;
 	s->s_bdi = bdi_get(s->s_bdev->bd_bdi);
 
 	return 0;
diff --git a/fs/xfs/scrub/trace.h b/fs/xfs/scrub/trace.h
index 4dc896852bf0..57e6610e29d6 100644
--- a/fs/xfs/scrub/trace.h
+++ b/fs/xfs/scrub/trace.h
@@ -41,7 +41,7 @@ DECLARE_EVENT_CLASS(xfs_scrub_class,
 		__field(int, error)
 	),
 	TP_fast_assign(
-		__entry->dev = ip->i_mount->m_super->s_dev;
+		__entry->dev = ip->i_mount->m_super->s_view.v_dev;
 		__entry->ino = ip->i_ino;
 		__entry->type = sm->sm_type;
 		__entry->agno = sm->sm_agno;
@@ -83,7 +83,7 @@ TRACE_EVENT(xfs_scrub_op_error,
 		__field(void *, ret_ip)
 	),
 	TP_fast_assign(
-		__entry->dev = sc->mp->m_super->s_dev;
+		__entry->dev = sc->mp->m_super->s_view.v_dev;
 		__entry->type = sc->sm->sm_type;
 		__entry->agno = agno;
 		__entry->bno = bno;
@@ -113,7 +113,7 @@ TRACE_EVENT(xfs_scrub_file_op_error,
 		__field(void *, ret_ip)
 	),
 	TP_fast_assign(
-		__entry->dev = sc->ip->i_mount->m_super->s_dev;
+		__entry->dev = sc->ip->i_mount->m_super->s_view.v_dev;
 		__entry->ino = sc->ip->i_ino;
 		__entry->whichfork = whichfork;
 		__entry->type = sc->sm->sm_type;
@@ -150,7 +150,7 @@ DECLARE_EVENT_CLASS(xfs_scrub_block_error_class,
 		agno = XFS_FSB_TO_AGNO(sc->mp, fsbno);
 		bno = XFS_FSB_TO_AGBNO(sc->mp, fsbno);
 
-		__entry->dev = sc->mp->m_super->s_dev;
+		__entry->dev = sc->mp->m_super->s_view.v_dev;
 		__entry->type = sc->sm->sm_type;
 		__entry->agno = agno;
 		__entry->bno = bno;
@@ -200,7 +200,7 @@ DECLARE_EVENT_CLASS(xfs_scrub_ino_error_class,
 					XFS_INO_TO_AGINO(sc->mp, ino));
 		}
 
-		__entry->dev = sc->mp->m_super->s_dev;
+		__entry->dev = sc->mp->m_super->s_view.v_dev;
 		__entry->ino = ino;
 		__entry->type = sc->sm->sm_type;
 		__entry->agno = agno;
@@ -239,7 +239,7 @@ DECLARE_EVENT_CLASS(xfs_scrub_fblock_error_class,
 		__field(void *, ret_ip)
 	),
 	TP_fast_assign(
-		__entry->dev = sc->ip->i_mount->m_super->s_dev;
+		__entry->dev = sc->ip->i_mount->m_super->s_view.v_dev;
 		__entry->ino = sc->ip->i_ino;
 		__entry->whichfork = whichfork;
 		__entry->type = sc->sm->sm_type;
@@ -273,7 +273,7 @@ TRACE_EVENT(xfs_scrub_incomplete,
 		__field(void *, ret_ip)
 	),
 	TP_fast_assign(
-		__entry->dev = sc->mp->m_super->s_dev;
+		__entry->dev = sc->mp->m_super->s_view.v_dev;
 		__entry->type = sc->sm->sm_type;
 		__entry->ret_ip = ret_ip;
 	),
@@ -301,7 +301,7 @@ TRACE_EVENT(xfs_scrub_btree_op_error,
 	TP_fast_assign(
 		xfs_fsblock_t fsbno = xfs_scrub_btree_cur_fsbno(cur, level);
 
-		__entry->dev = sc->mp->m_super->s_dev;
+		__entry->dev = sc->mp->m_super->s_view.v_dev;
 		__entry->type = sc->sm->sm_type;
 		__entry->btnum = cur->bc_btnum;
 		__entry->level = level;
@@ -342,7 +342,7 @@ TRACE_EVENT(xfs_scrub_ifork_btree_op_error,
 	),
 	TP_fast_assign(
 		xfs_fsblock_t fsbno = xfs_scrub_btree_cur_fsbno(cur, level);
-		__entry->dev = sc->mp->m_super->s_dev;
+		__entry->dev = sc->mp->m_super->s_view.v_dev;
 		__entry->ino = sc->ip->i_ino;
 		__entry->whichfork = cur->bc_private.b.whichfork;
 		__entry->type = sc->sm->sm_type;
@@ -384,7 +384,7 @@ TRACE_EVENT(xfs_scrub_btree_error,
 	),
 	TP_fast_assign(
 		xfs_fsblock_t fsbno = xfs_scrub_btree_cur_fsbno(cur, level);
-		__entry->dev = sc->mp->m_super->s_dev;
+		__entry->dev = sc->mp->m_super->s_view.v_dev;
 		__entry->type = sc->sm->sm_type;
 		__entry->btnum = cur->bc_btnum;
 		__entry->level = level;
@@ -422,7 +422,7 @@ TRACE_EVENT(xfs_scrub_ifork_btree_error,
 	),
 	TP_fast_assign(
 		xfs_fsblock_t fsbno = xfs_scrub_btree_cur_fsbno(cur, level);
-		__entry->dev = sc->mp->m_super->s_dev;
+		__entry->dev = sc->mp->m_super->s_view.v_dev;
 		__entry->ino = sc->ip->i_ino;
 		__entry->whichfork = cur->bc_private.b.whichfork;
 		__entry->type = sc->sm->sm_type;
@@ -463,7 +463,7 @@ DECLARE_EVENT_CLASS(xfs_scrub_sbtree_class,
 	TP_fast_assign(
 		xfs_fsblock_t fsbno = xfs_scrub_btree_cur_fsbno(cur, level);
 
-		__entry->dev = sc->mp->m_super->s_dev;
+		__entry->dev = sc->mp->m_super->s_view.v_dev;
 		__entry->type = sc->sm->sm_type;
 		__entry->btnum = cur->bc_btnum;
 		__entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
@@ -501,7 +501,7 @@ TRACE_EVENT(xfs_scrub_xref_error,
 		__field(void *, ret_ip)
 	),
 	TP_fast_assign(
-		__entry->dev = sc->mp->m_super->s_dev;
+		__entry->dev = sc->mp->m_super->s_view.v_dev;
 		__entry->type = sc->sm->sm_type;
 		__entry->error = error;
 		__entry->ret_ip = ret_ip;
diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h
index 16065fe0bd4d..2d650a11890b 100644
--- a/fs/xfs/xfs_trace.h
+++ b/fs/xfs/xfs_trace.h
@@ -114,7 +114,7 @@ DECLARE_EVENT_CLASS(xfs_perag_class,
 		__field(unsigned long, caller_ip)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 		__entry->refcount = refcount;
 		__entry->caller_ip = caller_ip;
@@ -149,7 +149,7 @@ DECLARE_EVENT_CLASS(xfs_ag_class,
 		__field(xfs_agnumber_t, agno)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 	),
 	TP_printk("dev %d:%d agno %u",
@@ -742,7 +742,7 @@ TRACE_EVENT(xfs_irec_merge_pre,
 		__field(uint16_t, nholemask)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 		__entry->agino = agino;
 		__entry->holemask = holemask;
@@ -766,7 +766,7 @@ TRACE_EVENT(xfs_irec_merge_post,
 		__field(uint16_t, holemask)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 		__entry->agino = agino;
 		__entry->holemask = holemask;
@@ -868,7 +868,7 @@ DECLARE_EVENT_CLASS(xfs_dquot_class,
 		__field(unsigned long long, ino_softlimit)
 	), \
 	TP_fast_assign(
-		__entry->dev = dqp->q_mount->m_super->s_dev;
+		__entry->dev = dqp->q_mount->m_super->s_view.v_dev;
 		__entry->id = be32_to_cpu(dqp->q_core.d_id);
 		__entry->flags = dqp->dq_flags;
 		__entry->nrefs = dqp->q_nrefs;
@@ -947,7 +947,7 @@ DECLARE_EVENT_CLASS(xfs_loggrant_class,
 		__field(xfs_lsn_t, tail_lsn)
 	),
 	TP_fast_assign(
-		__entry->dev = log->l_mp->m_super->s_dev;
+		__entry->dev = log->l_mp->m_super->s_view.v_dev;
 		__entry->ocnt = tic->t_ocnt;
 		__entry->cnt = tic->t_cnt;
 		__entry->curr_res = tic->t_curr_res;
@@ -1022,7 +1022,7 @@ DECLARE_EVENT_CLASS(xfs_log_item_class,
 		__field(xfs_lsn_t, lsn)
 	),
 	TP_fast_assign(
-		__entry->dev = lip->li_mountp->m_super->s_dev;
+		__entry->dev = lip->li_mountp->m_super->s_view.v_dev;
 		__entry->lip = lip;
 		__entry->type = lip->li_type;
 		__entry->flags = lip->li_flags;
@@ -1045,7 +1045,7 @@ TRACE_EVENT(xfs_log_force,
 		__field(unsigned long, caller_ip)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->lsn = lsn;
 		__entry->caller_ip = caller_ip;
 	),
@@ -1075,7 +1075,7 @@ DECLARE_EVENT_CLASS(xfs_ail_class,
 		__field(xfs_lsn_t, new_lsn)
 	),
 	TP_fast_assign(
-		__entry->dev = lip->li_mountp->m_super->s_dev;
+		__entry->dev = lip->li_mountp->m_super->s_view.v_dev;
 		__entry->lip = lip;
 		__entry->type = lip->li_type;
 		__entry->flags = lip->li_flags;
@@ -1109,7 +1109,7 @@ TRACE_EVENT(xfs_log_assign_tail_lsn,
 		__field(xfs_lsn_t, last_sync_lsn)
 	),
 	TP_fast_assign(
-		__entry->dev = log->l_mp->m_super->s_dev;
+		__entry->dev = log->l_mp->m_super->s_view.v_dev;
 		__entry->new_lsn = new_lsn;
 		__entry->old_lsn = atomic64_read(&log->l_tail_lsn);
 		__entry->last_sync_lsn = atomic64_read(&log->l_last_sync_lsn);
@@ -1425,7 +1425,7 @@ DECLARE_EVENT_CLASS(xfs_extent_busy_class,
 		__field(xfs_extlen_t, len)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 		__entry->agbno = agbno;
 		__entry->len = len;
@@ -1461,7 +1461,7 @@ TRACE_EVENT(xfs_extent_busy_trim,
 		__field(xfs_extlen_t, tlen)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 		__entry->agbno = agbno;
 		__entry->len = len;
@@ -1498,7 +1498,7 @@ TRACE_EVENT(xfs_agf,
 		__field(unsigned long, caller_ip)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = be32_to_cpu(agf->agf_seqno),
 		__entry->flags = flags;
 		__entry->length = be32_to_cpu(agf->agf_length),
@@ -1549,7 +1549,7 @@ TRACE_EVENT(xfs_free_extent,
 		__field(int, haveright)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 		__entry->agbno = agbno;
 		__entry->len = len;
@@ -1594,7 +1594,7 @@ DECLARE_EVENT_CLASS(xfs_alloc_class,
 		__field(xfs_fsblock_t, firstblock)
 	),
 	TP_fast_assign(
-		__entry->dev = args->mp->m_super->s_dev;
+		__entry->dev = args->mp->m_super->s_view.v_dev;
 		__entry->agno = args->agno;
 		__entry->agbno = args->agbno;
 		__entry->minlen = args->minlen;
@@ -1958,7 +1958,7 @@ TRACE_EVENT(xfs_log_recover,
 		__field(xfs_daddr_t, tailblk)
 	),
 	TP_fast_assign(
-		__entry->dev = log->l_mp->m_super->s_dev;
+		__entry->dev = log->l_mp->m_super->s_view.v_dev;
 		__entry->headblk = headblk;
 		__entry->tailblk = tailblk;
 	),
@@ -1978,7 +1978,7 @@ TRACE_EVENT(xfs_log_recover_record,
 		__field(int, pass)
 	),
 	TP_fast_assign(
-		__entry->dev = log->l_mp->m_super->s_dev;
+		__entry->dev = log->l_mp->m_super->s_view.v_dev;
 		__entry->lsn = be64_to_cpu(rhead->h_lsn);
 		__entry->len = be32_to_cpu(rhead->h_len);
 		__entry->num_logops = be32_to_cpu(rhead->h_num_logops);
@@ -2005,7 +2005,7 @@ DECLARE_EVENT_CLASS(xfs_log_recover_item_class,
 		__field(int, total)
 	),
 	TP_fast_assign(
-		__entry->dev = log->l_mp->m_super->s_dev;
+		__entry->dev = log->l_mp->m_super->s_view.v_dev;
 		__entry->item = (unsigned long)item;
 		__entry->tid = trans->r_log_tid;
 		__entry->lsn = trans->r_lsn;
@@ -2050,7 +2050,7 @@ DECLARE_EVENT_CLASS(xfs_log_recover_buf_item_class,
 		__field(unsigned int, map_size)
 	),
 	TP_fast_assign(
-		__entry->dev = log->l_mp->m_super->s_dev;
+		__entry->dev = log->l_mp->m_super->s_view.v_dev;
 		__entry->blkno = buf_f->blf_blkno;
 		__entry->len = buf_f->blf_len;
 		__entry->flags = buf_f->blf_flags;
@@ -2097,7 +2097,7 @@ DECLARE_EVENT_CLASS(xfs_log_recover_ino_item_class,
 		__field(int, boffset)
 	),
 	TP_fast_assign(
-		__entry->dev = log->l_mp->m_super->s_dev;
+		__entry->dev = log->l_mp->m_super->s_view.v_dev;
 		__entry->ino = in_f->ilf_ino;
 		__entry->size = in_f->ilf_size;
 		__entry->fields = in_f->ilf_fields;
@@ -2141,7 +2141,7 @@ DECLARE_EVENT_CLASS(xfs_log_recover_icreate_item_class,
 		__field(unsigned int, gen)
 	),
 	TP_fast_assign(
-		__entry->dev = log->l_mp->m_super->s_dev;
+		__entry->dev = log->l_mp->m_super->s_view.v_dev;
 		__entry->agno = be32_to_cpu(in_f->icl_ag);
 		__entry->agbno = be32_to_cpu(in_f->icl_agbno);
 		__entry->count = be32_to_cpu(in_f->icl_count);
@@ -2173,7 +2173,7 @@ DECLARE_EVENT_CLASS(xfs_discard_class,
 		__field(xfs_extlen_t, len)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 		__entry->agbno = agbno;
 		__entry->len = len;
@@ -2208,7 +2208,7 @@ DECLARE_EVENT_CLASS(xfs_btree_cur_class,
 		__field(xfs_daddr_t, daddr)
 	),
 	TP_fast_assign(
-		__entry->dev = cur->bc_mp->m_super->s_dev;
+		__entry->dev = cur->bc_mp->m_super->s_view.v_dev;
 		__entry->btnum = cur->bc_btnum;
 		__entry->level = level;
 		__entry->nlevels = cur->bc_nlevels;
@@ -2245,7 +2245,7 @@ DECLARE_EVENT_CLASS(xfs_defer_class,
 		__field(char, low)
 	),
 	TP_fast_assign(
-		__entry->dev = mp ? mp->m_super->s_dev : 0;
+		__entry->dev = mp ? mp->m_super->s_view.v_dev : 0;
 		__entry->dop = dop;
 		__entry->committed = dop->dop_committed;
 		__entry->low = dop->dop_low;
@@ -2272,7 +2272,7 @@ DECLARE_EVENT_CLASS(xfs_defer_error_class,
 		__field(int, error)
 	),
 	TP_fast_assign(
-		__entry->dev = mp ? mp->m_super->s_dev : 0;
+		__entry->dev = mp ? mp->m_super->s_view.v_dev : 0;
 		__entry->dop = dop;
 		__entry->committed = dop->dop_committed;
 		__entry->low = dop->dop_low;
@@ -2301,7 +2301,7 @@ DECLARE_EVENT_CLASS(xfs_defer_pending_class,
 		__field(int, nr)
 	),
 	TP_fast_assign(
-		__entry->dev = mp ? mp->m_super->s_dev : 0;
+		__entry->dev = mp ? mp->m_super->s_view.v_dev : 0;
 		__entry->type = dfp->dfp_type->type;
 		__entry->intent = dfp->dfp_intent;
 		__entry->committed = dfp->dfp_done != NULL;
@@ -2331,7 +2331,7 @@ DECLARE_EVENT_CLASS(xfs_phys_extent_deferred_class,
 		__field(xfs_extlen_t, len)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 		__entry->type = type;
 		__entry->agbno = agbno;
@@ -2374,7 +2374,7 @@ DECLARE_EVENT_CLASS(xfs_map_extent_deferred_class,
 		__field(int, op)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 		__entry->ino = ino;
 		__entry->agbno = agbno;
@@ -2443,7 +2443,7 @@ DECLARE_EVENT_CLASS(xfs_rmap_class,
 		__field(unsigned long, flags)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 		__entry->agbno = agbno;
 		__entry->len = len;
@@ -2481,7 +2481,7 @@ DECLARE_EVENT_CLASS(xfs_ag_error_class,
 		__field(unsigned long, caller_ip)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 		__entry->error = error;
 		__entry->caller_ip = caller_ip;
@@ -2525,7 +2525,7 @@ DECLARE_EVENT_CLASS(xfs_rmapbt_class,
 		__field(unsigned int, flags)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 		__entry->agbno = agbno;
 		__entry->len = len;
@@ -2593,7 +2593,7 @@ DECLARE_EVENT_CLASS(xfs_ag_resv_class,
 	TP_fast_assign(
 		struct xfs_ag_resv	*r = xfs_perag_resv(pag, resv);
 
-		__entry->dev = pag->pag_mount->m_super->s_dev;
+		__entry->dev = pag->pag_mount->m_super->s_view.v_dev;
 		__entry->agno = pag->pag_agno;
 		__entry->resv = resv;
 		__entry->freeblks = pag->pagf_freeblks;
@@ -2651,7 +2651,7 @@ DECLARE_EVENT_CLASS(xfs_ag_btree_lookup_class,
 		__field(xfs_lookup_t, dir)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 		__entry->agbno = agbno;
 		__entry->dir = dir;
@@ -2683,7 +2683,7 @@ DECLARE_EVENT_CLASS(xfs_refcount_extent_class,
 		__field(xfs_nlink_t, refcount)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 		__entry->startblock = irec->rc_startblock;
 		__entry->blockcount = irec->rc_blockcount;
@@ -2717,7 +2717,7 @@ DECLARE_EVENT_CLASS(xfs_refcount_extent_at_class,
 		__field(xfs_agblock_t, agbno)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 		__entry->startblock = irec->rc_startblock;
 		__entry->blockcount = irec->rc_blockcount;
@@ -2755,7 +2755,7 @@ DECLARE_EVENT_CLASS(xfs_refcount_double_extent_class,
 		__field(xfs_nlink_t, i2_refcount)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 		__entry->i1_startblock = i1->rc_startblock;
 		__entry->i1_blockcount = i1->rc_blockcount;
@@ -2800,7 +2800,7 @@ DECLARE_EVENT_CLASS(xfs_refcount_double_extent_at_class,
 		__field(xfs_agblock_t, agbno)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 		__entry->i1_startblock = i1->rc_startblock;
 		__entry->i1_blockcount = i1->rc_blockcount;
@@ -2850,7 +2850,7 @@ DECLARE_EVENT_CLASS(xfs_refcount_triple_extent_class,
 		__field(xfs_nlink_t, i3_refcount)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 		__entry->i1_startblock = i1->rc_startblock;
 		__entry->i1_blockcount = i1->rc_blockcount;
@@ -2943,7 +2943,7 @@ TRACE_EVENT(xfs_refcount_finish_one_leftover,
 		__field(xfs_extlen_t, new_len)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->agno = agno;
 		__entry->type = type;
 		__entry->agbno = agbno;
@@ -3247,7 +3247,7 @@ DECLARE_EVENT_CLASS(xfs_fsmap_class,
 		__field(unsigned int, flags)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->keydev = new_decode_dev(keydev);
 		__entry->agno = agno;
 		__entry->bno = rmap->rm_startblock;
@@ -3288,7 +3288,7 @@ DECLARE_EVENT_CLASS(xfs_getfsmap_class,
 		__field(uint64_t, flags)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->keydev = new_decode_dev(fsmap->fmr_device);
 		__entry->block = fsmap->fmr_physical;
 		__entry->len = fsmap->fmr_length;
@@ -3325,7 +3325,7 @@ TRACE_EVENT(xfs_trans_resv_calc,
 		__field(int, logflags)
 	),
 	TP_fast_assign(
-		__entry->dev = mp->m_super->s_dev;
+		__entry->dev = mp->m_super->s_view.v_dev;
 		__entry->type = type;
 		__entry->logres = res->tr_logres;
 		__entry->logcount = res->tr_logcount;
diff --git a/fs/xfs/xfs_trans_dquot.c b/fs/xfs/xfs_trans_dquot.c
index c3d547211d16..be0850fdbe50 100644
--- a/fs/xfs/xfs_trans_dquot.c
+++ b/fs/xfs/xfs_trans_dquot.c
@@ -583,7 +583,7 @@ xfs_quota_warn(
 
 	quota_send_warning(make_kqid(&init_user_ns, qtype,
 				     be32_to_cpu(dqp->q_core.d_id)),
-			   mp->m_super->s_dev, type);
+			   mp->m_super->s_view.v_dev, type);
 }
 
 /*
diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h
index 500ae412f483..003844d10b86 100644
--- a/include/trace/events/ext4.h
+++ b/include/trace/events/ext4.h
@@ -599,7 +599,7 @@ TRACE_EVENT(ext4_discard_blocks,
 	),
 
 	TP_fast_assign(
-		__entry->dev	= sb->s_dev;
+		__entry->dev	= sb->s_view.v_dev;
 		__entry->blk	= blk;
 		__entry->count	= count;
 	),
@@ -625,7 +625,7 @@ DECLARE_EVENT_CLASS(ext4__mb_new_pa,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= ac->ac_sb->s_dev;
+		__entry->dev		= ac->ac_sb->s_view.v_dev;
 		__entry->ino		= ac->ac_inode->i_ino;
 		__entry->pa_pstart	= pa->pa_pstart;
 		__entry->pa_lstart	= pa->pa_lstart;
@@ -694,7 +694,7 @@ TRACE_EVENT(ext4_mb_release_group_pa,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= sb->s_dev;
+		__entry->dev		= sb->s_view.v_dev;
 		__entry->pa_pstart	= pa->pa_pstart;
 		__entry->pa_len		= pa->pa_len;
 	),
@@ -737,7 +737,7 @@ TRACE_EVENT(ext4_mb_discard_preallocations,
 	),
 
 	TP_fast_assign(
-		__entry->dev	= sb->s_dev;
+		__entry->dev	= sb->s_view.v_dev;
 		__entry->needed	= needed;
 	),
 
@@ -874,7 +874,7 @@ TRACE_EVENT(ext4_sync_file_enter,
 	TP_fast_assign(
 		struct dentry *dentry = file->f_path.dentry;
 
-		__entry->dev		= dentry->d_sb->s_dev;
+		__entry->dev		= dentry->d_sb->s_view.v_dev;
 		__entry->ino		= d_inode(dentry)->i_ino;
 		__entry->datasync	= datasync;
 		__entry->parent		= d_inode(dentry->d_parent)->i_ino;
@@ -921,7 +921,7 @@ TRACE_EVENT(ext4_sync_fs,
 	),
 
 	TP_fast_assign(
-		__entry->dev	= sb->s_dev;
+		__entry->dev	= sb->s_view.v_dev;
 		__entry->wait	= wait;
 	),
 
@@ -1078,7 +1078,7 @@ DECLARE_EVENT_CLASS(ext4__mballoc,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= sb->s_dev;
+		__entry->dev		= sb->s_view.v_dev;
 		__entry->ino		= inode ? inode->i_ino : 0;
 		__entry->result_start	= start;
 		__entry->result_group	= group;
@@ -1248,7 +1248,7 @@ DECLARE_EVENT_CLASS(ext4__bitmap_load,
 	),
 
 	TP_fast_assign(
-		__entry->dev	= sb->s_dev;
+		__entry->dev	= sb->s_view.v_dev;
 		__entry->group	= group;
 	),
 
@@ -1434,7 +1434,7 @@ TRACE_EVENT(ext4_unlink_enter,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= dentry->d_sb->s_dev;
+		__entry->dev		= dentry->d_sb->s_view.v_dev;
 		__entry->ino		= d_inode(dentry)->i_ino;
 		__entry->parent		= parent->i_ino;
 		__entry->size		= d_inode(dentry)->i_size;
@@ -1458,7 +1458,7 @@ TRACE_EVENT(ext4_unlink_exit,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= dentry->d_sb->s_dev;
+		__entry->dev		= dentry->d_sb->s_view.v_dev;
 		__entry->ino		= d_inode(dentry)->i_ino;
 		__entry->ret		= ret;
 	),
@@ -1737,7 +1737,7 @@ TRACE_EVENT(ext4_journal_start,
 	),
 
 	TP_fast_assign(
-		__entry->dev		 = sb->s_dev;
+		__entry->dev		 = sb->s_view.v_dev;
 		__entry->ip		 = IP;
 		__entry->blocks		 = blocks;
 		__entry->rsv_blocks	 = rsv_blocks;
@@ -1760,7 +1760,7 @@ TRACE_EVENT(ext4_journal_start_reserved,
 	),
 
 	TP_fast_assign(
-		__entry->dev		 = sb->s_dev;
+		__entry->dev		 = sb->s_view.v_dev;
 		__entry->ip		 = IP;
 		__entry->blocks		 = blocks;
 	),
@@ -1787,8 +1787,8 @@ DECLARE_EVENT_CLASS(ext4__trim,
 	),
 
 	TP_fast_assign(
-		__entry->dev_major	= MAJOR(sb->s_dev);
-		__entry->dev_minor	= MINOR(sb->s_dev);
+		__entry->dev_major	= MAJOR(sb->s_view.v_dev);
+		__entry->dev_minor	= MINOR(sb->s_view.v_dev);
 		__entry->group		= group;
 		__entry->start		= start;
 		__entry->len		= len;
@@ -1872,7 +1872,7 @@ TRACE_EVENT(ext4_get_implied_cluster_alloc_exit,
 	),
 
 	TP_fast_assign(
-		__entry->dev	= sb->s_dev;
+		__entry->dev	= sb->s_view.v_dev;
 		__entry->flags	= map->m_flags;
 		__entry->lblk	= map->m_lblk;
 		__entry->pblk	= map->m_pblk;
@@ -2390,7 +2390,7 @@ DECLARE_EVENT_CLASS(ext4__es_shrink_enter,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= sb->s_dev;
+		__entry->dev		= sb->s_view.v_dev;
 		__entry->nr_to_scan	= nr_to_scan;
 		__entry->cache_cnt	= cache_cnt;
 	),
@@ -2424,7 +2424,7 @@ TRACE_EVENT(ext4_es_shrink_scan_exit,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= sb->s_dev;
+		__entry->dev		= sb->s_view.v_dev;
 		__entry->nr_shrunk	= nr_shrunk;
 		__entry->cache_cnt	= cache_cnt;
 	),
@@ -2499,7 +2499,7 @@ TRACE_EVENT(ext4_es_shrink,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= sb->s_dev;
+		__entry->dev		= sb->s_view.v_dev;
 		__entry->nr_shrunk	= nr_shrunk;
 		__entry->scan_time	= div_u64(scan_time, 1000);
 		__entry->nr_skipped	= nr_skipped;
diff --git a/include/trace/events/f2fs.h b/include/trace/events/f2fs.h
index effb2704f3ae..9d67ed3d4dc8 100644
--- a/include/trace/events/f2fs.h
+++ b/include/trace/events/f2fs.h
@@ -265,7 +265,7 @@ TRACE_EVENT(f2fs_sync_fs,
 	),
 
 	TP_fast_assign(
-		__entry->dev	= sb->s_dev;
+		__entry->dev	= sb->s_view.v_dev;
 		__entry->dirty	= is_sbi_flag_set(F2FS_SB(sb), SBI_IS_DIRTY);
 		__entry->wait	= wait;
 	),
@@ -570,7 +570,7 @@ TRACE_EVENT(f2fs_background_gc,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= sb->s_dev;
+		__entry->dev		= sb->s_view.v_dev;
 		__entry->wait_ms	= wait_ms;
 		__entry->prefree	= prefree;
 		__entry->free		= free;
@@ -608,7 +608,7 @@ TRACE_EVENT(f2fs_gc_begin,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= sb->s_dev;
+		__entry->dev		= sb->s_view.v_dev;
 		__entry->sync		= sync;
 		__entry->background	= background;
 		__entry->dirty_nodes	= dirty_nodes;
@@ -661,7 +661,7 @@ TRACE_EVENT(f2fs_gc_end,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= sb->s_dev;
+		__entry->dev		= sb->s_view.v_dev;
 		__entry->ret		= ret;
 		__entry->seg_freed	= seg_freed;
 		__entry->sec_freed	= sec_freed;
@@ -713,7 +713,7 @@ TRACE_EVENT(f2fs_get_victim,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= sb->s_dev;
+		__entry->dev		= sb->s_view.v_dev;
 		__entry->type		= type;
 		__entry->gc_type	= gc_type;
 		__entry->alloc_mode	= p->alloc_mode;
@@ -1034,7 +1034,7 @@ DECLARE_EVENT_CLASS(f2fs__bio,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= sb->s_dev;
+		__entry->dev		= sb->s_view.v_dev;
 		__entry->target		= bio_dev(bio);
 		__entry->op		= bio_op(bio);
 		__entry->op_flags	= bio->bi_opf;
@@ -1336,7 +1336,7 @@ TRACE_EVENT(f2fs_write_checkpoint,
 	),
 
 	TP_fast_assign(
-		__entry->dev		= sb->s_dev;
+		__entry->dev		= sb->s_view.v_dev;
 		__entry->reason		= reason;
 		__entry->msg		= msg;
 	),
@@ -1545,7 +1545,7 @@ TRACE_EVENT(f2fs_shrink_extent_tree,
 	),
 
 	TP_fast_assign(
-		__entry->dev = sbi->sb->s_dev;
+		__entry->dev = sbi->sb->s_view.v_dev;
 		__entry->node_cnt = node_cnt;
 		__entry->tree_cnt = tree_cnt;
 	),
@@ -1592,7 +1592,7 @@ DECLARE_EVENT_CLASS(f2fs_sync_dirty_inodes,
 	),
 
 	TP_fast_assign(
-		__entry->dev	= sb->s_dev;
+		__entry->dev	= sb->s_view.v_dev;
 		__entry->type	= type;
 		__entry->count	= count;
 	),
diff --git a/include/trace/events/writeback.h b/include/trace/events/writeback.h
index 7a5bfa93f938..242d1cc3b58f 100644
--- a/include/trace/events/writeback.h
+++ b/include/trace/events/writeback.h
@@ -223,7 +223,7 @@ DECLARE_EVENT_CLASS(writeback_work_class,
 		strncpy(__entry->name,
 			wb->bdi->dev ? dev_name(wb->bdi->dev) : "(unknown)", 32);
 		__entry->nr_pages = work->nr_pages;
-		__entry->sb_dev = work->sb ? work->sb->s_dev : 0;
+		__entry->sb_dev = work->sb ? work->sb->s_view.v_dev : 0;
 		__entry->sync_mode = work->sync_mode;
 		__entry->for_kupdate = work->for_kupdate;
 		__entry->range_cyclic = work->range_cyclic;
diff --git a/init/do_mounts.c b/init/do_mounts.c
index 7cf4f6dafd5f..724f3b071d62 100644
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -369,7 +369,7 @@ static int __init do_mount_root(char *name, char *fs, int flags, void *data)
 
 	sys_chdir("/root");
 	s = current->fs->pwd.dentry->d_sb;
-	ROOT_DEV = s->s_dev;
+	ROOT_DEV = s->s_view.v_dev;
 	printk(KERN_INFO
 	       "VFS: Mounted root (%s filesystem)%s on device %u:%u.\n",
 	       s->s_type->name,
diff --git a/kernel/audit_watch.c b/kernel/audit_watch.c
index b9f571cc6a7f..72b82db95ecf 100644
--- a/kernel/audit_watch.c
+++ b/kernel/audit_watch.c
@@ -368,7 +368,7 @@ static int audit_get_nd(struct audit_watch *watch, struct path *parent)
 	inode_unlock(d_backing_inode(parent->dentry));
 	if (d_is_positive(d)) {
 		/* update watch filter fields */
-		watch->dev = d->d_sb->s_dev;
+		watch->dev = d->d_sb->s_view.v_dev;
 		watch->ino = d_backing_inode(d)->i_ino;
 	}
 	dput(d);
diff --git a/net/unix/diag.c b/net/unix/diag.c
index 384c84e83462..26b4486c41da 100644
--- a/net/unix/diag.c
+++ b/net/unix/diag.c
@@ -26,7 +26,7 @@ static int sk_diag_dump_vfs(struct sock *sk, struct sk_buff *nlskb)
 	if (dentry) {
 		struct unix_diag_vfs uv = {
 			.udiag_vfs_ino = d_backing_inode(dentry)->i_ino,
-			.udiag_vfs_dev = dentry->d_sb->s_dev,
+			.udiag_vfs_dev = dentry->d_sb->s_view.v_dev,
 		};
 
 		return nla_put(nlskb, UNIX_DIAG_VFS, sizeof(uv), &uv);
diff --git a/security/tomoyo/realpath.c b/security/tomoyo/realpath.c
index 6ff8c21e4fff..dc7eff734fa9 100644
--- a/security/tomoyo/realpath.c
+++ b/security/tomoyo/realpath.c
@@ -166,7 +166,7 @@ static char *tomoyo_get_local_path(struct dentry *dentry, char * const buffer,
 		goto prepend_filesystem_name;
 	}
 	/* Use filesystem name for unnamed devices. */
-	if (!MAJOR(sb->s_dev))
+	if (!MAJOR(sb->s_view.v_dev))
 		goto prepend_filesystem_name;
 	{
 		struct inode *inode = d_backing_inode(sb->s_root);
@@ -181,7 +181,7 @@ static char *tomoyo_get_local_path(struct dentry *dentry, char * const buffer,
 	{
 		char name[64];
 		int name_len;
-		const dev_t dev = sb->s_dev;
+		const dev_t dev = sb->s_view.v_dev;
 		name[sizeof(name) - 1] = '\0';
 		snprintf(name, sizeof(name) - 1, "dev(%u,%u):", MAJOR(dev),
 			 MINOR(dev));
