pnfs: Fix the check for requests in range of layout segment
[sfrench/cifs-2.6.git] / fs / nfs / pnfs.h
index 590e1e35781f0b737b5b277d76ab56092f8e3f3b..99731e3e332f3ec32eec26cca47556193dcf68fe 100644 (file)
@@ -173,14 +173,9 @@ struct pnfs_layoutdriver_type {
                        gfp_t gfp_flags);
 
        int (*prepare_layoutreturn) (struct nfs4_layoutreturn_args *);
-       void (*encode_layoutreturn) (struct xdr_stream *xdr,
-                                    const struct nfs4_layoutreturn_args *args);
 
        void (*cleanup_layoutcommit) (struct nfs4_layoutcommit_data *data);
        int (*prepare_layoutcommit) (struct nfs4_layoutcommit_args *args);
-       void (*encode_layoutcommit) (struct pnfs_layout_hdr *lo,
-                                    struct xdr_stream *xdr,
-                                    const struct nfs4_layoutcommit_args *args);
        int (*prepare_layoutstats) (struct nfs42_layoutstat_args *args);
 };
 
@@ -239,6 +234,7 @@ void pnfs_put_lseg_locked(struct pnfs_layout_segment *lseg);
 
 void set_pnfs_layoutdriver(struct nfs_server *, const struct nfs_fh *, struct nfs_fsinfo *);
 void unset_pnfs_layoutdriver(struct nfs_server *);
+void pnfs_generic_pg_check_layout(struct nfs_pageio_descriptor *pgio);
 void pnfs_generic_pg_init_read(struct nfs_pageio_descriptor *, struct nfs_page *);
 int pnfs_generic_pg_readpages(struct nfs_pageio_descriptor *desc);
 void pnfs_generic_pg_init_write(struct nfs_pageio_descriptor *pgio,
@@ -597,6 +593,16 @@ pnfs_lseg_range_intersecting(const struct pnfs_layout_range *l1,
        return pnfs_is_range_intersecting(l1->offset, end1, l2->offset, end2);
 }
 
+static inline bool
+pnfs_lseg_request_intersecting(struct pnfs_layout_segment *lseg, struct nfs_page *req)
+{
+       u64 seg_last = pnfs_end_offset(lseg->pls_range.offset, lseg->pls_range.length);
+       u64 req_last = req_offset(req) + req->wb_bytes;
+
+       return pnfs_is_range_intersecting(lseg->pls_range.offset, seg_last,
+                               req_offset(req), req_last);
+}
+
 extern unsigned int layoutstats_timer;
 
 #ifdef NFS_DEBUG