Since I went through and resolved refcount issues with fsal_pnfs_ds (that were exposed when I looked at all the export refcounting), I notice that there’s code for DS only mode, but I’m not sure how it actually works.

 

FSAL_GLUSTER, FSAL_GPFS, and FSAL_LIZARDFS are all set up to associate a fsal_pnfs_ds with an export.

 

FSAL_CEPG seems to be set up to use the DS only mode, which does NOT associate an export with a fsal_pnfs_ds. But then how does, for example FSAL_CEPH’s ds_read method supposed to work? It immediately de-references op_ctx->fsal_export which will be NULL if called with a Ceph DS handle…

 

Another issue is the processing for the DS config block makes no check about the FSAL specified, so you could configure:

 

DS {

               Number = 1;

               FSAL {

                              Name = GPFS;

               }

}

 

Which probably will go badly in some way…

 

I suspect the config processing should try and determine if the FSAL actually supports DS only mode…

 

Frank