Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v6.15-rc2 83 lines 2.3 kB view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _BCACHEFS_FS_IOCTL_H 3#define _BCACHEFS_FS_IOCTL_H 4 5/* Inode flags: */ 6 7/* bcachefs inode flags -> vfs inode flags: */ 8static const __maybe_unused unsigned bch_flags_to_vfs[] = { 9 [__BCH_INODE_sync] = S_SYNC, 10 [__BCH_INODE_immutable] = S_IMMUTABLE, 11 [__BCH_INODE_append] = S_APPEND, 12 [__BCH_INODE_noatime] = S_NOATIME, 13 [__BCH_INODE_casefolded] = S_CASEFOLD, 14}; 15 16/* bcachefs inode flags -> FS_IOC_GETFLAGS: */ 17static const __maybe_unused unsigned bch_flags_to_uflags[] = { 18 [__BCH_INODE_sync] = FS_SYNC_FL, 19 [__BCH_INODE_immutable] = FS_IMMUTABLE_FL, 20 [__BCH_INODE_append] = FS_APPEND_FL, 21 [__BCH_INODE_nodump] = FS_NODUMP_FL, 22 [__BCH_INODE_noatime] = FS_NOATIME_FL, 23 [__BCH_INODE_casefolded] = FS_CASEFOLD_FL, 24}; 25 26/* bcachefs inode flags -> FS_IOC_FSGETXATTR: */ 27static const __maybe_unused unsigned bch_flags_to_xflags[] = { 28 [__BCH_INODE_sync] = FS_XFLAG_SYNC, 29 [__BCH_INODE_immutable] = FS_XFLAG_IMMUTABLE, 30 [__BCH_INODE_append] = FS_XFLAG_APPEND, 31 [__BCH_INODE_nodump] = FS_XFLAG_NODUMP, 32 [__BCH_INODE_noatime] = FS_XFLAG_NOATIME, 33 //[__BCH_INODE_PROJINHERIT] = FS_XFLAG_PROJINHERIT; 34}; 35 36#define set_flags(_map, _in, _out) \ 37do { \ 38 unsigned _i; \ 39 \ 40 for (_i = 0; _i < ARRAY_SIZE(_map); _i++) \ 41 if ((_in) & (1 << _i)) \ 42 (_out) |= _map[_i]; \ 43 else \ 44 (_out) &= ~_map[_i]; \ 45} while (0) 46 47#define map_flags(_map, _in) \ 48({ \ 49 unsigned _out = 0; \ 50 \ 51 set_flags(_map, _in, _out); \ 52 _out; \ 53}) 54 55#define map_flags_rev(_map, _in) \ 56({ \ 57 unsigned _i, _out = 0; \ 58 \ 59 for (_i = 0; _i < ARRAY_SIZE(_map); _i++) \ 60 if ((_in) & _map[_i]) { \ 61 (_out) |= 1 << _i; \ 62 (_in) &= ~_map[_i]; \ 63 } \ 64 (_out); \ 65}) 66 67#define map_defined(_map) \ 68({ \ 69 unsigned _in = ~0; \ 70 \ 71 map_flags_rev(_map, _in); \ 72}) 73 74/* Set VFS inode flags from bcachefs inode: */ 75static inline void bch2_inode_flags_to_vfs(struct bch_inode_info *inode) 76{ 77 set_flags(bch_flags_to_vfs, inode->ei_inode.bi_flags, inode->v.i_flags); 78} 79 80long bch2_fs_file_ioctl(struct file *, unsigned, unsigned long); 81long bch2_compat_fs_ioctl(struct file *, unsigned, unsigned long); 82 83#endif /* _BCACHEFS_FS_IOCTL_H */