a1d312de7780e (Thomas Gleixner 2019-05-22 09:51:42 +0200 1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 2) /*
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 3) * bitmap.h - Defines for NTFS kernel bitmap handling. Part of the Linux-NTFS
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 4) * project.
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 5) *
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 6) * Copyright (c) 2004 Anton Altaparmakov
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 7) */
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 8)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 9) #ifndef _LINUX_NTFS_BITMAP_H
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 10) #define _LINUX_NTFS_BITMAP_H
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 11)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 12) #ifdef NTFS_RW
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 13)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 14) #include <linux/fs.h>
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 15)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 16) #include "types.h"
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 17)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 18) extern int __ntfs_bitmap_set_bits_in_run(struct inode *vi, const s64 start_bit,
c49c31115067b (Richard Knutsson 2006-09-30 23:27:12 -0700 19) const s64 count, const u8 value, const bool is_rollback);
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 20)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 21) /**
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 22) * ntfs_bitmap_set_bits_in_run - set a run of bits in a bitmap to a value
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 23) * @vi: vfs inode describing the bitmap
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 24) * @start_bit: first bit to set
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 25) * @count: number of bits to set
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 26) * @value: value to set the bits to (i.e. 0 or 1)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 27) *
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 28) * Set @count bits starting at bit @start_bit in the bitmap described by the
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 29) * vfs inode @vi to @value, where @value is either 0 or 1.
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 30) *
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 31) * Return 0 on success and -errno on error.
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 32) */
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 33) static inline int ntfs_bitmap_set_bits_in_run(struct inode *vi,
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 34) const s64 start_bit, const s64 count, const u8 value)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 35) {
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 36) return __ntfs_bitmap_set_bits_in_run(vi, start_bit, count, value,
c49c31115067b (Richard Knutsson 2006-09-30 23:27:12 -0700 37) false);
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 38) }
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 39)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 40) /**
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 41) * ntfs_bitmap_set_run - set a run of bits in a bitmap
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 42) * @vi: vfs inode describing the bitmap
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 43) * @start_bit: first bit to set
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 44) * @count: number of bits to set
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 45) *
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 46) * Set @count bits starting at bit @start_bit in the bitmap described by the
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 47) * vfs inode @vi.
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 48) *
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 49) * Return 0 on success and -errno on error.
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 50) */
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 51) static inline int ntfs_bitmap_set_run(struct inode *vi, const s64 start_bit,
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 52) const s64 count)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 53) {
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 54) return ntfs_bitmap_set_bits_in_run(vi, start_bit, count, 1);
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 55) }
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 56)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 57) /**
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 58) * ntfs_bitmap_clear_run - clear a run of bits in a bitmap
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 59) * @vi: vfs inode describing the bitmap
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 60) * @start_bit: first bit to clear
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 61) * @count: number of bits to clear
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 62) *
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 63) * Clear @count bits starting at bit @start_bit in the bitmap described by the
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 64) * vfs inode @vi.
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 65) *
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 66) * Return 0 on success and -errno on error.
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 67) */
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 68) static inline int ntfs_bitmap_clear_run(struct inode *vi, const s64 start_bit,
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 69) const s64 count)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 70) {
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 71) return ntfs_bitmap_set_bits_in_run(vi, start_bit, count, 0);
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 72) }
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 73)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 74) /**
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 75) * ntfs_bitmap_set_bit - set a bit in a bitmap
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 76) * @vi: vfs inode describing the bitmap
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 77) * @bit: bit to set
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 78) *
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 79) * Set bit @bit in the bitmap described by the vfs inode @vi.
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 80) *
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 81) * Return 0 on success and -errno on error.
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 82) */
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 83) static inline int ntfs_bitmap_set_bit(struct inode *vi, const s64 bit)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 84) {
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 85) return ntfs_bitmap_set_run(vi, bit, 1);
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 86) }
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 87)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 88) /**
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 89) * ntfs_bitmap_clear_bit - clear a bit in a bitmap
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 90) * @vi: vfs inode describing the bitmap
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 91) * @bit: bit to clear
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 92) *
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 93) * Clear bit @bit in the bitmap described by the vfs inode @vi.
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 94) *
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 95) * Return 0 on success and -errno on error.
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 96) */
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 97) static inline int ntfs_bitmap_clear_bit(struct inode *vi, const s64 bit)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 98) {
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 99) return ntfs_bitmap_clear_run(vi, bit, 1);
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 100) }
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 101)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 102) #endif /* NTFS_RW */
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 103)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 104) #endif /* defined _LINUX_NTFS_BITMAP_H */