Lines Matching +full:full +full:- +full:bit

1 /* SPDX-License-Identifier: GPL-2.0+ */
5 * Copyright (C) 2005-2008 Nippon Telegraph and Telephone Corporation.
19 #include <linux/backing-dev.h>
36 * struct the_nilfs - struct to supervise multiple nilfs mount points
43 * @ns_sbh: buffer heads of on-disk super blocks
51 * @ns_segnum: index number of the latest full segment.
52 * @ns_nextnum: index number of the full segment index to be used next
53 * @ns_pseg_offset: offset of next partial segment in the current full segment
69 * @ns_cptree: rb-tree of all mounted checkpoints (nilfs_root)
81 * @ns_blocksize_bits: bit length of block size
88 * @ns_inode_size: size of on-disk inode
89 * @ns_first_ino: first not-special inode number
106 * - loading the latest checkpoint exclusively.
107 * - allocating a new full segment.
118 * The following fields are updated by a writable FS-instance.
194 #define THE_NILFS_FNS(bit, name) \ argument
197 set_bit(THE_NILFS_##bit, &(nilfs)->ns_flags); \
201 clear_bit(THE_NILFS_##bit, &(nilfs)->ns_flags); \
205 return test_bit(THE_NILFS_##bit, &(nilfs)->ns_flags); \
218 ((nilfs)->ns_mount_opt &= ~NILFS_MOUNT_##opt)
220 ((nilfs)->ns_mount_opt |= NILFS_MOUNT_##opt)
221 #define nilfs_test_opt(nilfs, opt) ((nilfs)->ns_mount_opt & NILFS_MOUNT_##opt)
223 ((nilfs)->ns_mount_opt = \
224 (((nilfs)->ns_mount_opt & ~NILFS_MOUNT_##mask) | \
228 * struct nilfs_root - nilfs root object
230 * @rb_node: red-black tree node
265 return t < nilfs->ns_sbwtime || in nilfs_sb_need_update()
266 t > nilfs->ns_sbwtime + nilfs->ns_sb_update_freq; in nilfs_sb_need_update()
271 int flip_bits = nilfs->ns_sbwcount & 0x0FL; in nilfs_sb_will_flip()
296 refcount_inc(&root->count); in nilfs_get_root()
303 down_read(&nilfs->ns_sem); in nilfs_valid_fs()
304 valid_fs = (nilfs->ns_mount_state & NILFS_VALID_FS); in nilfs_valid_fs()
305 up_read(&nilfs->ns_sem); in nilfs_valid_fs()
313 *seg_start = (sector_t)nilfs->ns_blocks_per_segment * segnum; in nilfs_get_segment_range()
314 *seg_end = *seg_start + nilfs->ns_blocks_per_segment - 1; in nilfs_get_segment_range()
316 *seg_start = nilfs->ns_first_data_block; in nilfs_get_segment_range()
322 return (segnum == 0) ? nilfs->ns_first_data_block : in nilfs_get_segment_start_blocknr()
323 (sector_t)nilfs->ns_blocks_per_segment * segnum; in nilfs_get_segment_start_blocknr()
331 sector_div(segnum, nilfs->ns_blocks_per_segment); in nilfs_get_segnum_of_block()
339 /* terminate the current full segment (used in case of I/O-error) */ in nilfs_terminate_segment()
340 nilfs->ns_pseg_offset = seg_end - seg_start + 1; in nilfs_terminate_segment()
345 /* move forward with a full segment */ in nilfs_shift_to_next_segment()
346 nilfs->ns_segnum = nilfs->ns_nextnum; in nilfs_shift_to_next_segment()
347 nilfs->ns_pseg_offset = 0; in nilfs_shift_to_next_segment()
348 nilfs->ns_seg_seq++; in nilfs_shift_to_next_segment()
355 spin_lock(&nilfs->ns_last_segment_lock); in nilfs_last_cno()
356 cno = nilfs->ns_last_cno; in nilfs_last_cno()
357 spin_unlock(&nilfs->ns_last_segment_lock); in nilfs_last_cno()
363 return n == nilfs->ns_segnum || n == nilfs->ns_nextnum; in nilfs_segment_is_active()
370 if (!nilfs_test_opt(nilfs, BARRIER) || nilfs->ns_flushed_device) in nilfs_flush_device()
373 nilfs->ns_flushed_device = 1; in nilfs_flush_device()
380 err = blkdev_issue_flush(nilfs->ns_bdev); in nilfs_flush_device()
381 if (err != -EIO) in nilfs_flush_device()