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