@@ -186,16 +186,28 @@ fn detect_network_filesystem(path: &Path) -> Option<bool> {
186186 use nix:: sys:: statfs:: {
187187 AUTOFS_SUPER_MAGIC , FUSE_SUPER_MAGIC , FsType , NFS_SUPER_MAGIC , SMB_SUPER_MAGIC ,
188188 } ;
189- // CIFS magic isn't re-exported by `nix`
190- // so define it inline ( fs/smb/client/cifsfs.h).
189+ // Magics not re-exported by `nix` are defined inline below.
190+ // CIFS: fs/smb/client/cifsfs.h
191191 let cifs_magic = FsType ( 0xff53_4d42_u32 as _ ) ;
192+ // BeeGFS (a.k.a. fhgfs): client_module/source/common/Common.h
193+ let beegfs_magic = FsType ( 0x1983_0326_u32 as _ ) ;
194+ // Lustre: include/uapi/linux/lustre/lustre_user.h (LL_SUPER_MAGIC)
195+ let lustre_magic = FsType ( 0x0bd0_0bd0_u32 as _ ) ;
196+ // GPFS / IBM Spectrum Scale ("GPFS" in ASCII)
197+ let gpfs_magic = FsType ( 0x4750_4653_u32 as _ ) ;
198+ // CephFS: include/linux/magic.h (CEPH_SUPER_MAGIC)
199+ let ceph_magic = FsType ( 0x00c3_6400_u32 as _ ) ;
192200 let fs = statfs_nearest_existing ( path) ?. filesystem_type ( ) ;
193201 Some (
194202 fs == NFS_SUPER_MAGIC
195203 || fs == SMB_SUPER_MAGIC
196204 || fs == cifs_magic
197205 || fs == FUSE_SUPER_MAGIC
198- || fs == AUTOFS_SUPER_MAGIC ,
206+ || fs == AUTOFS_SUPER_MAGIC
207+ || fs == beegfs_magic
208+ || fs == lustre_magic
209+ || fs == gpfs_magic
210+ || fs == ceph_magic,
199211 )
200212}
201213
@@ -556,7 +568,8 @@ fn resolve_cache_kind_dir(cache_cfg: &CacheConfig, kind: CacheKind) -> miette::R
556568 let mut warned = NETFS_REDIRECT_WARNED . lock ( ) . unwrap ( ) ;
557569 if warned. insert ( kind) {
558570 tracing:: warn!(
559- "cache for {:?} at {} is on a network filesystem (NFS/SMB/FUSE), \
571+ "cache for {:?} at {} is on a network/parallel filesystem \
572+ (NFS/SMB/FUSE/BeeGFS/Lustre/GPFS/CephFS), \
560573 redirected to {} for this run. Set [cache.{}] in config.toml or \
561574 PIXI_CACHE_DIR to override, or [cache.netfs-redirect] = \" never\" \
562575 to keep the original path.",
0 commit comments