Skip to content

Commit 8df04a1

Browse files
committed
fix: detect BeeGFS, Lustre, GPFS and CephFS as netfs
1 parent e405f21 commit 8df04a1

1 file changed

Lines changed: 17 additions & 4 deletions

File tree

crates/pixi_config/src/lib.rs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)