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