aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorBrian Norris <computersforpeace@gmail.com>2017-06-01 13:53:55 -0400
committerBrian Norris <computersforpeace@gmail.com>2017-06-01 13:53:55 -0400
commit05e97a9eda72d58dba293857df6aac62584ef99a (patch)
treee86e692f26d4879ff2210c54722e2b7780210249 /fs
parent2ea659a9ef488125eb46da6eb571de5eae5c43f6 (diff)
parentd4ed3b9015b5eebc90d629579d9e7944607cbae5 (diff)
Merge tag 'nand/fixes-for-4.12-rc3' of git://git.infradead.org/linux-mtd into MTD
From Boris: """ This pull request contains several fixes to the core and the tango driver. tango fixes: * Add missing MODULE_DEVICE_TABLE() in tango_nand.c * Update the number of corrected bitflips core fixes: * Fix a long standing memory leak in nand_scan_tail() * Fix several bugs introduced by the per-vendor init/detection infrastructure (introduced in 4.12) * Add a static specifier to nand_ooblayout_lp_hamming_ops definition """
Diffstat (limited to 'fs')
-rw-r--r--fs/cifs/cifsacl.c30
-rw-r--r--fs/cifs/cifsglob.h2
-rw-r--r--fs/cifs/cifsproto.h3
-rw-r--r--fs/cifs/cifssmb.c11
-rw-r--r--fs/cifs/file.c2
-rw-r--r--fs/cifs/inode.c3
-rw-r--r--fs/cifs/smb2pdu.c21
-rw-r--r--fs/cifs/transport.c4
-rw-r--r--fs/cifs/xattr.c6
-rw-r--r--fs/ext2/inode.c4
-rw-r--r--fs/ext4/inode.c4
-rw-r--r--fs/fuse/inode.c9
-rw-r--r--fs/xfs/xfs_iomap.c4
13 files changed, 47 insertions, 56 deletions
diff --git a/fs/cifs/cifsacl.c b/fs/cifs/cifsacl.c
index 15bac390dff9..b98436f5c7c7 100644
--- a/fs/cifs/cifsacl.c
+++ b/fs/cifs/cifsacl.c
@@ -1135,20 +1135,19 @@ cifs_acl_to_fattr(struct cifs_sb_info *cifs_sb, struct cifs_fattr *fattr,
1135 u32 acllen = 0; 1135 u32 acllen = 0;
1136 int rc = 0; 1136 int rc = 0;
1137 struct tcon_link *tlink = cifs_sb_tlink(cifs_sb); 1137 struct tcon_link *tlink = cifs_sb_tlink(cifs_sb);
1138 struct cifs_tcon *tcon; 1138 struct smb_version_operations *ops;
1139 1139
1140 cifs_dbg(NOISY, "converting ACL to mode for %s\n", path); 1140 cifs_dbg(NOISY, "converting ACL to mode for %s\n", path);
1141 1141
1142 if (IS_ERR(tlink)) 1142 if (IS_ERR(tlink))
1143 return PTR_ERR(tlink); 1143 return PTR_ERR(tlink);
1144 tcon = tlink_tcon(tlink);
1145 1144
1146 if (pfid && (tcon->ses->server->ops->get_acl_by_fid)) 1145 ops = tlink_tcon(tlink)->ses->server->ops;
1147 pntsd = tcon->ses->server->ops->get_acl_by_fid(cifs_sb, pfid, 1146
1148 &acllen); 1147 if (pfid && (ops->get_acl_by_fid))
1149 else if (tcon->ses->server->ops->get_acl) 1148 pntsd = ops->get_acl_by_fid(cifs_sb, pfid, &acllen);
1150 pntsd = tcon->ses->server->ops->get_acl(cifs_sb, inode, path, 1149 else if (ops->get_acl)
1151 &acllen); 1150 pntsd = ops->get_acl(cifs_sb, inode, path, &acllen);
1152 else { 1151 else {
1153 cifs_put_tlink(tlink); 1152 cifs_put_tlink(tlink);
1154 return -EOPNOTSUPP; 1153 return -EOPNOTSUPP;
@@ -1181,23 +1180,23 @@ id_mode_to_cifs_acl(struct inode *inode, const char *path, __u64 nmode,
1181 struct cifs_ntsd *pnntsd = NULL; /* modified acl to be sent to server */ 1180 struct cifs_ntsd *pnntsd = NULL; /* modified acl to be sent to server */
1182 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb); 1181 struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
1183 struct tcon_link *tlink = cifs_sb_tlink(cifs_sb); 1182 struct tcon_link *tlink = cifs_sb_tlink(cifs_sb);
1184 struct cifs_tcon *tcon; 1183 struct smb_version_operations *ops;
1185 1184
1186 if (IS_ERR(tlink)) 1185 if (IS_ERR(tlink))
1187 return PTR_ERR(tlink); 1186 return PTR_ERR(tlink);
1188 tcon = tlink_tcon(tlink); 1187
1188 ops = tlink_tcon(tlink)->ses->server->ops;
1189 1189
1190 cifs_dbg(NOISY, "set ACL from mode for %s\n", path); 1190 cifs_dbg(NOISY, "set ACL from mode for %s\n", path);
1191 1191
1192 /* Get the security descriptor */ 1192 /* Get the security descriptor */
1193 1193
1194 if (tcon->ses->server->ops->get_acl == NULL) { 1194 if (ops->get_acl == NULL) {
1195 cifs_put_tlink(tlink); 1195 cifs_put_tlink(tlink);
1196 return -EOPNOTSUPP; 1196 return -EOPNOTSUPP;
1197 } 1197 }
1198 1198
1199 pntsd = tcon->ses->server->ops->get_acl(cifs_sb, inode, path, 1199 pntsd = ops->get_acl(cifs_sb, inode, path, &secdesclen);
1200 &secdesclen);
1201 if (IS_ERR(pntsd)) { 1200 if (IS_ERR(pntsd)) {
1202 rc = PTR_ERR(pntsd); 1201 rc = PTR_ERR(pntsd);
1203 cifs_dbg(VFS, "%s: error %d getting sec desc\n", __func__, rc); 1202 cifs_dbg(VFS, "%s: error %d getting sec desc\n", __func__, rc);
@@ -1224,13 +1223,12 @@ id_mode_to_cifs_acl(struct inode *inode, const char *path, __u64 nmode,
1224 1223
1225 cifs_dbg(NOISY, "build_sec_desc rc: %d\n", rc); 1224 cifs_dbg(NOISY, "build_sec_desc rc: %d\n", rc);
1226 1225
1227 if (tcon->ses->server->ops->set_acl == NULL) 1226 if (ops->set_acl == NULL)
1228 rc = -EOPNOTSUPP; 1227 rc = -EOPNOTSUPP;
1229 1228
1230 if (!rc) { 1229 if (!rc) {
1231 /* Set the security descriptor */ 1230 /* Set the security descriptor */
1232 rc = tcon->ses->server->ops->set_acl(pnntsd, secdesclen, inode, 1231 rc = ops->set_acl(pnntsd, secdesclen, inode, path, aclflag);
1233 path, aclflag);
1234 cifs_dbg(NOISY, "set_cifs_acl rc: %d\n", rc); 1232 cifs_dbg(NOISY, "set_cifs_acl rc: %d\n", rc);
1235 } 1233 }
1236 cifs_put_tlink(tlink); 1234 cifs_put_tlink(tlink);
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
index 8be55be70faf..bcc7d9acad64 100644
--- a/fs/cifs/cifsglob.h
+++ b/fs/cifs/cifsglob.h
@@ -418,7 +418,7 @@ struct smb_version_operations {
418 int (*validate_negotiate)(const unsigned int, struct cifs_tcon *); 418 int (*validate_negotiate)(const unsigned int, struct cifs_tcon *);
419 ssize_t (*query_all_EAs)(const unsigned int, struct cifs_tcon *, 419 ssize_t (*query_all_EAs)(const unsigned int, struct cifs_tcon *,
420 const unsigned char *, const unsigned char *, char *, 420 const unsigned char *, const unsigned char *, char *,
421 size_t, const struct nls_table *, int); 421 size_t, struct cifs_sb_info *);
422 int (*set_EA)(const unsigned int, struct cifs_tcon *, const char *, 422 int (*set_EA)(const unsigned int, struct cifs_tcon *, const char *,
423 const char *, const void *, const __u16, 423 const char *, const void *, const __u16,
424 const struct nls_table *, int); 424 const struct nls_table *, int);
diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h
index e49958c3f8bb..6eb3147132e3 100644
--- a/fs/cifs/cifsproto.h
+++ b/fs/cifs/cifsproto.h
@@ -480,8 +480,7 @@ extern int CIFSSMBCopy(unsigned int xid,
480extern ssize_t CIFSSMBQAllEAs(const unsigned int xid, struct cifs_tcon *tcon, 480extern ssize_t CIFSSMBQAllEAs(const unsigned int xid, struct cifs_tcon *tcon,
481 const unsigned char *searchName, 481 const unsigned char *searchName,
482 const unsigned char *ea_name, char *EAData, 482 const unsigned char *ea_name, char *EAData,
483 size_t bufsize, const struct nls_table *nls_codepage, 483 size_t bufsize, struct cifs_sb_info *cifs_sb);
484 int remap_special_chars);
485extern int CIFSSMBSetEA(const unsigned int xid, struct cifs_tcon *tcon, 484extern int CIFSSMBSetEA(const unsigned int xid, struct cifs_tcon *tcon,
486 const char *fileName, const char *ea_name, 485 const char *fileName, const char *ea_name,
487 const void *ea_value, const __u16 ea_value_len, 486 const void *ea_value, const __u16 ea_value_len,
diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
index 4c01b3f9abf0..fbb0d4cbda41 100644
--- a/fs/cifs/cifssmb.c
+++ b/fs/cifs/cifssmb.c
@@ -697,9 +697,7 @@ cifs_echo_callback(struct mid_q_entry *mid)
697{ 697{
698 struct TCP_Server_Info *server = mid->callback_data; 698 struct TCP_Server_Info *server = mid->callback_data;
699 699
700 mutex_lock(&server->srv_mutex);
701 DeleteMidQEntry(mid); 700 DeleteMidQEntry(mid);
702 mutex_unlock(&server->srv_mutex);
703 add_credits(server, 1, CIFS_ECHO_OP); 701 add_credits(server, 1, CIFS_ECHO_OP);
704} 702}
705 703
@@ -1599,9 +1597,7 @@ cifs_readv_callback(struct mid_q_entry *mid)
1599 } 1597 }
1600 1598
1601 queue_work(cifsiod_wq, &rdata->work); 1599 queue_work(cifsiod_wq, &rdata->work);
1602 mutex_lock(&server->srv_mutex);
1603 DeleteMidQEntry(mid); 1600 DeleteMidQEntry(mid);
1604 mutex_unlock(&server->srv_mutex);
1605 add_credits(server, 1, 0); 1601 add_credits(server, 1, 0);
1606} 1602}
1607 1603
@@ -2058,7 +2054,6 @@ cifs_writev_callback(struct mid_q_entry *mid)
2058{ 2054{
2059 struct cifs_writedata *wdata = mid->callback_data; 2055 struct cifs_writedata *wdata = mid->callback_data;
2060 struct cifs_tcon *tcon = tlink_tcon(wdata->cfile->tlink); 2056 struct cifs_tcon *tcon = tlink_tcon(wdata->cfile->tlink);
2061 struct TCP_Server_Info *server = tcon->ses->server;
2062 unsigned int written; 2057 unsigned int written;
2063 WRITE_RSP *smb = (WRITE_RSP *)mid->resp_buf; 2058 WRITE_RSP *smb = (WRITE_RSP *)mid->resp_buf;
2064 2059
@@ -2095,9 +2090,7 @@ cifs_writev_callback(struct mid_q_entry *mid)
2095 } 2090 }
2096 2091
2097 queue_work(cifsiod_wq, &wdata->work); 2092 queue_work(cifsiod_wq, &wdata->work);
2098 mutex_lock(&server->srv_mutex);
2099 DeleteMidQEntry(mid); 2093 DeleteMidQEntry(mid);
2100 mutex_unlock(&server->srv_mutex);
2101 add_credits(tcon->ses->server, 1, 0); 2094 add_credits(tcon->ses->server, 1, 0);
2102} 2095}
2103 2096
@@ -6076,11 +6069,13 @@ ssize_t
6076CIFSSMBQAllEAs(const unsigned int xid, struct cifs_tcon *tcon, 6069CIFSSMBQAllEAs(const unsigned int xid, struct cifs_tcon *tcon,
6077 const unsigned char *searchName, const unsigned char *ea_name, 6070 const unsigned char *searchName, const unsigned char *ea_name,
6078 char *EAData, size_t buf_size, 6071 char *EAData, size_t buf_size,
6079 const struct nls_table *nls_codepage, int remap) 6072 struct cifs_sb_info *cifs_sb)
6080{ 6073{
6081 /* BB assumes one setup word */ 6074 /* BB assumes one setup word */
6082 TRANSACTION2_QPI_REQ *pSMB = NULL; 6075 TRANSACTION2_QPI_REQ *pSMB = NULL;
6083 TRANSACTION2_QPI_RSP *pSMBr = NULL; 6076 TRANSACTION2_QPI_RSP *pSMBr = NULL;
6077 int remap = cifs_remap(cifs_sb);
6078 struct nls_table *nls_codepage = cifs_sb->local_nls;
6084 int rc = 0; 6079 int rc = 0;
6085 int bytes_returned; 6080 int bytes_returned;
6086 int list_len; 6081 int list_len;
diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index 6ef78ad838e6..0fd081bd2a2f 100644
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -582,7 +582,7 @@ cifs_relock_file(struct cifsFileInfo *cfile)
582 struct cifs_tcon *tcon = tlink_tcon(cfile->tlink); 582 struct cifs_tcon *tcon = tlink_tcon(cfile->tlink);
583 int rc = 0; 583 int rc = 0;
584 584
585 down_read(&cinode->lock_sem); 585 down_read_nested(&cinode->lock_sem, SINGLE_DEPTH_NESTING);
586 if (cinode->can_cache_brlcks) { 586 if (cinode->can_cache_brlcks) {
587 /* can cache locks - no need to relock */ 587 /* can cache locks - no need to relock */
588 up_read(&cinode->lock_sem); 588 up_read(&cinode->lock_sem);
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index c3b2fa0b2ec8..4d1fcd76d022 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -563,8 +563,7 @@ static int cifs_sfu_mode(struct cifs_fattr *fattr, const unsigned char *path,
563 563
564 rc = tcon->ses->server->ops->query_all_EAs(xid, tcon, path, 564 rc = tcon->ses->server->ops->query_all_EAs(xid, tcon, path,
565 "SETFILEBITS", ea_value, 4 /* size of buf */, 565 "SETFILEBITS", ea_value, 4 /* size of buf */,
566 cifs_sb->local_nls, 566 cifs_sb);
567 cifs_remap(cifs_sb));
568 cifs_put_tlink(tlink); 567 cifs_put_tlink(tlink);
569 if (rc < 0) 568 if (rc < 0)
570 return (int)rc; 569 return (int)rc;
diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
index 48ff7703b919..e4afdaae743f 100644
--- a/fs/cifs/smb2pdu.c
+++ b/fs/cifs/smb2pdu.c
@@ -1240,15 +1240,19 @@ SMB2_tcon(const unsigned int xid, struct cifs_ses *ses, const char *tree,
1240 goto tcon_exit; 1240 goto tcon_exit;
1241 } 1241 }
1242 1242
1243 if (rsp->ShareType & SMB2_SHARE_TYPE_DISK) 1243 switch (rsp->ShareType) {
1244 case SMB2_SHARE_TYPE_DISK:
1244 cifs_dbg(FYI, "connection to disk share\n"); 1245 cifs_dbg(FYI, "connection to disk share\n");
1245 else if (rsp->ShareType & SMB2_SHARE_TYPE_PIPE) { 1246 break;
1247 case SMB2_SHARE_TYPE_PIPE:
1246 tcon->ipc = true; 1248 tcon->ipc = true;
1247 cifs_dbg(FYI, "connection to pipe share\n"); 1249 cifs_dbg(FYI, "connection to pipe share\n");
1248 } else if (rsp->ShareType & SMB2_SHARE_TYPE_PRINT) { 1250 break;
1249 tcon->print = true; 1251 case SMB2_SHARE_TYPE_PRINT:
1252 tcon->ipc = true;
1250 cifs_dbg(FYI, "connection to printer\n"); 1253 cifs_dbg(FYI, "connection to printer\n");
1251 } else { 1254 break;
1255 default:
1252 cifs_dbg(VFS, "unknown share type %d\n", rsp->ShareType); 1256 cifs_dbg(VFS, "unknown share type %d\n", rsp->ShareType);
1253 rc = -EOPNOTSUPP; 1257 rc = -EOPNOTSUPP;
1254 goto tcon_error_exit; 1258 goto tcon_error_exit;
@@ -2173,9 +2177,7 @@ smb2_echo_callback(struct mid_q_entry *mid)
2173 if (mid->mid_state == MID_RESPONSE_RECEIVED) 2177 if (mid->mid_state == MID_RESPONSE_RECEIVED)
2174 credits_received = le16_to_cpu(rsp->hdr.sync_hdr.CreditRequest); 2178 credits_received = le16_to_cpu(rsp->hdr.sync_hdr.CreditRequest);
2175 2179
2176 mutex_lock(&server->srv_mutex);
2177 DeleteMidQEntry(mid); 2180 DeleteMidQEntry(mid);
2178 mutex_unlock(&server->srv_mutex);
2179 add_credits(server, credits_received, CIFS_ECHO_OP); 2181 add_credits(server, credits_received, CIFS_ECHO_OP);
2180} 2182}
2181 2183
@@ -2433,9 +2435,7 @@ smb2_readv_callback(struct mid_q_entry *mid)
2433 cifs_stats_fail_inc(tcon, SMB2_READ_HE); 2435 cifs_stats_fail_inc(tcon, SMB2_READ_HE);
2434 2436
2435 queue_work(cifsiod_wq, &rdata->work); 2437 queue_work(cifsiod_wq, &rdata->work);
2436 mutex_lock(&server->srv_mutex);
2437 DeleteMidQEntry(mid); 2438 DeleteMidQEntry(mid);
2438 mutex_unlock(&server->srv_mutex);
2439 add_credits(server, credits_received, 0); 2439 add_credits(server, credits_received, 0);
2440} 2440}
2441 2441
@@ -2594,7 +2594,6 @@ smb2_writev_callback(struct mid_q_entry *mid)
2594{ 2594{
2595 struct cifs_writedata *wdata = mid->callback_data; 2595 struct cifs_writedata *wdata = mid->callback_data;
2596 struct cifs_tcon *tcon = tlink_tcon(wdata->cfile->tlink); 2596 struct cifs_tcon *tcon = tlink_tcon(wdata->cfile->tlink);
2597 struct TCP_Server_Info *server = tcon->ses->server;
2598 unsigned int written; 2597 unsigned int written;
2599 struct smb2_write_rsp *rsp = (struct smb2_write_rsp *)mid->resp_buf; 2598 struct smb2_write_rsp *rsp = (struct smb2_write_rsp *)mid->resp_buf;
2600 unsigned int credits_received = 1; 2599 unsigned int credits_received = 1;
@@ -2634,9 +2633,7 @@ smb2_writev_callback(struct mid_q_entry *mid)
2634 cifs_stats_fail_inc(tcon, SMB2_WRITE_HE); 2633 cifs_stats_fail_inc(tcon, SMB2_WRITE_HE);
2635 2634
2636 queue_work(cifsiod_wq, &wdata->work); 2635 queue_work(cifsiod_wq, &wdata->work);
2637 mutex_lock(&server->srv_mutex);
2638 DeleteMidQEntry(mid); 2636 DeleteMidQEntry(mid);
2639 mutex_unlock(&server->srv_mutex);
2640 add_credits(tcon->ses->server, credits_received, 0); 2637 add_credits(tcon->ses->server, credits_received, 0);
2641} 2638}
2642 2639
diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c
index 4d64b5b8fc9c..47a125ece11e 100644
--- a/fs/cifs/transport.c
+++ b/fs/cifs/transport.c
@@ -94,7 +94,7 @@ DeleteMidQEntry(struct mid_q_entry *midEntry)
94 now = jiffies; 94 now = jiffies;
95 /* commands taking longer than one second are indications that 95 /* commands taking longer than one second are indications that
96 something is wrong, unless it is quite a slow link or server */ 96 something is wrong, unless it is quite a slow link or server */
97 if ((now - midEntry->when_alloc) > HZ) { 97 if (time_after(now, midEntry->when_alloc + HZ)) {
98 if ((cifsFYI & CIFS_TIMER) && (midEntry->command != command)) { 98 if ((cifsFYI & CIFS_TIMER) && (midEntry->command != command)) {
99 pr_debug(" CIFS slow rsp: cmd %d mid %llu", 99 pr_debug(" CIFS slow rsp: cmd %d mid %llu",
100 midEntry->command, midEntry->mid); 100 midEntry->command, midEntry->mid);
@@ -613,9 +613,7 @@ cifs_sync_mid_result(struct mid_q_entry *mid, struct TCP_Server_Info *server)
613 } 613 }
614 spin_unlock(&GlobalMid_Lock); 614 spin_unlock(&GlobalMid_Lock);
615 615
616 mutex_lock(&server->srv_mutex);
617 DeleteMidQEntry(mid); 616 DeleteMidQEntry(mid);
618 mutex_unlock(&server->srv_mutex);
619 return rc; 617 return rc;
620} 618}
621 619
diff --git a/fs/cifs/xattr.c b/fs/cifs/xattr.c
index 20af5187ba63..3cb5c9e2d4e7 100644
--- a/fs/cifs/xattr.c
+++ b/fs/cifs/xattr.c
@@ -235,8 +235,7 @@ static int cifs_xattr_get(const struct xattr_handler *handler,
235 235
236 if (pTcon->ses->server->ops->query_all_EAs) 236 if (pTcon->ses->server->ops->query_all_EAs)
237 rc = pTcon->ses->server->ops->query_all_EAs(xid, pTcon, 237 rc = pTcon->ses->server->ops->query_all_EAs(xid, pTcon,
238 full_path, name, value, size, 238 full_path, name, value, size, cifs_sb);
239 cifs_sb->local_nls, cifs_remap(cifs_sb));
240 break; 239 break;
241 240
242 case XATTR_CIFS_ACL: { 241 case XATTR_CIFS_ACL: {
@@ -336,8 +335,7 @@ ssize_t cifs_listxattr(struct dentry *direntry, char *data, size_t buf_size)
336 335
337 if (pTcon->ses->server->ops->query_all_EAs) 336 if (pTcon->ses->server->ops->query_all_EAs)
338 rc = pTcon->ses->server->ops->query_all_EAs(xid, pTcon, 337 rc = pTcon->ses->server->ops->query_all_EAs(xid, pTcon,
339 full_path, NULL, data, buf_size, 338 full_path, NULL, data, buf_size, cifs_sb);
340 cifs_sb->local_nls, cifs_remap(cifs_sb));
341list_ea_exit: 339list_ea_exit:
342 kfree(full_path); 340 kfree(full_path);
343 free_xid(xid); 341 free_xid(xid);
diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
index 26d77f9f8c12..2dcbd5698884 100644
--- a/fs/ext2/inode.c
+++ b/fs/ext2/inode.c
@@ -817,7 +817,7 @@ static int ext2_iomap_begin(struct inode *inode, loff_t offset, loff_t length,
817 iomap->bdev = bdev; 817 iomap->bdev = bdev;
818 iomap->offset = (u64)first_block << blkbits; 818 iomap->offset = (u64)first_block << blkbits;
819 if (blk_queue_dax(bdev->bd_queue)) 819 if (blk_queue_dax(bdev->bd_queue))
820 iomap->dax_dev = dax_get_by_host(bdev->bd_disk->disk_name); 820 iomap->dax_dev = fs_dax_get_by_host(bdev->bd_disk->disk_name);
821 else 821 else
822 iomap->dax_dev = NULL; 822 iomap->dax_dev = NULL;
823 823
@@ -841,7 +841,7 @@ static int
841ext2_iomap_end(struct inode *inode, loff_t offset, loff_t length, 841ext2_iomap_end(struct inode *inode, loff_t offset, loff_t length,
842 ssize_t written, unsigned flags, struct iomap *iomap) 842 ssize_t written, unsigned flags, struct iomap *iomap)
843{ 843{
844 put_dax(iomap->dax_dev); 844 fs_put_dax(iomap->dax_dev);
845 if (iomap->type == IOMAP_MAPPED && 845 if (iomap->type == IOMAP_MAPPED &&
846 written < length && 846 written < length &&
847 (flags & IOMAP_WRITE)) 847 (flags & IOMAP_WRITE))
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 5834c4d76be8..1bd0bfa547f6 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -3412,7 +3412,7 @@ retry:
3412 bdev = inode->i_sb->s_bdev; 3412 bdev = inode->i_sb->s_bdev;
3413 iomap->bdev = bdev; 3413 iomap->bdev = bdev;
3414 if (blk_queue_dax(bdev->bd_queue)) 3414 if (blk_queue_dax(bdev->bd_queue))
3415 iomap->dax_dev = dax_get_by_host(bdev->bd_disk->disk_name); 3415 iomap->dax_dev = fs_dax_get_by_host(bdev->bd_disk->disk_name);
3416 else 3416 else
3417 iomap->dax_dev = NULL; 3417 iomap->dax_dev = NULL;
3418 iomap->offset = first_block << blkbits; 3418 iomap->offset = first_block << blkbits;
@@ -3447,7 +3447,7 @@ static int ext4_iomap_end(struct inode *inode, loff_t offset, loff_t length,
3447 int blkbits = inode->i_blkbits; 3447 int blkbits = inode->i_blkbits;
3448 bool truncate = false; 3448 bool truncate = false;
3449 3449
3450 put_dax(iomap->dax_dev); 3450 fs_put_dax(iomap->dax_dev);
3451 if (!(flags & IOMAP_WRITE) || (flags & IOMAP_FAULT)) 3451 if (!(flags & IOMAP_WRITE) || (flags & IOMAP_FAULT))
3452 return 0; 3452 return 0;
3453 3453
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index 5a1b58f8fef4..65c88379a3a1 100644
--- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c
@@ -975,8 +975,15 @@ static int fuse_bdi_init(struct fuse_conn *fc, struct super_block *sb)
975 int err; 975 int err;
976 char *suffix = ""; 976 char *suffix = "";
977 977
978 if (sb->s_bdev) 978 if (sb->s_bdev) {
979 suffix = "-fuseblk"; 979 suffix = "-fuseblk";
980 /*
981 * sb->s_bdi points to blkdev's bdi however we want to redirect
982 * it to our private bdi...
983 */
984 bdi_put(sb->s_bdi);
985 sb->s_bdi = &noop_backing_dev_info;
986 }
980 err = super_setup_bdi_name(sb, "%u:%u%s", MAJOR(fc->dev), 987 err = super_setup_bdi_name(sb, "%u:%u%s", MAJOR(fc->dev),
981 MINOR(fc->dev), suffix); 988 MINOR(fc->dev), suffix);
982 if (err) 989 if (err)
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c
index a63f61c256bd..94e5bdf7304c 100644
--- a/fs/xfs/xfs_iomap.c
+++ b/fs/xfs/xfs_iomap.c
@@ -1068,7 +1068,7 @@ xfs_file_iomap_begin(
1068 /* optionally associate a dax device with the iomap bdev */ 1068 /* optionally associate a dax device with the iomap bdev */
1069 bdev = iomap->bdev; 1069 bdev = iomap->bdev;
1070 if (blk_queue_dax(bdev->bd_queue)) 1070 if (blk_queue_dax(bdev->bd_queue))
1071 iomap->dax_dev = dax_get_by_host(bdev->bd_disk->disk_name); 1071 iomap->dax_dev = fs_dax_get_by_host(bdev->bd_disk->disk_name);
1072 else 1072 else
1073 iomap->dax_dev = NULL; 1073 iomap->dax_dev = NULL;
1074 1074
@@ -1149,7 +1149,7 @@ xfs_file_iomap_end(
1149 unsigned flags, 1149 unsigned flags,
1150 struct iomap *iomap) 1150 struct iomap *iomap)
1151{ 1151{
1152 put_dax(iomap->dax_dev); 1152 fs_put_dax(iomap->dax_dev);
1153 if ((flags & IOMAP_WRITE) && iomap->type == IOMAP_DELALLOC) 1153 if ((flags & IOMAP_WRITE) && iomap->type == IOMAP_DELALLOC)
1154 return xfs_file_iomap_end_delalloc(XFS_I(inode), offset, 1154 return xfs_file_iomap_end_delalloc(XFS_I(inode), offset,
1155 length, written, iomap); 1155 length, written, iomap);