Lines Matching defs:nilfs
26 #include "nilfs.h"
205 struct the_nilfs *nilfs;
222 nilfs = sb->s_fs_info;
223 down_read(&nilfs->ns_segctor_sem);
224 if (vacancy_check && nilfs_near_disk_full(nilfs)) {
225 up_read(&nilfs->ns_segctor_sem);
259 struct the_nilfs *nilfs = sb->s_fs_info;
270 if (nilfs->ns_writer) {
271 struct nilfs_sc_info *sci = nilfs->ns_writer;
275 if (atomic_read(&nilfs->ns_ndirtyblks) > sci->sc_watermark)
278 up_read(&nilfs->ns_segctor_sem);
295 struct the_nilfs *nilfs = sb->s_fs_info;
304 up_read(&nilfs->ns_segctor_sem);
317 struct the_nilfs *nilfs = sb->s_fs_info;
318 struct nilfs_sc_info *sci = nilfs->ns_writer;
324 up_read(&nilfs->ns_segctor_sem);
326 down_write(&nilfs->ns_segctor_sem);
335 downgrade_write(&nilfs->ns_segctor_sem);
343 struct the_nilfs *nilfs = sb->s_fs_info;
344 struct nilfs_sc_info *sci = nilfs->ns_writer;
357 down_write(&nilfs->ns_segctor_sem);
363 up_write(&nilfs->ns_segctor_sem);
376 struct the_nilfs *nilfs = sb->s_fs_info;
381 up_write(&nilfs->ns_segctor_sem);
792 static void nilfs_dispose_list(struct the_nilfs *nilfs,
800 spin_lock(&nilfs->ns_inode_lock);
811 &nilfs->ns_dirty_files);
818 spin_unlock(&nilfs->ns_inode_lock);
829 struct the_nilfs *nilfs = sci->sc_super->s_fs_info;
831 nilfs_dispose_list(nilfs, &sci->sc_iput_queue, 0);
834 static int nilfs_test_metadata_dirty(struct the_nilfs *nilfs,
841 if (nilfs_mdt_fetch_dirty(nilfs->ns_cpfile))
843 if (nilfs_mdt_fetch_dirty(nilfs->ns_sufile))
845 if ((ret || nilfs_doing_gc()) && nilfs_mdt_fetch_dirty(nilfs->ns_dat))
860 struct the_nilfs *nilfs = sci->sc_super->s_fs_info;
863 if (nilfs_test_metadata_dirty(nilfs, sci->sc_root))
866 spin_lock(&nilfs->ns_inode_lock);
867 if (list_empty(&nilfs->ns_dirty_files) && nilfs_segctor_clean(sci))
870 spin_unlock(&nilfs->ns_inode_lock);
876 struct the_nilfs *nilfs = sci->sc_super->s_fs_info;
879 nilfs_mdt_clear_dirty(nilfs->ns_cpfile);
880 nilfs_mdt_clear_dirty(nilfs->ns_sufile);
881 nilfs_mdt_clear_dirty(nilfs->ns_dat);
886 struct the_nilfs *nilfs = sci->sc_super->s_fs_info;
892 err = nilfs_cpfile_get_checkpoint(nilfs->ns_cpfile, nilfs->ns_cno, 1,
901 nilfs_mdt_mark_dirty(nilfs->ns_cpfile);
903 nilfs->ns_cpfile, nilfs->ns_cno, bh_cp);
914 struct the_nilfs *nilfs = sci->sc_super->s_fs_info;
919 err = nilfs_cpfile_get_checkpoint(nilfs->ns_cpfile, nilfs->ns_cno, 0,
938 raw_cp->cp_cno = cpu_to_le64(nilfs->ns_cno);
947 nilfs_cpfile_put_checkpoint(nilfs->ns_cpfile, nilfs->ns_cno, bh_cp);
982 struct the_nilfs *nilfs)
992 isz = nilfs->ns_inode_size;
999 nilfs->ns_nongc_ctime : sci->sc_seg_ctime);
1002 nilfs_write_inode_common(nilfs->ns_dat, (void *)raw_sr +
1004 nilfs_write_inode_common(nilfs->ns_cpfile, (void *)raw_sr +
1006 nilfs_write_inode_common(nilfs->ns_sufile, (void *)raw_sr +
1008 memset((void *)raw_sr + srsz, 0, nilfs->ns_blocksize - srsz);
1150 struct the_nilfs *nilfs = sci->sc_super->s_fs_info;
1239 err = nilfs_segctor_scan_file(sci, nilfs->ns_cpfile,
1246 err = nilfs_sufile_freev(nilfs->ns_sufile, sci->sc_freesegs,
1249 nilfs_sufile_cancel_freev(nilfs->ns_sufile,
1256 err = nilfs_segctor_scan_file(sci, nilfs->ns_sufile,
1264 err = nilfs_segctor_scan_file(sci, nilfs->ns_dat,
1311 * @nilfs: nilfs object
1314 struct the_nilfs *nilfs)
1325 nilfs_segbuf_map(segbuf, nilfs->ns_segnum,
1326 nilfs->ns_pseg_offset, nilfs);
1328 nilfs_shift_to_next_segment(nilfs);
1329 nilfs_segbuf_map(segbuf, nilfs->ns_segnum, 0, nilfs);
1332 segbuf->sb_sum.seg_seq = nilfs->ns_seg_seq;
1333 nextnum = nilfs->ns_nextnum;
1335 if (nilfs->ns_segnum == nilfs->ns_nextnum)
1346 nilfs_segbuf_map(segbuf, prev->sb_nextnum, 0, nilfs);
1352 err = nilfs_sufile_mark_dirty(nilfs->ns_sufile, segbuf->sb_segnum);
1357 err = nilfs_sufile_alloc(nilfs->ns_sufile, &nextnum);
1361 nilfs_segbuf_set_next_segnum(segbuf, nextnum, nilfs);
1374 struct the_nilfs *nilfs, int nadd)
1377 struct inode *sufile = nilfs->ns_sufile;
1401 nilfs_segbuf_map(segbuf, prev->sb_nextnum, 0, nilfs);
1410 nilfs_segbuf_set_next_segnum(segbuf, nextnextnum, nilfs);
1430 struct the_nilfs *nilfs)
1433 struct inode *sufile = nilfs->ns_sufile;
1437 if (nilfs->ns_nextnum != segbuf->sb_nextnum) {
1448 nilfs_terminate_segment(nilfs, segbuf->sb_fseg_start,
1451 set_nilfs_discontinued(nilfs);
1461 segbuf->sb_segnum != nilfs->ns_nextnum)
1520 struct the_nilfs *nilfs, int mode)
1550 err = nilfs_sufile_cancel_freev(nilfs->ns_sufile,
1558 err = nilfs_segctor_extend_segments(sci, nilfs, nadd);
1566 nilfs_segctor_truncate_segments(sci, sci->sc_curseg, nilfs->ns_sufile);
1734 struct the_nilfs *nilfs)
1738 ret = nilfs_write_logs(&sci->sc_segbufs, nilfs);
1825 struct the_nilfs *nilfs, int err)
1835 nilfs_cancel_segusage(&logs, nilfs->ns_sufile);
1836 nilfs_free_incomplete_logs(&logs, nilfs);
1839 ret = nilfs_sufile_cancel_freev(nilfs->ns_sufile,
1849 static void nilfs_set_next_segment(struct the_nilfs *nilfs,
1852 nilfs->ns_segnum = segbuf->sb_segnum;
1853 nilfs->ns_nextnum = segbuf->sb_nextnum;
1854 nilfs->ns_pseg_offset = segbuf->sb_pseg_start - segbuf->sb_fseg_start
1856 nilfs->ns_seg_seq = segbuf->sb_sum.seg_seq;
1857 nilfs->ns_ctime = segbuf->sb_sum.ctime;
1864 struct the_nilfs *nilfs = sci->sc_super->s_fs_info;
1939 nilfs->ns_nongc_ctime = sci->sc_seg_ctime;
1944 nilfs_set_next_segment(nilfs, segbuf);
1947 nilfs->ns_flushed_device = 0;
1948 nilfs_set_last_segment(nilfs, segbuf->sb_pseg_start,
1949 segbuf->sb_sum.seg_seq, nilfs->ns_cno++);
1972 struct the_nilfs *nilfs)
1977 spin_lock(&nilfs->ns_inode_lock);
1979 list_for_each_entry_safe(ii, n, &nilfs->ns_dirty_files, i_dirty) {
1984 spin_unlock(&nilfs->ns_inode_lock);
1993 spin_lock(&nilfs->ns_inode_lock);
2009 spin_unlock(&nilfs->ns_inode_lock);
2015 struct the_nilfs *nilfs)
2021 spin_lock(&nilfs->ns_inode_lock);
2039 spin_unlock(&nilfs->ns_inode_lock);
2041 spin_lock(&nilfs->ns_inode_lock);
2044 spin_unlock(&nilfs->ns_inode_lock);
2055 struct the_nilfs *nilfs = sci->sc_super->s_fs_info;
2062 sci->sc_cno = nilfs->ns_cno;
2064 err = nilfs_segctor_collect_dirty_files(sci, nilfs);
2068 if (nilfs_test_metadata_dirty(nilfs, sci->sc_root))
2077 err = nilfs_segctor_begin_construction(sci, nilfs);
2084 err = nilfs_segctor_collect(sci, nilfs, mode);
2091 nilfs_segctor_abort_construction(sci, nilfs, 1);
2108 nilfs_segctor_fill_in_super_root(sci, nilfs);
2110 nilfs_segctor_update_segusage(sci, nilfs->ns_sufile);
2116 nilfs->ns_crc_seed);
2118 err = nilfs_segctor_write(sci, nilfs);
2123 nilfs->ns_blocksize_bits != PAGE_SHIFT) {
2138 nilfs_segctor_drop_written_files(sci, nilfs);
2148 nilfs_segctor_abort_construction(sci, nilfs, err);
2191 struct the_nilfs *nilfs = sb->s_fs_info;
2192 struct nilfs_sc_info *sci = nilfs->ns_writer;
2280 struct the_nilfs *nilfs = sb->s_fs_info;
2281 struct nilfs_sc_info *sci = nilfs->ns_writer;
2316 struct the_nilfs *nilfs = sb->s_fs_info;
2317 struct nilfs_sc_info *sci = nilfs->ns_writer;
2329 nilfs_test_opt(nilfs, STRICT_ORDER) ||
2331 nilfs_discontinued(nilfs)) {
2337 spin_lock(&nilfs->ns_inode_lock);
2340 spin_unlock(&nilfs->ns_inode_lock);
2344 spin_unlock(&nilfs->ns_inode_lock);
2351 nilfs->ns_flushed_device = 0;
2409 struct the_nilfs *nilfs = sci->sc_super->s_fs_info;
2415 if (nilfs_discontinued(nilfs))
2422 atomic_set(&nilfs->ns_ndirtyblks, 0);
2424 nilfs_discontinued(nilfs)) {
2425 down_write(&nilfs->ns_sem);
2428 nilfs_sb_will_flip(nilfs));
2430 nilfs_set_log_cursor(sbp[0], nilfs);
2434 up_write(&nilfs->ns_sem);
2450 nilfs_remove_written_gcinodes(struct the_nilfs *nilfs, struct list_head *head)
2467 struct the_nilfs *nilfs = sb->s_fs_info;
2468 struct nilfs_sc_info *sci = nilfs->ns_writer;
2477 err = nilfs_mdt_save_to_shadow_map(nilfs->ns_dat);
2481 err = nilfs_ioctl_prepare_clean_segments(nilfs, argv, kbufs);
2483 nilfs_mdt_restore_from_shadow_map(nilfs->ns_dat);
2489 list_splice_tail_init(&nilfs->ns_gc_inodes, &sci->sc_gc_inodes);
2493 nilfs_remove_written_gcinodes(nilfs, &sci->sc_gc_inodes);
2502 if (nilfs_test_opt(nilfs, DISCARD)) {
2503 int ret = nilfs_discard_segments(nilfs, sci->sc_freesegs,
2509 nilfs_clear_opt(nilfs, DISCARD);
2516 nilfs_mdt_clear_shadow_map(nilfs->ns_dat);
2581 struct the_nilfs *nilfs = sci->sc_super->s_fs_info;
2643 if (nilfs_sb_dirty(nilfs) && nilfs_sb_need_update(nilfs))
2644 set_nilfs_discontinued(nilfs);
2692 struct the_nilfs *nilfs = sb->s_fs_info;
2720 if (nilfs->ns_interval)
2721 sci->sc_interval = HZ * nilfs->ns_interval;
2722 if (nilfs->ns_watermark)
2723 sci->sc_watermark = nilfs->ns_watermark;
2757 struct the_nilfs *nilfs = sci->sc_super->s_fs_info;
2760 up_write(&nilfs->ns_segctor_sem);
2777 nilfs_dispose_list(nilfs, &sci->sc_dirty_files, 1);
2783 nilfs_dispose_list(nilfs, &sci->sc_iput_queue, 1);
2791 down_write(&nilfs->ns_segctor_sem);
2812 struct the_nilfs *nilfs = sb->s_fs_info;
2815 if (nilfs->ns_writer) {
2825 nilfs->ns_writer = nilfs_segctor_new(sb, root);
2826 if (!nilfs->ns_writer)
2829 inode_attach_wb(nilfs->ns_bdev->bd_inode, NULL);
2831 err = nilfs_segctor_start_thread(nilfs->ns_writer);
2847 struct the_nilfs *nilfs = sb->s_fs_info;
2850 down_write(&nilfs->ns_segctor_sem);
2851 if (nilfs->ns_writer) {
2852 nilfs_segctor_destroy(nilfs->ns_writer);
2853 nilfs->ns_writer = NULL;
2855 set_nilfs_purging(nilfs);
2858 spin_lock(&nilfs->ns_inode_lock);
2859 if (!list_empty(&nilfs->ns_dirty_files)) {
2860 list_splice_init(&nilfs->ns_dirty_files, &garbage_list);
2864 spin_unlock(&nilfs->ns_inode_lock);
2865 up_write(&nilfs->ns_segctor_sem);
2867 nilfs_dispose_list(nilfs, &garbage_list, 1);
2868 clear_nilfs_purging(nilfs);