netfslib now only presents an bvecq queue and an associated ITER_BVECQ
iterator to the filesystem, so it isn't going to see the ITER_FOLIOQ
iterator.  So remove that code.

Netfslib also won't supply ITER_BVEC/KVEC iterators, though smbdirect
might; further in future, it won't supply iterators at all, but rather a
bvecq slice (that can be used to construct an iterator).

Signed-off-by: David Howells <[email protected]>
Acked-by: Stefan Metzmacher <[email protected]>
cc: Steve French <[email protected]>
cc: Paulo Alcantara <[email protected]>
cc: Stefan Metzmacher <[email protected]>
cc: Shyam Prasad N <[email protected]>
cc: Tom Talpey <[email protected]>
cc: [email protected]
cc: [email protected]
cc: [email protected]
---
 fs/smb/smbdirect/connection.c | 68 -----------------------------------
 1 file changed, 68 deletions(-)

diff --git a/fs/smb/smbdirect/connection.c b/fs/smb/smbdirect/connection.c
index 4d2a1700104e..8858e1dfbc25 100644
--- a/fs/smb/smbdirect/connection.c
+++ b/fs/smb/smbdirect/connection.c
@@ -6,7 +6,6 @@
 
 #include "internal.h"
 #include <linux/bvecq.h>
-#include <linux/folio_queue.h>
 
 struct smbdirect_map_sges {
        struct ib_sge *sge;
@@ -2130,70 +2129,6 @@ static ssize_t smbdirect_map_sges_from_kvec(struct 
iov_iter *iter,
        return ret;
 }
 
-/*
- * Extract folio fragments from a FOLIOQ-class iterator and add them to an
- * ib_sge list.  The folios are not pinned.
- */
-static ssize_t smbdirect_map_sges_from_folioq(struct iov_iter *iter,
-                                             struct smbdirect_map_sges *state,
-                                             ssize_t maxsize)
-{
-       const struct folio_queue *folioq = iter->folioq;
-       unsigned int slot = iter->folioq_slot;
-       ssize_t ret = 0;
-       size_t offset = iter->iov_offset;
-
-       if (WARN_ON_ONCE(!folioq))
-               return -EIO;
-
-       if (slot >= folioq_nr_slots(folioq)) {
-               folioq = folioq->next;
-               if (WARN_ON_ONCE(!folioq))
-                       return -EIO;
-               slot = 0;
-       }
-
-       do {
-               struct folio *folio = folioq_folio(folioq, slot);
-               size_t fsize = folioq_folio_size(folioq, slot);
-
-               if (offset < fsize) {
-                       size_t part = umin(maxsize, fsize - offset);
-                       bool ok;
-
-                       ok = smbdirect_map_sges_single_page(state,
-                                                           folio_page(folio, 
0),
-                                                           offset,
-                                                           part);
-                       if (!ok)
-                               return -EIO;
-
-                       offset += part;
-                       ret += part;
-                       maxsize -= part;
-               }
-
-               if (offset >= fsize) {
-                       offset = 0;
-                       slot++;
-                       if (slot >= folioq_nr_slots(folioq)) {
-                               if (!folioq->next) {
-                                       WARN_ON_ONCE(ret < iter->count);
-                                       break;
-                               }
-                               folioq = folioq->next;
-                               slot = 0;
-                       }
-               }
-       } while (state->num_sge < state->max_sge && maxsize > 0);
-
-       iter->folioq = folioq;
-       iter->folioq_slot = slot;
-       iter->iov_offset = offset;
-       iter->count -= ret;
-       return ret;
-}
-
 /*
  * Extract page fragments from up to the given amount of the source iterator
  * and build up an ib_sge list that refers to all of those bits.  The ib_sge 
list
@@ -2224,9 +2159,6 @@ static ssize_t smbdirect_map_sges_from_iter(struct 
iov_iter *iter, size_t len,
        case ITER_KVEC:
                ret = smbdirect_map_sges_from_kvec(iter, state, len);
                break;
-       case ITER_FOLIOQ:
-               ret = smbdirect_map_sges_from_folioq(iter, state, len);
-               break;
        default:
                WARN_ONCE(1, "iov_iter_type[%u]\n", iov_iter_type(iter));
                return -EIO;


Reply via email to