1*0b61f8a4SDave Chinner // SPDX-License-Identifier: GPL-2.0 2c59d87c4SChristoph Hellwig /* 3c59d87c4SChristoph Hellwig * Copyright (c) 2005 Silicon Graphics, Inc. 4c59d87c4SChristoph Hellwig * All Rights Reserved. 5c59d87c4SChristoph Hellwig */ 6c59d87c4SChristoph Hellwig #ifndef __XFS_EXPORT_H__ 7c59d87c4SChristoph Hellwig #define __XFS_EXPORT_H__ 8c59d87c4SChristoph Hellwig 9c59d87c4SChristoph Hellwig /* 10c59d87c4SChristoph Hellwig * Common defines for code related to exporting XFS filesystems over NFS. 11c59d87c4SChristoph Hellwig * 12c59d87c4SChristoph Hellwig * The NFS fileid goes out on the wire as an array of 13c59d87c4SChristoph Hellwig * 32bit unsigned ints in host order. There are 5 possible 14c59d87c4SChristoph Hellwig * formats. 15c59d87c4SChristoph Hellwig * 16c59d87c4SChristoph Hellwig * (1) fileid_type=0x00 17c59d87c4SChristoph Hellwig * (no fileid data; handled by the generic code) 18c59d87c4SChristoph Hellwig * 19c59d87c4SChristoph Hellwig * (2) fileid_type=0x01 20c59d87c4SChristoph Hellwig * inode-num 21c59d87c4SChristoph Hellwig * generation 22c59d87c4SChristoph Hellwig * 23c59d87c4SChristoph Hellwig * (3) fileid_type=0x02 24c59d87c4SChristoph Hellwig * inode-num 25c59d87c4SChristoph Hellwig * generation 26c59d87c4SChristoph Hellwig * parent-inode-num 27c59d87c4SChristoph Hellwig * parent-generation 28c59d87c4SChristoph Hellwig * 29c59d87c4SChristoph Hellwig * (4) fileid_type=0x81 30c59d87c4SChristoph Hellwig * inode-num-lo32 31c59d87c4SChristoph Hellwig * inode-num-hi32 32c59d87c4SChristoph Hellwig * generation 33c59d87c4SChristoph Hellwig * 34c59d87c4SChristoph Hellwig * (5) fileid_type=0x82 35c59d87c4SChristoph Hellwig * inode-num-lo32 36c59d87c4SChristoph Hellwig * inode-num-hi32 37c59d87c4SChristoph Hellwig * generation 38c59d87c4SChristoph Hellwig * parent-inode-num-lo32 39c59d87c4SChristoph Hellwig * parent-inode-num-hi32 40c59d87c4SChristoph Hellwig * parent-generation 41c59d87c4SChristoph Hellwig * 42c59d87c4SChristoph Hellwig * Note, the NFS filehandle also includes an fsid portion which 43c59d87c4SChristoph Hellwig * may have an inode number in it. That number is hardcoded to 44c59d87c4SChristoph Hellwig * 32bits and there is no way for XFS to intercept it. In 45c59d87c4SChristoph Hellwig * practice this means when exporting an XFS filesystem with 64bit 46c59d87c4SChristoph Hellwig * inodes you should either export the mountpoint (rather than 47c59d87c4SChristoph Hellwig * a subdirectory) or use the "fsid" export option. 48c59d87c4SChristoph Hellwig */ 49c59d87c4SChristoph Hellwig 50c59d87c4SChristoph Hellwig struct xfs_fid64 { 51c59d87c4SChristoph Hellwig u64 ino; 52c59d87c4SChristoph Hellwig u32 gen; 53c59d87c4SChristoph Hellwig u64 parent_ino; 54c59d87c4SChristoph Hellwig u32 parent_gen; 55c59d87c4SChristoph Hellwig } __attribute__((packed)); 56c59d87c4SChristoph Hellwig 57c59d87c4SChristoph Hellwig /* This flag goes on the wire. Don't play with it. */ 58c59d87c4SChristoph Hellwig #define XFS_FILEID_TYPE_64FLAG 0x80 /* NFS fileid has 64bit inodes */ 59c59d87c4SChristoph Hellwig 60c59d87c4SChristoph Hellwig #endif /* __XFS_EXPORT_H__ */ 61