From: Waldemar Kozaczuk <jwkozac...@gmail.com> Committer: Waldemar Kozaczuk <jwkozac...@gmail.com> Branch: master
zfs: modify fsid_guid to store extra bits to allow detecting ZFS in pagecache This patch slightly modifies logic in zfs_domount() to put ZFS identifier into the 8 highest bits of vfs_fsid field. This will allow us to detect file system type in pagecache logic. Please note that vfs_fsid field is used to source st_dev value in ZFS getattr() function. The combination of st_dev and ino is used to uniquely identify files in pagecache implementation logic. Signed-off-by: Waldemar Kozaczuk <jwkozac...@gmail.com> --- diff --git a/bsd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c b/bsd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c --- a/bsd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c +++ b/bsd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c @@ -61,6 +61,7 @@ #include <sys/dmu_objset.h> #include <sys/spa_boot.h> #include "zfs_comutil.h" +#include <fs/vfs/vfs_id.h> #if notyet struct mtx zfs_debug_mtx; @@ -1009,7 +1010,7 @@ zfs_domount(vfs_t *vfsp, const char *osname) ASSERT((fsid_guid & ~((1ULL<<56)-1)) == 0); vfsp->vfs_fsid.__val[0] = fsid_guid; /* fsid type not included */ - vfsp->vfs_fsid.__val[1] = fsid_guid >> 32; + vfsp->vfs_fsid.__val[1] = (ZFS_ID | fsid_guid) >> 32; /* * Set features for file system. diff --git a/fs/vfs/vfs_id.h b/fs/vfs/vfs_id.h --- a/fs/vfs/vfs_id.h +++ b/fs/vfs/vfs_id.h @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2020 Waldemar Kozaczuk + * + * This work is open source software, licensed under the terms of the + * BSD license as described in the LICENSE file in the top-level directory. + */ + +#ifndef _VFS_ID_H +#define _VFS_ID_H + +#define RAMFS_ID (1ULL<<56) +#define DEVFS_ID (2ULL<<56) +#define NFS_ID (3ULL<<56) +#define PROCFS_ID (4ULL<<56) +#define SYSFS_ID (5ULL<<56) +#define ZFS_ID (6ULL<<56) +#define ROFS_ID (7ULL<<56) +#define VIRTIOFS_ID (8ULL<<56) + +#endif /* !_VFS_ID_H */ -- You received this message because you are subscribed to the Google Groups "OSv Development" group. To unsubscribe from this group and stop receiving emails from it, send an email to osv-dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/osv-dev/0000000000006a2f6a05a44fdb48%40google.com.