pNFS/flexfiles: Always attempt to call layoutstats when flexfiles is enabled
authorTrond Myklebust <trond.myklebust@primarydata.com>
Tue, 9 May 2017 20:02:57 +0000 (16:02 -0400)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Tue, 9 May 2017 20:02:57 +0000 (16:02 -0400)
Layoutstats is always desirable when using the flexfiles driver, so
we should enable it if that driver is being loaded. It is safe to do
so, because even when the mount specifies NFSv4.1, we will turn it
off if the server tells us it is unsupported.

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/flexfilelayout/flexfilelayout.c

index 4e8bf02a62f91de13f4054e45966e5e8afd4521b..f5714ee01000de49c5efcd3675226a3a3b7a7074 100644 (file)
@@ -2361,10 +2361,21 @@ ff_layout_prepare_layoutstats(struct nfs42_layoutstat_args *args)
        return 0;
 }
 
+static int
+ff_layout_set_layoutdriver(struct nfs_server *server,
+               const struct nfs_fh *dummy)
+{
+#if IS_ENABLED(CONFIG_NFS_V4_2)
+       server->caps |= NFS_CAP_LAYOUTSTATS;
+#endif
+       return 0;
+}
+
 static struct pnfs_layoutdriver_type flexfilelayout_type = {
        .id                     = LAYOUT_FLEX_FILES,
        .name                   = "LAYOUT_FLEX_FILES",
        .owner                  = THIS_MODULE,
+       .set_layoutdriver       = ff_layout_set_layoutdriver,
        .alloc_layout_hdr       = ff_layout_alloc_layout_hdr,
        .free_layout_hdr        = ff_layout_free_layout_hdr,
        .alloc_lseg             = ff_layout_alloc_lseg,