sbi 603 arch/powerpc/platforms/cell/spufs/inode.c struct spufs_sb_info *sbi = spufs_get_sb_info(root->d_sb); sbi 614 arch/powerpc/platforms/cell/spufs/inode.c if (sbi->debug) sbi 622 arch/powerpc/platforms/cell/spufs/inode.c struct spufs_sb_info *sbi = fc->s_fs_info; sbi 649 arch/powerpc/platforms/cell/spufs/inode.c sbi->debug = true; sbi 750 arch/powerpc/platforms/cell/spufs/inode.c struct spufs_sb_info *sbi; sbi 756 arch/powerpc/platforms/cell/spufs/inode.c sbi = kzalloc(sizeof(struct spufs_sb_info), GFP_KERNEL); sbi 757 arch/powerpc/platforms/cell/spufs/inode.c if (!sbi) sbi 765 arch/powerpc/platforms/cell/spufs/inode.c fc->s_fs_info = sbi; sbi 263 arch/s390/hypfs/inode.c struct hypfs_sb_info *sbi = sb->s_fs_info; sbi 290 arch/s390/hypfs/inode.c sbi->update_file = update_file; sbi 314 arch/s390/hypfs/inode.c struct hypfs_sb_info *sbi; sbi 316 arch/s390/hypfs/inode.c sbi = kzalloc(sizeof(struct hypfs_sb_info), GFP_KERNEL); sbi 317 arch/s390/hypfs/inode.c if (!sbi) sbi 320 arch/s390/hypfs/inode.c mutex_init(&sbi->lock); sbi 321 arch/s390/hypfs/inode.c sbi->uid = current_uid(); sbi 322 arch/s390/hypfs/inode.c sbi->gid = current_gid(); sbi 324 arch/s390/hypfs/inode.c fc->s_fs_info = sbi; sbi 130 drivers/gpu/drm/i915/gvt/gvt.h struct intel_vgpu_sbi sbi; sbi 1096 drivers/gpu/drm/i915/gvt/handlers.c int num = display->sbi.number; sbi 1100 drivers/gpu/drm/i915/gvt/handlers.c if (display->sbi.registers[i].offset == sbi_offset) sbi 1106 drivers/gpu/drm/i915/gvt/handlers.c return display->sbi.registers[i].value; sbi 1113 drivers/gpu/drm/i915/gvt/handlers.c int num = display->sbi.number; sbi 1117 drivers/gpu/drm/i915/gvt/handlers.c if (display->sbi.registers[i].offset == offset) sbi 1126 drivers/gpu/drm/i915/gvt/handlers.c display->sbi.number++; sbi 1129 drivers/gpu/drm/i915/gvt/handlers.c display->sbi.registers[i].offset = offset; sbi 1130 drivers/gpu/drm/i915/gvt/handlers.c display->sbi.registers[i].value = value; sbi 39 drivers/staging/exfat/exfat_blkdev.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 40 drivers/staging/exfat/exfat_blkdev.c long flags = sbi->debug_flags; sbi 76 drivers/staging/exfat/exfat_blkdev.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 77 drivers/staging/exfat/exfat_blkdev.c long flags = sbi->debug_flags; sbi 125 drivers/staging/exfat/exfat_blkdev.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 126 drivers/staging/exfat/exfat_blkdev.c long flags = sbi->debug_flags; sbi 16 drivers/staging/exfat/exfat_core.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 18 drivers/staging/exfat/exfat_core.c sbi->s_dirt = 1; sbi 614 drivers/staging/exfat/exfat_core.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 615 drivers/staging/exfat/exfat_core.c struct exfat_mount_options *opts = &sbi->options; sbi 146 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 148 drivers/staging/exfat/exfat_super.c mutex_lock(&sbi->s_lock); sbi 153 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 155 drivers/staging/exfat/exfat_super.c mutex_unlock(&sbi->s_lock); sbi 160 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 162 drivers/staging/exfat/exfat_super.c return sbi->s_dirt; sbi 167 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 169 drivers/staging/exfat/exfat_super.c sbi->s_dirt = 0; sbi 304 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(inode->i_sb); sbi 309 drivers/staging/exfat/exfat_super.c if ((~sbi->options.fs_fmask) & 0222) sbi 315 drivers/staging/exfat/exfat_super.c static inline mode_t exfat_make_mode(struct exfat_sb_info *sbi, u32 attr, sbi 322 drivers/staging/exfat/exfat_super.c return (mode & ~sbi->options.fs_dmask) | S_IFDIR; sbi 324 drivers/staging/exfat/exfat_super.c return (mode & ~sbi->options.fs_dmask) | S_IFLNK; sbi 326 drivers/staging/exfat/exfat_super.c return (mode & ~sbi->options.fs_fmask) | S_IFREG; sbi 2204 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 2205 drivers/staging/exfat/exfat_super.c struct fs_info_t *p_fs = &(sbi->fs_info); sbi 2295 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 2296 drivers/staging/exfat/exfat_super.c struct fs_info_t *p_fs = &(sbi->fs_info); sbi 2315 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 2317 drivers/staging/exfat/exfat_super.c flags = sbi->debug_flags; sbi 2322 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 2331 drivers/staging/exfat/exfat_super.c sbi->debug_flags = flags; sbi 2502 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(inode->i_sb); sbi 2503 drivers/staging/exfat/exfat_super.c struct hlist_head *head = sbi->inode_hashtable + exfat_hash(i_pos); sbi 2505 drivers/staging/exfat/exfat_super.c spin_lock(&sbi->inode_hash_lock); sbi 2508 drivers/staging/exfat/exfat_super.c spin_unlock(&sbi->inode_hash_lock); sbi 2513 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(inode->i_sb); sbi 2515 drivers/staging/exfat/exfat_super.c spin_lock(&sbi->inode_hash_lock); sbi 2518 drivers/staging/exfat/exfat_super.c spin_unlock(&sbi->inode_hash_lock); sbi 2840 drivers/staging/exfat/exfat_super.c static int exfat_allow_set_time(struct exfat_sb_info *sbi, struct inode *inode) sbi 2842 drivers/staging/exfat/exfat_super.c mode_t allow_utime = sbi->options.allow_utime; sbi 2855 drivers/staging/exfat/exfat_super.c static int exfat_sanitize_mode(const struct exfat_sb_info *sbi, sbi 2863 drivers/staging/exfat/exfat_super.c mask = sbi->options.fs_fmask; sbi 2865 drivers/staging/exfat/exfat_super.c mask = sbi->options.fs_dmask; sbi 2897 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 2898 drivers/staging/exfat/exfat_super.c struct fs_info_t *p_fs = &(sbi->fs_info); sbi 2931 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(dentry->d_sb); sbi 2950 drivers/staging/exfat/exfat_super.c && exfat_allow_set_time(sbi, inode)) { sbi 2962 drivers/staging/exfat/exfat_super.c (!uid_eq(attr->ia_uid, sbi->options.fs_uid))) || sbi 2964 drivers/staging/exfat/exfat_super.c (!gid_eq(attr->ia_gid, sbi->options.fs_gid))) || sbi 2975 drivers/staging/exfat/exfat_super.c if (exfat_sanitize_mode(sbi, inode, &attr->ia_mode) < 0) sbi 3075 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 3076 drivers/staging/exfat/exfat_super.c struct fs_info_t *p_fs = &(sbi->fs_info); sbi 3077 drivers/staging/exfat/exfat_super.c struct bd_info_t *p_bd = &(sbi->bd_info); sbi 3282 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 3284 drivers/staging/exfat/exfat_super.c struct hlist_head *head = sbi->inode_hashtable + exfat_hash(i_pos); sbi 3287 drivers/staging/exfat/exfat_super.c spin_lock(&sbi->inode_hash_lock); sbi 3297 drivers/staging/exfat/exfat_super.c spin_unlock(&sbi->inode_hash_lock); sbi 3304 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(inode->i_sb); sbi 3305 drivers/staging/exfat/exfat_super.c struct fs_info_t *p_fs = &(sbi->fs_info); sbi 3314 drivers/staging/exfat/exfat_super.c inode->i_uid = sbi->options.fs_uid; sbi 3315 drivers/staging/exfat/exfat_super.c inode->i_gid = sbi->options.fs_gid; sbi 3321 drivers/staging/exfat/exfat_super.c inode->i_mode = exfat_make_mode(sbi, info.Attr, 0777); sbi 3330 drivers/staging/exfat/exfat_super.c inode->i_mode = exfat_make_mode(sbi, info.Attr, 0777); sbi 3337 drivers/staging/exfat/exfat_super.c inode->i_mode = exfat_make_mode(sbi, info.Attr, 0777); sbi 3444 drivers/staging/exfat/exfat_super.c static void exfat_free_super(struct exfat_sb_info *sbi) sbi 3446 drivers/staging/exfat/exfat_super.c if (sbi->nls_disk) sbi 3447 drivers/staging/exfat/exfat_super.c unload_nls(sbi->nls_disk); sbi 3448 drivers/staging/exfat/exfat_super.c if (sbi->nls_io) sbi 3449 drivers/staging/exfat/exfat_super.c unload_nls(sbi->nls_io); sbi 3450 drivers/staging/exfat/exfat_super.c if (sbi->options.iocharset != exfat_default_iocharset) sbi 3451 drivers/staging/exfat/exfat_super.c kfree(sbi->options.iocharset); sbi 3453 drivers/staging/exfat/exfat_super.c mutex_destroy(&sbi->s_lock); sbi 3454 drivers/staging/exfat/exfat_super.c kvfree(sbi); sbi 3459 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 3467 drivers/staging/exfat/exfat_super.c exfat_free_super(sbi); sbi 3538 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(root->d_sb); sbi 3539 drivers/staging/exfat/exfat_super.c struct exfat_mount_options *opts = &sbi->options; sbi 3549 drivers/staging/exfat/exfat_super.c if (sbi->nls_disk) sbi 3550 drivers/staging/exfat/exfat_super.c seq_printf(m, ",codepage=%s", sbi->nls_disk->charset); sbi 3551 drivers/staging/exfat/exfat_super.c if (sbi->nls_io) sbi 3552 drivers/staging/exfat/exfat_super.c seq_printf(m, ",iocharset=%s", sbi->nls_io->charset); sbi 3778 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 3781 drivers/staging/exfat/exfat_super.c spin_lock_init(&sbi->inode_hash_lock); sbi 3783 drivers/staging/exfat/exfat_super.c INIT_HLIST_HEAD(&sbi->inode_hashtable[i]); sbi 3789 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 3790 drivers/staging/exfat/exfat_super.c struct fs_info_t *p_fs = &(sbi->fs_info); sbi 3806 drivers/staging/exfat/exfat_super.c inode->i_uid = sbi->options.fs_uid; sbi 3807 drivers/staging/exfat/exfat_super.c inode->i_gid = sbi->options.fs_gid; sbi 3810 drivers/staging/exfat/exfat_super.c inode->i_mode = exfat_make_mode(sbi, ATTR_SUBDIR, 0777); sbi 3838 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi; sbi 3849 drivers/staging/exfat/exfat_super.c sbi = kvzalloc(sizeof(*sbi), GFP_KERNEL); sbi 3850 drivers/staging/exfat/exfat_super.c if (!sbi) sbi 3852 drivers/staging/exfat/exfat_super.c mutex_init(&sbi->s_lock); sbi 3853 drivers/staging/exfat/exfat_super.c sb->s_fs_info = sbi; sbi 3859 drivers/staging/exfat/exfat_super.c error = parse_options(data, silent, &debug, &sbi->options); sbi 3889 drivers/staging/exfat/exfat_super.c if (sbi->fs_info.vol_type != EXFAT) { sbi 3891 drivers/staging/exfat/exfat_super.c sprintf(buf, "cp%d", sbi->options.codepage); sbi 3892 drivers/staging/exfat/exfat_super.c sbi->nls_disk = load_nls(buf); sbi 3893 drivers/staging/exfat/exfat_super.c if (!sbi->nls_disk) { sbi 3899 drivers/staging/exfat/exfat_super.c sbi->nls_io = load_nls(sbi->options.iocharset); sbi 3928 drivers/staging/exfat/exfat_super.c exfat_free_super(sbi); sbi 3973 drivers/staging/exfat/exfat_super.c struct exfat_sb_info *sbi = EXFAT_SB(sb); sbi 3979 drivers/staging/exfat/exfat_super.c if (sbi) { sbi 3980 drivers/staging/exfat/exfat_super.c flags = sbi->debug_flags; sbi 31 drivers/tty/serial/earlycon-riscv-sbi.c EARLYCON_DECLARE(sbi, early_sbi_setup); sbi 251 fs/adfs/super.c struct adfs_sb_info *sbi = ADFS_SB(sb); sbi 252 fs/adfs/super.c struct adfs_discrecord *dr = adfs_map_discrecord(sbi->s_map); sbi 256 fs/adfs/super.c buf->f_namelen = sbi->s_namelen; sbi 259 fs/adfs/super.c buf->f_files = sbi->s_ids_per_zone * sbi->s_map_size; sbi 41 fs/affs/bitmap.c struct affs_sb_info *sbi = AFFS_SB(sb); sbi 49 fs/affs/bitmap.c if (block > sbi->s_partition_size) sbi 52 fs/affs/bitmap.c blk = block - sbi->s_reserved; sbi 53 fs/affs/bitmap.c bmap = blk / sbi->s_bmap_bits; sbi 54 fs/affs/bitmap.c bit = blk % sbi->s_bmap_bits; sbi 55 fs/affs/bitmap.c bm = &sbi->s_bitmap[bmap]; sbi 57 fs/affs/bitmap.c mutex_lock(&sbi->s_bmlock); sbi 59 fs/affs/bitmap.c bh = sbi->s_bmap_bh; sbi 60 fs/affs/bitmap.c if (sbi->s_last_bmap != bmap) { sbi 65 fs/affs/bitmap.c sbi->s_bmap_bh = bh; sbi 66 fs/affs/bitmap.c sbi->s_last_bmap = bmap; sbi 86 fs/affs/bitmap.c mutex_unlock(&sbi->s_bmlock); sbi 91 fs/affs/bitmap.c mutex_unlock(&sbi->s_bmlock); sbi 96 fs/affs/bitmap.c sbi->s_bmap_bh = NULL; sbi 97 fs/affs/bitmap.c sbi->s_last_bmap = ~0; sbi 98 fs/affs/bitmap.c mutex_unlock(&sbi->s_bmlock); sbi 118 fs/affs/bitmap.c struct affs_sb_info *sbi; sbi 126 fs/affs/bitmap.c sbi = AFFS_SB(sb); sbi 136 fs/affs/bitmap.c if (!goal || goal > sbi->s_partition_size) { sbi 141 fs/affs/bitmap.c goal = sbi->s_reserved; sbi 144 fs/affs/bitmap.c blk = goal - sbi->s_reserved; sbi 145 fs/affs/bitmap.c bmap = blk / sbi->s_bmap_bits; sbi 146 fs/affs/bitmap.c bm = &sbi->s_bitmap[bmap]; sbi 148 fs/affs/bitmap.c mutex_lock(&sbi->s_bmlock); sbi 155 fs/affs/bitmap.c i = sbi->s_bmap_count; sbi 161 fs/affs/bitmap.c if (bmap < sbi->s_bmap_count) sbi 165 fs/affs/bitmap.c bm = sbi->s_bitmap; sbi 167 fs/affs/bitmap.c blk = bmap * sbi->s_bmap_bits; sbi 171 fs/affs/bitmap.c bh = sbi->s_bmap_bh; sbi 172 fs/affs/bitmap.c if (sbi->s_last_bmap != bmap) { sbi 177 fs/affs/bitmap.c sbi->s_bmap_bh = bh; sbi 178 fs/affs/bitmap.c sbi->s_last_bmap = bmap; sbi 182 fs/affs/bitmap.c bit = blk % sbi->s_bmap_bits; sbi 207 fs/affs/bitmap.c blk += bit + sbi->s_reserved; sbi 229 fs/affs/bitmap.c mutex_unlock(&sbi->s_bmlock); sbi 236 fs/affs/bitmap.c sbi->s_bmap_bh = NULL; sbi 237 fs/affs/bitmap.c sbi->s_last_bmap = ~0; sbi 239 fs/affs/bitmap.c mutex_unlock(&sbi->s_bmlock); sbi 251 fs/affs/bitmap.c struct affs_sb_info *sbi = AFFS_SB(sb); sbi 256 fs/affs/bitmap.c if (!AFFS_ROOT_TAIL(sb, sbi->s_root_bh)->bm_flag) { sbi 262 fs/affs/bitmap.c sbi->s_last_bmap = ~0; sbi 263 fs/affs/bitmap.c sbi->s_bmap_bh = NULL; sbi 264 fs/affs/bitmap.c sbi->s_bmap_bits = sb->s_blocksize * 8 - 32; sbi 265 fs/affs/bitmap.c sbi->s_bmap_count = (sbi->s_partition_size - sbi->s_reserved + sbi 266 fs/affs/bitmap.c sbi->s_bmap_bits - 1) / sbi->s_bmap_bits; sbi 267 fs/affs/bitmap.c size = sbi->s_bmap_count * sizeof(*bm); sbi 268 fs/affs/bitmap.c bm = sbi->s_bitmap = kzalloc(size, GFP_KERNEL); sbi 269 fs/affs/bitmap.c if (!sbi->s_bitmap) { sbi 274 fs/affs/bitmap.c bmap_blk = (__be32 *)sbi->s_root_bh->b_data; sbi 278 fs/affs/bitmap.c for (i = sbi->s_bmap_count; i > 0; bm++, i--) { sbi 315 fs/affs/bitmap.c offset = (sbi->s_partition_size - sbi->s_reserved) % sbi->s_bmap_bits; sbi 355 fs/affs/bitmap.c struct affs_sb_info *sbi = AFFS_SB(sb); sbi 357 fs/affs/bitmap.c if (!sbi->s_bitmap) sbi 360 fs/affs/bitmap.c affs_brelse(sbi->s_bmap_bh); sbi 361 fs/affs/bitmap.c sbi->s_bmap_bh = NULL; sbi 362 fs/affs/bitmap.c sbi->s_last_bmap = ~0; sbi 363 fs/affs/bitmap.c kfree(sbi->s_bitmap); sbi 364 fs/affs/bitmap.c sbi->s_bitmap = NULL; sbi 20 fs/affs/inode.c struct affs_sb_info *sbi = AFFS_SB(sb); sbi 71 fs/affs/inode.c if (affs_test_opt(sbi->s_flags, SF_SETMODE)) sbi 72 fs/affs/inode.c inode->i_mode = sbi->s_mode; sbi 77 fs/affs/inode.c if (id == 0 || affs_test_opt(sbi->s_flags, SF_SETUID)) sbi 78 fs/affs/inode.c inode->i_uid = sbi->s_uid; sbi 79 fs/affs/inode.c else if (id == 0xFFFF && affs_test_opt(sbi->s_flags, SF_MUFS)) sbi 85 fs/affs/inode.c if (id == 0 || affs_test_opt(sbi->s_flags, SF_SETGID)) sbi 86 fs/affs/inode.c inode->i_gid = sbi->s_gid; sbi 87 fs/affs/inode.c else if (id == 0xFFFF && affs_test_opt(sbi->s_flags, SF_MUFS)) sbi 94 fs/affs/inode.c inode->i_uid = sbi->s_uid; sbi 95 fs/affs/inode.c inode->i_gid = sbi->s_gid; sbi 99 fs/affs/inode.c affs_test_opt(sbi->s_flags, SF_SETMODE)) { sbi 132 fs/affs/inode.c sbi->s_data_blksize + 1; sbi 134 fs/affs/inode.c sbi->s_hashsize + 1; sbi 138 fs/affs/inode.c inode->i_mapping->a_ops = affs_test_opt(sbi->s_flags, SF_OFS) ? sbi 345 fs/affs/namei.c struct affs_sb_info *sbi = AFFS_SB(sb); sbi 348 fs/affs/namei.c spin_lock(&sbi->symlink_lock); sbi 349 fs/affs/namei.c while (sbi->s_volume[i]) /* Cannot overflow */ sbi 350 fs/affs/namei.c *p++ = sbi->s_volume[i++]; sbi 351 fs/affs/namei.c spin_unlock(&sbi->symlink_lock); sbi 35 fs/affs/super.c struct affs_sb_info *sbi = AFFS_SB(sb); sbi 36 fs/affs/super.c struct buffer_head *bh = sbi->s_root_bh; sbi 52 fs/affs/super.c struct affs_sb_info *sbi = AFFS_SB(sb); sbi 55 fs/affs/super.c cancel_delayed_work_sync(&sbi->sb_work); sbi 67 fs/affs/super.c struct affs_sb_info *sbi; sbi 70 fs/affs/super.c sbi = container_of(work, struct affs_sb_info, sb_work.work); sbi 71 fs/affs/super.c sb = sbi->sb; sbi 73 fs/affs/super.c spin_lock(&sbi->work_lock); sbi 74 fs/affs/super.c sbi->work_queued = 0; sbi 75 fs/affs/super.c spin_unlock(&sbi->work_lock); sbi 82 fs/affs/super.c struct affs_sb_info *sbi = AFFS_SB(sb); sbi 88 fs/affs/super.c spin_lock(&sbi->work_lock); sbi 89 fs/affs/super.c if (!sbi->work_queued) { sbi 91 fs/affs/super.c queue_delayed_work(system_long_wq, &sbi->sb_work, delay); sbi 92 fs/affs/super.c sbi->work_queued = 1; sbi 94 fs/affs/super.c spin_unlock(&sbi->work_lock); sbi 298 fs/affs/super.c struct affs_sb_info *sbi = AFFS_SB(sb); sbi 302 fs/affs/super.c if (affs_test_opt(sbi->s_flags, SF_SETMODE)) sbi 303 fs/affs/super.c seq_printf(m, ",mode=%o", sbi->s_mode); sbi 304 fs/affs/super.c if (affs_test_opt(sbi->s_flags, SF_MUFS)) sbi 306 fs/affs/super.c if (affs_test_opt(sbi->s_flags, SF_NO_TRUNCATE)) sbi 308 fs/affs/super.c if (affs_test_opt(sbi->s_flags, SF_PREFIX)) sbi 309 fs/affs/super.c seq_printf(m, ",prefix=%s", sbi->s_prefix); sbi 310 fs/affs/super.c if (affs_test_opt(sbi->s_flags, SF_IMMUTABLE)) sbi 312 fs/affs/super.c if (sbi->s_reserved != 2) sbi 313 fs/affs/super.c seq_printf(m, ",reserved=%u", sbi->s_reserved); sbi 314 fs/affs/super.c if (sbi->s_root_block != (sbi->s_reserved + sbi->s_partition_size - 1) / 2) sbi 315 fs/affs/super.c seq_printf(m, ",root=%u", sbi->s_root_block); sbi 316 fs/affs/super.c if (affs_test_opt(sbi->s_flags, SF_SETGID)) sbi 318 fs/affs/super.c from_kgid_munged(&init_user_ns, sbi->s_gid)); sbi 319 fs/affs/super.c if (affs_test_opt(sbi->s_flags, SF_SETUID)) sbi 321 fs/affs/super.c from_kuid_munged(&init_user_ns, sbi->s_uid)); sbi 322 fs/affs/super.c if (affs_test_opt(sbi->s_flags, SF_VERBOSE)) sbi 324 fs/affs/super.c if (sbi->s_volume[0]) sbi 325 fs/affs/super.c seq_printf(m, ",volume=%s", sbi->s_volume); sbi 335 fs/affs/super.c struct affs_sb_info *sbi; sbi 362 fs/affs/super.c sbi = kzalloc(sizeof(struct affs_sb_info), GFP_KERNEL); sbi 363 fs/affs/super.c if (!sbi) sbi 366 fs/affs/super.c sb->s_fs_info = sbi; sbi 367 fs/affs/super.c sbi->sb = sb; sbi 368 fs/affs/super.c mutex_init(&sbi->s_bmlock); sbi 369 fs/affs/super.c spin_lock_init(&sbi->symlink_lock); sbi 370 fs/affs/super.c spin_lock_init(&sbi->work_lock); sbi 371 fs/affs/super.c INIT_DELAYED_WORK(&sbi->sb_work, flush_superblock); sbi 374 fs/affs/super.c &blocksize,&sbi->s_prefix, sbi 375 fs/affs/super.c sbi->s_volume, &mount_flags)) { sbi 381 fs/affs/super.c sbi->s_flags = mount_flags; sbi 382 fs/affs/super.c sbi->s_mode = i; sbi 383 fs/affs/super.c sbi->s_uid = uid; sbi 384 fs/affs/super.c sbi->s_gid = gid; sbi 385 fs/affs/super.c sbi->s_reserved= reserved; sbi 406 fs/affs/super.c sbi->s_root_block = root_block; sbi 408 fs/affs/super.c sbi->s_root_block = (reserved + size - 1) / 2; sbi 411 fs/affs/super.c sbi->s_partition_size = size; sbi 427 fs/affs/super.c sbi->s_root_block + num_bm, sbi 429 fs/affs/super.c root_bh = affs_bread(sb, sbi->s_root_block + num_bm); sbi 435 fs/affs/super.c sbi->s_hashsize = blocksize / 4 - 56; sbi 436 fs/affs/super.c sbi->s_root_block += num_bm; sbi 450 fs/affs/super.c sbi->s_root_bh = root_bh; sbi 451 fs/affs/super.c root_block = sbi->s_root_block; sbi 476 fs/affs/super.c affs_set_opt(sbi->s_flags, SF_MUFS); sbi 480 fs/affs/super.c affs_set_opt(sbi->s_flags, SF_INTL); sbi 483 fs/affs/super.c affs_set_opt(sbi->s_flags, SF_MUFS); sbi 488 fs/affs/super.c affs_set_opt(sbi->s_flags, SF_MUFS); sbi 491 fs/affs/super.c affs_set_opt(sbi->s_flags, SF_OFS); sbi 496 fs/affs/super.c affs_set_opt(sbi->s_flags, SF_MUFS); sbi 500 fs/affs/super.c affs_set_opt(sbi->s_flags, SF_INTL); sbi 501 fs/affs/super.c affs_set_opt(sbi->s_flags, SF_OFS); sbi 520 fs/affs/super.c sbi->s_data_blksize = sb->s_blocksize; sbi 521 fs/affs/super.c if (affs_test_opt(sbi->s_flags, SF_OFS)) sbi 522 fs/affs/super.c sbi->s_data_blksize -= 24; sbi 555 fs/affs/super.c struct affs_sb_info *sbi = AFFS_SB(sb); sbi 572 fs/affs/super.c memcpy(volume, sbi->s_volume, 32); sbi 580 fs/affs/super.c flush_delayed_work(&sbi->sb_work); sbi 582 fs/affs/super.c sbi->s_flags = mount_flags; sbi 583 fs/affs/super.c sbi->s_mode = mode; sbi 584 fs/affs/super.c sbi->s_uid = uid; sbi 585 fs/affs/super.c sbi->s_gid = gid; sbi 587 fs/affs/super.c spin_lock(&sbi->symlink_lock); sbi 589 fs/affs/super.c kfree(sbi->s_prefix); sbi 590 fs/affs/super.c sbi->s_prefix = prefix; sbi 592 fs/affs/super.c memcpy(sbi->s_volume, volume, 32); sbi 593 fs/affs/super.c spin_unlock(&sbi->symlink_lock); sbi 637 fs/affs/super.c struct affs_sb_info *sbi = AFFS_SB(sb); sbi 639 fs/affs/super.c if (sbi) { sbi 641 fs/affs/super.c affs_brelse(sbi->s_root_bh); sbi 642 fs/affs/super.c kfree(sbi->s_prefix); sbi 643 fs/affs/super.c mutex_destroy(&sbi->s_bmlock); sbi 644 fs/affs/super.c kfree(sbi); sbi 35 fs/affs/symlink.c struct affs_sb_info *sbi = AFFS_SB(inode->i_sb); sbi 37 fs/affs/symlink.c spin_lock(&sbi->symlink_lock); sbi 38 fs/affs/symlink.c pf = sbi->s_prefix ? sbi->s_prefix : "/"; sbi 41 fs/affs/symlink.c spin_unlock(&sbi->symlink_lock); sbi 64 fs/autofs/autofs_i.h struct autofs_sb_info *sbi; sbi 144 fs/autofs/autofs_i.h static inline int autofs_oz_mode(struct autofs_sb_info *sbi) sbi 146 fs/autofs/autofs_i.h return ((sbi->flags & AUTOFS_SBI_CATATONIC) || sbi 147 fs/autofs/autofs_i.h task_pgrp(current) == sbi->oz_pgrp); sbi 160 fs/autofs/autofs_i.h struct autofs_sb_info *sbi, unsigned int how); sbi 228 fs/autofs/autofs_i.h static inline u32 autofs_get_dev(struct autofs_sb_info *sbi) sbi 230 fs/autofs/autofs_i.h return new_encode_dev(sbi->sb->s_dev); sbi 233 fs/autofs/autofs_i.h static inline u64 autofs_get_ino(struct autofs_sb_info *sbi) sbi 235 fs/autofs/autofs_i.h return d_inode(sbi->sb->s_root)->i_ino; sbi 240 fs/autofs/autofs_i.h struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); sbi 245 fs/autofs/autofs_i.h list_add(&ino->expiring, &sbi->expiring_list); sbi 251 fs/autofs/autofs_i.h struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); sbi 255 fs/autofs/autofs_i.h spin_lock(&sbi->lookup_lock); sbi 257 fs/autofs/autofs_i.h list_add(&ino->expiring, &sbi->expiring_list); sbi 258 fs/autofs/autofs_i.h spin_unlock(&sbi->lookup_lock); sbi 264 fs/autofs/autofs_i.h struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); sbi 268 fs/autofs/autofs_i.h spin_lock(&sbi->lookup_lock); sbi 271 fs/autofs/autofs_i.h spin_unlock(&sbi->lookup_lock); sbi 153 fs/autofs/dev-ioctl.c struct autofs_sb_info *sbi, sbi 164 fs/autofs/dev-ioctl.c struct autofs_sb_info *sbi, sbi 167 fs/autofs/dev-ioctl.c param->protover.version = sbi->version; sbi 173 fs/autofs/dev-ioctl.c struct autofs_sb_info *sbi, sbi 176 fs/autofs/dev-ioctl.c param->protosubver.sub_version = sbi->sub_version; sbi 218 fs/autofs/dev-ioctl.c return ino && ino->sbi->type & *(unsigned *)p; sbi 257 fs/autofs/dev-ioctl.c struct autofs_sb_info *sbi, sbi 288 fs/autofs/dev-ioctl.c struct autofs_sb_info *sbi, sbi 299 fs/autofs/dev-ioctl.c struct autofs_sb_info *sbi, sbi 305 fs/autofs/dev-ioctl.c return autofs_wait_release(sbi, token, 0); sbi 313 fs/autofs/dev-ioctl.c struct autofs_sb_info *sbi, sbi 321 fs/autofs/dev-ioctl.c return autofs_wait_release(sbi, token, status); sbi 337 fs/autofs/dev-ioctl.c struct autofs_sb_info *sbi, sbi 349 fs/autofs/dev-ioctl.c mutex_lock(&sbi->wq_mutex); sbi 350 fs/autofs/dev-ioctl.c if (!(sbi->flags & AUTOFS_SBI_CATATONIC)) { sbi 351 fs/autofs/dev-ioctl.c mutex_unlock(&sbi->wq_mutex); sbi 358 fs/autofs/dev-ioctl.c if (ns_of_pid(new_pid) != ns_of_pid(sbi->oz_pgrp)) { sbi 374 fs/autofs/dev-ioctl.c swap(sbi->oz_pgrp, new_pid); sbi 375 fs/autofs/dev-ioctl.c sbi->pipefd = pipefd; sbi 376 fs/autofs/dev-ioctl.c sbi->pipe = pipe; sbi 377 fs/autofs/dev-ioctl.c sbi->flags &= ~AUTOFS_SBI_CATATONIC; sbi 381 fs/autofs/dev-ioctl.c mutex_unlock(&sbi->wq_mutex); sbi 390 fs/autofs/dev-ioctl.c struct autofs_sb_info *sbi, sbi 393 fs/autofs/dev-ioctl.c autofs_catatonic_mode(sbi); sbi 399 fs/autofs/dev-ioctl.c struct autofs_sb_info *sbi, sbi 405 fs/autofs/dev-ioctl.c param->timeout.timeout = sbi->exp_timeout / HZ; sbi 406 fs/autofs/dev-ioctl.c sbi->exp_timeout = timeout * HZ; sbi 419 fs/autofs/dev-ioctl.c struct autofs_sb_info *sbi, sbi 429 fs/autofs/dev-ioctl.c devid = sbi->sb->s_dev; sbi 441 fs/autofs/dev-ioctl.c spin_lock(&sbi->fs_lock); sbi 446 fs/autofs/dev-ioctl.c spin_unlock(&sbi->fs_lock); sbi 458 fs/autofs/dev-ioctl.c struct autofs_sb_info *sbi, sbi 467 fs/autofs/dev-ioctl.c return autofs_do_expire_multi(sbi->sb, mnt, sbi, how); sbi 472 fs/autofs/dev-ioctl.c struct autofs_sb_info *sbi, sbi 503 fs/autofs/dev-ioctl.c struct autofs_sb_info *sbi, sbi 536 fs/autofs/dev-ioctl.c dev_t dev = sbi->sb->s_dev; sbi 593 fs/autofs/dev-ioctl.c struct autofs_sb_info *sbi; sbi 631 fs/autofs/dev-ioctl.c sbi = NULL; sbi 658 fs/autofs/dev-ioctl.c sbi = autofs_sbi(sb); sbi 664 fs/autofs/dev-ioctl.c if (!autofs_oz_mode(sbi) && sbi 672 fs/autofs/dev-ioctl.c err = fn(fp, sbi, param); sbi 44 fs/autofs/expire.c struct autofs_sb_info *sbi = autofs_sbi(path.dentry->d_sb); sbi 47 fs/autofs/expire.c if (autofs_type_indirect(sbi->type)) sbi 100 fs/autofs/expire.c struct autofs_sb_info *sbi = autofs_sbi(root->d_sb); sbi 103 fs/autofs/expire.c spin_lock(&sbi->lookup_lock); sbi 107 fs/autofs/expire.c spin_unlock(&sbi->lookup_lock); sbi 118 fs/autofs/expire.c struct autofs_sb_info *sbi = autofs_sbi(root->d_sb); sbi 124 fs/autofs/expire.c spin_lock(&sbi->lookup_lock); sbi 139 fs/autofs/expire.c spin_unlock(&sbi->lookup_lock); sbi 276 fs/autofs/expire.c struct autofs_sb_info *sbi, sbi 286 fs/autofs/expire.c timeout = sbi->exp_timeout; sbi 289 fs/autofs/expire.c spin_lock(&sbi->fs_lock); sbi 293 fs/autofs/expire.c spin_unlock(&sbi->fs_lock); sbi 297 fs/autofs/expire.c spin_unlock(&sbi->fs_lock); sbi 300 fs/autofs/expire.c spin_lock(&sbi->fs_lock); sbi 303 fs/autofs/expire.c spin_unlock(&sbi->fs_lock); sbi 306 fs/autofs/expire.c spin_lock(&sbi->fs_lock); sbi 308 fs/autofs/expire.c spin_unlock(&sbi->fs_lock); sbi 422 fs/autofs/expire.c struct autofs_sb_info *sbi, sbi 435 fs/autofs/expire.c timeout = sbi->exp_timeout; sbi 439 fs/autofs/expire.c spin_lock(&sbi->fs_lock); sbi 442 fs/autofs/expire.c spin_unlock(&sbi->fs_lock); sbi 445 fs/autofs/expire.c spin_unlock(&sbi->fs_lock); sbi 451 fs/autofs/expire.c spin_lock(&sbi->fs_lock); sbi 454 fs/autofs/expire.c spin_unlock(&sbi->fs_lock); sbi 470 fs/autofs/expire.c spin_lock(&sbi->fs_lock); sbi 473 fs/autofs/expire.c spin_lock(&sbi->fs_lock); sbi 475 fs/autofs/expire.c spin_unlock(&sbi->fs_lock); sbi 485 fs/autofs/expire.c spin_unlock(&sbi->fs_lock); sbi 492 fs/autofs/expire.c struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); sbi 504 fs/autofs/expire.c spin_lock(&sbi->fs_lock); sbi 507 fs/autofs/expire.c spin_unlock(&sbi->fs_lock); sbi 516 fs/autofs/expire.c spin_unlock(&sbi->fs_lock); sbi 520 fs/autofs/expire.c status = autofs_wait(sbi, path, NFY_NONE); sbi 530 fs/autofs/expire.c spin_unlock(&sbi->fs_lock); sbi 538 fs/autofs/expire.c struct autofs_sb_info *sbi, sbi 548 fs/autofs/expire.c pkt.hdr.proto_version = sbi->version; sbi 551 fs/autofs/expire.c dentry = autofs_expire_indirect(sb, mnt, sbi, 0); sbi 562 fs/autofs/expire.c spin_lock(&sbi->fs_lock); sbi 568 fs/autofs/expire.c spin_unlock(&sbi->fs_lock); sbi 576 fs/autofs/expire.c struct autofs_sb_info *sbi, unsigned int how) sbi 581 fs/autofs/expire.c if (autofs_type_trigger(sbi->type)) sbi 582 fs/autofs/expire.c dentry = autofs_expire_direct(sb, mnt, sbi, how); sbi 584 fs/autofs/expire.c dentry = autofs_expire_indirect(sb, mnt, sbi, how); sbi 593 fs/autofs/expire.c ret = autofs_wait(sbi, &path, NFY_EXPIRE); sbi 595 fs/autofs/expire.c spin_lock(&sbi->fs_lock); sbi 600 fs/autofs/expire.c spin_unlock(&sbi->fs_lock); sbi 612 fs/autofs/expire.c struct autofs_sb_info *sbi, int __user *arg) sbi 619 fs/autofs/expire.c return autofs_do_expire_multi(sb, mnt, sbi, how); sbi 13 fs/autofs/inode.c struct autofs_info *autofs_new_ino(struct autofs_sb_info *sbi) sbi 22 fs/autofs/inode.c ino->sbi = sbi; sbi 41 fs/autofs/inode.c struct autofs_sb_info *sbi = autofs_sbi(sb); sbi 49 fs/autofs/inode.c if (sbi) { sbi 51 fs/autofs/inode.c autofs_catatonic_mode(sbi); sbi 52 fs/autofs/inode.c put_pid(sbi->oz_pgrp); sbi 57 fs/autofs/inode.c if (sbi) sbi 58 fs/autofs/inode.c kfree_rcu(sbi, rcu); sbi 63 fs/autofs/inode.c struct autofs_sb_info *sbi = autofs_sbi(root->d_sb); sbi 66 fs/autofs/inode.c if (!sbi) sbi 69 fs/autofs/inode.c seq_printf(m, ",fd=%d", sbi->pipefd); sbi 76 fs/autofs/inode.c seq_printf(m, ",pgrp=%d", pid_vnr(sbi->oz_pgrp)); sbi 77 fs/autofs/inode.c seq_printf(m, ",timeout=%lu", sbi->exp_timeout/HZ); sbi 78 fs/autofs/inode.c seq_printf(m, ",minproto=%d", sbi->min_proto); sbi 79 fs/autofs/inode.c seq_printf(m, ",maxproto=%d", sbi->max_proto); sbi 81 fs/autofs/inode.c if (autofs_type_offset(sbi->type)) sbi 83 fs/autofs/inode.c else if (autofs_type_direct(sbi->type)) sbi 87 fs/autofs/inode.c if (sbi->flags & AUTOFS_SBI_STRICTEXPIRE) sbi 89 fs/autofs/inode.c if (sbi->flags & AUTOFS_SBI_IGNORE) sbi 92 fs/autofs/inode.c if (sbi->pipe) sbi 93 fs/autofs/inode.c seq_printf(m, ",pipe_ino=%ld", file_inode(sbi->pipe)->i_ino); sbi 133 fs/autofs/inode.c struct autofs_sb_info *sbi) sbi 145 fs/autofs/inode.c sbi->min_proto = AUTOFS_MIN_PROTO_VERSION; sbi 146 fs/autofs/inode.c sbi->max_proto = AUTOFS_MAX_PROTO_VERSION; sbi 148 fs/autofs/inode.c sbi->pipefd = -1; sbi 164 fs/autofs/inode.c sbi->pipefd = pipefd; sbi 191 fs/autofs/inode.c sbi->min_proto = option; sbi 196 fs/autofs/inode.c sbi->max_proto = option; sbi 199 fs/autofs/inode.c set_autofs_type_indirect(&sbi->type); sbi 202 fs/autofs/inode.c set_autofs_type_direct(&sbi->type); sbi 205 fs/autofs/inode.c set_autofs_type_offset(&sbi->type); sbi 208 fs/autofs/inode.c sbi->flags |= AUTOFS_SBI_STRICTEXPIRE; sbi 211 fs/autofs/inode.c sbi->flags |= AUTOFS_SBI_IGNORE; sbi 217 fs/autofs/inode.c return (sbi->pipefd < 0); sbi 225 fs/autofs/inode.c struct autofs_sb_info *sbi; sbi 231 fs/autofs/inode.c sbi = kzalloc(sizeof(*sbi), GFP_KERNEL); sbi 232 fs/autofs/inode.c if (!sbi) sbi 234 fs/autofs/inode.c pr_debug("starting up, sbi = %p\n", sbi); sbi 236 fs/autofs/inode.c s->s_fs_info = sbi; sbi 237 fs/autofs/inode.c sbi->magic = AUTOFS_SBI_MAGIC; sbi 238 fs/autofs/inode.c sbi->pipefd = -1; sbi 239 fs/autofs/inode.c sbi->pipe = NULL; sbi 240 fs/autofs/inode.c sbi->exp_timeout = 0; sbi 241 fs/autofs/inode.c sbi->oz_pgrp = NULL; sbi 242 fs/autofs/inode.c sbi->sb = s; sbi 243 fs/autofs/inode.c sbi->version = 0; sbi 244 fs/autofs/inode.c sbi->sub_version = 0; sbi 245 fs/autofs/inode.c sbi->flags = AUTOFS_SBI_CATATONIC; sbi 246 fs/autofs/inode.c set_autofs_type_indirect(&sbi->type); sbi 247 fs/autofs/inode.c sbi->min_proto = 0; sbi 248 fs/autofs/inode.c sbi->max_proto = 0; sbi 249 fs/autofs/inode.c mutex_init(&sbi->wq_mutex); sbi 250 fs/autofs/inode.c mutex_init(&sbi->pipe_mutex); sbi 251 fs/autofs/inode.c spin_lock_init(&sbi->fs_lock); sbi 252 fs/autofs/inode.c sbi->queues = NULL; sbi 253 fs/autofs/inode.c spin_lock_init(&sbi->lookup_lock); sbi 254 fs/autofs/inode.c INIT_LIST_HEAD(&sbi->active_list); sbi 255 fs/autofs/inode.c INIT_LIST_HEAD(&sbi->expiring_list); sbi 266 fs/autofs/inode.c ino = autofs_new_ino(sbi); sbi 282 fs/autofs/inode.c if (parse_options(data, root_inode, &pgrp, &pgrp_set, sbi)) { sbi 288 fs/autofs/inode.c if (sbi->max_proto < AUTOFS_MIN_PROTO_VERSION || sbi 289 fs/autofs/inode.c sbi->min_proto > AUTOFS_MAX_PROTO_VERSION) { sbi 292 fs/autofs/inode.c sbi->min_proto, sbi->max_proto, sbi 298 fs/autofs/inode.c if (sbi->max_proto > AUTOFS_MAX_PROTO_VERSION) sbi 299 fs/autofs/inode.c sbi->version = AUTOFS_MAX_PROTO_VERSION; sbi 301 fs/autofs/inode.c sbi->version = sbi->max_proto; sbi 302 fs/autofs/inode.c sbi->sub_version = AUTOFS_PROTO_SUBVERSION; sbi 305 fs/autofs/inode.c sbi->oz_pgrp = find_get_pid(pgrp); sbi 306 fs/autofs/inode.c if (!sbi->oz_pgrp) { sbi 312 fs/autofs/inode.c sbi->oz_pgrp = get_task_pid(current, PIDTYPE_PGID); sbi 315 fs/autofs/inode.c if (autofs_type_trigger(sbi->type)) sbi 322 fs/autofs/inode.c sbi->pipefd, pid_nr(sbi->oz_pgrp)); sbi 323 fs/autofs/inode.c pipe = fget(sbi->pipefd); sbi 332 fs/autofs/inode.c sbi->pipe = pipe; sbi 333 fs/autofs/inode.c sbi->flags &= ~AUTOFS_SBI_CATATONIC; sbi 348 fs/autofs/inode.c put_pid(sbi->oz_pgrp); sbi 355 fs/autofs/inode.c kfree(sbi); sbi 65 fs/autofs/root.c struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); sbi 69 fs/autofs/root.c spin_lock(&sbi->lookup_lock); sbi 71 fs/autofs/root.c spin_unlock(&sbi->lookup_lock); sbi 77 fs/autofs/root.c struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); sbi 81 fs/autofs/root.c if (autofs_oz_mode(sbi)) sbi 93 fs/autofs/root.c spin_lock(&sbi->lookup_lock); sbi 95 fs/autofs/root.c spin_unlock(&sbi->lookup_lock); sbi 98 fs/autofs/root.c spin_unlock(&sbi->lookup_lock); sbi 107 fs/autofs/root.c struct autofs_sb_info *sbi = autofs_sbi(de->d_sb); sbi 114 fs/autofs/root.c if (sbi) { sbi 115 fs/autofs/root.c spin_lock(&sbi->lookup_lock); sbi 120 fs/autofs/root.c spin_unlock(&sbi->lookup_lock); sbi 128 fs/autofs/root.c struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); sbi 136 fs/autofs/root.c head = &sbi->active_list; sbi 139 fs/autofs/root.c spin_lock(&sbi->lookup_lock); sbi 169 fs/autofs/root.c spin_unlock(&sbi->lookup_lock); sbi 175 fs/autofs/root.c spin_unlock(&sbi->lookup_lock); sbi 183 fs/autofs/root.c struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); sbi 191 fs/autofs/root.c head = &sbi->expiring_list; sbi 194 fs/autofs/root.c spin_lock(&sbi->lookup_lock); sbi 201 fs/autofs/root.c spin_unlock(&sbi->lookup_lock); sbi 229 fs/autofs/root.c spin_unlock(&sbi->lookup_lock); sbi 235 fs/autofs/root.c spin_unlock(&sbi->lookup_lock); sbi 242 fs/autofs/root.c struct autofs_sb_info *sbi = autofs_sbi(path->dentry->d_sb); sbi 250 fs/autofs/root.c status = autofs_wait(sbi, path, NFY_MOUNT); sbi 255 fs/autofs/root.c if (!(sbi->flags & AUTOFS_SBI_STRICTEXPIRE)) sbi 287 fs/autofs/root.c struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); sbi 293 fs/autofs/root.c if (autofs_type_indirect(sbi->type) && d_unhashed(dentry)) { sbi 312 fs/autofs/root.c struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); sbi 319 fs/autofs/root.c if (autofs_oz_mode(sbi)) sbi 335 fs/autofs/root.c spin_lock(&sbi->fs_lock); sbi 337 fs/autofs/root.c spin_unlock(&sbi->fs_lock); sbi 350 fs/autofs/root.c spin_unlock(&sbi->fs_lock); sbi 366 fs/autofs/root.c if (sbi->version > 4) { sbi 368 fs/autofs/root.c spin_unlock(&sbi->fs_lock); sbi 373 fs/autofs/root.c spin_unlock(&sbi->fs_lock); sbi 378 fs/autofs/root.c spin_unlock(&sbi->fs_lock); sbi 380 fs/autofs/root.c spin_lock(&sbi->fs_lock); sbi 383 fs/autofs/root.c spin_unlock(&sbi->fs_lock); sbi 387 fs/autofs/root.c spin_unlock(&sbi->fs_lock); sbi 400 fs/autofs/root.c struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb); sbi 407 fs/autofs/root.c if (autofs_oz_mode(sbi)) { sbi 449 fs/autofs/root.c spin_lock(&sbi->fs_lock); sbi 468 fs/autofs/root.c spin_unlock(&sbi->fs_lock); sbi 477 fs/autofs/root.c struct autofs_sb_info *sbi; sbi 487 fs/autofs/root.c sbi = autofs_sbi(dir->i_sb); sbi 491 fs/autofs/root.c sbi->flags & AUTOFS_SBI_CATATONIC, sbi 492 fs/autofs/root.c autofs_oz_mode(sbi)); sbi 504 fs/autofs/root.c if (!autofs_oz_mode(sbi) && !IS_ROOT(dentry->d_parent)) sbi 507 fs/autofs/root.c ino = autofs_new_ino(sbi); sbi 511 fs/autofs/root.c spin_lock(&sbi->lookup_lock); sbi 515 fs/autofs/root.c autofs_type_indirect(sbi->type)) sbi 520 fs/autofs/root.c list_add(&ino->active, &sbi->active_list); sbi 521 fs/autofs/root.c spin_unlock(&sbi->lookup_lock); sbi 531 fs/autofs/root.c struct autofs_sb_info *sbi = autofs_sbi(dir->i_sb); sbi 540 fs/autofs/root.c if (!autofs_oz_mode(sbi)) sbi 547 fs/autofs/root.c if (sbi->flags & AUTOFS_SBI_CATATONIC) sbi 599 fs/autofs/root.c struct autofs_sb_info *sbi = autofs_sbi(dir->i_sb); sbi 603 fs/autofs/root.c if (!autofs_oz_mode(sbi)) sbi 610 fs/autofs/root.c if (sbi->flags & AUTOFS_SBI_CATATONIC) sbi 625 fs/autofs/root.c spin_lock(&sbi->lookup_lock); sbi 628 fs/autofs/root.c spin_unlock(&sbi->lookup_lock); sbi 685 fs/autofs/root.c struct autofs_sb_info *sbi = autofs_sbi(dir->i_sb); sbi 691 fs/autofs/root.c if (!autofs_oz_mode(sbi)) sbi 698 fs/autofs/root.c if (sbi->flags & AUTOFS_SBI_CATATONIC) sbi 701 fs/autofs/root.c spin_lock(&sbi->lookup_lock); sbi 703 fs/autofs/root.c spin_unlock(&sbi->lookup_lock); sbi 708 fs/autofs/root.c spin_unlock(&sbi->lookup_lock); sbi 710 fs/autofs/root.c if (sbi->version < 5) sbi 731 fs/autofs/root.c struct autofs_sb_info *sbi = autofs_sbi(dir->i_sb); sbi 736 fs/autofs/root.c if (!autofs_oz_mode(sbi)) sbi 743 fs/autofs/root.c if (sbi->flags & AUTOFS_SBI_CATATONIC) sbi 759 fs/autofs/root.c if (sbi->version < 5) sbi 775 fs/autofs/root.c static inline int autofs_compat_get_set_timeout(struct autofs_sb_info *sbi, sbi 785 fs/autofs/root.c rv = put_user(sbi->exp_timeout/HZ, p); sbi 790 fs/autofs/root.c sbi->exp_timeout = 0; sbi 792 fs/autofs/root.c sbi->exp_timeout = ntimeout * HZ; sbi 800 fs/autofs/root.c static inline int autofs_get_set_timeout(struct autofs_sb_info *sbi, sbi 810 fs/autofs/root.c rv = put_user(sbi->exp_timeout/HZ, p); sbi 815 fs/autofs/root.c sbi->exp_timeout = 0; sbi 817 fs/autofs/root.c sbi->exp_timeout = ntimeout * HZ; sbi 825 fs/autofs/root.c static inline int autofs_get_protover(struct autofs_sb_info *sbi, sbi 828 fs/autofs/root.c return put_user(sbi->version, p); sbi 832 fs/autofs/root.c static inline int autofs_get_protosubver(struct autofs_sb_info *sbi, sbi 835 fs/autofs/root.c return put_user(sbi->sub_version, p); sbi 873 fs/autofs/root.c struct autofs_sb_info *sbi = autofs_sbi(inode->i_sb); sbi 877 fs/autofs/root.c cmd, arg, sbi, task_pgrp_nr(current)); sbi 883 fs/autofs/root.c if (!autofs_oz_mode(sbi) && !capable(CAP_SYS_ADMIN)) sbi 888 fs/autofs/root.c return autofs_wait_release(sbi, (autofs_wqt_t) arg, 0); sbi 890 fs/autofs/root.c return autofs_wait_release(sbi, (autofs_wqt_t) arg, -ENOENT); sbi 892 fs/autofs/root.c autofs_catatonic_mode(sbi); sbi 895 fs/autofs/root.c return autofs_get_protover(sbi, p); sbi 897 fs/autofs/root.c return autofs_get_protosubver(sbi, p); sbi 899 fs/autofs/root.c return autofs_get_set_timeout(sbi, p); sbi 902 fs/autofs/root.c return autofs_compat_get_set_timeout(sbi, p); sbi 910 fs/autofs/root.c return autofs_expire_run(inode->i_sb, filp->f_path.mnt, sbi, p); sbi 914 fs/autofs/root.c filp->f_path.mnt, sbi, p); sbi 12 fs/autofs/symlink.c struct autofs_sb_info *sbi; sbi 17 fs/autofs/symlink.c sbi = autofs_sbi(dentry->d_sb); sbi 19 fs/autofs/symlink.c if (ino && !autofs_oz_mode(sbi)) sbi 15 fs/autofs/waitq.c void autofs_catatonic_mode(struct autofs_sb_info *sbi) sbi 19 fs/autofs/waitq.c mutex_lock(&sbi->wq_mutex); sbi 20 fs/autofs/waitq.c if (sbi->flags & AUTOFS_SBI_CATATONIC) { sbi 21 fs/autofs/waitq.c mutex_unlock(&sbi->wq_mutex); sbi 27 fs/autofs/waitq.c sbi->flags |= AUTOFS_SBI_CATATONIC; sbi 28 fs/autofs/waitq.c wq = sbi->queues; sbi 29 fs/autofs/waitq.c sbi->queues = NULL; /* Erase all wait queues */ sbi 39 fs/autofs/waitq.c fput(sbi->pipe); /* Close the pipe */ sbi 40 fs/autofs/waitq.c sbi->pipe = NULL; sbi 41 fs/autofs/waitq.c sbi->pipefd = -1; sbi 42 fs/autofs/waitq.c mutex_unlock(&sbi->wq_mutex); sbi 45 fs/autofs/waitq.c static int autofs_write(struct autofs_sb_info *sbi, sbi 54 fs/autofs/waitq.c mutex_lock(&sbi->pipe_mutex); sbi 62 fs/autofs/waitq.c mutex_unlock(&sbi->pipe_mutex); sbi 78 fs/autofs/waitq.c static void autofs_notify_daemon(struct autofs_sb_info *sbi, sbi 97 fs/autofs/waitq.c pkt.hdr.proto_version = sbi->version; sbi 137 fs/autofs/waitq.c struct user_namespace *user_ns = sbi->pipe->f_cred->user_ns; sbi 155 fs/autofs/waitq.c mutex_unlock(&sbi->wq_mutex); sbi 159 fs/autofs/waitq.c pipe = get_file(sbi->pipe); sbi 161 fs/autofs/waitq.c mutex_unlock(&sbi->wq_mutex); sbi 163 fs/autofs/waitq.c switch (ret = autofs_write(sbi, pipe, &pkt, pktsz)) { sbi 169 fs/autofs/waitq.c autofs_wait_release(sbi, wq->wait_queue_token, ret); sbi 172 fs/autofs/waitq.c autofs_catatonic_mode(sbi); sbi 178 fs/autofs/waitq.c static int autofs_getpath(struct autofs_sb_info *sbi, sbi 181 fs/autofs/waitq.c struct dentry *root = sbi->sb->s_root; sbi 194 fs/autofs/waitq.c spin_lock(&sbi->fs_lock); sbi 199 fs/autofs/waitq.c spin_unlock(&sbi->fs_lock); sbi 215 fs/autofs/waitq.c spin_unlock(&sbi->fs_lock); sbi 224 fs/autofs/waitq.c autofs_find_wait(struct autofs_sb_info *sbi, const struct qstr *qstr) sbi 228 fs/autofs/waitq.c for (wq = sbi->queues; wq; wq = wq->next) { sbi 247 fs/autofs/waitq.c struct autofs_sb_info *sbi, sbi 255 fs/autofs/waitq.c if (sbi->flags & AUTOFS_SBI_CATATONIC) sbi 259 fs/autofs/waitq.c wq = autofs_find_wait(sbi, qstr); sbi 285 fs/autofs/waitq.c mutex_unlock(&sbi->wq_mutex); sbi 287 fs/autofs/waitq.c if (mutex_lock_interruptible(&sbi->wq_mutex)) sbi 290 fs/autofs/waitq.c if (sbi->flags & AUTOFS_SBI_CATATONIC) sbi 293 fs/autofs/waitq.c wq = autofs_find_wait(sbi, qstr); sbi 347 fs/autofs/waitq.c int autofs_wait(struct autofs_sb_info *sbi, sbi 359 fs/autofs/waitq.c if (sbi->flags & AUTOFS_SBI_CATATONIC) sbi 367 fs/autofs/waitq.c pid = task_pid_nr_ns(current, ns_of_pid(sbi->oz_pgrp)); sbi 368 fs/autofs/waitq.c tgid = task_tgid_nr_ns(current, ns_of_pid(sbi->oz_pgrp)); sbi 381 fs/autofs/waitq.c if (autofs_type_trigger(sbi->type)) sbi 392 fs/autofs/waitq.c if (IS_ROOT(dentry) && autofs_type_trigger(sbi->type)) sbi 395 fs/autofs/waitq.c qstr.len = autofs_getpath(sbi, dentry, name); sbi 404 fs/autofs/waitq.c if (mutex_lock_interruptible(&sbi->wq_mutex)) { sbi 409 fs/autofs/waitq.c ret = validate_request(&wq, sbi, &qstr, path, notify); sbi 412 fs/autofs/waitq.c mutex_unlock(&sbi->wq_mutex); sbi 422 fs/autofs/waitq.c mutex_unlock(&sbi->wq_mutex); sbi 429 fs/autofs/waitq.c wq->next = sbi->queues; sbi 430 fs/autofs/waitq.c sbi->queues = wq; sbi 433 fs/autofs/waitq.c wq->dev = autofs_get_dev(sbi); sbi 434 fs/autofs/waitq.c wq->ino = autofs_get_ino(sbi); sbi 442 fs/autofs/waitq.c if (sbi->version < 5) { sbi 449 fs/autofs/waitq.c type = autofs_type_trigger(sbi->type) ? sbi 453 fs/autofs/waitq.c type = autofs_type_trigger(sbi->type) ? sbi 465 fs/autofs/waitq.c autofs_notify_daemon(sbi, wq, type); sbi 471 fs/autofs/waitq.c mutex_unlock(&sbi->wq_mutex); sbi 506 fs/autofs/waitq.c spin_lock(&sbi->fs_lock); sbi 509 fs/autofs/waitq.c spin_unlock(&sbi->fs_lock); sbi 517 fs/autofs/waitq.c mutex_lock(&sbi->wq_mutex); sbi 520 fs/autofs/waitq.c mutex_unlock(&sbi->wq_mutex); sbi 526 fs/autofs/waitq.c int autofs_wait_release(struct autofs_sb_info *sbi, sbi 531 fs/autofs/waitq.c mutex_lock(&sbi->wq_mutex); sbi 532 fs/autofs/waitq.c for (wql = &sbi->queues; (wq = *wql) != NULL; wql = &wq->next) { sbi 538 fs/autofs/waitq.c mutex_unlock(&sbi->wq_mutex); sbi 549 fs/autofs/waitq.c mutex_unlock(&sbi->wq_mutex); sbi 5158 fs/cifs/connect.c struct cifs_sb_info *sbi = container_of(p, struct cifs_sb_info, rcu); sbi 5159 fs/cifs/connect.c unload_nls(sbi->local_nls); sbi 5160 fs/cifs/connect.c kfree(sbi); sbi 266 fs/cramfs/inode.c struct cramfs_sb_info *sbi = CRAMFS_SB(sb); sbi 270 fs/cramfs/inode.c if (len > sbi->size || offset > sbi->size - len) sbi 272 fs/cramfs/inode.c return sbi->linear_virt_addr + offset; sbi 282 fs/cramfs/inode.c struct cramfs_sb_info *sbi = CRAMFS_SB(sb); sbi 284 fs/cramfs/inode.c if (IS_ENABLED(CONFIG_CRAMFS_MTD) && sbi->linear_virt_addr) sbi 299 fs/cramfs/inode.c struct cramfs_sb_info *sbi = CRAMFS_SB(inode->i_sb); sbi 308 fs/cramfs/inode.c blockptrs = (u32 *)(sbi->linear_virt_addr + OFFSET(inode) + pgoff * 4); sbi 340 fs/cramfs/inode.c struct cramfs_sb_info *sbi = CRAMFS_SB(inode->i_sb); sbi 348 fs/cramfs/inode.c blockptrs = (u32 *)(sbi->linear_virt_addr + OFFSET(inode)); sbi 351 fs/cramfs/inode.c tail_data = sbi->linear_virt_addr + blockaddr + partial; sbi 358 fs/cramfs/inode.c struct cramfs_sb_info *sbi = CRAMFS_SB(inode->i_sb); sbi 388 fs/cramfs/inode.c address = sbi->linear_phys_addr + offset; sbi 460 fs/cramfs/inode.c struct cramfs_sb_info *sbi = CRAMFS_SB(sb); sbi 471 fs/cramfs/inode.c addr = sbi->linear_phys_addr + offset; sbi 498 fs/cramfs/inode.c struct cramfs_sb_info *sbi = CRAMFS_SB(sb); sbi 501 fs/cramfs/inode.c if (sbi && sbi->mtd_point_size) sbi 502 fs/cramfs/inode.c mtd_unpoint(sb->s_mtd, 0, sbi->mtd_point_size); sbi 507 fs/cramfs/inode.c kfree(sbi); sbi 520 fs/cramfs/inode.c struct cramfs_sb_info *sbi = CRAMFS_SB(sb); sbi 525 fs/cramfs/inode.c sbi->size = PAGE_SIZE; sbi 572 fs/cramfs/inode.c sbi->size = super->size; sbi 573 fs/cramfs/inode.c sbi->blocks = super->fsid.blocks; sbi 574 fs/cramfs/inode.c sbi->files = super->fsid.files; sbi 576 fs/cramfs/inode.c sbi->size = 1<<28; sbi 577 fs/cramfs/inode.c sbi->blocks = 0; sbi 578 fs/cramfs/inode.c sbi->files = 0; sbi 580 fs/cramfs/inode.c sbi->magic = super->magic; sbi 581 fs/cramfs/inode.c sbi->flags = super->flags; sbi 616 fs/cramfs/inode.c struct cramfs_sb_info *sbi; sbi 620 fs/cramfs/inode.c sbi = kzalloc(sizeof(struct cramfs_sb_info), GFP_KERNEL); sbi 621 fs/cramfs/inode.c if (!sbi) sbi 623 fs/cramfs/inode.c sb->s_fs_info = sbi; sbi 637 fs/cramfs/inode.c struct cramfs_sb_info *sbi; sbi 641 fs/cramfs/inode.c sbi = kzalloc(sizeof(struct cramfs_sb_info), GFP_KERNEL); sbi 642 fs/cramfs/inode.c if (!sbi) sbi 644 fs/cramfs/inode.c sb->s_fs_info = sbi; sbi 647 fs/cramfs/inode.c err = mtd_point(sb->s_mtd, 0, PAGE_SIZE, &sbi->mtd_point_size, sbi 648 fs/cramfs/inode.c &sbi->linear_virt_addr, &sbi->linear_phys_addr); sbi 649 fs/cramfs/inode.c if (err || sbi->mtd_point_size != PAGE_SIZE) { sbi 656 fs/cramfs/inode.c &sbi->linear_phys_addr); sbi 663 fs/cramfs/inode.c sb->s_mtd->name, sbi->size/1024); sbi 665 fs/cramfs/inode.c err = mtd_point(sb->s_mtd, 0, sbi->size, &sbi->mtd_point_size, sbi 666 fs/cramfs/inode.c &sbi->linear_virt_addr, &sbi->linear_phys_addr); sbi 667 fs/cramfs/inode.c if (err || sbi->mtd_point_size != sbi->size) { sbi 242 fs/ecryptfs/main.c static int ecryptfs_parse_options(struct ecryptfs_sb_info *sbi, char *options, sbi 255 fs/ecryptfs/main.c &sbi->mount_crypt_stat; sbi 480 fs/ecryptfs/main.c struct ecryptfs_sb_info *sbi; sbi 489 fs/ecryptfs/main.c sbi = kmem_cache_zalloc(ecryptfs_sb_info_cache, GFP_KERNEL); sbi 490 fs/ecryptfs/main.c if (!sbi) { sbi 495 fs/ecryptfs/main.c rc = ecryptfs_parse_options(sbi, raw_data, &check_ruid); sbi 500 fs/ecryptfs/main.c mount_crypt_stat = &sbi->mount_crypt_stat; sbi 512 fs/ecryptfs/main.c ecryptfs_set_superblock_private(s, sbi); sbi 515 fs/ecryptfs/main.c sbi = NULL; sbi 599 fs/ecryptfs/main.c if (sbi) { sbi 600 fs/ecryptfs/main.c ecryptfs_destroy_mount_crypt_stat(&sbi->mount_crypt_stat); sbi 601 fs/ecryptfs/main.c kmem_cache_free(ecryptfs_sb_info_cache, sbi); sbi 32 fs/efs/super.c struct efs_sb_info *sbi = SUPER_INFO(s); sbi 34 fs/efs/super.c kfree(sbi); sbi 331 fs/efs/super.c struct efs_sb_info *sbi = SUPER_INFO(sb); sbi 336 fs/efs/super.c buf->f_blocks = sbi->total_groups * /* total data blocks */ sbi 337 fs/efs/super.c (sbi->group_size - sbi->inode_blocks); sbi 338 fs/efs/super.c buf->f_bfree = sbi->data_free; /* free data blocks */ sbi 339 fs/efs/super.c buf->f_bavail = sbi->data_free; /* free blocks for non-root */ sbi 340 fs/efs/super.c buf->f_files = sbi->total_groups * /* total inodes */ sbi 341 fs/efs/super.c sbi->inode_blocks * sbi 343 fs/efs/super.c buf->f_ffree = sbi->inode_free; /* free inodes */ sbi 78 fs/erofs/data.c struct erofs_sb_info *sbi = EROFS_SB(inode->i_sb); sbi 80 fs/erofs/data.c map->m_pa = iloc(sbi, vi->nid) + vi->inode_isize + sbi 19 fs/erofs/inode.c struct erofs_sb_info *sbi = EROFS_SB(inode->i_sb); sbi 102 fs/erofs/inode.c sbi->build_time; sbi 104 fs/erofs/inode.c sbi->build_time_nsec; sbi 100 fs/erofs/internal.h #define clear_opt(sbi, option) ((sbi)->mount_opt &= ~EROFS_MOUNT_##option) sbi 101 fs/erofs/internal.h #define set_opt(sbi, option) ((sbi)->mount_opt |= EROFS_MOUNT_##option) sbi 102 fs/erofs/internal.h #define test_opt(sbi, option) ((sbi)->mount_opt & EROFS_MOUNT_##option) sbi 208 fs/erofs/internal.h static inline erofs_off_t iloc(struct erofs_sb_info *sbi, erofs_nid_t nid) sbi 210 fs/erofs/internal.h return blknr_to_addr(sbi->meta_blkaddr) + (nid << sbi->islotbits); sbi 415 fs/erofs/internal.h int erofs_try_to_free_all_cached_pages(struct erofs_sb_info *sbi, sbi 100 fs/erofs/super.c struct erofs_sb_info *sbi; sbi 113 fs/erofs/super.c sbi = EROFS_SB(sb); sbi 135 fs/erofs/super.c sbi->blocks = le32_to_cpu(dsb->blocks); sbi 136 fs/erofs/super.c sbi->meta_blkaddr = le32_to_cpu(dsb->meta_blkaddr); sbi 138 fs/erofs/super.c sbi->xattr_blkaddr = le32_to_cpu(dsb->xattr_blkaddr); sbi 140 fs/erofs/super.c sbi->islotbits = ilog2(sizeof(struct erofs_inode_compact)); sbi 141 fs/erofs/super.c sbi->root_nid = le16_to_cpu(dsb->root_nid); sbi 142 fs/erofs/super.c sbi->inos = le64_to_cpu(dsb->inos); sbi 144 fs/erofs/super.c sbi->build_time = le64_to_cpu(dsb->build_time); sbi 145 fs/erofs/super.c sbi->build_time_nsec = le32_to_cpu(dsb->build_time_nsec); sbi 149 fs/erofs/super.c ret = strscpy(sbi->volume_name, dsb->volume_name, sbi 167 fs/erofs/super.c struct erofs_sb_info *sbi = EROFS_SB(sb); sbi 177 fs/erofs/super.c sbi->cache_strategy = EROFS_ZIP_CACHE_DISABLED; sbi 179 fs/erofs/super.c sbi->cache_strategy = EROFS_ZIP_CACHE_READAHEAD; sbi 181 fs/erofs/super.c sbi->cache_strategy = EROFS_ZIP_CACHE_READAROUND; sbi 199 fs/erofs/super.c static void erofs_default_options(struct erofs_sb_info *sbi) sbi 202 fs/erofs/super.c sbi->cache_strategy = EROFS_ZIP_CACHE_READAROUND; sbi 203 fs/erofs/super.c sbi->max_sync_decompress_pages = 3; sbi 206 fs/erofs/super.c set_opt(sbi, XATTR_USER); sbi 209 fs/erofs/super.c set_opt(sbi, POSIX_ACL); sbi 333 fs/erofs/super.c struct erofs_sb_info *const sbi = EROFS_SB(sb); sbi 345 fs/erofs/super.c sbi->managed_cache = inode; sbi 355 fs/erofs/super.c struct erofs_sb_info *sbi; sbi 365 fs/erofs/super.c sbi = kzalloc(sizeof(*sbi), GFP_KERNEL); sbi 366 fs/erofs/super.c if (!sbi) sbi 369 fs/erofs/super.c sb->s_fs_info = sbi; sbi 384 fs/erofs/super.c erofs_default_options(sbi); sbi 390 fs/erofs/super.c if (test_opt(sbi, POSIX_ACL)) sbi 396 fs/erofs/super.c INIT_RADIX_TREE(&sbi->workstn_tree, GFP_ATOMIC); sbi 400 fs/erofs/super.c inode = erofs_iget(sb, ROOT_NID(sbi), true); sbi 406 fs/erofs/super.c ROOT_NID(sbi), inode->i_mode); sbi 422 fs/erofs/super.c (char *)data, ROOT_NID(sbi)); sbi 438 fs/erofs/super.c struct erofs_sb_info *sbi; sbi 444 fs/erofs/super.c sbi = EROFS_SB(sb); sbi 445 fs/erofs/super.c if (!sbi) sbi 447 fs/erofs/super.c kfree(sbi); sbi 454 fs/erofs/super.c struct erofs_sb_info *const sbi = EROFS_SB(sb); sbi 456 fs/erofs/super.c DBG_BUGON(!sbi); sbi 460 fs/erofs/super.c iput(sbi->managed_cache); sbi 461 fs/erofs/super.c sbi->managed_cache = NULL; sbi 528 fs/erofs/super.c struct erofs_sb_info *sbi = EROFS_SB(sb); sbi 533 fs/erofs/super.c buf->f_blocks = sbi->blocks; sbi 537 fs/erofs/super.c buf->f_ffree = ULLONG_MAX - sbi->inos; sbi 548 fs/erofs/super.c struct erofs_sb_info *sbi __maybe_unused = EROFS_SB(root->d_sb); sbi 551 fs/erofs/super.c if (test_opt(sbi, XATTR_USER)) sbi 557 fs/erofs/super.c if (test_opt(sbi, POSIX_ACL)) sbi 563 fs/erofs/super.c if (sbi->cache_strategy == EROFS_ZIP_CACHE_DISABLED) { sbi 565 fs/erofs/super.c } else if (sbi->cache_strategy == EROFS_ZIP_CACHE_READAHEAD) { sbi 567 fs/erofs/super.c } else if (sbi->cache_strategy == EROFS_ZIP_CACHE_READAROUND) { sbi 579 fs/erofs/super.c struct erofs_sb_info *sbi = EROFS_SB(sb); sbi 580 fs/erofs/super.c unsigned int org_mnt_opt = sbi->mount_opt; sbi 588 fs/erofs/super.c if (test_opt(sbi, POSIX_ACL)) sbi 596 fs/erofs/super.c sbi->mount_opt = org_mnt_opt; sbi 64 fs/erofs/utils.c struct erofs_sb_info *sbi = EROFS_SB(sb); sbi 69 fs/erofs/utils.c grp = radix_tree_lookup(&sbi->workstn_tree, index); sbi 90 fs/erofs/utils.c struct erofs_sb_info *sbi; sbi 103 fs/erofs/utils.c sbi = EROFS_SB(sb); sbi 104 fs/erofs/utils.c xa_lock(&sbi->workstn_tree); sbi 115 fs/erofs/utils.c err = radix_tree_insert(&sbi->workstn_tree, grp->index, grp); sbi 123 fs/erofs/utils.c xa_unlock(&sbi->workstn_tree); sbi 151 fs/erofs/utils.c static bool erofs_try_to_release_workgroup(struct erofs_sb_info *sbi, sbi 169 fs/erofs/utils.c if (erofs_try_to_free_all_cached_pages(sbi, grp)) { sbi 179 fs/erofs/utils.c DBG_BUGON(xa_untag_pointer(radix_tree_delete(&sbi->workstn_tree, sbi 190 fs/erofs/utils.c static unsigned long erofs_shrink_workstation(struct erofs_sb_info *sbi, sbi 200 fs/erofs/utils.c xa_lock(&sbi->workstn_tree); sbi 202 fs/erofs/utils.c found = radix_tree_gang_lookup(&sbi->workstn_tree, sbi 211 fs/erofs/utils.c if (!erofs_try_to_release_workgroup(sbi, grp, cleanup)) sbi 218 fs/erofs/utils.c xa_unlock(&sbi->workstn_tree); sbi 234 fs/erofs/utils.c struct erofs_sb_info *sbi = EROFS_SB(sb); sbi 236 fs/erofs/utils.c mutex_init(&sbi->umount_mutex); sbi 239 fs/erofs/utils.c list_add(&sbi->list, &erofs_sb_list); sbi 245 fs/erofs/utils.c struct erofs_sb_info *const sbi = EROFS_SB(sb); sbi 247 fs/erofs/utils.c mutex_lock(&sbi->umount_mutex); sbi 248 fs/erofs/utils.c erofs_shrink_workstation(sbi, ~0UL, true); sbi 251 fs/erofs/utils.c list_del(&sbi->list); sbi 253 fs/erofs/utils.c mutex_unlock(&sbi->umount_mutex); sbi 265 fs/erofs/utils.c struct erofs_sb_info *sbi; sbi 280 fs/erofs/utils.c sbi = list_entry(p, struct erofs_sb_info, list); sbi 286 fs/erofs/utils.c if (sbi->shrinker_run_no == run_no) sbi 289 fs/erofs/utils.c if (!mutex_trylock(&sbi->umount_mutex)) { sbi 295 fs/erofs/utils.c sbi->shrinker_run_no = run_no; sbi 297 fs/erofs/utils.c freed += erofs_shrink_workstation(sbi, nr - freed, false); sbi 307 fs/erofs/utils.c list_move_tail(&sbi->list, &erofs_sb_list); sbi 308 fs/erofs/utils.c mutex_unlock(&sbi->umount_mutex); sbi 46 fs/erofs/xattr.c struct erofs_sb_info *sbi; sbi 88 fs/erofs/xattr.c sbi = EROFS_SB(sb); sbi 89 fs/erofs/xattr.c it.blkaddr = erofs_blknr(iloc(sbi, vi->nid) + vi->inode_isize); sbi 90 fs/erofs/xattr.c it.ofs = erofs_blkoff(iloc(sbi, vi->nid) + vi->inode_isize); sbi 189 fs/erofs/xattr.c struct erofs_sb_info *const sbi = EROFS_SB(inode->i_sb); sbi 200 fs/erofs/xattr.c it->blkaddr = erofs_blknr(iloc(sbi, vi->nid) + inline_xattr_ofs); sbi 201 fs/erofs/xattr.c it->ofs = erofs_blkoff(iloc(sbi, vi->nid) + inline_xattr_ofs); sbi 391 fs/erofs/xattr.c struct erofs_sb_info *const sbi = EROFS_SB(sb); sbi 397 fs/erofs/xattr.c xattrblock_addr(sbi, vi->xattr_shared_xattrs[i]); sbi 399 fs/erofs/xattr.c it->it.ofs = xattrblock_offset(sbi, vi->xattr_shared_xattrs[i]); sbi 468 fs/erofs/xattr.c struct erofs_sb_info *const sbi = EROFS_I_SB(inode); sbi 472 fs/erofs/xattr.c if (!test_opt(sbi, XATTR_USER)) sbi 614 fs/erofs/xattr.c struct erofs_sb_info *const sbi = EROFS_SB(sb); sbi 620 fs/erofs/xattr.c xattrblock_addr(sbi, vi->xattr_shared_xattrs[i]); sbi 622 fs/erofs/xattr.c it->it.ofs = xattrblock_offset(sbi, vi->xattr_shared_xattrs[i]); sbi 23 fs/erofs/xattr.h static inline erofs_blk_t xattrblock_addr(struct erofs_sb_info *sbi, sbi 27 fs/erofs/xattr.h return sbi->xattr_blkaddr + sbi 34 fs/erofs/xattr.h static inline unsigned int xattrblock_offset(struct erofs_sb_info *sbi, sbi 211 fs/erofs/zdata.c int erofs_try_to_free_all_cached_pages(struct erofs_sb_info *sbi, sbi 216 fs/erofs/zdata.c struct address_space *const mapping = MNGD_MAPPING(sbi); sbi 574 fs/erofs/zdata.c struct erofs_sb_info *const sbi __maybe_unused = EROFS_I_SB(inode); sbi 623 fs/erofs/zdata.c if (should_alloc_managed_pages(fe, sbi->cache_strategy, map->m_la)) sbi 628 fs/erofs/zdata.c preload_compressed_pages(clt, MNGD_MAPPING(sbi), sbi 723 fs/erofs/zdata.c struct erofs_sb_info *sbi = NULL; sbi 735 fs/erofs/zdata.c if (!sbi && !z_erofs_page_is_staging(page)) sbi 736 fs/erofs/zdata.c sbi = EROFS_SB(page->mapping->host->i_sb); sbi 739 fs/erofs/zdata.c if (sbi) sbi 740 fs/erofs/zdata.c cachemngd = erofs_page_is_managed(sbi, page); sbi 759 fs/erofs/zdata.c struct erofs_sb_info *const sbi = EROFS_SB(sb); sbi 852 fs/erofs/zdata.c if (erofs_page_is_managed(sbi, page)) { sbi 912 fs/erofs/zdata.c if (erofs_page_is_managed(sbi, page)) sbi 1208 fs/erofs/zdata.c struct erofs_sb_info *const sbi __maybe_unused = EROFS_SB(sb); sbi 1254 fs/erofs/zdata.c MNGD_MAPPING(sbi), sbi 1361 fs/erofs/zdata.c static bool should_decompress_synchronously(struct erofs_sb_info *sbi, sbi 1364 fs/erofs/zdata.c return nr <= sbi->max_sync_decompress_pages; sbi 1373 fs/erofs/zdata.c struct erofs_sb_info *const sbi = EROFS_I_SB(inode); sbi 1375 fs/erofs/zdata.c bool sync = should_decompress_synchronously(sbi, nr_pages); sbi 102 fs/erofs/zdata.h #define MNGD_MAPPING(sbi) ((sbi)->managed_cache->i_mapping) sbi 103 fs/erofs/zdata.h static inline bool erofs_page_is_managed(const struct erofs_sb_info *sbi, sbi 106 fs/erofs/zdata.h return page->mapping == MNGD_MAPPING(sbi); sbi 48 fs/ext2/balloc.c struct ext2_sb_info *sbi = EXT2_SB(sb); sbi 50 fs/ext2/balloc.c if (block_group >= sbi->s_groups_count) { sbi 54 fs/ext2/balloc.c block_group, sbi->s_groups_count); sbi 61 fs/ext2/balloc.c if (!sbi->s_group_desc[group_desc]) { sbi 69 fs/ext2/balloc.c desc = (struct ext2_group_desc *) sbi->s_group_desc[group_desc]->b_data; sbi 71 fs/ext2/balloc.c *bh = sbi->s_group_desc[group_desc]; sbi 168 fs/ext2/balloc.c struct ext2_sb_info *sbi = EXT2_SB(sb); sbi 171 fs/ext2/balloc.c spin_lock(sb_bgl_lock(sbi, group_no)); sbi 174 fs/ext2/balloc.c spin_unlock(sb_bgl_lock(sbi, group_no)); sbi 488 fs/ext2/balloc.c struct ext2_sb_info * sbi = EXT2_SB(sb); sbi 490 fs/ext2/balloc.c struct ext2_super_block * es = sbi->s_es; sbi 493 fs/ext2/balloc.c if (!ext2_data_block_valid(sbi, block, count)) { sbi 528 fs/ext2/balloc.c sbi->s_itb_per_group) || sbi 530 fs/ext2/balloc.c sbi->s_itb_per_group)) { sbi 539 fs/ext2/balloc.c if (!ext2_clear_bit_atomic(sb_bgl_lock(sbi, block_group), sbi 563 fs/ext2/balloc.c percpu_counter_add(&sbi->s_freeblocks_counter, freed); sbi 1181 fs/ext2/balloc.c static int ext2_has_free_blocks(struct ext2_sb_info *sbi) sbi 1185 fs/ext2/balloc.c free_blocks = percpu_counter_read_positive(&sbi->s_freeblocks_counter); sbi 1186 fs/ext2/balloc.c root_blocks = le32_to_cpu(sbi->s_es->s_r_blocks_count); sbi 1188 fs/ext2/balloc.c !uid_eq(sbi->s_resuid, current_fsuid()) && sbi 1189 fs/ext2/balloc.c (gid_eq(sbi->s_resgid, GLOBAL_ROOT_GID) || sbi 1190 fs/ext2/balloc.c !in_group_p (sbi->s_resgid))) { sbi 1200 fs/ext2/balloc.c int ext2_data_block_valid(struct ext2_sb_info *sbi, ext2_fsblk_t start_blk, sbi 1203 fs/ext2/balloc.c if ((start_blk <= le32_to_cpu(sbi->s_es->s_first_data_block)) || sbi 1205 fs/ext2/balloc.c (start_blk + count - 1 >= le32_to_cpu(sbi->s_es->s_blocks_count))) sbi 1209 fs/ext2/balloc.c if ((start_blk <= sbi->s_sb_block) && sbi 1210 fs/ext2/balloc.c (start_blk + count - 1 >= sbi->s_sb_block)) sbi 1246 fs/ext2/balloc.c struct ext2_sb_info *sbi; sbi 1266 fs/ext2/balloc.c sbi = EXT2_SB(sb); sbi 1284 fs/ext2/balloc.c if (!ext2_has_free_blocks(sbi)) { sbi 1421 fs/ext2/balloc.c percpu_counter_sub(&sbi->s_freeblocks_counter, num); sbi 122 fs/ext2/ext2.h sb_bgl_lock(struct ext2_sb_info *sbi, unsigned int block_group) sbi 124 fs/ext2/ext2.h return bgl_lock_ptr(sbi->s_blockgroup_lock, block_group); sbi 725 fs/ext2/ext2.h extern int ext2_data_block_valid(struct ext2_sb_info *sbi, ext2_fsblk_t start_blk, sbi 258 fs/ext2/ialloc.c struct ext2_sb_info *sbi = EXT2_SB(sb); sbi 259 fs/ext2/ialloc.c struct ext2_super_block *es = sbi->s_es; sbi 260 fs/ext2/ialloc.c int ngroups = sbi->s_groups_count; sbi 272 fs/ext2/ialloc.c freei = percpu_counter_read_positive(&sbi->s_freeinodes_counter); sbi 274 fs/ext2/ialloc.c free_blocks = percpu_counter_read_positive(&sbi->s_freeblocks_counter); sbi 276 fs/ext2/ialloc.c ndirs = percpu_counter_read_positive(&sbi->s_dirs_counter); sbi 331 fs/ext2/ialloc.c if (sbi->s_debts[group] >= max_debt) sbi 439 fs/ext2/ialloc.c struct ext2_sb_info *sbi; sbi 448 fs/ext2/ialloc.c sbi = EXT2_SB(sb); sbi 449 fs/ext2/ialloc.c es = sbi->s_es; sbi 463 fs/ext2/ialloc.c for (i = 0; i < sbi->s_groups_count; i++) { sbi 466 fs/ext2/ialloc.c if (++group == sbi->s_groups_count) sbi 490 fs/ext2/ialloc.c if (++group == sbi->s_groups_count) sbi 494 fs/ext2/ialloc.c if (ext2_set_bit_atomic(sb_bgl_lock(sbi, group), sbi 499 fs/ext2/ialloc.c if (++group == sbi->s_groups_count) sbi 531 fs/ext2/ialloc.c percpu_counter_add(&sbi->s_freeinodes_counter, -1); sbi 533 fs/ext2/ialloc.c percpu_counter_inc(&sbi->s_dirs_counter); sbi 535 fs/ext2/ialloc.c spin_lock(sb_bgl_lock(sbi, group)); sbi 538 fs/ext2/ialloc.c if (sbi->s_debts[group] < 255) sbi 539 fs/ext2/ialloc.c sbi->s_debts[group]++; sbi 542 fs/ext2/ialloc.c if (sbi->s_debts[group]) sbi 543 fs/ext2/ialloc.c sbi->s_debts[group]--; sbi 545 fs/ext2/ialloc.c spin_unlock(sb_bgl_lock(sbi, group)); sbi 572 fs/ext2/ialloc.c spin_lock(&sbi->s_next_gen_lock); sbi 573 fs/ext2/ialloc.c inode->i_generation = sbi->s_next_generation++; sbi 574 fs/ext2/ialloc.c spin_unlock(&sbi->s_next_gen_lock); sbi 812 fs/ext2/inode.c struct ext2_sb_info *sbi = EXT2_SB(inode->i_sb); sbi 825 fs/ext2/inode.c iomap->dax_dev = sbi->s_daxdev; sbi 54 fs/ext2/super.c struct ext2_sb_info *sbi = EXT2_SB(sb); sbi 55 fs/ext2/super.c struct ext2_super_block *es = sbi->s_es; sbi 58 fs/ext2/super.c spin_lock(&sbi->s_lock); sbi 59 fs/ext2/super.c sbi->s_mount_state |= EXT2_ERROR_FS; sbi 61 fs/ext2/super.c spin_unlock(&sbi->s_lock); sbi 148 fs/ext2/super.c struct ext2_sb_info *sbi = EXT2_SB(sb); sbi 152 fs/ext2/super.c ext2_xattr_destroy_cache(sbi->s_ea_block_cache); sbi 153 fs/ext2/super.c sbi->s_ea_block_cache = NULL; sbi 156 fs/ext2/super.c struct ext2_super_block *es = sbi->s_es; sbi 158 fs/ext2/super.c spin_lock(&sbi->s_lock); sbi 159 fs/ext2/super.c es->s_state = cpu_to_le16(sbi->s_mount_state); sbi 160 fs/ext2/super.c spin_unlock(&sbi->s_lock); sbi 163 fs/ext2/super.c db_count = sbi->s_gdb_count; sbi 165 fs/ext2/super.c brelse(sbi->s_group_desc[i]); sbi 166 fs/ext2/super.c kfree(sbi->s_group_desc); sbi 167 fs/ext2/super.c kfree(sbi->s_debts); sbi 168 fs/ext2/super.c percpu_counter_destroy(&sbi->s_freeblocks_counter); sbi 169 fs/ext2/super.c percpu_counter_destroy(&sbi->s_freeinodes_counter); sbi 170 fs/ext2/super.c percpu_counter_destroy(&sbi->s_dirs_counter); sbi 171 fs/ext2/super.c brelse (sbi->s_sbh); sbi 173 fs/ext2/super.c kfree(sbi->s_blockgroup_lock); sbi 174 fs/ext2/super.c fs_put_dax(sbi->s_daxdev); sbi 175 fs/ext2/super.c kfree(sbi); sbi 242 fs/ext2/super.c struct ext2_sb_info *sbi = EXT2_SB(sb); sbi 243 fs/ext2/super.c struct ext2_super_block *es = sbi->s_es; sbi 246 fs/ext2/super.c spin_lock(&sbi->s_lock); sbi 249 fs/ext2/super.c if (sbi->s_sb_block != 1) sbi 250 fs/ext2/super.c seq_printf(seq, ",sb=%lu", sbi->s_sb_block); sbi 257 fs/ext2/super.c if (!uid_eq(sbi->s_resuid, make_kuid(&init_user_ns, EXT2_DEF_RESUID)) || sbi 260 fs/ext2/super.c from_kuid_munged(&init_user_ns, sbi->s_resuid)); sbi 262 fs/ext2/super.c if (!gid_eq(sbi->s_resgid, make_kgid(&init_user_ns, EXT2_DEF_RESGID)) || sbi 265 fs/ext2/super.c from_kgid_munged(&init_user_ns, sbi->s_resgid)); sbi 320 fs/ext2/super.c spin_unlock(&sbi->s_lock); sbi 649 fs/ext2/super.c struct ext2_sb_info *sbi = EXT2_SB(sb); sbi 659 fs/ext2/super.c if (!(sbi->s_mount_state & EXT2_VALID_FS)) sbi 663 fs/ext2/super.c else if ((sbi->s_mount_state & EXT2_ERROR_FS)) sbi 687 fs/ext2/super.c sbi->s_frag_size, sbi 688 fs/ext2/super.c sbi->s_groups_count, sbi 691 fs/ext2/super.c sbi->s_mount_opt); sbi 698 fs/ext2/super.c struct ext2_sb_info *sbi = EXT2_SB(sb); sbi 702 fs/ext2/super.c for (i = 0; i < sbi->s_groups_count; i++) { sbi 707 fs/ext2/super.c if (i == sbi->s_groups_count - 1) sbi 708 fs/ext2/super.c last_block = le32_to_cpu(sbi->s_es->s_blocks_count) - 1; sbi 732 fs/ext2/super.c le32_to_cpu(gdp->bg_inode_table) + sbi->s_itb_per_group - 1 > sbi 807 fs/ext2/super.c struct ext2_sb_info *sbi = EXT2_SB(sb); sbi 811 fs/ext2/super.c first_meta_bg = le32_to_cpu(sbi->s_es->s_first_meta_bg); sbi 816 fs/ext2/super.c bg = sbi->s_desc_per_block * nr; sbi 827 fs/ext2/super.c struct ext2_sb_info * sbi; sbi 843 fs/ext2/super.c sbi = kzalloc(sizeof(*sbi), GFP_KERNEL); sbi 844 fs/ext2/super.c if (!sbi) sbi 847 fs/ext2/super.c sbi->s_blockgroup_lock = sbi 849 fs/ext2/super.c if (!sbi->s_blockgroup_lock) { sbi 850 fs/ext2/super.c kfree(sbi); sbi 853 fs/ext2/super.c sb->s_fs_info = sbi; sbi 854 fs/ext2/super.c sbi->s_sb_block = sb_block; sbi 855 fs/ext2/super.c sbi->s_daxdev = dax_dev; sbi 857 fs/ext2/super.c spin_lock_init(&sbi->s_lock); sbi 893 fs/ext2/super.c sbi->s_es = es; sbi 917 fs/ext2/super.c if (le16_to_cpu(sbi->s_es->s_errors) == EXT2_ERRORS_PANIC) sbi 919 fs/ext2/super.c else if (le16_to_cpu(sbi->s_es->s_errors) == EXT2_ERRORS_CONTINUE) sbi 932 fs/ext2/super.c sbi->s_mount_opt = opts.s_mount_opt; sbi 933 fs/ext2/super.c sbi->s_resuid = opts.s_resuid; sbi 934 fs/ext2/super.c sbi->s_resgid = opts.s_resgid; sbi 966 fs/ext2/super.c blocksize = BLOCK_SIZE << le32_to_cpu(sbi->s_es->s_log_block_size); sbi 972 fs/ext2/super.c clear_opt(sbi->s_mount_opt, DAX); sbi 995 fs/ext2/super.c sbi->s_es = es; sbi 1008 fs/ext2/super.c sbi->s_inode_size = EXT2_GOOD_OLD_INODE_SIZE; sbi 1009 fs/ext2/super.c sbi->s_first_ino = EXT2_GOOD_OLD_FIRST_INO; sbi 1011 fs/ext2/super.c sbi->s_inode_size = le16_to_cpu(es->s_inode_size); sbi 1012 fs/ext2/super.c sbi->s_first_ino = le32_to_cpu(es->s_first_ino); sbi 1013 fs/ext2/super.c if ((sbi->s_inode_size < EXT2_GOOD_OLD_INODE_SIZE) || sbi 1014 fs/ext2/super.c !is_power_of_2(sbi->s_inode_size) || sbi 1015 fs/ext2/super.c (sbi->s_inode_size > blocksize)) { sbi 1018 fs/ext2/super.c sbi->s_inode_size); sbi 1023 fs/ext2/super.c sbi->s_frag_size = EXT2_MIN_FRAG_SIZE << sbi 1025 fs/ext2/super.c if (sbi->s_frag_size == 0) sbi 1027 fs/ext2/super.c sbi->s_frags_per_block = sb->s_blocksize / sbi->s_frag_size; sbi 1029 fs/ext2/super.c sbi->s_blocks_per_group = le32_to_cpu(es->s_blocks_per_group); sbi 1030 fs/ext2/super.c sbi->s_frags_per_group = le32_to_cpu(es->s_frags_per_group); sbi 1031 fs/ext2/super.c sbi->s_inodes_per_group = le32_to_cpu(es->s_inodes_per_group); sbi 1033 fs/ext2/super.c sbi->s_inodes_per_block = sb->s_blocksize / EXT2_INODE_SIZE(sb); sbi 1034 fs/ext2/super.c if (sbi->s_inodes_per_block == 0 || sbi->s_inodes_per_group == 0) sbi 1036 fs/ext2/super.c sbi->s_itb_per_group = sbi->s_inodes_per_group / sbi 1037 fs/ext2/super.c sbi->s_inodes_per_block; sbi 1038 fs/ext2/super.c sbi->s_desc_per_block = sb->s_blocksize / sbi 1040 fs/ext2/super.c sbi->s_sbh = bh; sbi 1041 fs/ext2/super.c sbi->s_mount_state = le16_to_cpu(es->s_state); sbi 1042 fs/ext2/super.c sbi->s_addr_per_block_bits = sbi 1044 fs/ext2/super.c sbi->s_desc_per_block_bits = sbi 1056 fs/ext2/super.c if (sb->s_blocksize != sbi->s_frag_size) { sbi 1060 fs/ext2/super.c sbi->s_frag_size, sb->s_blocksize); sbi 1064 fs/ext2/super.c if (sbi->s_blocks_per_group > sb->s_blocksize * 8) { sbi 1067 fs/ext2/super.c sbi->s_blocks_per_group); sbi 1070 fs/ext2/super.c if (sbi->s_frags_per_group > sb->s_blocksize * 8) { sbi 1073 fs/ext2/super.c sbi->s_frags_per_group); sbi 1076 fs/ext2/super.c if (sbi->s_inodes_per_group > sb->s_blocksize * 8) { sbi 1079 fs/ext2/super.c sbi->s_inodes_per_group); sbi 1085 fs/ext2/super.c sbi->s_groups_count = ((le32_to_cpu(es->s_blocks_count) - sbi 1088 fs/ext2/super.c db_count = (sbi->s_groups_count + EXT2_DESC_PER_BLOCK(sb) - 1) / sbi 1090 fs/ext2/super.c sbi->s_group_desc = kmalloc_array (db_count, sbi 1093 fs/ext2/super.c if (sbi->s_group_desc == NULL) { sbi 1098 fs/ext2/super.c bgl_lock_init(sbi->s_blockgroup_lock); sbi 1099 fs/ext2/super.c sbi->s_debts = kcalloc(sbi->s_groups_count, sizeof(*sbi->s_debts), GFP_KERNEL); sbi 1100 fs/ext2/super.c if (!sbi->s_debts) { sbi 1107 fs/ext2/super.c sbi->s_group_desc[i] = sb_bread(sb, block); sbi 1108 fs/ext2/super.c if (!sbi->s_group_desc[i]) { sbi 1110 fs/ext2/super.c brelse (sbi->s_group_desc[j]); sbi 1120 fs/ext2/super.c sbi->s_gdb_count = db_count; sbi 1121 fs/ext2/super.c get_random_bytes(&sbi->s_next_generation, sizeof(u32)); sbi 1122 fs/ext2/super.c spin_lock_init(&sbi->s_next_gen_lock); sbi 1125 fs/ext2/super.c spin_lock_init(&sbi->s_rsv_window_lock); sbi 1126 fs/ext2/super.c sbi->s_rsv_window_root = RB_ROOT; sbi 1133 fs/ext2/super.c sbi->s_rsv_window_head.rsv_start = EXT2_RESERVE_WINDOW_NOT_ALLOCATED; sbi 1134 fs/ext2/super.c sbi->s_rsv_window_head.rsv_end = EXT2_RESERVE_WINDOW_NOT_ALLOCATED; sbi 1135 fs/ext2/super.c sbi->s_rsv_window_head.rsv_alloc_hit = 0; sbi 1136 fs/ext2/super.c sbi->s_rsv_window_head.rsv_goal_size = 0; sbi 1137 fs/ext2/super.c ext2_rsv_window_add(sb, &sbi->s_rsv_window_head); sbi 1139 fs/ext2/super.c err = percpu_counter_init(&sbi->s_freeblocks_counter, sbi 1142 fs/ext2/super.c err = percpu_counter_init(&sbi->s_freeinodes_counter, sbi 1146 fs/ext2/super.c err = percpu_counter_init(&sbi->s_dirs_counter, sbi 1155 fs/ext2/super.c sbi->s_ea_block_cache = ext2_xattr_create_cache(); sbi 1156 fs/ext2/super.c if (!sbi->s_ea_block_cache) { sbi 1207 fs/ext2/super.c ext2_xattr_destroy_cache(sbi->s_ea_block_cache); sbi 1208 fs/ext2/super.c percpu_counter_destroy(&sbi->s_freeblocks_counter); sbi 1209 fs/ext2/super.c percpu_counter_destroy(&sbi->s_freeinodes_counter); sbi 1210 fs/ext2/super.c percpu_counter_destroy(&sbi->s_dirs_counter); sbi 1213 fs/ext2/super.c brelse(sbi->s_group_desc[i]); sbi 1215 fs/ext2/super.c kfree(sbi->s_group_desc); sbi 1216 fs/ext2/super.c kfree(sbi->s_debts); sbi 1221 fs/ext2/super.c kfree(sbi->s_blockgroup_lock); sbi 1222 fs/ext2/super.c kfree(sbi); sbi 1275 fs/ext2/super.c struct ext2_sb_info *sbi = EXT2_SB(sb); sbi 1284 fs/ext2/super.c spin_lock(&sbi->s_lock); sbi 1289 fs/ext2/super.c spin_unlock(&sbi->s_lock); sbi 1296 fs/ext2/super.c struct ext2_sb_info *sbi = EXT2_SB(sb); sbi 1308 fs/ext2/super.c spin_lock(&sbi->s_lock); sbi 1309 fs/ext2/super.c sbi->s_es->s_state = cpu_to_le16(sbi->s_mount_state); sbi 1310 fs/ext2/super.c spin_unlock(&sbi->s_lock); sbi 1311 fs/ext2/super.c ext2_sync_super(sb, sbi->s_es, 1); sbi 1332 fs/ext2/super.c struct ext2_sb_info * sbi = EXT2_SB(sb); sbi 1339 fs/ext2/super.c spin_lock(&sbi->s_lock); sbi 1340 fs/ext2/super.c new_opts.s_mount_opt = sbi->s_mount_opt; sbi 1341 fs/ext2/super.c new_opts.s_resuid = sbi->s_resuid; sbi 1342 fs/ext2/super.c new_opts.s_resgid = sbi->s_resgid; sbi 1343 fs/ext2/super.c spin_unlock(&sbi->s_lock); sbi 1348 fs/ext2/super.c spin_lock(&sbi->s_lock); sbi 1349 fs/ext2/super.c es = sbi->s_es; sbi 1350 fs/ext2/super.c if ((sbi->s_mount_opt ^ new_opts.s_mount_opt) & EXT2_MOUNT_DAX) { sbi 1359 fs/ext2/super.c !(sbi->s_mount_state & EXT2_VALID_FS)) sbi 1366 fs/ext2/super.c es->s_state = cpu_to_le16(sbi->s_mount_state); sbi 1368 fs/ext2/super.c spin_unlock(&sbi->s_lock); sbi 1379 fs/ext2/super.c spin_unlock(&sbi->s_lock); sbi 1391 fs/ext2/super.c sbi->s_mount_state = le16_to_cpu(es->s_state); sbi 1394 fs/ext2/super.c spin_unlock(&sbi->s_lock); sbi 1401 fs/ext2/super.c spin_lock(&sbi->s_lock); sbi 1403 fs/ext2/super.c sbi->s_mount_opt = new_opts.s_mount_opt; sbi 1404 fs/ext2/super.c sbi->s_resuid = new_opts.s_resuid; sbi 1405 fs/ext2/super.c sbi->s_resgid = new_opts.s_resgid; sbi 1408 fs/ext2/super.c spin_unlock(&sbi->s_lock); sbi 1416 fs/ext2/super.c struct ext2_sb_info *sbi = EXT2_SB(sb); sbi 1417 fs/ext2/super.c struct ext2_super_block *es = sbi->s_es; sbi 1420 fs/ext2/super.c spin_lock(&sbi->s_lock); sbi 1423 fs/ext2/super.c sbi->s_overhead_last = 0; sbi 1424 fs/ext2/super.c else if (sbi->s_blocks_last != le32_to_cpu(es->s_blocks_count)) { sbi 1445 fs/ext2/super.c for (i = 0; i < sbi->s_groups_count; i++) sbi 1453 fs/ext2/super.c overhead += (sbi->s_groups_count * sbi 1454 fs/ext2/super.c (2 + sbi->s_itb_per_group)); sbi 1455 fs/ext2/super.c sbi->s_overhead_last = overhead; sbi 1457 fs/ext2/super.c sbi->s_blocks_last = le32_to_cpu(es->s_blocks_count); sbi 1462 fs/ext2/super.c buf->f_blocks = le32_to_cpu(es->s_blocks_count) - sbi->s_overhead_last; sbi 1476 fs/ext2/super.c spin_unlock(&sbi->s_lock); sbi 792 fs/ext2/xattr.c struct ext2_sb_info *sbi = EXT2_SB(inode->i_sb); sbi 798 fs/ext2/xattr.c if (!ext2_data_block_valid(sbi, EXT2_I(inode)->i_file_acl, 1)) { sbi 94 fs/ext4/balloc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 114 fs/ext4/balloc.c block_cluster = EXT4_B2C(sbi, sbi 125 fs/ext4/balloc.c inode_cluster = EXT4_B2C(sbi, sbi 136 fs/ext4/balloc.c for (i = 0; i < sbi->s_itb_per_group; i++) { sbi 138 fs/ext4/balloc.c c = EXT4_B2C(sbi, itbl_blk + i - start); sbi 185 fs/ext4/balloc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 212 fs/ext4/balloc.c ext4_set_bit(EXT4_B2C(sbi, tmp - start), bh->b_data); sbi 216 fs/ext4/balloc.c ext4_set_bit(EXT4_B2C(sbi, tmp - start), bh->b_data); sbi 220 fs/ext4/balloc.c sbi->s_itb_per_group; tmp++) { sbi 222 fs/ext4/balloc.c ext4_set_bit(EXT4_B2C(sbi, tmp - start), bh->b_data); sbi 272 fs/ext4/balloc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 284 fs/ext4/balloc.c bh_p = sbi_array_rcu_deref(sbi, s_group_desc, group_desc); sbi 315 fs/ext4/balloc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 336 fs/ext4/balloc.c if (offset < 0 || EXT4_B2C(sbi, offset) >= max_bit || sbi 337 fs/ext4/balloc.c !ext4_test_bit(EXT4_B2C(sbi, offset), bh->b_data)) sbi 344 fs/ext4/balloc.c if (offset < 0 || EXT4_B2C(sbi, offset) >= max_bit || sbi 345 fs/ext4/balloc.c !ext4_test_bit(EXT4_B2C(sbi, offset), bh->b_data)) sbi 352 fs/ext4/balloc.c if (offset < 0 || EXT4_B2C(sbi, offset) >= max_bit || sbi 353 fs/ext4/balloc.c EXT4_B2C(sbi, offset + sbi->s_itb_per_group) >= max_bit) sbi 356 fs/ext4/balloc.c EXT4_B2C(sbi, offset + sbi->s_itb_per_group), sbi 357 fs/ext4/balloc.c EXT4_B2C(sbi, offset)); sbi 359 fs/ext4/balloc.c EXT4_B2C(sbi, offset + sbi->s_itb_per_group)) sbi 418 fs/ext4/balloc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 427 fs/ext4/balloc.c if ((bitmap_blk <= le32_to_cpu(sbi->s_es->s_first_data_block)) || sbi 428 fs/ext4/balloc.c (bitmap_blk >= ext4_blocks_count(sbi->s_es))) { sbi 555 fs/ext4/balloc.c static int ext4_has_free_clusters(struct ext4_sb_info *sbi, sbi 559 fs/ext4/balloc.c struct percpu_counter *fcc = &sbi->s_freeclusters_counter; sbi 560 fs/ext4/balloc.c struct percpu_counter *dcc = &sbi->s_dirtyclusters_counter; sbi 564 fs/ext4/balloc.c resv_clusters = atomic64_read(&sbi->s_resv_clusters); sbi 570 fs/ext4/balloc.c rsv = (ext4_r_blocks_count(sbi->s_es) >> sbi->s_cluster_bits) + sbi 585 fs/ext4/balloc.c if (uid_eq(sbi->s_resuid, current_fsuid()) || sbi 586 fs/ext4/balloc.c (!gid_eq(sbi->s_resgid, GLOBAL_ROOT_GID) && in_group_p(sbi->s_resgid)) || sbi 603 fs/ext4/balloc.c int ext4_claim_free_clusters(struct ext4_sb_info *sbi, sbi 606 fs/ext4/balloc.c if (ext4_has_free_clusters(sbi, nclusters, flags)) { sbi 607 fs/ext4/balloc.c percpu_counter_add(&sbi->s_dirtyclusters_counter, nclusters); sbi 845 fs/ext4/balloc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 852 fs/ext4/balloc.c block_group < le32_to_cpu(sbi->s_es->s_first_meta_bg) * sbi 853 fs/ext4/balloc.c sbi->s_desc_per_block) { sbi 856 fs/ext4/balloc.c num += le16_to_cpu(sbi->s_es->s_reserved_gdt_blocks); sbi 861 fs/ext4/balloc.c return EXT4_NUM_B2C(sbi, num); sbi 25 fs/ext4/bitmap.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 31 fs/ext4/bitmap.c calculated = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)bh->b_data, sz); sbi 32 fs/ext4/bitmap.c if (sbi->s_desc_size >= EXT4_BG_INODE_BITMAP_CSUM_HI_END) { sbi 46 fs/ext4/bitmap.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 51 fs/ext4/bitmap.c csum = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)bh->b_data, sz); sbi 53 fs/ext4/bitmap.c if (sbi->s_desc_size >= EXT4_BG_INODE_BITMAP_CSUM_HI_END) sbi 63 fs/ext4/bitmap.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 70 fs/ext4/bitmap.c calculated = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)bh->b_data, sz); sbi 71 fs/ext4/bitmap.c if (sbi->s_desc_size >= EXT4_BG_BLOCK_BITMAP_CSUM_HI_END) { sbi 89 fs/ext4/bitmap.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 94 fs/ext4/bitmap.c csum = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)bh->b_data, sz); sbi 96 fs/ext4/bitmap.c if (sbi->s_desc_size >= EXT4_BG_BLOCK_BITMAP_CSUM_HI_END) sbi 132 fs/ext4/block_validity.c static void debug_print_tree(struct ext4_sb_info *sbi) sbi 139 fs/ext4/block_validity.c node = rb_first(&sbi->system_blks->root); sbi 155 fs/ext4/block_validity.c static int ext4_data_block_valid_rcu(struct ext4_sb_info *sbi, sbi 163 fs/ext4/block_validity.c if ((start_blk <= le32_to_cpu(sbi->s_es->s_first_data_block)) || sbi 165 fs/ext4/block_validity.c (start_blk + count > ext4_blocks_count(sbi->s_es))) { sbi 166 fs/ext4/block_validity.c sbi->s_es->s_last_error_block = cpu_to_le64(start_blk); sbi 181 fs/ext4/block_validity.c sbi->s_es->s_last_error_block = cpu_to_le64(start_blk); sbi 193 fs/ext4/block_validity.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 199 fs/ext4/block_validity.c (ino > le32_to_cpu(sbi->s_es->s_inodes_count))) sbi 217 fs/ext4/block_validity.c if (!ext4_data_block_valid_rcu(sbi, system_blks, sbi 256 fs/ext4/block_validity.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 260 fs/ext4/block_validity.c int flex_size = ext4_flex_bg_size(sbi); sbi 264 fs/ext4/block_validity.c if (sbi->system_blks) sbi 268 fs/ext4/block_validity.c if (sbi->system_blks) sbi 293 fs/ext4/block_validity.c sbi->s_itb_per_group); sbi 297 fs/ext4/block_validity.c if (ext4_has_feature_journal(sb) && sbi->s_es->s_journal_inum) { sbi 299 fs/ext4/block_validity.c le32_to_cpu(sbi->s_es->s_journal_inum)); sbi 309 fs/ext4/block_validity.c rcu_assign_pointer(sbi->system_blks, system_blks); sbi 312 fs/ext4/block_validity.c debug_print_tree(sbi); sbi 342 fs/ext4/block_validity.c int ext4_data_block_valid(struct ext4_sb_info *sbi, ext4_fsblk_t start_blk, sbi 354 fs/ext4/block_validity.c system_blks = rcu_dereference(sbi->system_blks); sbi 355 fs/ext4/block_validity.c ret = ext4_data_block_valid_rcu(sbi, system_blks, start_blk, sbi 693 fs/ext4/dir.c const struct ext4_sb_info *sbi = EXT4_SB(dentry->d_sb); sbi 694 fs/ext4/dir.c const struct unicode_map *um = sbi->s_encoding; sbi 708 fs/ext4/dir.c if (ext4_has_strict_mode(sbi)) sbi 285 fs/ext4/ext4.h #define EXT4_B2C(sbi, blk) ((blk) >> (sbi)->s_cluster_bits) sbi 287 fs/ext4/ext4.h #define EXT4_C2B(sbi, cluster) ((cluster) << (sbi)->s_cluster_bits) sbi 289 fs/ext4/ext4.h #define EXT4_NUM_B2C(sbi, blks) (((blks) + (sbi)->s_cluster_ratio - 1) >> \ sbi 290 fs/ext4/ext4.h (sbi)->s_cluster_bits) sbi 297 fs/ext4/ext4.h #define EXT4_LBLK_CFILL(sbi, lblk) ((lblk) | \ sbi 298 fs/ext4/ext4.h ((ext4_lblk_t) (sbi)->s_cluster_ratio - 1)) sbi 1360 fs/ext4/ext4.h #define DUMMY_ENCRYPTION_ENABLED(sbi) (unlikely((sbi)->s_mount_flags & \ sbi 1363 fs/ext4/ext4.h #define DUMMY_ENCRYPTION_ENABLED(sbi) (0) sbi 1376 fs/ext4/ext4.h #define ext4_has_strict_mode(sbi) \ sbi 1377 fs/ext4/ext4.h (sbi->s_encoding_flags & EXT4_ENC_STRICT_MODE_FL) sbi 1583 fs/ext4/ext4.h #define sbi_array_rcu_deref(sbi, field, index) \ sbi 1585 fs/ext4/ext4.h typeof(*((sbi)->field)) _v; \ sbi 1587 fs/ext4/ext4.h _v = ((typeof(_v)*)rcu_dereference((sbi)->field))[index]; \ sbi 1916 fs/ext4/ext4.h static inline int ext4_forced_shutdown(struct ext4_sb_info *sbi) sbi 1918 fs/ext4/ext4.h return test_bit(EXT4_FLAGS_SHUTDOWN, &sbi->s_ext4_flags); sbi 2092 fs/ext4/ext4.h static inline u32 ext4_chksum(struct ext4_sb_info *sbi, u32 crc, sbi 2100 fs/ext4/ext4.h BUG_ON(crypto_shash_descsize(sbi->s_chksum_driver)!=sizeof(desc.ctx)); sbi 2102 fs/ext4/ext4.h desc.shash.tfm = sbi->s_chksum_driver; sbi 2346 fs/ext4/ext4.h extern int ext4_claim_free_clusters(struct ext4_sb_info *sbi, sbi 2959 fs/ext4/ext4.h static inline ext4_group_t ext4_flex_group(struct ext4_sb_info *sbi, sbi 2962 fs/ext4/ext4.h return block_group >> sbi->s_log_groups_per_flex; sbi 2965 fs/ext4/ext4.h static inline unsigned int ext4_flex_bg_size(struct ext4_sb_info *sbi) sbi 2967 fs/ext4/ext4.h return 1 << sbi->s_log_groups_per_flex; sbi 3070 fs/ext4/ext4.h static inline int ext4_fs_is_busy(struct ext4_sb_info *sbi) sbi 3072 fs/ext4/ext4.h return (atomic_read(&sbi->s_lock_busy) > EXT4_CONTENTION_THRESHOLD); sbi 3261 fs/ext4/ext4.h extern int ext4_data_block_valid(struct ext4_sb_info *sbi, sbi 181 fs/ext4/ext4_jbd2.h struct ext4_sb_info *sbi = sbi 186 fs/ext4/ext4_jbd2.h spin_lock(&sbi->s_md_lock); sbi 188 fs/ext4/ext4_jbd2.h spin_unlock(&sbi->s_md_lock); sbi 202 fs/ext4/ext4_jbd2.h struct ext4_sb_info *sbi = sbi 205 fs/ext4/ext4_jbd2.h spin_lock(&sbi->s_md_lock); sbi 208 fs/ext4/ext4_jbd2.h spin_unlock(&sbi->s_md_lock); sbi 52 fs/ext4/extents.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 55 fs/ext4/extents.c csum = ext4_chksum(sbi, ei->i_csum_seed, (__u8 *)eh, sbi 1906 fs/ext4/extents.c static unsigned int ext4_ext_check_overlap(struct ext4_sb_info *sbi, sbi 1920 fs/ext4/extents.c b2 = EXT4_LBLK_CMASK(sbi, le32_to_cpu(path[depth].p_ext->ee_block)); sbi 1930 fs/ext4/extents.c b2 = EXT4_LBLK_CMASK(sbi, b2); sbi 2580 fs/ext4/extents.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 2583 fs/ext4/extents.c dquot_reclaim_block(inode, EXT4_C2B(sbi, 1)); sbi 2587 fs/ext4/extents.c percpu_counter_add(&sbi->s_dirtyclusters_counter, 1); sbi 2590 fs/ext4/extents.c percpu_counter_add(&sbi->s_freeclusters_counter, 1); sbi 2599 fs/ext4/extents.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 2608 fs/ext4/extents.c ext4_error(sbi->s_sb, sbi 2615 fs/ext4/extents.c spin_lock(&sbi->s_ext_stats_lock); sbi 2616 fs/ext4/extents.c sbi->s_ext_blocks += ee_len; sbi 2617 fs/ext4/extents.c sbi->s_ext_extents++; sbi 2618 fs/ext4/extents.c if (ee_len < sbi->s_ext_min) sbi 2619 fs/ext4/extents.c sbi->s_ext_min = ee_len; sbi 2620 fs/ext4/extents.c if (ee_len > sbi->s_ext_max) sbi 2621 fs/ext4/extents.c sbi->s_ext_max = ee_len; sbi 2622 fs/ext4/extents.c if (ext_depth(inode) > sbi->s_depth_max) sbi 2623 fs/ext4/extents.c sbi->s_depth_max = ext_depth(inode); sbi 2624 fs/ext4/extents.c spin_unlock(&sbi->s_ext_stats_lock); sbi 2636 fs/ext4/extents.c partial->pclu != EXT4_B2C(sbi, last_pblk)) { sbi 2642 fs/ext4/extents.c EXT4_C2B(sbi, partial->pclu), sbi 2643 fs/ext4/extents.c sbi->s_cluster_ratio, flags); sbi 2662 fs/ext4/extents.c if ((EXT4_LBLK_COFF(sbi, to) != sbi->s_cluster_ratio - 1) && sbi 2663 fs/ext4/extents.c (EXT4_LBLK_CMASK(sbi, to) >= from) && sbi 2668 fs/ext4/extents.c EXT4_PBLK_CMASK(sbi, last_pblk), sbi 2669 fs/ext4/extents.c sbi->s_cluster_ratio, flags); sbi 2688 fs/ext4/extents.c if (partial->state != initial && partial->pclu != EXT4_B2C(sbi, pblk)) sbi 2701 fs/ext4/extents.c if (EXT4_LBLK_COFF(sbi, from) && num == ee_len) { sbi 2703 fs/ext4/extents.c partial->pclu = EXT4_B2C(sbi, pblk); sbi 2735 fs/ext4/extents.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 2793 fs/ext4/extents.c if (sbi->s_cluster_ratio > 1) { sbi 2795 fs/ext4/extents.c partial->pclu = EXT4_B2C(sbi, pblk); sbi 2897 fs/ext4/extents.c if (partial->pclu != EXT4_B2C(sbi, pblk)) { sbi 2903 fs/ext4/extents.c EXT4_C2B(sbi, partial->pclu), sbi 2904 fs/ext4/extents.c sbi->s_cluster_ratio, flags); sbi 2944 fs/ext4/extents.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 3012 fs/ext4/extents.c if (sbi->s_cluster_ratio > 1) { sbi 3014 fs/ext4/extents.c partial.pclu = EXT4_B2C(sbi, pblk); sbi 3029 fs/ext4/extents.c } else if (sbi->s_cluster_ratio > 1 && end >= ex_end && sbi 3047 fs/ext4/extents.c partial.pclu = EXT4_B2C(sbi, pblk); sbi 3169 fs/ext4/extents.c EXT4_C2B(sbi, partial.pclu), sbi 3170 fs/ext4/extents.c sbi->s_cluster_ratio, flags); sbi 3242 fs/ext4/extents.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 3244 fs/ext4/extents.c sbi->s_ext_blocks, sbi->s_ext_extents, sbi 3245 fs/ext4/extents.c sbi->s_ext_blocks / sbi->s_ext_extents); sbi 3247 fs/ext4/extents.c sbi->s_ext_min, sbi->s_ext_max, sbi->s_depth_max); sbi 3543 fs/ext4/extents.c struct ext4_sb_info *sbi; sbi 3558 fs/ext4/extents.c sbi = EXT4_SB(inode->i_sb); sbi 3704 fs/ext4/extents.c max_zeroout = sbi->s_extent_max_zeroout_kb >> sbi 4192 fs/ext4/extents.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 4193 fs/ext4/extents.c ext4_lblk_t c_offset = EXT4_LBLK_COFF(sbi, map->m_lblk); sbi 4201 fs/ext4/extents.c ex_cluster_start = EXT4_B2C(sbi, ee_block); sbi 4202 fs/ext4/extents.c ex_cluster_end = EXT4_B2C(sbi, ee_block + ee_len - 1); sbi 4205 fs/ext4/extents.c rr_cluster_start = EXT4_B2C(sbi, map->m_lblk); sbi 4211 fs/ext4/extents.c map->m_pblk = EXT4_PBLK_CMASK(sbi, ee_start) + c_offset; sbi 4213 fs/ext4/extents.c (unsigned) sbi->s_cluster_ratio - c_offset); sbi 4272 fs/ext4/extents.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 4384 fs/ext4/extents.c cluster_offset = EXT4_LBLK_COFF(sbi, map->m_lblk); sbi 4411 fs/ext4/extents.c if ((sbi->s_cluster_ratio > 1) && ex2 && sbi 4434 fs/ext4/extents.c err = ext4_ext_check_overlap(sbi, inode, &newex, path); sbi 4452 fs/ext4/extents.c offset = EXT4_LBLK_COFF(sbi, map->m_lblk); sbi 4453 fs/ext4/extents.c ar.len = EXT4_NUM_B2C(sbi, offset+allocated); sbi 4474 fs/ext4/extents.c ar.len = EXT4_C2B(sbi, ar.len) - offset; sbi 4504 fs/ext4/extents.c EXT4_C2B(sbi, allocated_clusters), fb_flags); sbi 4544 fs/ext4/extents.c lblk = EXT4_LBLK_CMASK(sbi, map->m_lblk); sbi 4545 fs/ext4/extents.c len = allocated_clusters << sbi->s_cluster_bits; sbi 5973 fs/ext4/extents.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 5980 fs/ext4/extents.c path = ext4_find_extent(inode, EXT4_C2B(sbi, lclu), NULL, 0); sbi 5997 fs/ext4/extents.c (unsigned long) EXT4_C2B(sbi, lclu), sbi 6010 fs/ext4/extents.c first_lclu = EXT4_B2C(sbi, first_lblk); sbi 6019 fs/ext4/extents.c last_lclu = EXT4_B2C(sbi, first_lblk + sbi 6025 fs/ext4/extents.c first_lclu = EXT4_B2C(sbi, first_lblk); sbi 151 fs/ext4/extents_status.c static int __es_shrink(struct ext4_sb_info *sbi, int nr_to_scan, sbi 389 fs/ext4/extents_status.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 392 fs/ext4/extents_status.c lblk_start = EXT4_LBLK_CMASK(sbi, lblk); sbi 393 fs/ext4/extents_status.c lblk_end = lblk_start + sbi->s_cluster_ratio - 1; sbi 417 fs/ext4/extents_status.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 422 fs/ext4/extents_status.c spin_lock(&sbi->s_es_lock); sbi 424 fs/ext4/extents_status.c list_add_tail(&ei->i_es_list, &sbi->s_es_list); sbi 425 fs/ext4/extents_status.c sbi->s_es_nr_inode++; sbi 427 fs/ext4/extents_status.c spin_unlock(&sbi->s_es_lock); sbi 433 fs/ext4/extents_status.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 435 fs/ext4/extents_status.c spin_lock(&sbi->s_es_lock); sbi 438 fs/ext4/extents_status.c sbi->s_es_nr_inode--; sbi 439 fs/ext4/extents_status.c WARN_ON_ONCE(sbi->s_es_nr_inode < 0); sbi 441 fs/ext4/extents_status.c spin_unlock(&sbi->s_es_lock); sbi 813 fs/ext4/extents_status.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 850 fs/ext4/extents_status.c if (sbi->s_cluster_ratio > 1 && test_opt(inode->i_sb, DELALLOC) && sbi 995 fs/ext4/extents_status.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 1006 fs/ext4/extents_status.c if (sbi->s_cluster_ratio > 1) { sbi 1037 fs/ext4/extents_status.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 1045 fs/ext4/extents_status.c if (sbi->s_cluster_ratio == 1) { sbi 1069 fs/ext4/extents_status.c if (rc->partial && (rc->lclu != EXT4_B2C(sbi, i))) { sbi 1078 fs/ext4/extents_status.c if (EXT4_LBLK_COFF(sbi, i) != 0) { sbi 1079 fs/ext4/extents_status.c if (end >= EXT4_LBLK_CFILL(sbi, i)) { sbi 1082 fs/ext4/extents_status.c i = EXT4_LBLK_CFILL(sbi, i) + 1; sbi 1090 fs/ext4/extents_status.c if ((i + sbi->s_cluster_ratio - 1) <= end) { sbi 1091 fs/ext4/extents_status.c nclu = (end - i + 1) >> sbi->s_cluster_bits; sbi 1093 fs/ext4/extents_status.c i += nclu << sbi->s_cluster_bits; sbi 1102 fs/ext4/extents_status.c rc->lclu = EXT4_B2C(sbi, i); sbi 1161 fs/ext4/extents_status.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 1169 fs/ext4/extents_status.c if (sbi->s_cluster_ratio > 1) { sbi 1177 fs/ext4/extents_status.c first_lclu = EXT4_B2C(sbi, rc->first_do_lblk); sbi 1178 fs/ext4/extents_status.c last_lclu = EXT4_B2C(sbi, rc->last_do_lblk); sbi 1189 fs/ext4/extents_status.c EXT4_LBLK_CMASK(sbi, rc->first_do_lblk)) { sbi 1209 fs/ext4/extents_status.c EXT4_LBLK_CFILL(sbi, rc->last_do_lblk)) { sbi 1445 fs/ext4/extents_status.c static int __es_shrink(struct ext4_sb_info *sbi, int nr_to_scan, sbi 1456 fs/ext4/extents_status.c es_stats = &sbi->s_es_stats; sbi 1460 fs/ext4/extents_status.c spin_lock(&sbi->s_es_lock); sbi 1461 fs/ext4/extents_status.c nr_to_walk = sbi->s_es_nr_inode; sbi 1463 fs/ext4/extents_status.c if (list_empty(&sbi->s_es_list)) { sbi 1464 fs/ext4/extents_status.c spin_unlock(&sbi->s_es_lock); sbi 1467 fs/ext4/extents_status.c ei = list_first_entry(&sbi->s_es_list, struct ext4_inode_info, sbi 1470 fs/ext4/extents_status.c list_move_tail(&ei->i_es_list, &sbi->s_es_list); sbi 1490 fs/ext4/extents_status.c spin_unlock(&sbi->s_es_lock); sbi 1497 fs/ext4/extents_status.c spin_lock(&sbi->s_es_lock); sbi 1499 fs/ext4/extents_status.c spin_unlock(&sbi->s_es_lock); sbi 1528 fs/ext4/extents_status.c trace_ext4_es_shrink(sbi->s_sb, nr_shrunk, scan_time, sbi 1537 fs/ext4/extents_status.c struct ext4_sb_info *sbi; sbi 1539 fs/ext4/extents_status.c sbi = container_of(shrink, struct ext4_sb_info, s_es_shrinker); sbi 1540 fs/ext4/extents_status.c nr = percpu_counter_read_positive(&sbi->s_es_stats.es_stats_shk_cnt); sbi 1541 fs/ext4/extents_status.c trace_ext4_es_shrink_count(sbi->s_sb, sc->nr_to_scan, nr); sbi 1548 fs/ext4/extents_status.c struct ext4_sb_info *sbi = container_of(shrink, sbi 1553 fs/ext4/extents_status.c ret = percpu_counter_read_positive(&sbi->s_es_stats.es_stats_shk_cnt); sbi 1554 fs/ext4/extents_status.c trace_ext4_es_shrink_scan_enter(sbi->s_sb, nr_to_scan, ret); sbi 1559 fs/ext4/extents_status.c nr_shrunk = __es_shrink(sbi, nr_to_scan, NULL); sbi 1561 fs/ext4/extents_status.c trace_ext4_es_shrink_scan_exit(sbi->s_sb, nr_shrunk, ret); sbi 1567 fs/ext4/extents_status.c struct ext4_sb_info *sbi = EXT4_SB((struct super_block *) seq->private); sbi 1568 fs/ext4/extents_status.c struct ext4_es_stats *es_stats = &sbi->s_es_stats; sbi 1576 fs/ext4/extents_status.c spin_lock(&sbi->s_es_lock); sbi 1577 fs/ext4/extents_status.c list_for_each_entry(ei, &sbi->s_es_list, i_es_list) { sbi 1584 fs/ext4/extents_status.c spin_unlock(&sbi->s_es_lock); sbi 1608 fs/ext4/extents_status.c int ext4_es_register_shrinker(struct ext4_sb_info *sbi) sbi 1614 fs/ext4/extents_status.c INIT_LIST_HEAD(&sbi->s_es_list); sbi 1615 fs/ext4/extents_status.c sbi->s_es_nr_inode = 0; sbi 1616 fs/ext4/extents_status.c spin_lock_init(&sbi->s_es_lock); sbi 1617 fs/ext4/extents_status.c sbi->s_es_stats.es_stats_shrunk = 0; sbi 1618 fs/ext4/extents_status.c err = percpu_counter_init(&sbi->s_es_stats.es_stats_cache_hits, 0, sbi 1622 fs/ext4/extents_status.c err = percpu_counter_init(&sbi->s_es_stats.es_stats_cache_misses, 0, sbi 1626 fs/ext4/extents_status.c sbi->s_es_stats.es_stats_scan_time = 0; sbi 1627 fs/ext4/extents_status.c sbi->s_es_stats.es_stats_max_scan_time = 0; sbi 1628 fs/ext4/extents_status.c err = percpu_counter_init(&sbi->s_es_stats.es_stats_all_cnt, 0, GFP_KERNEL); sbi 1631 fs/ext4/extents_status.c err = percpu_counter_init(&sbi->s_es_stats.es_stats_shk_cnt, 0, GFP_KERNEL); sbi 1635 fs/ext4/extents_status.c sbi->s_es_shrinker.scan_objects = ext4_es_scan; sbi 1636 fs/ext4/extents_status.c sbi->s_es_shrinker.count_objects = ext4_es_count; sbi 1637 fs/ext4/extents_status.c sbi->s_es_shrinker.seeks = DEFAULT_SEEKS; sbi 1638 fs/ext4/extents_status.c err = register_shrinker(&sbi->s_es_shrinker); sbi 1644 fs/ext4/extents_status.c percpu_counter_destroy(&sbi->s_es_stats.es_stats_shk_cnt); sbi 1646 fs/ext4/extents_status.c percpu_counter_destroy(&sbi->s_es_stats.es_stats_all_cnt); sbi 1648 fs/ext4/extents_status.c percpu_counter_destroy(&sbi->s_es_stats.es_stats_cache_misses); sbi 1650 fs/ext4/extents_status.c percpu_counter_destroy(&sbi->s_es_stats.es_stats_cache_hits); sbi 1654 fs/ext4/extents_status.c void ext4_es_unregister_shrinker(struct ext4_sb_info *sbi) sbi 1656 fs/ext4/extents_status.c percpu_counter_destroy(&sbi->s_es_stats.es_stats_cache_hits); sbi 1657 fs/ext4/extents_status.c percpu_counter_destroy(&sbi->s_es_stats.es_stats_cache_misses); sbi 1658 fs/ext4/extents_status.c percpu_counter_destroy(&sbi->s_es_stats.es_stats_all_cnt); sbi 1659 fs/ext4/extents_status.c percpu_counter_destroy(&sbi->s_es_stats.es_stats_shk_cnt); sbi 1660 fs/ext4/extents_status.c unregister_shrinker(&sbi->s_es_shrinker); sbi 1852 fs/ext4/extents_status.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 1860 fs/ext4/extents_status.c lclu = EXT4_B2C(sbi, lblk); sbi 1901 fs/ext4/extents_status.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 1905 fs/ext4/extents_status.c pr = __get_pending(inode, EXT4_B2C(sbi, lblk)); sbi 1943 fs/ext4/extents_status.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 1948 fs/ext4/extents_status.c ret = (bool)(__get_pending(inode, EXT4_B2C(sbi, lblk)) != NULL); sbi 2025 fs/ext4/extents_status.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 2039 fs/ext4/extents_status.c first_lclu = EXT4_B2C(sbi, start); sbi 2041 fs/ext4/extents_status.c first_lclu = EXT4_B2C(sbi, es->es_lblk); sbi 2044 fs/ext4/extents_status.c last_lclu = EXT4_B2C(sbi, end); sbi 2046 fs/ext4/extents_status.c last_lclu = EXT4_B2C(sbi, ext4_es_end(es)); sbi 2113 fs/ext4/extents_status.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 2134 fs/ext4/extents_status.c if (EXT4_B2C(sbi, lblk) == EXT4_B2C(sbi, end)) { sbi 2135 fs/ext4/extents_status.c first = EXT4_LBLK_CMASK(sbi, lblk); sbi 2142 fs/ext4/extents_status.c last = EXT4_LBLK_CMASK(sbi, end) + sbi 2143 fs/ext4/extents_status.c sbi->s_cluster_ratio - 1; sbi 2154 fs/ext4/extents_status.c first = EXT4_LBLK_CMASK(sbi, lblk); sbi 2163 fs/ext4/extents_status.c last = EXT4_LBLK_CMASK(sbi, end) + sbi->s_cluster_ratio - 1; sbi 236 fs/ext4/extents_status.h extern int ext4_es_register_shrinker(struct ext4_sb_info *sbi); sbi 237 fs/ext4/extents_status.h extern void ext4_es_unregister_shrinker(struct ext4_sb_info *sbi); sbi 178 fs/ext4/file.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 180 fs/ext4/file.c if (iocb->ki_pos >= sbi->s_bitmap_maxbytes) sbi 182 fs/ext4/file.c iov_iter_truncate(from, sbi->s_bitmap_maxbytes - iocb->ki_pos); sbi 374 fs/ext4/file.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 375 fs/ext4/file.c struct dax_device *dax_dev = sbi->s_daxdev; sbi 377 fs/ext4/file.c if (unlikely(ext4_forced_shutdown(sbi))) sbi 400 fs/ext4/file.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 406 fs/ext4/file.c if (likely(sbi->s_mount_flags & EXT4_MF_MNTDIR_SAMPLED)) sbi 412 fs/ext4/file.c sbi->s_mount_flags |= EXT4_MF_MNTDIR_SAMPLED; sbi 431 fs/ext4/file.c BUFFER_TRACE(sbi->s_sbh, "get_write_access"); sbi 432 fs/ext4/file.c err = ext4_journal_get_write_access(handle, sbi->s_sbh); sbi 435 fs/ext4/file.c strlcpy(sbi->s_es->s_last_mounted, cp, sbi 436 fs/ext4/file.c sizeof(sbi->s_es->s_last_mounted)); sbi 89 fs/ext4/fsmap.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 137 fs/ext4/fsmap.c EXT4_C2B(sbi, cno), sbi 160 fs/ext4/fsmap.c trace_ext4_fsmap_mapping(sb, info->gfi_dev, agno, EXT4_C2B(sbi, cno), sbi 194 fs/ext4/fsmap.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 199 fs/ext4/fsmap.c fsb = (EXT4_C2B(sbi, start) + ext4_group_first_block_no(sb, agno)); sbi 200 fs/ext4/fsmap.c fslen = EXT4_C2B(sbi, len); sbi 315 fs/ext4/fsmap.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 318 fs/ext4/fsmap.c unsigned long first_meta_bg = le32_to_cpu(sbi->s_es->s_first_meta_bg); sbi 342 fs/ext4/fsmap.c len = le16_to_cpu(sbi->s_es->s_reserved_gdt_blocks); sbi 467 fs/ext4/fsmap.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 478 fs/ext4/fsmap.c bofs = le32_to_cpu(sbi->s_es->s_first_data_block); sbi 479 fs/ext4/fsmap.c eofs = ext4_blocks_count(sbi->s_es); sbi 499 fs/ext4/fsmap.c info->gfi_low.fmr_physical = EXT4_C2B(sbi, first_cluster); sbi 519 fs/ext4/fsmap.c info->gfi_high.fmr_physical = EXT4_C2B(sbi, sbi 535 fs/ext4/fsmap.c EXT4_B2C(sbi, info->gfi_low.fmr_physical), sbi 536 fs/ext4/fsmap.c EXT4_B2C(sbi, info->gfi_high.fmr_physical), sbi 121 fs/ext4/ialloc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 131 fs/ext4/ialloc.c if ((bitmap_blk <= le32_to_cpu(sbi->s_es->s_first_data_block)) || sbi 132 fs/ext4/ialloc.c (bitmap_blk >= ext4_blocks_count(sbi->s_es))) { sbi 242 fs/ext4/ialloc.c struct ext4_sb_info *sbi; sbi 262 fs/ext4/ialloc.c sbi = EXT4_SB(sb); sbi 276 fs/ext4/ialloc.c es = sbi->s_es; sbi 319 fs/ext4/ialloc.c percpu_counter_dec(&sbi->s_dirs_counter); sbi 326 fs/ext4/ialloc.c percpu_counter_inc(&sbi->s_freeinodes_counter); sbi 327 fs/ext4/ialloc.c if (sbi->s_log_groups_per_flex) { sbi 330 fs/ext4/ialloc.c fg = sbi_array_rcu_deref(sbi, s_flex_groups, sbi 331 fs/ext4/ialloc.c ext4_flex_group(sbi, block_group)); sbi 418 fs/ext4/ialloc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 429 fs/ext4/ialloc.c int flex_size = ext4_flex_bg_size(sbi); sbi 435 fs/ext4/ialloc.c sbi->s_log_groups_per_flex; sbi 436 fs/ext4/ialloc.c parent_group >>= sbi->s_log_groups_per_flex; sbi 439 fs/ext4/ialloc.c freei = percpu_counter_read_positive(&sbi->s_freeinodes_counter); sbi 441 fs/ext4/ialloc.c freeb = EXT4_C2B(sbi, sbi 442 fs/ext4/ialloc.c percpu_counter_read_positive(&sbi->s_freeclusters_counter)); sbi 445 fs/ext4/ialloc.c ndirs = percpu_counter_read_positive(&sbi->s_dirs_counter); sbi 455 fs/ext4/ialloc.c hinfo.seed = sbi->s_hash_seed; sbi 517 fs/ext4/ialloc.c parent_group >>= sbi->s_log_groups_per_flex; sbi 754 fs/ext4/ialloc.c struct ext4_sb_info *sbi; sbi 767 fs/ext4/ialloc.c sbi = EXT4_SB(sb); sbi 769 fs/ext4/ialloc.c if (unlikely(ext4_forced_shutdown(sbi))) sbi 772 fs/ext4/ialloc.c if ((IS_ENCRYPTED(dir) || DUMMY_ENCRYPTION_ENABLED(sbi)) && sbi 783 fs/ext4/ialloc.c if (!handle && sbi->s_journal && !(i_flags & EXT4_EA_INODE_FL)) { sbi 859 fs/ext4/ialloc.c goal = sbi->s_inode_goal; sbi 861 fs/ext4/ialloc.c if (goal && goal <= le32_to_cpu(sbi->s_es->s_inodes_count)) { sbi 1054 fs/ext4/ialloc.c if (sbi->s_log_groups_per_flex) { sbi 1055 fs/ext4/ialloc.c ext4_group_t f = ext4_flex_group(sbi, group); sbi 1057 fs/ext4/ialloc.c atomic_inc(&sbi_array_rcu_deref(sbi, s_flex_groups, sbi 1075 fs/ext4/ialloc.c percpu_counter_dec(&sbi->s_freeinodes_counter); sbi 1077 fs/ext4/ialloc.c percpu_counter_inc(&sbi->s_dirs_counter); sbi 1079 fs/ext4/ialloc.c if (sbi->s_log_groups_per_flex) { sbi 1080 fs/ext4/ialloc.c flex_group = ext4_flex_group(sbi, group); sbi 1081 fs/ext4/ialloc.c atomic_dec(&sbi_array_rcu_deref(sbi, s_flex_groups, sbi 1126 fs/ext4/ialloc.c csum = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)&inum, sbi 1128 fs/ext4/ialloc.c ei->i_csum_seed = ext4_chksum(sbi, csum, (__u8 *)&gen, sbi 1135 fs/ext4/ialloc.c ei->i_extra_isize = sbi->s_want_extra_isize; sbi 1350 fs/ext4/ialloc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 1389 fs/ext4/ialloc.c sbi->s_inodes_per_block); sbi 1391 fs/ext4/ialloc.c if ((used_blks < 0) || (used_blks > sbi->s_itb_per_group) || sbi 1405 fs/ext4/ialloc.c num = sbi->s_itb_per_group - used_blks; sbi 56 fs/ext4/inode.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 62 fs/ext4/inode.c csum = ext4_chksum(sbi, ei->i_csum_seed, (__u8 *)raw, offset); sbi 63 fs/ext4/inode.c csum = ext4_chksum(sbi, csum, (__u8 *)&dummy_csum, csum_size); sbi 65 fs/ext4/inode.c csum = ext4_chksum(sbi, csum, (__u8 *)raw + offset, sbi 70 fs/ext4/inode.c csum = ext4_chksum(sbi, csum, (__u8 *)raw + sbi 74 fs/ext4/inode.c csum = ext4_chksum(sbi, csum, (__u8 *)&dummy_csum, sbi 78 fs/ext4/inode.c csum = ext4_chksum(sbi, csum, (__u8 *)raw + offset, sbi 365 fs/ext4/inode.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 381 fs/ext4/inode.c percpu_counter_sub(&sbi->s_dirtyclusters_counter, used); sbi 387 fs/ext4/inode.c dquot_claim_block(inode, EXT4_C2B(sbi, used)); sbi 394 fs/ext4/inode.c dquot_release_reservation_block(inode, EXT4_C2B(sbi, used)); sbi 1607 fs/ext4/inode.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 1616 fs/ext4/inode.c ret = dquot_reserve_block(inode, EXT4_C2B(sbi, 1)); sbi 1621 fs/ext4/inode.c if (ext4_claim_free_clusters(sbi, 1, 0)) { sbi 1623 fs/ext4/inode.c dquot_release_reservation_block(inode, EXT4_C2B(sbi, 1)); sbi 1635 fs/ext4/inode.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 1661 fs/ext4/inode.c percpu_counter_sub(&sbi->s_dirtyclusters_counter, to_free); sbi 1665 fs/ext4/inode.c dquot_release_reservation_block(inode, EXT4_C2B(sbi, to_free)); sbi 1735 fs/ext4/inode.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 1745 fs/ext4/inode.c percpu_counter_sum(&sbi->s_freeclusters_counter))); sbi 1748 fs/ext4/inode.c percpu_counter_sum(&sbi->s_dirtyclusters_counter))); sbi 1773 fs/ext4/inode.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 1788 fs/ext4/inode.c if (sbi->s_cluster_ratio == 1) { sbi 1797 fs/ext4/inode.c EXT4_B2C(sbi, lblk)); sbi 2729 fs/ext4/inode.c struct ext4_sb_info *sbi = EXT4_SB(mapping->host->i_sb); sbi 2737 fs/ext4/inode.c percpu_down_read(&sbi->s_writepages_rwsem); sbi 2764 fs/ext4/inode.c sbi->s_mount_flags & EXT4_MF_FS_ABORTED)) { sbi 2924 fs/ext4/inode.c if (ret == -ENOSPC && sbi->s_journal) { sbi 2930 fs/ext4/inode.c jbd2_journal_force_commit_nested(sbi->s_journal); sbi 2958 fs/ext4/inode.c percpu_up_read(&sbi->s_writepages_rwsem); sbi 2968 fs/ext4/inode.c struct ext4_sb_info *sbi = EXT4_SB(mapping->host->i_sb); sbi 2973 fs/ext4/inode.c percpu_down_read(&sbi->s_writepages_rwsem); sbi 2979 fs/ext4/inode.c percpu_up_read(&sbi->s_writepages_rwsem); sbi 2986 fs/ext4/inode.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 2997 fs/ext4/inode.c percpu_counter_read_positive(&sbi->s_freeclusters_counter); sbi 2999 fs/ext4/inode.c percpu_counter_read_positive(&sbi->s_dirtyclusters_counter); sbi 3421 fs/ext4/inode.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 3545 fs/ext4/inode.c iomap->dax_dev = sbi->s_daxdev; sbi 4901 fs/ext4/inode.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 4905 fs/ext4/inode.c csum = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)&inum, sbi 4907 fs/ext4/inode.c ei->i_csum_seed = ext4_chksum(sbi, csum, (__u8 *)&gen, sbi 5617 fs/ext4/inode.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 5619 fs/ext4/inode.c if (attr->ia_size > sbi->s_bitmap_maxbytes) sbi 6094 fs/ext4/inode.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 6103 fs/ext4/inode.c if (EXT4_I(inode)->i_extra_isize < sbi->s_want_extra_isize) sbi 6104 fs/ext4/inode.c ext4_try_to_expand_extra_isize(inode, sbi->s_want_extra_isize, sbi 6150 fs/ext4/inode.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 6188 fs/ext4/inode.c percpu_down_write(&sbi->s_writepages_rwsem); sbi 6205 fs/ext4/inode.c percpu_up_write(&sbi->s_writepages_rwsem); sbi 6213 fs/ext4/inode.c percpu_up_write(&sbi->s_writepages_rwsem); sbi 92 fs/ext4/ioctl.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 100 fs/ext4/ioctl.c csum = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)&inum, sizeof(inum)); sbi 101 fs/ext4/ioctl.c ei->i_csum_seed = ext4_chksum(sbi, csum, (__u8 *)&gen, sizeof(gen)); sbi 572 fs/ext4/ioctl.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 584 fs/ext4/ioctl.c if (ext4_forced_shutdown(sbi)) sbi 593 fs/ext4/ioctl.c set_bit(EXT4_FLAGS_SHUTDOWN, &sbi->s_ext4_flags); sbi 597 fs/ext4/ioctl.c set_bit(EXT4_FLAGS_SHUTDOWN, &sbi->s_ext4_flags); sbi 598 fs/ext4/ioctl.c if (sbi->s_journal && !is_journal_aborted(sbi->s_journal)) { sbi 600 fs/ext4/ioctl.c jbd2_journal_abort(sbi->s_journal, -ESHUTDOWN); sbi 604 fs/ext4/ioctl.c set_bit(EXT4_FLAGS_SHUTDOWN, &sbi->s_ext4_flags); sbi 605 fs/ext4/ioctl.c if (sbi->s_journal && !is_journal_aborted(sbi->s_journal)) sbi 606 fs/ext4/ioctl.c jbd2_journal_abort(sbi->s_journal, -ESHUTDOWN); sbi 1146 fs/ext4/ioctl.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 1151 fs/ext4/ioctl.c if (uuid_is_zero(sbi->s_es->s_encrypt_pw_salt)) { sbi 1160 fs/ext4/ioctl.c err = ext4_journal_get_write_access(handle, sbi->s_sbh); sbi 1163 fs/ext4/ioctl.c generate_random_uuid(sbi->s_es->s_encrypt_pw_salt); sbi 1165 fs/ext4/ioctl.c sbi->s_sbh); sbi 1176 fs/ext4/ioctl.c sbi->s_es->s_encrypt_pw_salt, 16)) sbi 657 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 682 fs/ext4/mballoc.c buddy + sbi->s_mb_offsets[min]); sbi 715 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 761 fs/ext4/mballoc.c spin_lock(&sbi->s_bal_lock); sbi 762 fs/ext4/mballoc.c sbi->s_mb_buddies_generated++; sbi 763 fs/ext4/mballoc.c sbi->s_mb_generation_time += period; sbi 764 fs/ext4/mballoc.c spin_unlock(&sbi->s_bal_lock); sbi 1109 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 1110 fs/ext4/mballoc.c struct inode *inode = sbi->s_buddy_cache; sbi 1447 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 1451 fs/ext4/mballoc.c blocknr += EXT4_C2B(sbi, block); sbi 1637 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); sbi 1668 fs/ext4/mballoc.c spin_lock(&sbi->s_md_lock); sbi 1669 fs/ext4/mballoc.c sbi->s_mb_last_group = ac->ac_f_ex.fe_group; sbi 1670 fs/ext4/mballoc.c sbi->s_mb_last_start = ac->ac_f_ex.fe_start; sbi 1671 fs/ext4/mballoc.c spin_unlock(&sbi->s_md_lock); sbi 1683 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); sbi 1694 fs/ext4/mballoc.c if (ac->ac_found > sbi->s_mb_max_to_scan && sbi 1706 fs/ext4/mballoc.c if ((finish_group || ac->ac_found > sbi->s_mb_min_to_scan) sbi 1823 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); sbi 1846 fs/ext4/mballoc.c if (max >= ac->ac_g_ex.fe_len && ac->ac_g_ex.fe_len == sbi->s_stripe) { sbi 1852 fs/ext4/mballoc.c if (do_div(start, sbi->s_stripe) == 0) { sbi 1998 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 2006 fs/ext4/mballoc.c BUG_ON(sbi->s_stripe == 0); sbi 2011 fs/ext4/mballoc.c a = first_group_block + sbi->s_stripe - 1; sbi 2012 fs/ext4/mballoc.c do_div(a, sbi->s_stripe); sbi 2013 fs/ext4/mballoc.c i = (a * sbi->s_stripe) - first_group_block; sbi 2017 fs/ext4/mballoc.c max = mb_find_extent(e4b, i, sbi->s_stripe, &ex); sbi 2018 fs/ext4/mballoc.c if (max >= sbi->s_stripe) { sbi 2026 fs/ext4/mballoc.c i += sbi->s_stripe; sbi 2106 fs/ext4/mballoc.c struct ext4_sb_info *sbi; sbi 2111 fs/ext4/mballoc.c sbi = EXT4_SB(sb); sbi 2115 fs/ext4/mballoc.c ngroups = sbi->s_blockfile_groups; sbi 2141 fs/ext4/mballoc.c if (i >= sbi->s_mb_order2_reqs && i <= sb->s_blocksize_bits + 2) { sbi 2153 fs/ext4/mballoc.c spin_lock(&sbi->s_md_lock); sbi 2154 fs/ext4/mballoc.c ac->ac_g_ex.fe_group = sbi->s_mb_last_group; sbi 2155 fs/ext4/mballoc.c ac->ac_g_ex.fe_start = sbi->s_mb_last_start; sbi 2156 fs/ext4/mballoc.c spin_unlock(&sbi->s_md_lock); sbi 2214 fs/ext4/mballoc.c else if (cr == 1 && sbi->s_stripe && sbi 2215 fs/ext4/mballoc.c !(ac->ac_g_ex.fe_len % sbi->s_stripe)) sbi 2249 fs/ext4/mballoc.c atomic_inc(&sbi->s_mb_lost_chunks); sbi 2359 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 2365 fs/ext4/mballoc.c if (size <= sbi->s_group_info_size) sbi 2368 fs/ext4/mballoc.c size = roundup_pow_of_two(sizeof(*sbi->s_group_info) * size); sbi 2375 fs/ext4/mballoc.c old_groupinfo = rcu_dereference(sbi->s_group_info); sbi 2378 fs/ext4/mballoc.c sbi->s_group_info_size * sizeof(*sbi->s_group_info)); sbi 2380 fs/ext4/mballoc.c rcu_assign_pointer(sbi->s_group_info, new_groupinfo); sbi 2381 fs/ext4/mballoc.c sbi->s_group_info_size = size / sizeof(*sbi->s_group_info); sbi 2385 fs/ext4/mballoc.c sbi->s_group_info_size); sbi 2396 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 2415 fs/ext4/mballoc.c rcu_dereference(sbi->s_group_info)[idx] = meta_group_info; sbi 2419 fs/ext4/mballoc.c meta_group_info = sbi_array_rcu_deref(sbi, s_group_info, idx); sbi 2470 fs/ext4/mballoc.c group_info = rcu_dereference(sbi->s_group_info); sbi 2483 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 2493 fs/ext4/mballoc.c sbi->s_buddy_cache = new_inode(sb); sbi 2494 fs/ext4/mballoc.c if (sbi->s_buddy_cache == NULL) { sbi 2502 fs/ext4/mballoc.c sbi->s_buddy_cache->i_ino = EXT4_BAD_INO; sbi 2503 fs/ext4/mballoc.c EXT4_I(sbi->s_buddy_cache)->i_disksize = 0; sbi 2521 fs/ext4/mballoc.c i = sbi->s_group_info_size; sbi 2523 fs/ext4/mballoc.c group_info = rcu_dereference(sbi->s_group_info); sbi 2527 fs/ext4/mballoc.c iput(sbi->s_buddy_cache); sbi 2530 fs/ext4/mballoc.c kvfree(rcu_dereference(sbi->s_group_info)); sbi 2586 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 2592 fs/ext4/mballoc.c i = (sb->s_blocksize_bits + 2) * sizeof(*sbi->s_mb_offsets); sbi 2594 fs/ext4/mballoc.c sbi->s_mb_offsets = kmalloc(i, GFP_KERNEL); sbi 2595 fs/ext4/mballoc.c if (sbi->s_mb_offsets == NULL) { sbi 2600 fs/ext4/mballoc.c i = (sb->s_blocksize_bits + 2) * sizeof(*sbi->s_mb_maxs); sbi 2601 fs/ext4/mballoc.c sbi->s_mb_maxs = kmalloc(i, GFP_KERNEL); sbi 2602 fs/ext4/mballoc.c if (sbi->s_mb_maxs == NULL) { sbi 2612 fs/ext4/mballoc.c sbi->s_mb_maxs[0] = sb->s_blocksize << 3; sbi 2613 fs/ext4/mballoc.c sbi->s_mb_offsets[0] = 0; sbi 2620 fs/ext4/mballoc.c sbi->s_mb_offsets[i] = offset; sbi 2621 fs/ext4/mballoc.c sbi->s_mb_maxs[i] = max; sbi 2628 fs/ext4/mballoc.c spin_lock_init(&sbi->s_md_lock); sbi 2629 fs/ext4/mballoc.c spin_lock_init(&sbi->s_bal_lock); sbi 2630 fs/ext4/mballoc.c sbi->s_mb_free_pending = 0; sbi 2631 fs/ext4/mballoc.c INIT_LIST_HEAD(&sbi->s_freed_data_list); sbi 2633 fs/ext4/mballoc.c sbi->s_mb_max_to_scan = MB_DEFAULT_MAX_TO_SCAN; sbi 2634 fs/ext4/mballoc.c sbi->s_mb_min_to_scan = MB_DEFAULT_MIN_TO_SCAN; sbi 2635 fs/ext4/mballoc.c sbi->s_mb_stats = MB_DEFAULT_STATS; sbi 2636 fs/ext4/mballoc.c sbi->s_mb_stream_request = MB_DEFAULT_STREAM_THRESHOLD; sbi 2637 fs/ext4/mballoc.c sbi->s_mb_order2_reqs = MB_DEFAULT_ORDER2_REQS; sbi 2650 fs/ext4/mballoc.c sbi->s_mb_group_prealloc = max(MB_DEFAULT_GROUP_PREALLOC >> sbi 2651 fs/ext4/mballoc.c sbi->s_cluster_bits, 32); sbi 2660 fs/ext4/mballoc.c if (sbi->s_stripe > 1) { sbi 2661 fs/ext4/mballoc.c sbi->s_mb_group_prealloc = roundup( sbi 2662 fs/ext4/mballoc.c sbi->s_mb_group_prealloc, sbi->s_stripe); sbi 2665 fs/ext4/mballoc.c sbi->s_locality_groups = alloc_percpu(struct ext4_locality_group); sbi 2666 fs/ext4/mballoc.c if (sbi->s_locality_groups == NULL) { sbi 2672 fs/ext4/mballoc.c lg = per_cpu_ptr(sbi->s_locality_groups, i); sbi 2687 fs/ext4/mballoc.c free_percpu(sbi->s_locality_groups); sbi 2688 fs/ext4/mballoc.c sbi->s_locality_groups = NULL; sbi 2690 fs/ext4/mballoc.c kfree(sbi->s_mb_offsets); sbi 2691 fs/ext4/mballoc.c sbi->s_mb_offsets = NULL; sbi 2692 fs/ext4/mballoc.c kfree(sbi->s_mb_maxs); sbi 2693 fs/ext4/mballoc.c sbi->s_mb_maxs = NULL; sbi 2721 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 2724 fs/ext4/mballoc.c if (sbi->s_group_info) { sbi 2740 fs/ext4/mballoc.c group_info = rcu_dereference(sbi->s_group_info); sbi 2746 fs/ext4/mballoc.c kfree(sbi->s_mb_offsets); sbi 2747 fs/ext4/mballoc.c kfree(sbi->s_mb_maxs); sbi 2748 fs/ext4/mballoc.c iput(sbi->s_buddy_cache); sbi 2749 fs/ext4/mballoc.c if (sbi->s_mb_stats) { sbi 2752 fs/ext4/mballoc.c atomic_read(&sbi->s_bal_allocated), sbi 2753 fs/ext4/mballoc.c atomic_read(&sbi->s_bal_reqs), sbi 2754 fs/ext4/mballoc.c atomic_read(&sbi->s_bal_success)); sbi 2758 fs/ext4/mballoc.c atomic_read(&sbi->s_bal_ex_scanned), sbi 2759 fs/ext4/mballoc.c atomic_read(&sbi->s_bal_goals), sbi 2760 fs/ext4/mballoc.c atomic_read(&sbi->s_bal_2orders), sbi 2761 fs/ext4/mballoc.c atomic_read(&sbi->s_bal_breaks), sbi 2762 fs/ext4/mballoc.c atomic_read(&sbi->s_mb_lost_chunks)); sbi 2765 fs/ext4/mballoc.c sbi->s_mb_buddies_generated, sbi 2766 fs/ext4/mballoc.c sbi->s_mb_generation_time); sbi 2769 fs/ext4/mballoc.c atomic_read(&sbi->s_mb_preallocated), sbi 2770 fs/ext4/mballoc.c atomic_read(&sbi->s_mb_discarded)); sbi 2773 fs/ext4/mballoc.c free_percpu(sbi->s_locality_groups); sbi 2854 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 2863 fs/ext4/mballoc.c spin_lock(&sbi->s_md_lock); sbi 2864 fs/ext4/mballoc.c list_for_each_entry(entry, &sbi->s_freed_data_list, efd_list) { sbi 2870 fs/ext4/mballoc.c list_cut_position(&freed_data_list, &sbi->s_freed_data_list, sbi 2872 fs/ext4/mballoc.c spin_unlock(&sbi->s_md_lock); sbi 2949 fs/ext4/mballoc.c struct ext4_sb_info *sbi; sbi 2958 fs/ext4/mballoc.c sbi = EXT4_SB(sb); sbi 2987 fs/ext4/mballoc.c len = EXT4_C2B(sbi, ac->ac_b_ex.fe_len); sbi 2988 fs/ext4/mballoc.c if (!ext4_data_block_valid(sbi, block, len)) { sbi 3030 fs/ext4/mballoc.c percpu_counter_sub(&sbi->s_freeclusters_counter, ac->ac_b_ex.fe_len); sbi 3036 fs/ext4/mballoc.c percpu_counter_sub(&sbi->s_dirtyclusters_counter, sbi 3039 fs/ext4/mballoc.c if (sbi->s_log_groups_per_flex) { sbi 3040 fs/ext4/mballoc.c ext4_group_t flex_group = ext4_flex_group(sbi, sbi 3043 fs/ext4/mballoc.c &sbi_array_rcu_deref(sbi, s_flex_groups, sbi 3085 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); sbi 3117 fs/ext4/mballoc.c size = ac->ac_o_ex.fe_logical + EXT4_C2B(sbi, ac->ac_o_ex.fe_len); sbi 3254 fs/ext4/mballoc.c ac->ac_g_ex.fe_len = EXT4_NUM_B2C(sbi, size); sbi 3278 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); sbi 3280 fs/ext4/mballoc.c if (sbi->s_mb_stats && ac->ac_g_ex.fe_len > 1) { sbi 3281 fs/ext4/mballoc.c atomic_inc(&sbi->s_bal_reqs); sbi 3282 fs/ext4/mballoc.c atomic_add(ac->ac_b_ex.fe_len, &sbi->s_bal_allocated); sbi 3284 fs/ext4/mballoc.c atomic_inc(&sbi->s_bal_success); sbi 3285 fs/ext4/mballoc.c atomic_add(ac->ac_found, &sbi->s_bal_ex_scanned); sbi 3288 fs/ext4/mballoc.c atomic_inc(&sbi->s_bal_goals); sbi 3289 fs/ext4/mballoc.c if (ac->ac_found > sbi->s_mb_max_to_scan) sbi 3290 fs/ext4/mballoc.c atomic_inc(&sbi->s_bal_breaks); sbi 3341 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); sbi 3348 fs/ext4/mballoc.c end = min(pa->pa_pstart + EXT4_C2B(sbi, pa->pa_len), sbi 3349 fs/ext4/mballoc.c start + EXT4_C2B(sbi, ac->ac_o_ex.fe_len)); sbi 3350 fs/ext4/mballoc.c len = EXT4_NUM_B2C(sbi, end - start); sbi 3358 fs/ext4/mballoc.c BUG_ON(end > pa->pa_pstart + EXT4_C2B(sbi, pa->pa_len)); sbi 3424 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); sbi 3443 fs/ext4/mballoc.c EXT4_C2B(sbi, pa->pa_len))) sbi 3448 fs/ext4/mballoc.c (pa->pa_pstart + EXT4_C2B(sbi, pa->pa_len) > sbi 3649 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 3681 fs/ext4/mballoc.c wins = EXT4_C2B(sbi, ac->ac_b_ex.fe_len - ac->ac_o_ex.fe_len); sbi 3687 fs/ext4/mballoc.c EXT4_C2B(sbi, ac->ac_b_ex.fe_len); sbi 3692 fs/ext4/mballoc.c EXT4_NUM_B2C(sbi, win); sbi 3717 fs/ext4/mballoc.c atomic_add(pa->pa_free, &sbi->s_mb_preallocated); sbi 3821 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 3831 fs/ext4/mballoc.c grp_blk_start = pa->pa_pstart - EXT4_C2B(sbi, bit); sbi 3847 fs/ext4/mballoc.c EXT4_C2B(sbi, bit)), sbi 3865 fs/ext4/mballoc.c atomic_add(free, &sbi->s_mb_discarded); sbi 4188 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); sbi 4198 fs/ext4/mballoc.c size = ac->ac_o_ex.fe_logical + EXT4_C2B(sbi, ac->ac_o_ex.fe_len); sbi 4202 fs/ext4/mballoc.c if ((size == isize) && !ext4_fs_is_busy(sbi) && sbi 4208 fs/ext4/mballoc.c if (sbi->s_mb_group_prealloc <= 0) { sbi 4215 fs/ext4/mballoc.c if (size > sbi->s_mb_stream_request) { sbi 4226 fs/ext4/mballoc.c ac->ac_lg = raw_cpu_ptr(sbi->s_locality_groups); sbi 4240 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 4241 fs/ext4/mballoc.c struct ext4_super_block *es = sbi->s_es; sbi 4262 fs/ext4/mballoc.c ac->ac_b_ex.fe_logical = EXT4_LBLK_CMASK(sbi, ar->logical); sbi 4425 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(ac->ac_sb); sbi 4431 fs/ext4/mballoc.c pa->pa_pstart += EXT4_C2B(sbi, ac->ac_b_ex.fe_len); sbi 4432 fs/ext4/mballoc.c pa->pa_lstart += EXT4_C2B(sbi, ac->ac_b_ex.fe_len); sbi 4489 fs/ext4/mballoc.c struct ext4_sb_info *sbi; sbi 4497 fs/ext4/mballoc.c sbi = EXT4_SB(sb); sbi 4511 fs/ext4/mballoc.c ext4_claim_free_clusters(sbi, ar->len, ar->flags)) { sbi 4524 fs/ext4/mballoc.c EXT4_C2B(sbi, ar->len)); sbi 4528 fs/ext4/mballoc.c EXT4_C2B(sbi, ar->len))) { sbi 4603 fs/ext4/mballoc.c dquot_free_block(ar->inode, EXT4_C2B(sbi, inquota - ar->len)); sbi 4607 fs/ext4/mballoc.c percpu_counter_sub(&sbi->s_dirtyclusters_counter, sbi 4621 fs/ext4/mballoc.c static void ext4_try_merge_freed_extent(struct ext4_sb_info *sbi, sbi 4638 fs/ext4/mballoc.c spin_lock(&sbi->s_md_lock); sbi 4640 fs/ext4/mballoc.c spin_unlock(&sbi->s_md_lock); sbi 4655 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 4685 fs/ext4/mballoc.c EXT4_C2B(sbi, cluster), sbi 4698 fs/ext4/mballoc.c ext4_try_merge_freed_extent(sbi, entry, new_entry, sbi 4705 fs/ext4/mballoc.c ext4_try_merge_freed_extent(sbi, entry, new_entry, sbi 4709 fs/ext4/mballoc.c spin_lock(&sbi->s_md_lock); sbi 4710 fs/ext4/mballoc.c list_add_tail(&new_entry->efd_list, &sbi->s_freed_data_list); sbi 4711 fs/ext4/mballoc.c sbi->s_mb_free_pending += clusters; sbi 4712 fs/ext4/mballoc.c spin_unlock(&sbi->s_md_lock); sbi 4736 fs/ext4/mballoc.c struct ext4_sb_info *sbi; sbi 4750 fs/ext4/mballoc.c sbi = EXT4_SB(sb); sbi 4752 fs/ext4/mballoc.c !ext4_data_block_valid(sbi, block, count)) { sbi 4775 fs/ext4/mballoc.c overflow = EXT4_PBLK_COFF(sbi, block); sbi 4778 fs/ext4/mballoc.c overflow = sbi->s_cluster_ratio - overflow; sbi 4789 fs/ext4/mballoc.c overflow = EXT4_LBLK_COFF(sbi, count); sbi 4797 fs/ext4/mballoc.c count += sbi->s_cluster_ratio - overflow; sbi 4824 fs/ext4/mballoc.c if (EXT4_C2B(sbi, bit) + count > EXT4_BLOCKS_PER_GROUP(sb)) { sbi 4825 fs/ext4/mballoc.c overflow = EXT4_C2B(sbi, bit) + count - sbi 4829 fs/ext4/mballoc.c count_clusters = EXT4_NUM_B2C(sbi, count); sbi 4845 fs/ext4/mballoc.c sbi->s_itb_per_group) || sbi 4847 fs/ext4/mballoc.c sbi->s_itb_per_group)) { sbi 4935 fs/ext4/mballoc.c if (sbi->s_log_groups_per_flex) { sbi 4936 fs/ext4/mballoc.c ext4_group_t flex_group = ext4_flex_group(sbi, block_group); sbi 4938 fs/ext4/mballoc.c &sbi_array_rcu_deref(sbi, s_flex_groups, sbi 4949 fs/ext4/mballoc.c dquot_free_block(inode, EXT4_C2B(sbi, count_clusters)); sbi 4950 fs/ext4/mballoc.c percpu_counter_add(&sbi->s_freeclusters_counter, sbi 4996 fs/ext4/mballoc.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 5000 fs/ext4/mballoc.c ext4_fsblk_t first_cluster = EXT4_B2C(sbi, block); sbi 5001 fs/ext4/mballoc.c ext4_fsblk_t last_cluster = EXT4_B2C(sbi, block + count - 1); sbi 5036 fs/ext4/mballoc.c in_range(block, ext4_inode_table(sb, desc), sbi->s_itb_per_group) || sbi 5038 fs/ext4/mballoc.c sbi->s_itb_per_group)) { sbi 5090 fs/ext4/mballoc.c percpu_counter_add(&sbi->s_freeclusters_counter, sbi 5093 fs/ext4/mballoc.c if (sbi->s_log_groups_per_flex) { sbi 5094 fs/ext4/mballoc.c ext4_group_t flex_group = ext4_flex_group(sbi, block_group); sbi 5096 fs/ext4/mballoc.c &sbi_array_rcu_deref(sbi, s_flex_groups, sbi 430 fs/ext4/migrate.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 455 fs/ext4/migrate.c percpu_down_write(&sbi->s_writepages_rwsem); sbi 605 fs/ext4/migrate.c percpu_up_write(&sbi->s_writepages_rwsem); sbi 615 fs/ext4/migrate.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 616 fs/ext4/migrate.c struct ext4_super_block *es = sbi->s_es; sbi 640 fs/ext4/migrate.c percpu_down_write(&sbi->s_writepages_rwsem); sbi 682 fs/ext4/migrate.c percpu_up_write(&sbi->s_writepages_rwsem); sbi 13 fs/ext4/mmp.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 17 fs/ext4/mmp.c csum = ext4_chksum(sbi, sbi->s_csum_seed, (char *)mmp, offset); sbi 343 fs/ext4/namei.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 347 fs/ext4/namei.c csum = ext4_chksum(sbi, ei->i_csum_seed, (__u8 *)dirent, size); sbi 438 fs/ext4/namei.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 446 fs/ext4/namei.c csum = ext4_chksum(sbi, ei->i_csum_seed, (__u8 *)dirent, size); sbi 447 fs/ext4/namei.c csum = ext4_chksum(sbi, csum, (__u8 *)t, offset); sbi 448 fs/ext4/namei.c csum = ext4_chksum(sbi, csum, (__u8 *)&dummy_csum, sizeof(dummy_csum)); sbi 1285 fs/ext4/namei.c const struct ext4_sb_info *sbi = EXT4_SB(parent->i_sb); sbi 1286 fs/ext4/namei.c const struct unicode_map *um = sbi->s_encoding; sbi 1298 fs/ext4/namei.c if (ext4_has_strict_mode(sbi)) sbi 2168 fs/ext4/namei.c struct ext4_sb_info *sbi; sbi 2180 fs/ext4/namei.c sbi = EXT4_SB(sb); sbi 2186 fs/ext4/namei.c if (ext4_has_strict_mode(sbi) && IS_CASEFOLDED(dir) && sbi 2187 fs/ext4/namei.c sbi->s_encoding && utf8_validate(sbi->s_encoding, &dentry->d_name)) sbi 2906 fs/ext4/namei.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 2911 fs/ext4/namei.c if (!sbi->s_journal || is_bad_inode(inode)) sbi 2932 fs/ext4/namei.c BUFFER_TRACE(sbi->s_sbh, "get_write_access"); sbi 2933 fs/ext4/namei.c err = ext4_journal_get_write_access(handle, sbi->s_sbh); sbi 2941 fs/ext4/namei.c mutex_lock(&sbi->s_orphan_lock); sbi 2947 fs/ext4/namei.c (le32_to_cpu(sbi->s_es->s_inodes_count))) { sbi 2949 fs/ext4/namei.c NEXT_ORPHAN(inode) = le32_to_cpu(sbi->s_es->s_last_orphan); sbi 2950 fs/ext4/namei.c sbi->s_es->s_last_orphan = cpu_to_le32(inode->i_ino); sbi 2953 fs/ext4/namei.c list_add(&EXT4_I(inode)->i_orphan, &sbi->s_orphan); sbi 2954 fs/ext4/namei.c mutex_unlock(&sbi->s_orphan_lock); sbi 2967 fs/ext4/namei.c mutex_lock(&sbi->s_orphan_lock); sbi 2969 fs/ext4/namei.c mutex_unlock(&sbi->s_orphan_lock); sbi 2990 fs/ext4/namei.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 2995 fs/ext4/namei.c if (!sbi->s_journal && !(sbi->s_mount_state & EXT4_ORPHAN_FS)) sbi 3009 fs/ext4/namei.c mutex_lock(&sbi->s_orphan_lock); sbi 3020 fs/ext4/namei.c mutex_unlock(&sbi->s_orphan_lock); sbi 3025 fs/ext4/namei.c if (prev == &sbi->s_orphan) { sbi 3027 fs/ext4/namei.c BUFFER_TRACE(sbi->s_sbh, "get_write_access"); sbi 3028 fs/ext4/namei.c err = ext4_journal_get_write_access(handle, sbi->s_sbh); sbi 3030 fs/ext4/namei.c mutex_unlock(&sbi->s_orphan_lock); sbi 3033 fs/ext4/namei.c sbi->s_es->s_last_orphan = cpu_to_le32(ino_next); sbi 3034 fs/ext4/namei.c mutex_unlock(&sbi->s_orphan_lock); sbi 3045 fs/ext4/namei.c mutex_unlock(&sbi->s_orphan_lock); sbi 3050 fs/ext4/namei.c mutex_unlock(&sbi->s_orphan_lock); sbi 192 fs/ext4/page-io.c struct ext4_sb_info *sbi = EXT4_SB(io_end->inode->i_sb); sbi 198 fs/ext4/page-io.c WARN_ON(!io_end->handle && sbi->s_journal); sbi 200 fs/ext4/page-io.c wq = sbi->rsv_conversion_wq; sbi 49 fs/ext4/resize.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 60 fs/ext4/resize.c if (EXT4_B2C(sbi, sbi->s_sbh->b_blocknr) != sbi 118 fs/ext4/resize.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 119 fs/ext4/resize.c struct ext4_super_block *es = sbi->s_es; sbi 123 fs/ext4/resize.c ext4_fsblk_t itend = input->inode_table + sbi->s_itb_per_group; sbi 130 fs/ext4/resize.c if (group != sbi->s_groups_count) { sbi 132 fs/ext4/resize.c input->group, sbi->s_groups_count); sbi 139 fs/ext4/resize.c input->blocks_count - 2 - overhead - sbi->s_itb_per_group; sbi 455 fs/ext4/resize.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 468 fs/ext4/resize.c group = ext4_get_group_number(sb, EXT4_C2B(sbi, first_cluster)); sbi 469 fs/ext4/resize.c start = EXT4_B2C(sbi, ext4_group_first_block_no(sb, group)); sbi 528 fs/ext4/resize.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 529 fs/ext4/resize.c struct ext4_super_block *es = sbi->s_es; sbi 539 fs/ext4/resize.c group_data[0].group != sbi->s_groups_count); sbi 590 fs/ext4/resize.c memcpy(gdb->b_data, sbi_array_rcu_deref(sbi, sbi 620 fs/ext4/resize.c block, sbi->s_itb_per_group); sbi 621 fs/ext4/resize.c err = sb_issue_zeroout(sb, block, sbi->s_itb_per_group, sbi 646 fs/ext4/resize.c EXT4_NUM_B2C(sbi, overhead)); sbi 648 fs/ext4/resize.c ext4_mark_bitmap_end(EXT4_B2C(sbi, group_data[i].blocks_count), sbi 692 fs/ext4/resize.c EXT4_B2C(sbi, start), sbi 693 fs/ext4/resize.c EXT4_B2C(sbi, sbi 706 fs/ext4/resize.c EXT4_B2C(sbi, start), sbi 707 fs/ext4/resize.c EXT4_B2C(sbi, sbi 1112 fs/ext4/resize.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 1132 fs/ext4/resize.c last = sbi->s_groups_count; sbi 1138 fs/ext4/resize.c while (group < sbi->s_groups_count) { sbi 1203 fs/ext4/resize.c sbi->s_mount_state &= ~EXT4_VALID_FS; sbi 1204 fs/ext4/resize.c sbi->s_es->s_state &= cpu_to_le16(~EXT4_VALID_FS); sbi 1205 fs/ext4/resize.c mark_buffer_dirty(sbi->s_sbh); sbi 1223 fs/ext4/resize.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 1224 fs/ext4/resize.c struct ext4_super_block *es = sbi->s_es; sbi 1244 fs/ext4/resize.c gdb_bh = sbi_array_rcu_deref(sbi, s_group_desc, sbi 1311 fs/ext4/resize.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 1327 fs/ext4/resize.c gdb_bh = sbi_array_rcu_deref(sbi, s_group_desc, gdb_num); sbi 1382 fs/ext4/resize.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 1383 fs/ext4/resize.c struct ext4_super_block *es = sbi->s_es; sbi 1399 fs/ext4/resize.c free_blocks += EXT4_C2B(sbi, group_data[i].free_clusters_count); sbi 1436 fs/ext4/resize.c sbi->s_groups_count += flex_gd->count; sbi 1437 fs/ext4/resize.c sbi->s_blockfile_groups = min_t(ext4_group_t, sbi->s_groups_count, sbi 1446 fs/ext4/resize.c percpu_counter_add(&sbi->s_freeclusters_counter, sbi 1447 fs/ext4/resize.c EXT4_NUM_B2C(sbi, free_blocks)); sbi 1448 fs/ext4/resize.c percpu_counter_add(&sbi->s_freeinodes_counter, sbi 1452 fs/ext4/resize.c percpu_counter_read(&sbi->s_freeclusters_counter)); sbi 1453 fs/ext4/resize.c if (ext4_has_feature_flex_bg(sb) && sbi->s_log_groups_per_flex) { sbi 1457 fs/ext4/resize.c flex_group = ext4_flex_group(sbi, group_data[0].group); sbi 1458 fs/ext4/resize.c fg = sbi_array_rcu_deref(sbi, s_flex_groups, flex_group); sbi 1459 fs/ext4/resize.c atomic64_add(EXT4_NUM_B2C(sbi, free_blocks), sbi 1484 fs/ext4/resize.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 1485 fs/ext4/resize.c struct ext4_super_block *es = sbi->s_es; sbi 1520 fs/ext4/resize.c BUFFER_TRACE(sbi->s_sbh, "get_write_access"); sbi 1521 fs/ext4/resize.c err = ext4_journal_get_write_access(handle, sbi->s_sbh); sbi 1526 fs/ext4/resize.c BUG_ON(group != sbi->s_groups_count); sbi 1552 fs/ext4/resize.c update_backups(sb, sbi->s_sbh->b_blocknr, (char *)es, sbi 1557 fs/ext4/resize.c gdb_bh = sbi_array_rcu_deref(sbi, s_group_desc, sbi 1575 fs/ext4/resize.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 1576 fs/ext4/resize.c struct ext4_super_block *es = sbi->s_es; sbi 1625 fs/ext4/resize.c group_data[i - 1].blocks_count = EXT4_C2B(sbi, last + 1); sbi 1649 fs/ext4/resize.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 1650 fs/ext4/resize.c struct ext4_super_block *es = sbi->s_es; sbi 1856 fs/ext4/resize.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 1857 fs/ext4/resize.c struct ext4_super_block *es = sbi->s_es; sbi 1873 fs/ext4/resize.c (9 - sbi->s_cluster_bits))) sbi 1892 fs/ext4/resize.c BUFFER_TRACE(sbi->s_sbh, "get_write_access"); sbi 1893 fs/ext4/resize.c err = ext4_journal_get_write_access(handle, sbi->s_sbh); sbi 1899 fs/ext4/resize.c sbi->s_es->s_first_meta_bg = sbi 1900 fs/ext4/resize.c cpu_to_le32(num_desc_blocks(sb, sbi->s_groups_count)); sbi 1941 fs/ext4/resize.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 1942 fs/ext4/resize.c struct ext4_super_block *es = sbi->s_es; sbi 1953 fs/ext4/resize.c int err = 0, flexbg_size = 1 << sbi->s_log_groups_per_flex; sbi 1988 fs/ext4/resize.c o_desc_blocks = num_desc_blocks(sb, sbi->s_groups_count); sbi 2043 fs/ext4/resize.c sbi->s_itb_per_group + sbi->s_cluster_ratio) >= n_blocks_count) { sbi 2058 fs/ext4/resize.c add = EXT4_C2B(sbi, EXT4_CLUSTERS_PER_GROUP(sb) - (offset + 1)); sbi 179 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 183 fs/ext4/super.c csum = ext4_chksum(sbi, ~0, (char *)es, offset); sbi 415 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 423 fs/ext4/super.c spin_lock(&sbi->s_md_lock); sbi 428 fs/ext4/super.c spin_unlock(&sbi->s_md_lock); sbi 430 fs/ext4/super.c spin_lock(&sbi->s_md_lock); sbi 432 fs/ext4/super.c spin_unlock(&sbi->s_md_lock); sbi 830 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 839 fs/ext4/super.c percpu_counter_sub(&sbi->s_freeclusters_counter, sbi 850 fs/ext4/super.c percpu_counter_sub(&sbi->s_freeinodes_counter, sbi 908 fs/ext4/super.c static void ext4_blkdev_remove(struct ext4_sb_info *sbi) sbi 911 fs/ext4/super.c bdev = sbi->journal_bdev; sbi 914 fs/ext4/super.c sbi->journal_bdev = NULL; sbi 923 fs/ext4/super.c static void dump_orphan_list(struct super_block *sb, struct ext4_sb_info *sbi) sbi 928 fs/ext4/super.c le32_to_cpu(sbi->s_es->s_last_orphan)); sbi 931 fs/ext4/super.c list_for_each(l, &sbi->s_orphan) { sbi 958 fs/ext4/super.c struct ext4_sb_info *sbi, sbi 961 fs/ext4/super.c return rcu_dereference_protected(sbi->s_qf_names[type], sbi 972 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 973 fs/ext4/super.c struct ext4_super_block *es = sbi->s_es; sbi 982 fs/ext4/super.c destroy_workqueue(sbi->rsv_conversion_wq); sbi 984 fs/ext4/super.c if (sbi->s_journal) { sbi 985 fs/ext4/super.c aborted = is_journal_aborted(sbi->s_journal); sbi 986 fs/ext4/super.c err = jbd2_journal_destroy(sbi->s_journal); sbi 987 fs/ext4/super.c sbi->s_journal = NULL; sbi 993 fs/ext4/super.c ext4_es_unregister_shrinker(sbi); sbi 994 fs/ext4/super.c del_timer_sync(&sbi->s_err_report); sbi 1001 fs/ext4/super.c es->s_state = cpu_to_le16(sbi->s_mount_state); sbi 1007 fs/ext4/super.c group_desc = rcu_dereference(sbi->s_group_desc); sbi 1008 fs/ext4/super.c for (i = 0; i < sbi->s_gdb_count; i++) sbi 1011 fs/ext4/super.c flex_groups = rcu_dereference(sbi->s_flex_groups); sbi 1013 fs/ext4/super.c for (i = 0; i < sbi->s_flex_groups_allocated; i++) sbi 1018 fs/ext4/super.c percpu_counter_destroy(&sbi->s_freeclusters_counter); sbi 1019 fs/ext4/super.c percpu_counter_destroy(&sbi->s_freeinodes_counter); sbi 1020 fs/ext4/super.c percpu_counter_destroy(&sbi->s_dirs_counter); sbi 1021 fs/ext4/super.c percpu_counter_destroy(&sbi->s_dirtyclusters_counter); sbi 1022 fs/ext4/super.c percpu_free_rwsem(&sbi->s_writepages_rwsem); sbi 1025 fs/ext4/super.c kfree(get_qf_name(sb, sbi, i)); sbi 1032 fs/ext4/super.c if (!list_empty(&sbi->s_orphan)) sbi 1033 fs/ext4/super.c dump_orphan_list(sb, sbi); sbi 1034 fs/ext4/super.c J_ASSERT(list_empty(&sbi->s_orphan)); sbi 1038 fs/ext4/super.c if (sbi->journal_bdev && sbi->journal_bdev != sb->s_bdev) { sbi 1044 fs/ext4/super.c sync_blockdev(sbi->journal_bdev); sbi 1045 fs/ext4/super.c invalidate_bdev(sbi->journal_bdev); sbi 1046 fs/ext4/super.c ext4_blkdev_remove(sbi); sbi 1049 fs/ext4/super.c ext4_xattr_destroy_cache(sbi->s_ea_inode_cache); sbi 1050 fs/ext4/super.c sbi->s_ea_inode_cache = NULL; sbi 1052 fs/ext4/super.c ext4_xattr_destroy_cache(sbi->s_ea_block_cache); sbi 1053 fs/ext4/super.c sbi->s_ea_block_cache = NULL; sbi 1055 fs/ext4/super.c if (sbi->s_mmp_tsk) sbi 1056 fs/ext4/super.c kthread_stop(sbi->s_mmp_tsk); sbi 1057 fs/ext4/super.c brelse(sbi->s_sbh); sbi 1063 fs/ext4/super.c kobject_put(&sbi->s_kobj); sbi 1064 fs/ext4/super.c wait_for_completion(&sbi->s_kobj_unregister); sbi 1065 fs/ext4/super.c if (sbi->s_chksum_driver) sbi 1066 fs/ext4/super.c crypto_free_shash(sbi->s_chksum_driver); sbi 1067 fs/ext4/super.c kfree(sbi->s_blockgroup_lock); sbi 1068 fs/ext4/super.c fs_put_dax(sbi->s_daxdev); sbi 1070 fs/ext4/super.c utf8_unload(sbi->s_encoding); sbi 1072 fs/ext4/super.c kfree(sbi); sbi 1598 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 1599 fs/ext4/super.c char *qname, *old_qname = get_qf_name(sb, sbi, qtype); sbi 1633 fs/ext4/super.c rcu_assign_pointer(sbi->s_qf_names[qtype], qname); sbi 1644 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 1645 fs/ext4/super.c char *old_qname = get_qf_name(sb, sbi, qtype); sbi 1652 fs/ext4/super.c rcu_assign_pointer(sbi->s_qf_names[qtype], NULL); sbi 1806 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 1833 fs/ext4/super.c sbi->s_mount_flags |= EXT4_MF_FS_ABORTED; sbi 1899 fs/ext4/super.c sbi->s_commit_interval = HZ * arg; sbi 1903 fs/ext4/super.c (arg > (sbi->s_inode_size - EXT4_GOOD_OLD_INODE_SIZE))) { sbi 1908 fs/ext4/super.c sbi->s_want_extra_isize = arg; sbi 1910 fs/ext4/super.c sbi->s_max_batch_time = arg; sbi 1912 fs/ext4/super.c sbi->s_min_batch_time = arg; sbi 1920 fs/ext4/super.c sbi->s_inode_readahead_blks = arg; sbi 1925 fs/ext4/super.c sbi->s_li_wait_mult = arg; sbi 1927 fs/ext4/super.c sbi->s_max_dir_size_kb = arg; sbi 1929 fs/ext4/super.c sbi->s_stripe = arg; sbi 1936 fs/ext4/super.c sbi->s_resuid = uid; sbi 1943 fs/ext4/super.c sbi->s_resgid = gid; sbi 1999 fs/ext4/super.c sbi->s_mount_flags |= EXT4_MF_TEST_DUMMY_ENCRYPTION; sbi 2008 fs/ext4/super.c if (!sbi->s_journal) sbi 2017 fs/ext4/super.c sbi->s_mount_opt |= m->mount_opt; sbi 2022 fs/ext4/super.c sbi->s_jquota_fmt != m->mount_opt) { sbi 2033 fs/ext4/super.c sbi->s_jquota_fmt = m->mount_opt; sbi 2039 fs/ext4/super.c sbi->s_mount_opt |= m->mount_opt; sbi 2045 fs/ext4/super.c sbi->s_mount_opt |= m->mount_opt; sbi 2047 fs/ext4/super.c sbi->s_mount_opt &= ~m->mount_opt; sbi 2060 fs/ext4/super.c sbi->s_mount_opt |= m->mount_opt; sbi 2062 fs/ext4/super.c sbi->s_mount_opt &= ~m->mount_opt; sbi 2072 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 2104 fs/ext4/super.c usr_qf_name = get_qf_name(sb, sbi, USRQUOTA); sbi 2105 fs/ext4/super.c grp_qf_name = get_qf_name(sb, sbi, GRPQUOTA); sbi 2119 fs/ext4/super.c if (!sbi->s_jquota_fmt) { sbi 2128 fs/ext4/super.c BLOCK_SIZE << le32_to_cpu(sbi->s_es->s_log_block_size); sbi 2143 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 2146 fs/ext4/super.c if (sbi->s_jquota_fmt) { sbi 2149 fs/ext4/super.c switch (sbi->s_jquota_fmt) { sbi 2164 fs/ext4/super.c usr_qf_name = rcu_dereference(sbi->s_qf_names[USRQUOTA]); sbi 2165 fs/ext4/super.c grp_qf_name = rcu_dereference(sbi->s_qf_names[GRPQUOTA]); sbi 2192 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 2193 fs/ext4/super.c struct ext4_super_block *es = sbi->s_es; sbi 2194 fs/ext4/super.c int def_errors, def_mount_opt = sbi->s_def_mount_opt; sbi 2201 fs/ext4/super.c if (sbi->s_sb_block != 1) sbi 2202 fs/ext4/super.c SEQ_OPTS_PRINT("sb=%llu", sbi->s_sb_block); sbi 2209 fs/ext4/super.c if (!nodefs && !(m->mount_opt & (sbi->s_mount_opt ^ def_mount_opt))) sbi 2212 fs/ext4/super.c (sbi->s_mount_opt & m->mount_opt) != m->mount_opt) || sbi 2213 fs/ext4/super.c (!want_set && (sbi->s_mount_opt & m->mount_opt))) sbi 2218 fs/ext4/super.c if (nodefs || !uid_eq(sbi->s_resuid, make_kuid(&init_user_ns, EXT4_DEF_RESUID)) || sbi 2221 fs/ext4/super.c from_kuid_munged(&init_user_ns, sbi->s_resuid)); sbi 2222 fs/ext4/super.c if (nodefs || !gid_eq(sbi->s_resgid, make_kgid(&init_user_ns, EXT4_DEF_RESGID)) || sbi 2225 fs/ext4/super.c from_kgid_munged(&init_user_ns, sbi->s_resgid)); sbi 2233 fs/ext4/super.c if (nodefs || sbi->s_commit_interval != JBD2_DEFAULT_MAX_COMMIT_AGE*HZ) sbi 2234 fs/ext4/super.c SEQ_OPTS_PRINT("commit=%lu", sbi->s_commit_interval / HZ); sbi 2235 fs/ext4/super.c if (nodefs || sbi->s_min_batch_time != EXT4_DEF_MIN_BATCH_TIME) sbi 2236 fs/ext4/super.c SEQ_OPTS_PRINT("min_batch_time=%u", sbi->s_min_batch_time); sbi 2237 fs/ext4/super.c if (nodefs || sbi->s_max_batch_time != EXT4_DEF_MAX_BATCH_TIME) sbi 2238 fs/ext4/super.c SEQ_OPTS_PRINT("max_batch_time=%u", sbi->s_max_batch_time); sbi 2241 fs/ext4/super.c if (nodefs || sbi->s_stripe) sbi 2242 fs/ext4/super.c SEQ_OPTS_PRINT("stripe=%lu", sbi->s_stripe); sbi 2244 fs/ext4/super.c (sbi->s_mount_opt ^ def_mount_opt)) { sbi 2253 fs/ext4/super.c sbi->s_inode_readahead_blks != EXT4_DEF_INODE_READAHEAD_BLKS) sbi 2255 fs/ext4/super.c sbi->s_inode_readahead_blks); sbi 2258 fs/ext4/super.c (sbi->s_li_wait_mult != EXT4_DEF_LI_WAIT_MULT))) sbi 2259 fs/ext4/super.c SEQ_OPTS_PRINT("init_itable=%u", sbi->s_li_wait_mult); sbi 2260 fs/ext4/super.c if (nodefs || sbi->s_max_dir_size_kb) sbi 2261 fs/ext4/super.c SEQ_OPTS_PRINT("max_dir_size_kb=%u", sbi->s_max_dir_size_kb); sbi 2264 fs/ext4/super.c if (DUMMY_ENCRYPTION_ENABLED(sbi)) sbi 2290 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 2300 fs/ext4/super.c if (!(sbi->s_mount_state & EXT4_VALID_FS)) sbi 2303 fs/ext4/super.c else if (sbi->s_mount_state & EXT4_ERROR_FS) sbi 2319 fs/ext4/super.c if (!sbi->s_journal) sbi 2325 fs/ext4/super.c if (sbi->s_journal) sbi 2334 fs/ext4/super.c sbi->s_groups_count, sbi 2337 fs/ext4/super.c sbi->s_mount_opt, sbi->s_mount_opt2); sbi 2345 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 2349 fs/ext4/super.c if (!sbi->s_log_groups_per_flex) sbi 2352 fs/ext4/super.c size = ext4_flex_group(sbi, ngroup - 1) + 1; sbi 2353 fs/ext4/super.c if (size <= sbi->s_flex_groups_allocated) sbi 2357 fs/ext4/super.c sizeof(*sbi->s_flex_groups)), GFP_KERNEL); sbi 2363 fs/ext4/super.c for (i = sbi->s_flex_groups_allocated; i < size; i++) { sbi 2368 fs/ext4/super.c for (j = sbi->s_flex_groups_allocated; j < i; j++) sbi 2377 fs/ext4/super.c old_groups = rcu_dereference(sbi->s_flex_groups); sbi 2380 fs/ext4/super.c (sbi->s_flex_groups_allocated * sbi 2383 fs/ext4/super.c rcu_assign_pointer(sbi->s_flex_groups, new_groups); sbi 2384 fs/ext4/super.c sbi->s_flex_groups_allocated = size; sbi 2392 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 2398 fs/ext4/super.c sbi->s_log_groups_per_flex = sbi->s_es->s_log_groups_per_flex; sbi 2399 fs/ext4/super.c if (sbi->s_log_groups_per_flex < 1 || sbi->s_log_groups_per_flex > 31) { sbi 2400 fs/ext4/super.c sbi->s_log_groups_per_flex = 0; sbi 2404 fs/ext4/super.c err = ext4_alloc_flex_bg_array(sb, sbi->s_groups_count); sbi 2408 fs/ext4/super.c for (i = 0; i < sbi->s_groups_count; i++) { sbi 2411 fs/ext4/super.c flex_group = ext4_flex_group(sbi, i); sbi 2412 fs/ext4/super.c fg = sbi_array_rcu_deref(sbi, s_flex_groups, flex_group); sbi 2430 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 2432 fs/ext4/super.c if (ext4_has_metadata_csum(sbi->s_sb)) { sbi 2437 fs/ext4/super.c csum32 = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)&le_group, sbi 2439 fs/ext4/super.c csum32 = ext4_chksum(sbi, csum32, (__u8 *)gdp, offset); sbi 2440 fs/ext4/super.c csum32 = ext4_chksum(sbi, csum32, (__u8 *)&dummy_csum, sbi 2443 fs/ext4/super.c if (offset < sbi->s_desc_size) sbi 2444 fs/ext4/super.c csum32 = ext4_chksum(sbi, csum32, (__u8 *)gdp + offset, sbi 2445 fs/ext4/super.c sbi->s_desc_size - offset); sbi 2455 fs/ext4/super.c crc = crc16(~0, sbi->s_es->s_uuid, sizeof(sbi->s_es->s_uuid)); sbi 2461 fs/ext4/super.c offset < le16_to_cpu(sbi->s_es->s_desc_size)) sbi 2463 fs/ext4/super.c le16_to_cpu(sbi->s_es->s_desc_size) - sbi 2493 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 2494 fs/ext4/super.c ext4_fsblk_t first_block = le32_to_cpu(sbi->s_es->s_first_data_block); sbi 2501 fs/ext4/super.c ext4_group_t i, grp = sbi->s_groups_count; sbi 2508 fs/ext4/super.c for (i = 0; i < sbi->s_groups_count; i++) { sbi 2511 fs/ext4/super.c if (i == sbi->s_groups_count - 1 || flexbg_flag) sbi 2512 fs/ext4/super.c last_block = ext4_blocks_count(sbi->s_es) - 1; sbi 2517 fs/ext4/super.c if ((grp == sbi->s_groups_count) && sbi 2582 fs/ext4/super.c inode_table + sbi->s_itb_per_group - 1 > last_block) { sbi 2878 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 2882 fs/ext4/super.c first_meta_bg = le32_to_cpu(sbi->s_es->s_first_meta_bg); sbi 2886 fs/ext4/super.c bg = sbi->s_desc_per_block * nr; sbi 2897 fs/ext4/super.c le32_to_cpu(sbi->s_es->s_first_data_block) == 0) sbi 2914 fs/ext4/super.c static unsigned long ext4_get_stripe_size(struct ext4_sb_info *sbi) sbi 2916 fs/ext4/super.c unsigned long stride = le16_to_cpu(sbi->s_es->s_raid_stride); sbi 2918 fs/ext4/super.c le32_to_cpu(sbi->s_es->s_raid_stripe_width); sbi 2921 fs/ext4/super.c if (sbi->s_stripe && sbi->s_stripe <= sbi->s_blocks_per_group) sbi 2922 fs/ext4/super.c ret = sbi->s_stripe; sbi 2923 fs/ext4/super.c else if (stripe_width && stripe_width <= sbi->s_blocks_per_group) sbi 2925 fs/ext4/super.c else if (stride && stride <= sbi->s_blocks_per_group) sbi 3007 fs/ext4/super.c struct ext4_sb_info *sbi = from_timer(sbi, t, s_err_report); sbi 3008 fs/ext4/super.c struct super_block *sb = sbi->s_sb; sbi 3009 fs/ext4/super.c struct ext4_super_block *es = sbi->s_es; sbi 3045 fs/ext4/super.c mod_timer(&sbi->s_err_report, jiffies + 24*60*60*HZ); /* Once a day */ sbi 3095 fs/ext4/super.c struct ext4_sb_info *sbi; sbi 3100 fs/ext4/super.c sbi = elr->lr_sbi; sbi 3103 fs/ext4/super.c sbi->s_li_request = NULL; sbi 3312 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 3320 fs/ext4/super.c elr->lr_sbi = sbi; sbi 3336 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 3338 fs/ext4/super.c ext4_group_t ngroups = sbi->s_groups_count; sbi 3342 fs/ext4/super.c if (sbi->s_li_request != NULL) { sbi 3347 fs/ext4/super.c sbi->s_li_request->lr_timeout = 0; sbi 3371 fs/ext4/super.c sbi->s_li_request = elr; sbi 3411 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 3423 fs/ext4/super.c jbd2_journal_clear_features(sbi->s_journal, sbi 3428 fs/ext4/super.c ret = jbd2_journal_set_features(sbi->s_journal, sbi 3433 fs/ext4/super.c ret = jbd2_journal_set_features(sbi->s_journal, sbi 3436 fs/ext4/super.c jbd2_journal_clear_features(sbi->s_journal, 0, 0, sbi 3439 fs/ext4/super.c jbd2_journal_clear_features(sbi->s_journal, 0, 0, sbi 3464 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 3472 fs/ext4/super.c sbi->s_itb_per_group + 2); sbi 3474 fs/ext4/super.c first_block = le32_to_cpu(sbi->s_es->s_first_data_block) + sbi 3481 fs/ext4/super.c ext4_set_bit(EXT4_B2C(sbi, b - first_block), buf); sbi 3486 fs/ext4/super.c ext4_set_bit(EXT4_B2C(sbi, b - first_block), buf); sbi 3490 fs/ext4/super.c if (b >= first_block && b + sbi->s_itb_per_group <= last_block) sbi 3491 fs/ext4/super.c for (j = 0; j < sbi->s_itb_per_group; j++, b++) { sbi 3492 fs/ext4/super.c int c = EXT4_B2C(sbi, b - first_block); sbi 3511 fs/ext4/super.c ext4_set_bit(EXT4_B2C(sbi, s++), buf); sbi 3524 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 3525 fs/ext4/super.c struct ext4_super_block *es = sbi->s_es; sbi 3544 fs/ext4/super.c overhead = EXT4_B2C(sbi, le32_to_cpu(es->s_first_data_block)); sbi 3563 fs/ext4/super.c if (sbi->s_journal && !sbi->journal_bdev) sbi 3564 fs/ext4/super.c overhead += EXT4_NUM_B2C(sbi, sbi->s_journal->j_maxlen); sbi 3565 fs/ext4/super.c else if (ext4_has_feature_journal(sb) && !sbi->s_journal && j_inum) { sbi 3570 fs/ext4/super.c overhead += EXT4_NUM_B2C(sbi, j_blocks); sbi 3576 fs/ext4/super.c sbi->s_overhead = overhead; sbi 3585 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 3603 fs/ext4/super.c resv_clusters = (ext4_blocks_count(sbi->s_es) >> sbi 3604 fs/ext4/super.c sbi->s_cluster_bits); sbi 3609 fs/ext4/super.c atomic64_set(&sbi->s_resv_clusters, resv_clusters); sbi 3618 fs/ext4/super.c struct ext4_sb_info *sbi = kzalloc(sizeof(*sbi), GFP_KERNEL); sbi 3638 fs/ext4/super.c if ((data && !orig_data) || !sbi) sbi 3641 fs/ext4/super.c sbi->s_daxdev = dax_dev; sbi 3642 fs/ext4/super.c sbi->s_blockgroup_lock = sbi 3644 fs/ext4/super.c if (!sbi->s_blockgroup_lock) sbi 3647 fs/ext4/super.c sb->s_fs_info = sbi; sbi 3648 fs/ext4/super.c sbi->s_sb = sb; sbi 3649 fs/ext4/super.c sbi->s_inode_readahead_blks = EXT4_DEF_INODE_READAHEAD_BLKS; sbi 3650 fs/ext4/super.c sbi->s_sb_block = sb_block; sbi 3652 fs/ext4/super.c sbi->s_sectors_written_start = sbi 3686 fs/ext4/super.c sbi->s_es = es; sbi 3690 fs/ext4/super.c sbi->s_kbytes_written = le64_to_cpu(es->s_kbytes_written); sbi 3707 fs/ext4/super.c sbi->s_chksum_driver = crypto_alloc_shash("crc32c", 0, 0); sbi 3708 fs/ext4/super.c if (IS_ERR(sbi->s_chksum_driver)) { sbi 3710 fs/ext4/super.c ret = PTR_ERR(sbi->s_chksum_driver); sbi 3711 fs/ext4/super.c sbi->s_chksum_driver = NULL; sbi 3726 fs/ext4/super.c sbi->s_csum_seed = le32_to_cpu(es->s_checksum_seed); sbi 3728 fs/ext4/super.c sbi->s_csum_seed = ext4_chksum(sbi, ~0, es->s_uuid, sbi 3756 fs/ext4/super.c if (le16_to_cpu(sbi->s_es->s_errors) == EXT4_ERRORS_PANIC) sbi 3758 fs/ext4/super.c else if (le16_to_cpu(sbi->s_es->s_errors) == EXT4_ERRORS_CONTINUE) sbi 3767 fs/ext4/super.c sbi->s_resuid = make_kuid(&init_user_ns, le16_to_cpu(es->s_def_resuid)); sbi 3768 fs/ext4/super.c sbi->s_resgid = make_kgid(&init_user_ns, le16_to_cpu(es->s_def_resgid)); sbi 3769 fs/ext4/super.c sbi->s_commit_interval = JBD2_DEFAULT_MAX_COMMIT_AGE * HZ; sbi 3770 fs/ext4/super.c sbi->s_min_batch_time = EXT4_DEF_MIN_BATCH_TIME; sbi 3771 fs/ext4/super.c sbi->s_max_batch_time = EXT4_DEF_MAX_BATCH_TIME; sbi 3788 fs/ext4/super.c sbi->s_li_wait_mult = EXT4_DEF_LI_WAIT_MULT; sbi 3800 fs/ext4/super.c sbi->s_inode_size = EXT4_GOOD_OLD_INODE_SIZE; sbi 3801 fs/ext4/super.c sbi->s_first_ino = EXT4_GOOD_OLD_FIRST_INO; sbi 3803 fs/ext4/super.c sbi->s_inode_size = le16_to_cpu(es->s_inode_size); sbi 3804 fs/ext4/super.c sbi->s_first_ino = le32_to_cpu(es->s_first_ino); sbi 3805 fs/ext4/super.c if (sbi->s_first_ino < EXT4_GOOD_OLD_FIRST_INO) { sbi 3807 fs/ext4/super.c sbi->s_first_ino); sbi 3810 fs/ext4/super.c if ((sbi->s_inode_size < EXT4_GOOD_OLD_INODE_SIZE) || sbi 3811 fs/ext4/super.c (!is_power_of_2(sbi->s_inode_size)) || sbi 3812 fs/ext4/super.c (sbi->s_inode_size > blocksize)) { sbi 3815 fs/ext4/super.c sbi->s_inode_size); sbi 3825 fs/ext4/super.c if (sbi->s_inode_size >= offsetof(struct ext4_inode, i_atime_extra) + sbi 3835 fs/ext4/super.c if (sbi->s_inode_size > EXT4_GOOD_OLD_INODE_SIZE) { sbi 3836 fs/ext4/super.c sbi->s_want_extra_isize = sizeof(struct ext4_inode) - sbi 3839 fs/ext4/super.c unsigned v, max = (sbi->s_inode_size - sbi 3848 fs/ext4/super.c if (sbi->s_want_extra_isize < v) sbi 3849 fs/ext4/super.c sbi->s_want_extra_isize = v; sbi 3857 fs/ext4/super.c if (sbi->s_want_extra_isize < v) sbi 3858 fs/ext4/super.c sbi->s_want_extra_isize = v; sbi 3862 fs/ext4/super.c if (sbi->s_es->s_mount_opts[0]) { sbi 3863 fs/ext4/super.c char *s_mount_opts = kstrndup(sbi->s_es->s_mount_opts, sbi 3864 fs/ext4/super.c sizeof(sbi->s_es->s_mount_opts), sbi 3876 fs/ext4/super.c sbi->s_def_mount_opt = sbi->s_mount_opt; sbi 3882 fs/ext4/super.c if (ext4_has_feature_casefold(sb) && !sbi->s_encoding) { sbi 3913 fs/ext4/super.c sbi->s_encoding = encoding; sbi 3914 fs/ext4/super.c sbi->s_encoding_flags = encoding_flags; sbi 4035 fs/ext4/super.c if (le16_to_cpu(sbi->s_es->s_reserved_gdt_blocks) > (blocksize / 4)) { sbi 4038 fs/ext4/super.c le16_to_cpu(sbi->s_es->s_reserved_gdt_blocks)); sbi 4042 fs/ext4/super.c if (sbi->s_mount_opt & EXT4_MOUNT_DAX) { sbi 4079 fs/ext4/super.c sbi->s_es = es; sbi 4088 fs/ext4/super.c sbi->s_bitmap_maxbytes = ext4_max_bitmap_size(sb->s_blocksize_bits, sbi 4092 fs/ext4/super.c sbi->s_desc_size = le16_to_cpu(es->s_desc_size); sbi 4094 fs/ext4/super.c if (sbi->s_desc_size < EXT4_MIN_DESC_SIZE_64BIT || sbi 4095 fs/ext4/super.c sbi->s_desc_size > EXT4_MAX_DESC_SIZE || sbi 4096 fs/ext4/super.c !is_power_of_2(sbi->s_desc_size)) { sbi 4099 fs/ext4/super.c sbi->s_desc_size); sbi 4103 fs/ext4/super.c sbi->s_desc_size = EXT4_MIN_DESC_SIZE; sbi 4105 fs/ext4/super.c sbi->s_blocks_per_group = le32_to_cpu(es->s_blocks_per_group); sbi 4106 fs/ext4/super.c sbi->s_inodes_per_group = le32_to_cpu(es->s_inodes_per_group); sbi 4108 fs/ext4/super.c sbi->s_inodes_per_block = blocksize / EXT4_INODE_SIZE(sb); sbi 4109 fs/ext4/super.c if (sbi->s_inodes_per_block == 0) sbi 4111 fs/ext4/super.c if (sbi->s_inodes_per_group < sbi->s_inodes_per_block || sbi 4112 fs/ext4/super.c sbi->s_inodes_per_group > blocksize * 8) { sbi 4114 fs/ext4/super.c sbi->s_inodes_per_group); sbi 4117 fs/ext4/super.c sbi->s_itb_per_group = sbi->s_inodes_per_group / sbi 4118 fs/ext4/super.c sbi->s_inodes_per_block; sbi 4119 fs/ext4/super.c sbi->s_desc_per_block = blocksize / EXT4_DESC_SIZE(sb); sbi 4120 fs/ext4/super.c sbi->s_sbh = bh; sbi 4121 fs/ext4/super.c sbi->s_mount_state = le16_to_cpu(es->s_state); sbi 4122 fs/ext4/super.c sbi->s_addr_per_block_bits = ilog2(EXT4_ADDR_PER_BLOCK(sb)); sbi 4123 fs/ext4/super.c sbi->s_desc_per_block_bits = ilog2(EXT4_DESC_PER_BLOCK(sb)); sbi 4126 fs/ext4/super.c sbi->s_hash_seed[i] = le32_to_cpu(es->s_hash_seed[i]); sbi 4127 fs/ext4/super.c sbi->s_def_hash_version = es->s_def_hash_version; sbi 4131 fs/ext4/super.c sbi->s_hash_unsigned = 3; sbi 4137 fs/ext4/super.c sbi->s_hash_unsigned = 3; sbi 4156 fs/ext4/super.c sbi->s_cluster_bits = le32_to_cpu(es->s_log_cluster_size) - sbi 4158 fs/ext4/super.c sbi->s_clusters_per_group = sbi 4160 fs/ext4/super.c if (sbi->s_clusters_per_group > blocksize * 8) { sbi 4163 fs/ext4/super.c sbi->s_clusters_per_group); sbi 4166 fs/ext4/super.c if (sbi->s_blocks_per_group != sbi 4167 fs/ext4/super.c (sbi->s_clusters_per_group * (clustersize / blocksize))) { sbi 4170 fs/ext4/super.c sbi->s_blocks_per_group, sbi 4171 fs/ext4/super.c sbi->s_clusters_per_group); sbi 4181 fs/ext4/super.c if (sbi->s_blocks_per_group > blocksize * 8) { sbi 4184 fs/ext4/super.c sbi->s_blocks_per_group); sbi 4187 fs/ext4/super.c sbi->s_clusters_per_group = sbi->s_blocks_per_group; sbi 4188 fs/ext4/super.c sbi->s_cluster_bits = 0; sbi 4190 fs/ext4/super.c sbi->s_cluster_ratio = clustersize / blocksize; sbi 4193 fs/ext4/super.c if (sbi->s_blocks_per_group == clustersize << 3) sbi 4232 fs/ext4/super.c (sbi->s_cluster_ratio == 1)) { sbi 4251 fs/ext4/super.c sbi->s_groups_count = blocks_count; sbi 4252 fs/ext4/super.c sbi->s_blockfile_groups = min_t(ext4_group_t, sbi->s_groups_count, sbi 4254 fs/ext4/super.c if (((u64)sbi->s_groups_count * sbi->s_inodes_per_group) != sbi 4258 fs/ext4/super.c ((u64)sbi->s_groups_count * sbi->s_inodes_per_group)); sbi 4262 fs/ext4/super.c db_count = (sbi->s_groups_count + EXT4_DESC_PER_BLOCK(sb) - 1) / sbi 4273 fs/ext4/super.c rcu_assign_pointer(sbi->s_group_desc, sbi 4277 fs/ext4/super.c if (sbi->s_group_desc == NULL) { sbi 4283 fs/ext4/super.c bgl_lock_init(sbi->s_blockgroup_lock); sbi 4303 fs/ext4/super.c rcu_dereference(sbi->s_group_desc)[i] = bh; sbi 4306 fs/ext4/super.c sbi->s_gdb_count = db_count; sbi 4313 fs/ext4/super.c timer_setup(&sbi->s_err_report, print_daily_error_info, 0); sbi 4316 fs/ext4/super.c if (ext4_es_register_shrinker(sbi)) sbi 4319 fs/ext4/super.c sbi->s_stripe = ext4_get_stripe_size(sbi); sbi 4320 fs/ext4/super.c sbi->s_extent_max_zeroout_kb = 32; sbi 4344 fs/ext4/super.c INIT_LIST_HEAD(&sbi->s_orphan); /* unlinked but open files */ sbi 4345 fs/ext4/super.c mutex_init(&sbi->s_orphan_lock); sbi 4381 fs/ext4/super.c if (sbi->s_commit_interval != JBD2_DEFAULT_MAX_COMMIT_AGE*HZ) { sbi 4384 fs/ext4/super.c sbi->s_commit_interval / HZ); sbi 4388 fs/ext4/super.c (sbi->s_mount_opt ^ sbi->s_def_mount_opt)) { sbi 4393 fs/ext4/super.c sbi->s_def_mount_opt &= ~EXT4_MOUNT_JOURNAL_CHECKSUM; sbi 4396 fs/ext4/super.c sbi->s_journal = NULL; sbi 4423 fs/ext4/super.c (sbi->s_journal, 0, 0, JBD2_FEATURE_INCOMPAT_REVOKE)) { sbi 4425 fs/ext4/super.c sbi->s_def_mount_opt |= EXT4_MOUNT_ORDERED_DATA; sbi 4428 fs/ext4/super.c sbi->s_def_mount_opt |= EXT4_MOUNT_JOURNAL_DATA; sbi 4435 fs/ext4/super.c (sbi->s_journal, 0, 0, JBD2_FEATURE_INCOMPAT_REVOKE)) { sbi 4451 fs/ext4/super.c set_task_ioprio(sbi->s_journal->j_task, journal_ioprio); sbi 4453 fs/ext4/super.c sbi->s_journal->j_commit_callback = ext4_journal_commit_callback; sbi 4457 fs/ext4/super.c sbi->s_ea_block_cache = ext4_xattr_create_cache(); sbi 4458 fs/ext4/super.c if (!sbi->s_ea_block_cache) { sbi 4465 fs/ext4/super.c sbi->s_ea_inode_cache = ext4_xattr_create_cache(); sbi 4466 fs/ext4/super.c if (!sbi->s_ea_inode_cache) { sbi 4474 fs/ext4/super.c if ((DUMMY_ENCRYPTION_ENABLED(sbi) || ext4_has_feature_encrypt(sb)) && sbi 4486 fs/ext4/super.c if (DUMMY_ENCRYPTION_ENABLED(sbi) && !sb_rdonly(sb) && sbi 4497 fs/ext4/super.c sbi->s_overhead = le32_to_cpu(es->s_overhead_clusters); sbi 4535 fs/ext4/super.c if (sbi->s_encoding) sbi 4571 fs/ext4/super.c ext4_free_blocks_count_set(sbi->s_es, sbi 4572 fs/ext4/super.c EXT4_C2B(sbi, block)); sbi 4574 fs/ext4/super.c err = percpu_counter_init(&sbi->s_freeclusters_counter, block, sbi 4578 fs/ext4/super.c sbi->s_es->s_free_inodes_count = cpu_to_le32(freei); sbi 4580 fs/ext4/super.c err = percpu_counter_init(&sbi->s_freeinodes_counter, freei, sbi 4584 fs/ext4/super.c err = percpu_counter_init(&sbi->s_dirs_counter, sbi 4587 fs/ext4/super.c err = percpu_counter_init(&sbi->s_dirtyclusters_counter, 0, sbi 4590 fs/ext4/super.c err = percpu_init_rwsem(&sbi->s_writepages_rwsem); sbi 4650 fs/ext4/super.c (int) sizeof(sbi->s_es->s_mount_opts), sbi 4651 fs/ext4/super.c sbi->s_es->s_mount_opts, sbi 4652 fs/ext4/super.c *sbi->s_es->s_mount_opts ? "; " : "", orig_data); sbi 4655 fs/ext4/super.c mod_timer(&sbi->s_err_report, jiffies + 300*HZ); /* 5 minutes */ sbi 4658 fs/ext4/super.c ratelimit_state_init(&sbi->s_err_ratelimit_state, 5 * HZ, 10); sbi 4659 fs/ext4/super.c ratelimit_state_init(&sbi->s_warning_ratelimit_state, 5 * HZ, 10); sbi 4660 fs/ext4/super.c ratelimit_state_init(&sbi->s_msg_ratelimit_state, 5 * HZ, 10); sbi 4679 fs/ext4/super.c flex_groups = rcu_dereference(sbi->s_flex_groups); sbi 4681 fs/ext4/super.c for (i = 0; i < sbi->s_flex_groups_allocated; i++) sbi 4686 fs/ext4/super.c percpu_counter_destroy(&sbi->s_freeclusters_counter); sbi 4687 fs/ext4/super.c percpu_counter_destroy(&sbi->s_freeinodes_counter); sbi 4688 fs/ext4/super.c percpu_counter_destroy(&sbi->s_dirs_counter); sbi 4689 fs/ext4/super.c percpu_counter_destroy(&sbi->s_dirtyclusters_counter); sbi 4690 fs/ext4/super.c percpu_free_rwsem(&sbi->s_writepages_rwsem); sbi 4702 fs/ext4/super.c ext4_xattr_destroy_cache(sbi->s_ea_inode_cache); sbi 4703 fs/ext4/super.c sbi->s_ea_inode_cache = NULL; sbi 4705 fs/ext4/super.c ext4_xattr_destroy_cache(sbi->s_ea_block_cache); sbi 4706 fs/ext4/super.c sbi->s_ea_block_cache = NULL; sbi 4708 fs/ext4/super.c if (sbi->s_journal) { sbi 4709 fs/ext4/super.c jbd2_journal_destroy(sbi->s_journal); sbi 4710 fs/ext4/super.c sbi->s_journal = NULL; sbi 4713 fs/ext4/super.c ext4_es_unregister_shrinker(sbi); sbi 4715 fs/ext4/super.c del_timer_sync(&sbi->s_err_report); sbi 4716 fs/ext4/super.c if (sbi->s_mmp_tsk) sbi 4717 fs/ext4/super.c kthread_stop(sbi->s_mmp_tsk); sbi 4720 fs/ext4/super.c group_desc = rcu_dereference(sbi->s_group_desc); sbi 4726 fs/ext4/super.c if (sbi->s_chksum_driver) sbi 4727 fs/ext4/super.c crypto_free_shash(sbi->s_chksum_driver); sbi 4730 fs/ext4/super.c utf8_unload(sbi->s_encoding); sbi 4735 fs/ext4/super.c kfree(get_qf_name(sb, sbi, i)); sbi 4737 fs/ext4/super.c ext4_blkdev_remove(sbi); sbi 4741 fs/ext4/super.c kfree(sbi->s_blockgroup_lock); sbi 4743 fs/ext4/super.c kfree(sbi); sbi 4756 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 4758 fs/ext4/super.c journal->j_commit_interval = sbi->s_commit_interval; sbi 4759 fs/ext4/super.c journal->j_min_batch_time = sbi->s_min_batch_time; sbi 4760 fs/ext4/super.c journal->j_max_batch_time = sbi->s_max_batch_time; sbi 5181 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 5183 fs/ext4/super.c if (unlikely(ext4_forced_shutdown(sbi))) sbi 5187 fs/ext4/super.c flush_workqueue(sbi->rsv_conversion_wq); sbi 5198 fs/ext4/super.c if (sbi->s_journal) { sbi 5199 fs/ext4/super.c target = jbd2_get_latest_transaction(sbi->s_journal); sbi 5200 fs/ext4/super.c if (wait && sbi->s_journal->j_flags & JBD2_BARRIER && sbi 5201 fs/ext4/super.c !jbd2_trans_will_send_data_barrier(sbi->s_journal, target)) sbi 5204 fs/ext4/super.c if (jbd2_journal_start_commit(sbi->s_journal, &target)) { sbi 5206 fs/ext4/super.c ret = jbd2_log_wait_commit(sbi->s_journal, sbi 5300 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 5318 fs/ext4/super.c old_opts.s_mount_opt = sbi->s_mount_opt; sbi 5319 fs/ext4/super.c old_opts.s_mount_opt2 = sbi->s_mount_opt2; sbi 5320 fs/ext4/super.c old_opts.s_resuid = sbi->s_resuid; sbi 5321 fs/ext4/super.c old_opts.s_resgid = sbi->s_resgid; sbi 5322 fs/ext4/super.c old_opts.s_commit_interval = sbi->s_commit_interval; sbi 5323 fs/ext4/super.c old_opts.s_min_batch_time = sbi->s_min_batch_time; sbi 5324 fs/ext4/super.c old_opts.s_max_batch_time = sbi->s_max_batch_time; sbi 5326 fs/ext4/super.c old_opts.s_jquota_fmt = sbi->s_jquota_fmt; sbi 5328 fs/ext4/super.c if (sbi->s_qf_names[i]) { sbi 5329 fs/ext4/super.c char *qf_name = get_qf_name(sb, sbi, i); sbi 5341 fs/ext4/super.c if (sbi->s_journal && sbi->s_journal->j_task->io_context) sbi 5342 fs/ext4/super.c journal_ioprio = sbi->s_journal->j_task->io_context->ioprio; sbi 5353 fs/ext4/super.c sbi->s_mount_opt ^= EXT4_MOUNT_JOURNAL_CHECKSUM; sbi 5384 fs/ext4/super.c if ((sbi->s_mount_opt ^ old_opts.s_mount_opt) & EXT4_MOUNT_NO_MBCACHE) { sbi 5390 fs/ext4/super.c if ((sbi->s_mount_opt ^ old_opts.s_mount_opt) & EXT4_MOUNT_DAX) { sbi 5393 fs/ext4/super.c sbi->s_mount_opt ^= EXT4_MOUNT_DAX; sbi 5396 fs/ext4/super.c if (sbi->s_mount_flags & EXT4_MF_FS_ABORTED) sbi 5402 fs/ext4/super.c es = sbi->s_es; sbi 5404 fs/ext4/super.c if (sbi->s_journal) { sbi 5405 fs/ext4/super.c ext4_init_journal_params(sb, sbi->s_journal); sbi 5406 fs/ext4/super.c set_task_ioprio(sbi->s_journal->j_task, journal_ioprio); sbi 5413 fs/ext4/super.c if (sbi->s_mount_flags & EXT4_MF_FS_ABORTED) { sbi 5438 fs/ext4/super.c (sbi->s_mount_state & EXT4_VALID_FS)) sbi 5439 fs/ext4/super.c es->s_state = cpu_to_le16(sbi->s_mount_state); sbi 5441 fs/ext4/super.c if (sbi->s_journal) sbi 5443 fs/ext4/super.c if (sbi->s_mmp_tsk) sbi 5444 fs/ext4/super.c kthread_stop(sbi->s_mmp_tsk); sbi 5456 fs/ext4/super.c for (g = 0; g < sbi->s_groups_count; g++) { sbi 5490 fs/ext4/super.c if (sbi->s_journal) sbi 5492 fs/ext4/super.c sbi->s_mount_state = le16_to_cpu(es->s_state); sbi 5522 fs/ext4/super.c if (sbi->s_journal == NULL && !(old_sb_flags & SB_RDONLY)) { sbi 5550 fs/ext4/super.c sbi->s_mount_opt = old_opts.s_mount_opt; sbi 5551 fs/ext4/super.c sbi->s_mount_opt2 = old_opts.s_mount_opt2; sbi 5552 fs/ext4/super.c sbi->s_resuid = old_opts.s_resuid; sbi 5553 fs/ext4/super.c sbi->s_resgid = old_opts.s_resgid; sbi 5554 fs/ext4/super.c sbi->s_commit_interval = old_opts.s_commit_interval; sbi 5555 fs/ext4/super.c sbi->s_min_batch_time = old_opts.s_min_batch_time; sbi 5556 fs/ext4/super.c sbi->s_max_batch_time = old_opts.s_max_batch_time; sbi 5558 fs/ext4/super.c sbi->s_jquota_fmt = old_opts.s_jquota_fmt; sbi 5560 fs/ext4/super.c to_free[i] = get_qf_name(sb, sbi, i); sbi 5561 fs/ext4/super.c rcu_assign_pointer(sbi->s_qf_names[i], old_opts.s_qf_names[i]); sbi 5628 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 5629 fs/ext4/super.c struct ext4_super_block *es = sbi->s_es; sbi 5633 fs/ext4/super.c resv_blocks = EXT4_C2B(sbi, atomic64_read(&sbi->s_resv_clusters)); sbi 5636 fs/ext4/super.c overhead = sbi->s_overhead; sbi 5640 fs/ext4/super.c buf->f_blocks = ext4_blocks_count(es) - EXT4_C2B(sbi, overhead); sbi 5641 fs/ext4/super.c bfree = percpu_counter_sum_positive(&sbi->s_freeclusters_counter) - sbi 5642 fs/ext4/super.c percpu_counter_sum_positive(&sbi->s_dirtyclusters_counter); sbi 5644 fs/ext4/super.c buf->f_bfree = EXT4_C2B(sbi, max_t(s64, bfree, 0)); sbi 5650 fs/ext4/super.c buf->f_ffree = percpu_counter_sum_positive(&sbi->s_freeinodes_counter); sbi 5733 fs/ext4/super.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 5737 fs/ext4/super.c sbi->s_qf_names[USRQUOTA] || sbi->s_qf_names[GRPQUOTA]) { sbi 55 fs/ext4/sysfs.c static ssize_t session_write_kbytes_show(struct ext4_sb_info *sbi, char *buf) sbi 57 fs/ext4/sysfs.c struct super_block *sb = sbi->s_buddy_cache->i_sb; sbi 64 fs/ext4/sysfs.c sbi->s_sectors_written_start) >> 1); sbi 67 fs/ext4/sysfs.c static ssize_t lifetime_write_kbytes_show(struct ext4_sb_info *sbi, char *buf) sbi 69 fs/ext4/sysfs.c struct super_block *sb = sbi->s_buddy_cache->i_sb; sbi 74 fs/ext4/sysfs.c (unsigned long long)(sbi->s_kbytes_written + sbi 80 fs/ext4/sysfs.c static ssize_t inode_readahead_blks_store(struct ext4_sb_info *sbi, sbi 93 fs/ext4/sysfs.c sbi->s_inode_readahead_blks = t; sbi 97 fs/ext4/sysfs.c static ssize_t reserved_clusters_store(struct ext4_sb_info *sbi, sbi 101 fs/ext4/sysfs.c ext4_fsblk_t clusters = (ext4_blocks_count(sbi->s_es) >> sbi 102 fs/ext4/sysfs.c sbi->s_cluster_bits); sbi 109 fs/ext4/sysfs.c atomic64_set(&sbi->s_resv_clusters, val); sbi 113 fs/ext4/sysfs.c static ssize_t trigger_test_error(struct ext4_sb_info *sbi, sbi 125 fs/ext4/sysfs.c ext4_error(sbi->s_sb, "%.*s", len, buf); sbi 129 fs/ext4/sysfs.c static ssize_t journal_task_show(struct ext4_sb_info *sbi, char *buf) sbi 131 fs/ext4/sysfs.c if (!sbi->s_journal) sbi 134 fs/ext4/sysfs.c task_pid_vnr(sbi->s_journal->j_task)); sbi 268 fs/ext4/sysfs.c static void *calc_ptr(struct ext4_attr *a, struct ext4_sb_info *sbi) sbi 274 fs/ext4/sysfs.c return (void *) (((char *) sbi) + a->u.offset); sbi 276 fs/ext4/sysfs.c return (void *) (((char *) sbi->s_es) + a->u.offset); sbi 293 fs/ext4/sysfs.c struct ext4_sb_info *sbi = container_of(kobj, struct ext4_sb_info, sbi 296 fs/ext4/sysfs.c void *ptr = calc_ptr(a, sbi); sbi 301 fs/ext4/sysfs.c (s64) EXT4_C2B(sbi, sbi 302 fs/ext4/sysfs.c percpu_counter_sum(&sbi->s_dirtyclusters_counter))); sbi 304 fs/ext4/sysfs.c return session_write_kbytes_show(sbi, buf); sbi 306 fs/ext4/sysfs.c return lifetime_write_kbytes_show(sbi, buf); sbi 310 fs/ext4/sysfs.c atomic64_read(&sbi->s_resv_clusters)); sbi 329 fs/ext4/sysfs.c return print_tstamp(buf, sbi->s_es, s_first_error_time); sbi 331 fs/ext4/sysfs.c return print_tstamp(buf, sbi->s_es, s_last_error_time); sbi 333 fs/ext4/sysfs.c return journal_task_show(sbi, buf); sbi 343 fs/ext4/sysfs.c struct ext4_sb_info *sbi = container_of(kobj, struct ext4_sb_info, sbi 346 fs/ext4/sysfs.c void *ptr = calc_ptr(a, sbi); sbi 352 fs/ext4/sysfs.c return reserved_clusters_store(sbi, buf, len); sbi 365 fs/ext4/sysfs.c return inode_readahead_blks_store(sbi, buf, len); sbi 367 fs/ext4/sysfs.c return trigger_test_error(sbi, buf, len); sbi 374 fs/ext4/sysfs.c struct ext4_sb_info *sbi = container_of(kobj, struct ext4_sb_info, sbi 376 fs/ext4/sysfs.c complete(&sbi->s_kobj_unregister); sbi 402 fs/ext4/sysfs.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 405 fs/ext4/sysfs.c init_completion(&sbi->s_kobj_unregister); sbi 406 fs/ext4/sysfs.c err = kobject_init_and_add(&sbi->s_kobj, &ext4_sb_ktype, ext4_root, sbi 409 fs/ext4/sysfs.c kobject_put(&sbi->s_kobj); sbi 410 fs/ext4/sysfs.c wait_for_completion(&sbi->s_kobj_unregister); sbi 415 fs/ext4/sysfs.c sbi->s_proc = proc_mkdir(sb->s_id, ext4_proc_root); sbi 416 fs/ext4/sysfs.c if (sbi->s_proc) { sbi 417 fs/ext4/sysfs.c proc_create_single_data("options", S_IRUGO, sbi->s_proc, sbi 420 fs/ext4/sysfs.c sbi->s_proc, ext4_seq_es_shrinker_info_show, sbi 422 fs/ext4/sysfs.c proc_create_seq_data("mb_groups", S_IRUGO, sbi->s_proc, sbi 430 fs/ext4/sysfs.c struct ext4_sb_info *sbi = EXT4_SB(sb); sbi 432 fs/ext4/sysfs.c if (sbi->s_proc) sbi 434 fs/ext4/sysfs.c kobject_del(&sbi->s_kobj); sbi 132 fs/ext4/xattr.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 138 fs/ext4/xattr.c csum = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)&dsk_block_nr, sbi 140 fs/ext4/xattr.c csum = ext4_chksum(sbi, csum, (__u8 *)hdr, offset); sbi 141 fs/ext4/xattr.c csum = ext4_chksum(sbi, csum, (__u8 *)&dummy_csum, sizeof(dummy_csum)); sbi 143 fs/ext4/xattr.c csum = ext4_chksum(sbi, csum, (__u8 *)hdr + offset, sbi 310 fs/ext4/xattr.c ext4_xattr_inode_hash(struct ext4_sb_info *sbi, const void *buffer, size_t size) sbi 312 fs/ext4/xattr.c return ext4_chksum(sbi, sbi->s_csum_seed, buffer, size); sbi 2701 fs/ext4/xattr.c struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); sbi 2708 fs/ext4/xattr.c int s_min_extra_isize = le16_to_cpu(sbi->s_es->s_min_extra_isize); sbi 2793 fs/ext4/xattr.c if (error && (mnt_count != le16_to_cpu(sbi->s_es->s_mnt_count))) { sbi 2796 fs/ext4/xattr.c mnt_count = le16_to_cpu(sbi->s_es->s_mnt_count); sbi 112 fs/f2fs/acl.c static void *f2fs_acl_to_disk(struct f2fs_sb_info *sbi, sbi 119 fs/f2fs/acl.c f2fs_acl = f2fs_kmalloc(sbi, sizeof(struct f2fs_acl_header) + sbi 26 fs/f2fs/checkpoint.c void f2fs_stop_checkpoint(struct f2fs_sb_info *sbi, bool end_io) sbi 28 fs/f2fs/checkpoint.c f2fs_build_fault_attr(sbi, 0, 0); sbi 29 fs/f2fs/checkpoint.c set_ckpt_flags(sbi, CP_ERROR_FLAG); sbi 31 fs/f2fs/checkpoint.c f2fs_flush_merged_writes(sbi); sbi 37 fs/f2fs/checkpoint.c struct page *f2fs_grab_meta_page(struct f2fs_sb_info *sbi, pgoff_t index) sbi 39 fs/f2fs/checkpoint.c struct address_space *mapping = META_MAPPING(sbi); sbi 56 fs/f2fs/checkpoint.c static struct page *__get_meta_page(struct f2fs_sb_info *sbi, pgoff_t index, sbi 59 fs/f2fs/checkpoint.c struct address_space *mapping = META_MAPPING(sbi); sbi 62 fs/f2fs/checkpoint.c .sbi = sbi, sbi 106 fs/f2fs/checkpoint.c struct page *f2fs_get_meta_page(struct f2fs_sb_info *sbi, pgoff_t index) sbi 108 fs/f2fs/checkpoint.c return __get_meta_page(sbi, index, true); sbi 111 fs/f2fs/checkpoint.c struct page *f2fs_get_meta_page_nofail(struct f2fs_sb_info *sbi, pgoff_t index) sbi 117 fs/f2fs/checkpoint.c page = __get_meta_page(sbi, index, true); sbi 122 fs/f2fs/checkpoint.c f2fs_stop_checkpoint(sbi, false); sbi 128 fs/f2fs/checkpoint.c struct page *f2fs_get_tmp_page(struct f2fs_sb_info *sbi, pgoff_t index) sbi 130 fs/f2fs/checkpoint.c return __get_meta_page(sbi, index, false); sbi 133 fs/f2fs/checkpoint.c static bool __is_bitmap_valid(struct f2fs_sb_info *sbi, block_t blkaddr, sbi 143 fs/f2fs/checkpoint.c segno = GET_SEGNO(sbi, blkaddr); sbi 144 fs/f2fs/checkpoint.c offset = GET_BLKOFF_FROM_SEG0(sbi, blkaddr); sbi 145 fs/f2fs/checkpoint.c se = get_seg_entry(sbi, segno); sbi 149 fs/f2fs/checkpoint.c f2fs_err(sbi, "Inconsistent error blkaddr:%u, sit bitmap:%d", sbi 151 fs/f2fs/checkpoint.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 157 fs/f2fs/checkpoint.c bool f2fs_is_valid_blkaddr(struct f2fs_sb_info *sbi, sbi 164 fs/f2fs/checkpoint.c if (unlikely(blkaddr >= SIT_BLK_CNT(sbi))) sbi 168 fs/f2fs/checkpoint.c if (unlikely(blkaddr >= MAIN_BLKADDR(sbi) || sbi 169 fs/f2fs/checkpoint.c blkaddr < SM_I(sbi)->ssa_blkaddr)) sbi 173 fs/f2fs/checkpoint.c if (unlikely(blkaddr >= SIT_I(sbi)->sit_base_addr || sbi 174 fs/f2fs/checkpoint.c blkaddr < __start_cp_addr(sbi))) sbi 178 fs/f2fs/checkpoint.c if (unlikely(blkaddr >= MAX_BLKADDR(sbi) || sbi 179 fs/f2fs/checkpoint.c blkaddr < MAIN_BLKADDR(sbi))) sbi 185 fs/f2fs/checkpoint.c if (unlikely(blkaddr >= MAX_BLKADDR(sbi) || sbi 186 fs/f2fs/checkpoint.c blkaddr < MAIN_BLKADDR(sbi))) { sbi 187 fs/f2fs/checkpoint.c f2fs_warn(sbi, "access invalid blkaddr:%u", sbi 189 fs/f2fs/checkpoint.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 193 fs/f2fs/checkpoint.c return __is_bitmap_valid(sbi, blkaddr, type); sbi 197 fs/f2fs/checkpoint.c if (unlikely(blkaddr < SEG0_BLKADDR(sbi) || sbi 198 fs/f2fs/checkpoint.c blkaddr >= MAIN_BLKADDR(sbi))) sbi 211 fs/f2fs/checkpoint.c int f2fs_ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages, sbi 217 fs/f2fs/checkpoint.c .sbi = sbi, sbi 233 fs/f2fs/checkpoint.c if (!f2fs_is_valid_blkaddr(sbi, blkno, type)) sbi 239 fs/f2fs/checkpoint.c NAT_BLOCK_OFFSET(NM_I(sbi)->max_nid))) sbi 242 fs/f2fs/checkpoint.c fio.new_blkaddr = current_nat_addr(sbi, sbi 247 fs/f2fs/checkpoint.c fio.new_blkaddr = current_sit_addr(sbi, sbi 259 fs/f2fs/checkpoint.c page = f2fs_grab_cache_page(META_MAPPING(sbi), sbi 277 fs/f2fs/checkpoint.c void f2fs_ra_meta_pages_cond(struct f2fs_sb_info *sbi, pgoff_t index) sbi 282 fs/f2fs/checkpoint.c page = find_get_page(META_MAPPING(sbi), index); sbi 288 fs/f2fs/checkpoint.c f2fs_ra_meta_pages(sbi, index, BIO_MAX_PAGES, META_POR, true); sbi 295 fs/f2fs/checkpoint.c struct f2fs_sb_info *sbi = F2FS_P_SB(page); sbi 299 fs/f2fs/checkpoint.c if (unlikely(f2fs_cp_error(sbi))) sbi 301 fs/f2fs/checkpoint.c if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING))) sbi 303 fs/f2fs/checkpoint.c if (wbc->for_reclaim && page->index < GET_SUM_BLOCK(sbi, 0)) sbi 306 fs/f2fs/checkpoint.c f2fs_do_write_meta_page(sbi, page, io_type); sbi 307 fs/f2fs/checkpoint.c dec_page_count(sbi, F2FS_DIRTY_META); sbi 310 fs/f2fs/checkpoint.c f2fs_submit_merged_write_cond(sbi, NULL, page, 0, META); sbi 314 fs/f2fs/checkpoint.c if (unlikely(f2fs_cp_error(sbi))) sbi 315 fs/f2fs/checkpoint.c f2fs_submit_merged_write(sbi, META); sbi 333 fs/f2fs/checkpoint.c struct f2fs_sb_info *sbi = F2FS_M_SB(mapping); sbi 336 fs/f2fs/checkpoint.c if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING))) sbi 341 fs/f2fs/checkpoint.c get_pages(sbi, F2FS_DIRTY_META) < sbi 342 fs/f2fs/checkpoint.c nr_pages_to_skip(sbi, META)) sbi 346 fs/f2fs/checkpoint.c if (!mutex_trylock(&sbi->cp_mutex)) sbi 350 fs/f2fs/checkpoint.c diff = nr_pages_to_write(sbi, META, wbc); sbi 351 fs/f2fs/checkpoint.c written = f2fs_sync_meta_pages(sbi, META, wbc->nr_to_write, FS_META_IO); sbi 352 fs/f2fs/checkpoint.c mutex_unlock(&sbi->cp_mutex); sbi 357 fs/f2fs/checkpoint.c wbc->pages_skipped += get_pages(sbi, F2FS_DIRTY_META); sbi 362 fs/f2fs/checkpoint.c long f2fs_sync_meta_pages(struct f2fs_sb_info *sbi, enum page_type type, sbi 365 fs/f2fs/checkpoint.c struct address_space *mapping = META_MAPPING(sbi); sbi 424 fs/f2fs/checkpoint.c f2fs_submit_merged_write(sbi, type); sbi 458 fs/f2fs/checkpoint.c static void __add_ino_entry(struct f2fs_sb_info *sbi, nid_t ino, sbi 461 fs/f2fs/checkpoint.c struct inode_management *im = &sbi->im[type]; sbi 473 fs/f2fs/checkpoint.c f2fs_bug_on(sbi, 1); sbi 493 fs/f2fs/checkpoint.c static void __remove_ino_entry(struct f2fs_sb_info *sbi, nid_t ino, int type) sbi 495 fs/f2fs/checkpoint.c struct inode_management *im = &sbi->im[type]; sbi 511 fs/f2fs/checkpoint.c void f2fs_add_ino_entry(struct f2fs_sb_info *sbi, nid_t ino, int type) sbi 514 fs/f2fs/checkpoint.c __add_ino_entry(sbi, ino, 0, type); sbi 517 fs/f2fs/checkpoint.c void f2fs_remove_ino_entry(struct f2fs_sb_info *sbi, nid_t ino, int type) sbi 520 fs/f2fs/checkpoint.c __remove_ino_entry(sbi, ino, type); sbi 524 fs/f2fs/checkpoint.c bool f2fs_exist_written_data(struct f2fs_sb_info *sbi, nid_t ino, int mode) sbi 526 fs/f2fs/checkpoint.c struct inode_management *im = &sbi->im[mode]; sbi 535 fs/f2fs/checkpoint.c void f2fs_release_ino_entry(struct f2fs_sb_info *sbi, bool all) sbi 541 fs/f2fs/checkpoint.c struct inode_management *im = &sbi->im[i]; sbi 554 fs/f2fs/checkpoint.c void f2fs_set_dirty_device(struct f2fs_sb_info *sbi, nid_t ino, sbi 557 fs/f2fs/checkpoint.c __add_ino_entry(sbi, ino, devidx, type); sbi 560 fs/f2fs/checkpoint.c bool f2fs_is_dirty_device(struct f2fs_sb_info *sbi, nid_t ino, sbi 563 fs/f2fs/checkpoint.c struct inode_management *im = &sbi->im[type]; sbi 575 fs/f2fs/checkpoint.c int f2fs_acquire_orphan_inode(struct f2fs_sb_info *sbi) sbi 577 fs/f2fs/checkpoint.c struct inode_management *im = &sbi->im[ORPHAN_INO]; sbi 582 fs/f2fs/checkpoint.c if (time_to_inject(sbi, FAULT_ORPHAN)) { sbi 588 fs/f2fs/checkpoint.c if (unlikely(im->ino_num >= sbi->max_orphans)) sbi 597 fs/f2fs/checkpoint.c void f2fs_release_orphan_inode(struct f2fs_sb_info *sbi) sbi 599 fs/f2fs/checkpoint.c struct inode_management *im = &sbi->im[ORPHAN_INO]; sbi 602 fs/f2fs/checkpoint.c f2fs_bug_on(sbi, im->ino_num == 0); sbi 614 fs/f2fs/checkpoint.c void f2fs_remove_orphan_inode(struct f2fs_sb_info *sbi, nid_t ino) sbi 617 fs/f2fs/checkpoint.c __remove_ino_entry(sbi, ino, ORPHAN_INO); sbi 620 fs/f2fs/checkpoint.c static int recover_orphan_inode(struct f2fs_sb_info *sbi, nid_t ino) sbi 626 fs/f2fs/checkpoint.c inode = f2fs_iget_retry(sbi->sb, ino); sbi 632 fs/f2fs/checkpoint.c f2fs_bug_on(sbi, PTR_ERR(inode) == -ENOENT); sbi 647 fs/f2fs/checkpoint.c err = f2fs_get_node_info(sbi, ino, &ni); sbi 659 fs/f2fs/checkpoint.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 660 fs/f2fs/checkpoint.c f2fs_warn(sbi, "%s: orphan failed (ino=%x), run fsck to fix.", sbi 665 fs/f2fs/checkpoint.c int f2fs_recover_orphan_inodes(struct f2fs_sb_info *sbi) sbi 668 fs/f2fs/checkpoint.c unsigned int s_flags = sbi->sb->s_flags; sbi 674 fs/f2fs/checkpoint.c if (!is_set_ckpt_flags(sbi, CP_ORPHAN_PRESENT_FLAG)) sbi 677 fs/f2fs/checkpoint.c if (bdev_read_only(sbi->sb->s_bdev)) { sbi 678 fs/f2fs/checkpoint.c f2fs_info(sbi, "write access unavailable, skipping orphan cleanup"); sbi 683 fs/f2fs/checkpoint.c f2fs_info(sbi, "orphan cleanup on readonly fs"); sbi 684 fs/f2fs/checkpoint.c sbi->sb->s_flags &= ~SB_RDONLY; sbi 689 fs/f2fs/checkpoint.c sbi->sb->s_flags |= SB_ACTIVE; sbi 695 fs/f2fs/checkpoint.c quota_enabled = f2fs_enable_quota_files(sbi, s_flags & SB_RDONLY); sbi 698 fs/f2fs/checkpoint.c start_blk = __start_cp_addr(sbi) + 1 + __cp_payload(sbi); sbi 699 fs/f2fs/checkpoint.c orphan_blocks = __start_sum_addr(sbi) - 1 - __cp_payload(sbi); sbi 701 fs/f2fs/checkpoint.c f2fs_ra_meta_pages(sbi, start_blk, orphan_blocks, META_CP, true); sbi 707 fs/f2fs/checkpoint.c page = f2fs_get_meta_page(sbi, start_blk + i); sbi 716 fs/f2fs/checkpoint.c err = recover_orphan_inode(sbi, ino); sbi 725 fs/f2fs/checkpoint.c clear_ckpt_flags(sbi, CP_ORPHAN_PRESENT_FLAG); sbi 727 fs/f2fs/checkpoint.c set_sbi_flag(sbi, SBI_IS_RECOVERED); sbi 732 fs/f2fs/checkpoint.c f2fs_quota_off_umount(sbi->sb); sbi 734 fs/f2fs/checkpoint.c sbi->sb->s_flags = s_flags; /* Restore SB_RDONLY status */ sbi 739 fs/f2fs/checkpoint.c static void write_orphan_inodes(struct f2fs_sb_info *sbi, block_t start_blk) sbi 748 fs/f2fs/checkpoint.c struct inode_management *im = &sbi->im[ORPHAN_INO]; sbi 762 fs/f2fs/checkpoint.c page = f2fs_grab_meta_page(sbi, start_blk++); sbi 796 fs/f2fs/checkpoint.c static __u32 f2fs_checkpoint_chksum(struct f2fs_sb_info *sbi, sbi 802 fs/f2fs/checkpoint.c chksum = f2fs_crc32(sbi, ckpt, chksum_ofs); sbi 805 fs/f2fs/checkpoint.c chksum = f2fs_chksum(sbi, chksum, (__u8 *)ckpt + chksum_ofs, sbi 811 fs/f2fs/checkpoint.c static int get_checkpoint_version(struct f2fs_sb_info *sbi, block_t cp_addr, sbi 818 fs/f2fs/checkpoint.c *cp_page = f2fs_get_meta_page(sbi, cp_addr); sbi 828 fs/f2fs/checkpoint.c f2fs_warn(sbi, "invalid crc_offset: %zu", crc_offset); sbi 832 fs/f2fs/checkpoint.c crc = f2fs_checkpoint_chksum(sbi, *cp_block); sbi 835 fs/f2fs/checkpoint.c f2fs_warn(sbi, "invalid crc value"); sbi 843 fs/f2fs/checkpoint.c static struct page *validate_checkpoint(struct f2fs_sb_info *sbi, sbi 851 fs/f2fs/checkpoint.c err = get_checkpoint_version(sbi, cp_addr, &cp_block, sbi 857 fs/f2fs/checkpoint.c sbi->blocks_per_seg) { sbi 858 fs/f2fs/checkpoint.c f2fs_warn(sbi, "invalid cp_pack_total_block_count:%u", sbi 865 fs/f2fs/checkpoint.c err = get_checkpoint_version(sbi, cp_addr, &cp_block, sbi 882 fs/f2fs/checkpoint.c int f2fs_get_valid_checkpoint(struct f2fs_sb_info *sbi) sbi 885 fs/f2fs/checkpoint.c struct f2fs_super_block *fsb = sbi->raw_super; sbi 887 fs/f2fs/checkpoint.c unsigned long blk_size = sbi->blocksize; sbi 890 fs/f2fs/checkpoint.c unsigned int cp_blks = 1 + __cp_payload(sbi); sbi 895 fs/f2fs/checkpoint.c sbi->ckpt = f2fs_kzalloc(sbi, array_size(blk_size, cp_blks), sbi 897 fs/f2fs/checkpoint.c if (!sbi->ckpt) sbi 904 fs/f2fs/checkpoint.c cp1 = validate_checkpoint(sbi, cp_start_blk_no, &cp1_version); sbi 909 fs/f2fs/checkpoint.c cp2 = validate_checkpoint(sbi, cp_start_blk_no, &cp2_version); sbi 926 fs/f2fs/checkpoint.c memcpy(sbi->ckpt, cp_block, blk_size); sbi 929 fs/f2fs/checkpoint.c sbi->cur_cp_pack = 1; sbi 931 fs/f2fs/checkpoint.c sbi->cur_cp_pack = 2; sbi 934 fs/f2fs/checkpoint.c if (f2fs_sanity_check_ckpt(sbi)) { sbi 948 fs/f2fs/checkpoint.c unsigned char *ckpt = (unsigned char *)sbi->ckpt; sbi 950 fs/f2fs/checkpoint.c cur_page = f2fs_get_meta_page(sbi, cp_blk_no + i); sbi 968 fs/f2fs/checkpoint.c kvfree(sbi->ckpt); sbi 974 fs/f2fs/checkpoint.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 983 fs/f2fs/checkpoint.c &sbi->inode_list[type]); sbi 984 fs/f2fs/checkpoint.c stat_inc_dirty_inode(sbi, type); sbi 1001 fs/f2fs/checkpoint.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 1008 fs/f2fs/checkpoint.c spin_lock(&sbi->inode_lock[type]); sbi 1009 fs/f2fs/checkpoint.c if (type != FILE_INODE || test_opt(sbi, DATA_FLUSH)) sbi 1012 fs/f2fs/checkpoint.c spin_unlock(&sbi->inode_lock[type]); sbi 1020 fs/f2fs/checkpoint.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 1027 fs/f2fs/checkpoint.c if (type == FILE_INODE && !test_opt(sbi, DATA_FLUSH)) sbi 1030 fs/f2fs/checkpoint.c spin_lock(&sbi->inode_lock[type]); sbi 1032 fs/f2fs/checkpoint.c spin_unlock(&sbi->inode_lock[type]); sbi 1035 fs/f2fs/checkpoint.c int f2fs_sync_dirty_inodes(struct f2fs_sb_info *sbi, enum inode_type type) sbi 1043 fs/f2fs/checkpoint.c trace_f2fs_sync_dirty_inodes_enter(sbi->sb, is_dir, sbi 1044 fs/f2fs/checkpoint.c get_pages(sbi, is_dir ? sbi 1047 fs/f2fs/checkpoint.c if (unlikely(f2fs_cp_error(sbi))) sbi 1050 fs/f2fs/checkpoint.c spin_lock(&sbi->inode_lock[type]); sbi 1052 fs/f2fs/checkpoint.c head = &sbi->inode_list[type]; sbi 1054 fs/f2fs/checkpoint.c spin_unlock(&sbi->inode_lock[type]); sbi 1055 fs/f2fs/checkpoint.c trace_f2fs_sync_dirty_inodes_exit(sbi->sb, is_dir, sbi 1056 fs/f2fs/checkpoint.c get_pages(sbi, is_dir ? sbi 1062 fs/f2fs/checkpoint.c spin_unlock(&sbi->inode_lock[type]); sbi 1083 fs/f2fs/checkpoint.c f2fs_submit_merged_write(sbi, DATA); sbi 1089 fs/f2fs/checkpoint.c int f2fs_sync_inode_meta(struct f2fs_sb_info *sbi) sbi 1091 fs/f2fs/checkpoint.c struct list_head *head = &sbi->inode_list[DIRTY_META]; sbi 1094 fs/f2fs/checkpoint.c s64 total = get_pages(sbi, F2FS_DIRTY_IMETA); sbi 1097 fs/f2fs/checkpoint.c if (unlikely(f2fs_cp_error(sbi))) sbi 1100 fs/f2fs/checkpoint.c spin_lock(&sbi->inode_lock[DIRTY_META]); sbi 1102 fs/f2fs/checkpoint.c spin_unlock(&sbi->inode_lock[DIRTY_META]); sbi 1108 fs/f2fs/checkpoint.c spin_unlock(&sbi->inode_lock[DIRTY_META]); sbi 1121 fs/f2fs/checkpoint.c static void __prepare_cp_block(struct f2fs_sb_info *sbi) sbi 1123 fs/f2fs/checkpoint.c struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); sbi 1124 fs/f2fs/checkpoint.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 1127 fs/f2fs/checkpoint.c next_free_nid(sbi, &last_nid); sbi 1128 fs/f2fs/checkpoint.c ckpt->valid_block_count = cpu_to_le64(valid_user_blocks(sbi)); sbi 1129 fs/f2fs/checkpoint.c ckpt->valid_node_count = cpu_to_le32(valid_node_count(sbi)); sbi 1130 fs/f2fs/checkpoint.c ckpt->valid_inode_count = cpu_to_le32(valid_inode_count(sbi)); sbi 1134 fs/f2fs/checkpoint.c static bool __need_flush_quota(struct f2fs_sb_info *sbi) sbi 1138 fs/f2fs/checkpoint.c if (!is_journalled_quota(sbi)) sbi 1141 fs/f2fs/checkpoint.c down_write(&sbi->quota_sem); sbi 1142 fs/f2fs/checkpoint.c if (is_sbi_flag_set(sbi, SBI_QUOTA_SKIP_FLUSH)) { sbi 1144 fs/f2fs/checkpoint.c } else if (is_sbi_flag_set(sbi, SBI_QUOTA_NEED_REPAIR)) { sbi 1146 fs/f2fs/checkpoint.c } else if (is_sbi_flag_set(sbi, SBI_QUOTA_NEED_FLUSH)) { sbi 1147 fs/f2fs/checkpoint.c clear_sbi_flag(sbi, SBI_QUOTA_NEED_FLUSH); sbi 1149 fs/f2fs/checkpoint.c } else if (get_pages(sbi, F2FS_DIRTY_QDATA)) { sbi 1152 fs/f2fs/checkpoint.c up_write(&sbi->quota_sem); sbi 1159 fs/f2fs/checkpoint.c static int block_operations(struct f2fs_sb_info *sbi) sbi 1172 fs/f2fs/checkpoint.c f2fs_lock_all(sbi); sbi 1173 fs/f2fs/checkpoint.c if (__need_flush_quota(sbi)) { sbi 1177 fs/f2fs/checkpoint.c set_sbi_flag(sbi, SBI_QUOTA_SKIP_FLUSH); sbi 1178 fs/f2fs/checkpoint.c set_sbi_flag(sbi, SBI_QUOTA_NEED_FLUSH); sbi 1181 fs/f2fs/checkpoint.c f2fs_unlock_all(sbi); sbi 1184 fs/f2fs/checkpoint.c locked = down_read_trylock(&sbi->sb->s_umount); sbi 1185 fs/f2fs/checkpoint.c f2fs_quota_sync(sbi->sb, -1); sbi 1187 fs/f2fs/checkpoint.c up_read(&sbi->sb->s_umount); sbi 1194 fs/f2fs/checkpoint.c if (get_pages(sbi, F2FS_DIRTY_DENTS)) { sbi 1195 fs/f2fs/checkpoint.c f2fs_unlock_all(sbi); sbi 1196 fs/f2fs/checkpoint.c err = f2fs_sync_dirty_inodes(sbi, DIR_INODE); sbi 1207 fs/f2fs/checkpoint.c down_write(&sbi->node_change); sbi 1209 fs/f2fs/checkpoint.c if (get_pages(sbi, F2FS_DIRTY_IMETA)) { sbi 1210 fs/f2fs/checkpoint.c up_write(&sbi->node_change); sbi 1211 fs/f2fs/checkpoint.c f2fs_unlock_all(sbi); sbi 1212 fs/f2fs/checkpoint.c err = f2fs_sync_inode_meta(sbi); sbi 1220 fs/f2fs/checkpoint.c down_write(&sbi->node_write); sbi 1222 fs/f2fs/checkpoint.c if (get_pages(sbi, F2FS_DIRTY_NODES)) { sbi 1223 fs/f2fs/checkpoint.c up_write(&sbi->node_write); sbi 1224 fs/f2fs/checkpoint.c atomic_inc(&sbi->wb_sync_req[NODE]); sbi 1225 fs/f2fs/checkpoint.c err = f2fs_sync_node_pages(sbi, &wbc, false, FS_CP_NODE_IO); sbi 1226 fs/f2fs/checkpoint.c atomic_dec(&sbi->wb_sync_req[NODE]); sbi 1228 fs/f2fs/checkpoint.c up_write(&sbi->node_change); sbi 1229 fs/f2fs/checkpoint.c f2fs_unlock_all(sbi); sbi 1240 fs/f2fs/checkpoint.c __prepare_cp_block(sbi); sbi 1241 fs/f2fs/checkpoint.c up_write(&sbi->node_change); sbi 1247 fs/f2fs/checkpoint.c static void unblock_operations(struct f2fs_sb_info *sbi) sbi 1249 fs/f2fs/checkpoint.c up_write(&sbi->node_write); sbi 1250 fs/f2fs/checkpoint.c f2fs_unlock_all(sbi); sbi 1253 fs/f2fs/checkpoint.c void f2fs_wait_on_all_pages(struct f2fs_sb_info *sbi, int type) sbi 1258 fs/f2fs/checkpoint.c prepare_to_wait(&sbi->cp_wait, &wait, TASK_UNINTERRUPTIBLE); sbi 1260 fs/f2fs/checkpoint.c if (!get_pages(sbi, type)) sbi 1263 fs/f2fs/checkpoint.c if (unlikely(f2fs_cp_error(sbi))) sbi 1268 fs/f2fs/checkpoint.c finish_wait(&sbi->cp_wait, &wait); sbi 1271 fs/f2fs/checkpoint.c static void update_ckpt_flags(struct f2fs_sb_info *sbi, struct cp_control *cpc) sbi 1273 fs/f2fs/checkpoint.c unsigned long orphan_num = sbi->im[ORPHAN_INO].ino_num; sbi 1274 fs/f2fs/checkpoint.c struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); sbi 1277 fs/f2fs/checkpoint.c spin_lock_irqsave(&sbi->cp_lock, flags); sbi 1281 fs/f2fs/checkpoint.c sbi->blocks_per_seg - NM_I(sbi)->nat_bits_blocks) sbi 1282 fs/f2fs/checkpoint.c disable_nat_bits(sbi, false); sbi 1304 fs/f2fs/checkpoint.c if (is_sbi_flag_set(sbi, SBI_NEED_FSCK)) sbi 1307 fs/f2fs/checkpoint.c if (is_sbi_flag_set(sbi, SBI_IS_RESIZEFS)) sbi 1312 fs/f2fs/checkpoint.c if (is_sbi_flag_set(sbi, SBI_CP_DISABLED)) sbi 1317 fs/f2fs/checkpoint.c if (is_sbi_flag_set(sbi, SBI_CP_DISABLED_QUICK)) sbi 1322 fs/f2fs/checkpoint.c if (is_sbi_flag_set(sbi, SBI_QUOTA_SKIP_FLUSH)) sbi 1327 fs/f2fs/checkpoint.c if (is_sbi_flag_set(sbi, SBI_QUOTA_NEED_REPAIR)) sbi 1334 fs/f2fs/checkpoint.c spin_unlock_irqrestore(&sbi->cp_lock, flags); sbi 1337 fs/f2fs/checkpoint.c static void commit_checkpoint(struct f2fs_sb_info *sbi, sbi 1349 fs/f2fs/checkpoint.c struct page *page = f2fs_grab_meta_page(sbi, blk_addr); sbi 1358 fs/f2fs/checkpoint.c f2fs_bug_on(sbi, 1); sbi 1362 fs/f2fs/checkpoint.c if (unlikely(err && f2fs_cp_error(sbi))) { sbi 1367 fs/f2fs/checkpoint.c f2fs_bug_on(sbi, err); sbi 1371 fs/f2fs/checkpoint.c f2fs_submit_merged_write(sbi, META_FLUSH); sbi 1374 fs/f2fs/checkpoint.c static int do_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc) sbi 1376 fs/f2fs/checkpoint.c struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); sbi 1377 fs/f2fs/checkpoint.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 1378 fs/f2fs/checkpoint.c unsigned long orphan_num = sbi->im[ORPHAN_INO].ino_num, flags; sbi 1383 fs/f2fs/checkpoint.c int cp_payload_blks = __cp_payload(sbi); sbi 1384 fs/f2fs/checkpoint.c struct super_block *sb = sbi->sb; sbi 1385 fs/f2fs/checkpoint.c struct curseg_info *seg_i = CURSEG_I(sbi, CURSEG_HOT_NODE); sbi 1390 fs/f2fs/checkpoint.c f2fs_sync_meta_pages(sbi, META, LONG_MAX, FS_CP_META_IO); sbi 1396 fs/f2fs/checkpoint.c ckpt->elapsed_time = cpu_to_le64(get_mtime(sbi, true)); sbi 1397 fs/f2fs/checkpoint.c ckpt->free_segment_count = cpu_to_le32(free_segments(sbi)); sbi 1400 fs/f2fs/checkpoint.c cpu_to_le32(curseg_segno(sbi, i + CURSEG_HOT_NODE)); sbi 1402 fs/f2fs/checkpoint.c cpu_to_le16(curseg_blkoff(sbi, i + CURSEG_HOT_NODE)); sbi 1404 fs/f2fs/checkpoint.c curseg_alloc_type(sbi, i + CURSEG_HOT_NODE); sbi 1408 fs/f2fs/checkpoint.c cpu_to_le32(curseg_segno(sbi, i + CURSEG_HOT_DATA)); sbi 1410 fs/f2fs/checkpoint.c cpu_to_le16(curseg_blkoff(sbi, i + CURSEG_HOT_DATA)); sbi 1412 fs/f2fs/checkpoint.c curseg_alloc_type(sbi, i + CURSEG_HOT_DATA); sbi 1416 fs/f2fs/checkpoint.c data_sum_blocks = f2fs_npages_for_summary_flush(sbi, false); sbi 1417 fs/f2fs/checkpoint.c spin_lock_irqsave(&sbi->cp_lock, flags); sbi 1422 fs/f2fs/checkpoint.c spin_unlock_irqrestore(&sbi->cp_lock, flags); sbi 1438 fs/f2fs/checkpoint.c update_ckpt_flags(sbi, cpc); sbi 1441 fs/f2fs/checkpoint.c get_sit_bitmap(sbi, __bitmap_ptr(sbi, SIT_BITMAP)); sbi 1442 fs/f2fs/checkpoint.c get_nat_bitmap(sbi, __bitmap_ptr(sbi, NAT_BITMAP)); sbi 1444 fs/f2fs/checkpoint.c crc32 = f2fs_checkpoint_chksum(sbi, ckpt); sbi 1449 fs/f2fs/checkpoint.c start_blk = __start_cp_next_addr(sbi); sbi 1452 fs/f2fs/checkpoint.c if (enabled_nat_bits(sbi, cpc)) { sbi 1459 fs/f2fs/checkpoint.c blk = start_blk + sbi->blocks_per_seg - nm_i->nat_bits_blocks; sbi 1461 fs/f2fs/checkpoint.c f2fs_update_meta_page(sbi, nm_i->nat_bits + sbi 1466 fs/f2fs/checkpoint.c f2fs_update_meta_page(sbi, ckpt, start_blk++); sbi 1469 fs/f2fs/checkpoint.c f2fs_update_meta_page(sbi, (char *)ckpt + i * F2FS_BLKSIZE, sbi 1473 fs/f2fs/checkpoint.c write_orphan_inodes(sbi, start_blk); sbi 1477 fs/f2fs/checkpoint.c f2fs_write_data_summaries(sbi, start_blk); sbi 1481 fs/f2fs/checkpoint.c kbytes_written = sbi->kbytes_written; sbi 1483 fs/f2fs/checkpoint.c kbytes_written += BD_PART_WRITTEN(sbi); sbi 1488 fs/f2fs/checkpoint.c f2fs_write_node_summaries(sbi, start_blk); sbi 1493 fs/f2fs/checkpoint.c sbi->last_valid_block_count = sbi->total_valid_block_count; sbi 1494 fs/f2fs/checkpoint.c percpu_counter_set(&sbi->alloc_valid_block_count, 0); sbi 1497 fs/f2fs/checkpoint.c f2fs_sync_meta_pages(sbi, META, LONG_MAX, FS_CP_META_IO); sbi 1499 fs/f2fs/checkpoint.c f2fs_wait_on_all_pages(sbi, F2FS_DIRTY_META); sbi 1502 fs/f2fs/checkpoint.c f2fs_wait_on_all_pages(sbi, F2FS_WB_CP_DATA); sbi 1505 fs/f2fs/checkpoint.c err = f2fs_flush_device_cache(sbi); sbi 1510 fs/f2fs/checkpoint.c commit_checkpoint(sbi, ckpt, start_blk); sbi 1511 fs/f2fs/checkpoint.c f2fs_wait_on_all_pages(sbi, F2FS_WB_CP_DATA); sbi 1517 fs/f2fs/checkpoint.c if (f2fs_sb_has_encrypt(sbi)) sbi 1518 fs/f2fs/checkpoint.c invalidate_mapping_pages(META_MAPPING(sbi), sbi 1519 fs/f2fs/checkpoint.c MAIN_BLKADDR(sbi), MAX_BLKADDR(sbi) - 1); sbi 1521 fs/f2fs/checkpoint.c f2fs_release_ino_entry(sbi, false); sbi 1523 fs/f2fs/checkpoint.c f2fs_reset_fsync_node_info(sbi); sbi 1525 fs/f2fs/checkpoint.c clear_sbi_flag(sbi, SBI_IS_DIRTY); sbi 1526 fs/f2fs/checkpoint.c clear_sbi_flag(sbi, SBI_NEED_CP); sbi 1527 fs/f2fs/checkpoint.c clear_sbi_flag(sbi, SBI_QUOTA_SKIP_FLUSH); sbi 1529 fs/f2fs/checkpoint.c spin_lock(&sbi->stat_lock); sbi 1530 fs/f2fs/checkpoint.c sbi->unusable_block_count = 0; sbi 1531 fs/f2fs/checkpoint.c spin_unlock(&sbi->stat_lock); sbi 1533 fs/f2fs/checkpoint.c __set_cp_next_pack(sbi); sbi 1539 fs/f2fs/checkpoint.c if (get_pages(sbi, F2FS_DIRTY_NODES) || sbi 1540 fs/f2fs/checkpoint.c get_pages(sbi, F2FS_DIRTY_IMETA)) sbi 1541 fs/f2fs/checkpoint.c set_sbi_flag(sbi, SBI_IS_DIRTY); sbi 1543 fs/f2fs/checkpoint.c f2fs_bug_on(sbi, get_pages(sbi, F2FS_DIRTY_DENTS)); sbi 1545 fs/f2fs/checkpoint.c return unlikely(f2fs_cp_error(sbi)) ? -EIO : 0; sbi 1551 fs/f2fs/checkpoint.c int f2fs_write_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc) sbi 1553 fs/f2fs/checkpoint.c struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); sbi 1557 fs/f2fs/checkpoint.c if (f2fs_readonly(sbi->sb) || f2fs_hw_is_readonly(sbi)) sbi 1560 fs/f2fs/checkpoint.c if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED))) { sbi 1563 fs/f2fs/checkpoint.c f2fs_warn(sbi, "Start checkpoint disabled!"); sbi 1565 fs/f2fs/checkpoint.c mutex_lock(&sbi->cp_mutex); sbi 1567 fs/f2fs/checkpoint.c if (!is_sbi_flag_set(sbi, SBI_IS_DIRTY) && sbi 1569 fs/f2fs/checkpoint.c ((cpc->reason & CP_DISCARD) && !sbi->discard_blks))) sbi 1571 fs/f2fs/checkpoint.c if (unlikely(f2fs_cp_error(sbi))) { sbi 1576 fs/f2fs/checkpoint.c trace_f2fs_write_checkpoint(sbi->sb, cpc->reason, "start block_ops"); sbi 1578 fs/f2fs/checkpoint.c err = block_operations(sbi); sbi 1582 fs/f2fs/checkpoint.c trace_f2fs_write_checkpoint(sbi->sb, cpc->reason, "finish block_ops"); sbi 1584 fs/f2fs/checkpoint.c f2fs_flush_merged_writes(sbi); sbi 1588 fs/f2fs/checkpoint.c if (!f2fs_exist_trim_candidates(sbi, cpc)) { sbi 1589 fs/f2fs/checkpoint.c unblock_operations(sbi); sbi 1593 fs/f2fs/checkpoint.c if (NM_I(sbi)->dirty_nat_cnt == 0 && sbi 1594 fs/f2fs/checkpoint.c SIT_I(sbi)->dirty_sentries == 0 && sbi 1595 fs/f2fs/checkpoint.c prefree_segments(sbi) == 0) { sbi 1596 fs/f2fs/checkpoint.c f2fs_flush_sit_entries(sbi, cpc); sbi 1597 fs/f2fs/checkpoint.c f2fs_clear_prefree_segments(sbi, cpc); sbi 1598 fs/f2fs/checkpoint.c unblock_operations(sbi); sbi 1612 fs/f2fs/checkpoint.c err = f2fs_flush_nat_entries(sbi, cpc); sbi 1616 fs/f2fs/checkpoint.c f2fs_flush_sit_entries(sbi, cpc); sbi 1619 fs/f2fs/checkpoint.c err = do_checkpoint(sbi, cpc); sbi 1621 fs/f2fs/checkpoint.c f2fs_release_discard_addrs(sbi); sbi 1623 fs/f2fs/checkpoint.c f2fs_clear_prefree_segments(sbi, cpc); sbi 1625 fs/f2fs/checkpoint.c unblock_operations(sbi); sbi 1626 fs/f2fs/checkpoint.c stat_inc_cp_count(sbi->stat_info); sbi 1629 fs/f2fs/checkpoint.c f2fs_notice(sbi, "checkpoint: version = %llx", ckpt_ver); sbi 1632 fs/f2fs/checkpoint.c f2fs_update_time(sbi, CP_TIME); sbi 1633 fs/f2fs/checkpoint.c trace_f2fs_write_checkpoint(sbi->sb, cpc->reason, "finish checkpoint"); sbi 1635 fs/f2fs/checkpoint.c mutex_unlock(&sbi->cp_mutex); sbi 1639 fs/f2fs/checkpoint.c void f2fs_init_ino_entry_info(struct f2fs_sb_info *sbi) sbi 1644 fs/f2fs/checkpoint.c struct inode_management *im = &sbi->im[i]; sbi 1652 fs/f2fs/checkpoint.c sbi->max_orphans = (sbi->blocks_per_seg - F2FS_CP_PACKS - sbi 1653 fs/f2fs/checkpoint.c NR_CURSEG_TYPE - __cp_payload(sbi)) * sbi 38 fs/f2fs/data.c struct f2fs_sb_info *sbi; sbi 44 fs/f2fs/data.c sbi = F2FS_I_SB(inode); sbi 46 fs/f2fs/data.c if (inode->i_ino == F2FS_META_INO(sbi) || sbi 47 fs/f2fs/data.c inode->i_ino == F2FS_NODE_INO(sbi) || sbi 62 fs/f2fs/data.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 64 fs/f2fs/data.c if (inode->i_ino == F2FS_META_INO(sbi)) sbi 67 fs/f2fs/data.c if (inode->i_ino == F2FS_NODE_INO(sbi)) sbi 189 fs/f2fs/data.c struct f2fs_sb_info *sbi = bio->bi_private; sbi 193 fs/f2fs/data.c if (time_to_inject(sbi, FAULT_WRITE_IO)) { sbi 206 fs/f2fs/data.c mempool_free(page, sbi->write_io_dummy); sbi 209 fs/f2fs/data.c f2fs_stop_checkpoint(sbi, true); sbi 218 fs/f2fs/data.c f2fs_stop_checkpoint(sbi, true); sbi 221 fs/f2fs/data.c f2fs_bug_on(sbi, page->mapping == NODE_MAPPING(sbi) && sbi 224 fs/f2fs/data.c dec_page_count(sbi, type); sbi 225 fs/f2fs/data.c if (f2fs_in_warm_node_list(sbi, page)) sbi 226 fs/f2fs/data.c f2fs_del_fsync_node_entry(sbi, page); sbi 230 fs/f2fs/data.c if (!get_pages(sbi, F2FS_WB_CP_DATA) && sbi 231 fs/f2fs/data.c wq_has_sleeper(&sbi->cp_wait)) sbi 232 fs/f2fs/data.c wake_up(&sbi->cp_wait); sbi 240 fs/f2fs/data.c struct block_device *f2fs_target_device(struct f2fs_sb_info *sbi, sbi 243 fs/f2fs/data.c struct block_device *bdev = sbi->sb->s_bdev; sbi 246 fs/f2fs/data.c if (f2fs_is_multi_device(sbi)) { sbi 247 fs/f2fs/data.c for (i = 0; i < sbi->s_ndevs; i++) { sbi 263 fs/f2fs/data.c int f2fs_target_device_index(struct f2fs_sb_info *sbi, block_t blkaddr) sbi 267 fs/f2fs/data.c if (!f2fs_is_multi_device(sbi)) sbi 270 fs/f2fs/data.c for (i = 0; i < sbi->s_ndevs; i++) sbi 276 fs/f2fs/data.c static bool __same_bdev(struct f2fs_sb_info *sbi, sbi 279 fs/f2fs/data.c struct block_device *b = f2fs_target_device(sbi, blk_addr, NULL); sbi 288 fs/f2fs/data.c struct f2fs_sb_info *sbi = fio->sbi; sbi 291 fs/f2fs/data.c bio = f2fs_bio_alloc(sbi, npages, true); sbi 293 fs/f2fs/data.c f2fs_target_device(sbi, fio->new_blkaddr, bio); sbi 299 fs/f2fs/data.c bio->bi_private = sbi; sbi 300 fs/f2fs/data.c bio->bi_write_hint = f2fs_io_type_to_rw_hint(sbi, sbi 309 fs/f2fs/data.c static inline void __submit_bio(struct f2fs_sb_info *sbi, sbi 318 fs/f2fs/data.c if (test_opt(sbi, LFS) && current->plug) sbi 321 fs/f2fs/data.c if (F2FS_IO_ALIGNED(sbi)) sbi 325 fs/f2fs/data.c start %= F2FS_IO_SIZE(sbi); sbi 331 fs/f2fs/data.c for (; start < F2FS_IO_SIZE(sbi); start++) { sbi 333 fs/f2fs/data.c mempool_alloc(sbi->write_io_dummy, sbi 335 fs/f2fs/data.c f2fs_bug_on(sbi, !page); sbi 342 fs/f2fs/data.c f2fs_bug_on(sbi, 1); sbi 349 fs/f2fs/data.c set_sbi_flag(sbi, SBI_NEED_CP); sbi 353 fs/f2fs/data.c trace_f2fs_submit_read_bio(sbi->sb, type, bio); sbi 355 fs/f2fs/data.c trace_f2fs_submit_write_bio(sbi->sb, type, bio); sbi 369 fs/f2fs/data.c trace_f2fs_prepare_read_bio(io->sbi->sb, fio->type, io->bio); sbi 371 fs/f2fs/data.c trace_f2fs_prepare_write_bio(io->sbi->sb, fio->type, io->bio); sbi 373 fs/f2fs/data.c __submit_bio(io->sbi, io->bio, fio->type); sbi 407 fs/f2fs/data.c static void __f2fs_submit_merged_write(struct f2fs_sb_info *sbi, sbi 411 fs/f2fs/data.c struct f2fs_bio_info *io = sbi->write_io[btype] + temp; sbi 420 fs/f2fs/data.c if (!test_opt(sbi, NOBARRIER)) sbi 427 fs/f2fs/data.c static void __submit_merged_write_cond(struct f2fs_sb_info *sbi, sbi 437 fs/f2fs/data.c struct f2fs_bio_info *io = sbi->write_io[btype] + temp; sbi 444 fs/f2fs/data.c __f2fs_submit_merged_write(sbi, type, temp); sbi 452 fs/f2fs/data.c void f2fs_submit_merged_write(struct f2fs_sb_info *sbi, enum page_type type) sbi 454 fs/f2fs/data.c __submit_merged_write_cond(sbi, NULL, NULL, 0, type, true); sbi 457 fs/f2fs/data.c void f2fs_submit_merged_write_cond(struct f2fs_sb_info *sbi, sbi 461 fs/f2fs/data.c __submit_merged_write_cond(sbi, inode, page, ino, type, false); sbi 464 fs/f2fs/data.c void f2fs_flush_merged_writes(struct f2fs_sb_info *sbi) sbi 466 fs/f2fs/data.c f2fs_submit_merged_write(sbi, DATA); sbi 467 fs/f2fs/data.c f2fs_submit_merged_write(sbi, NODE); sbi 468 fs/f2fs/data.c f2fs_submit_merged_write(sbi, META); sbi 481 fs/f2fs/data.c if (!f2fs_is_valid_blkaddr(fio->sbi, fio->new_blkaddr, sbi 502 fs/f2fs/data.c inc_page_count(fio->sbi, is_read_io(fio->op) ? sbi 505 fs/f2fs/data.c __submit_bio(fio->sbi, bio, fio->type); sbi 509 fs/f2fs/data.c static bool page_is_mergeable(struct f2fs_sb_info *sbi, struct bio *bio, sbi 514 fs/f2fs/data.c return __same_bdev(sbi, cur_blkaddr, bio); sbi 525 fs/f2fs/data.c static bool io_is_mergeable(struct f2fs_sb_info *sbi, struct bio *bio, sbi 531 fs/f2fs/data.c if (F2FS_IO_ALIGNED(sbi) && (fio->type == DATA || fio->type == NODE)) { sbi 534 fs/f2fs/data.c unsigned int io_size = F2FS_IO_SIZE(sbi); sbi 541 fs/f2fs/data.c if (!page_is_mergeable(sbi, bio, last_blkaddr, cur_blkaddr)) sbi 552 fs/f2fs/data.c if (!f2fs_is_valid_blkaddr(fio->sbi, fio->new_blkaddr, sbi 559 fs/f2fs/data.c if (bio && !page_is_mergeable(fio->sbi, bio, *fio->last_block, sbi 561 fs/f2fs/data.c __submit_bio(fio->sbi, bio, fio->type); sbi 571 fs/f2fs/data.c __submit_bio(fio->sbi, bio, fio->type); sbi 579 fs/f2fs/data.c inc_page_count(fio->sbi, WB_DATA_TYPE(page)); sbi 587 fs/f2fs/data.c static void f2fs_submit_ipu_bio(struct f2fs_sb_info *sbi, struct bio **bio, sbi 596 fs/f2fs/data.c __submit_bio(sbi, *bio, DATA); sbi 602 fs/f2fs/data.c struct f2fs_sb_info *sbi = fio->sbi; sbi 604 fs/f2fs/data.c struct f2fs_bio_info *io = sbi->write_io[btype] + fio->temp; sbi 607 fs/f2fs/data.c f2fs_bug_on(sbi, is_read_io(fio->op)); sbi 630 fs/f2fs/data.c inc_page_count(sbi, WB_DATA_TYPE(bio_page)); sbi 632 fs/f2fs/data.c if (io->bio && !io_is_mergeable(sbi, io->bio, io, fio, sbi 637 fs/f2fs/data.c if (F2FS_IO_ALIGNED(sbi) && sbi 639 fs/f2fs/data.c fio->new_blkaddr & F2FS_IO_SIZE_MASK(sbi)) { sbi 640 fs/f2fs/data.c dec_page_count(sbi, WB_DATA_TYPE(bio_page)); sbi 664 fs/f2fs/data.c if (is_sbi_flag_set(sbi, SBI_IS_SHUTDOWN) || sbi 665 fs/f2fs/data.c !f2fs_is_checkpoint_ready(sbi)) sbi 680 fs/f2fs/data.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 685 fs/f2fs/data.c bio = f2fs_bio_alloc(sbi, min_t(int, nr_pages, BIO_MAX_PAGES), false); sbi 688 fs/f2fs/data.c f2fs_target_device(sbi, blkaddr, bio); sbi 716 fs/f2fs/data.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 731 fs/f2fs/data.c inc_page_count(sbi, F2FS_RD_DATA); sbi 732 fs/f2fs/data.c __submit_bio(sbi, bio, DATA); sbi 774 fs/f2fs/data.c struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); sbi 782 fs/f2fs/data.c if (unlikely((err = inc_valid_block_count(sbi, dn->inode, &count)))) sbi 1030 fs/f2fs/data.c struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); sbi 1040 fs/f2fs/data.c err = f2fs_get_node_info(sbi, dn->nid, &ni); sbi 1049 fs/f2fs/data.c if (unlikely((err = inc_valid_block_count(sbi, dn->inode, &count)))) sbi 1055 fs/f2fs/data.c f2fs_allocate_data_block(sbi, NULL, old_blkaddr, &dn->data_blkaddr, sbi 1057 fs/f2fs/data.c if (GET_SEGNO(sbi, old_blkaddr) != NULL_SEGNO) sbi 1058 fs/f2fs/data.c invalidate_mapping_pages(META_MAPPING(sbi), sbi 1116 fs/f2fs/data.c void __do_map_lock(struct f2fs_sb_info *sbi, int flag, bool lock) sbi 1120 fs/f2fs/data.c down_read(&sbi->node_change); sbi 1122 fs/f2fs/data.c up_read(&sbi->node_change); sbi 1125 fs/f2fs/data.c f2fs_lock_op(sbi); sbi 1127 fs/f2fs/data.c f2fs_unlock_op(sbi); sbi 1145 fs/f2fs/data.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 1166 fs/f2fs/data.c if (test_opt(sbi, LFS) && flag == F2FS_GET_BLOCK_DIO && sbi 1185 fs/f2fs/data.c __do_map_lock(sbi, flag, true); sbi 1214 fs/f2fs/data.c !f2fs_is_valid_blkaddr(sbi, blkaddr, DATA_GENERIC_ENHANCE)) { sbi 1221 fs/f2fs/data.c if (test_opt(sbi, LFS) && flag == F2FS_GET_BLOCK_DIO && sbi 1231 fs/f2fs/data.c if (unlikely(f2fs_cp_error(sbi))) { sbi 1334 fs/f2fs/data.c __do_map_lock(sbi, flag, false); sbi 1335 fs/f2fs/data.c f2fs_balance_fs(sbi, dn.node_changed); sbi 1360 fs/f2fs/data.c __do_map_lock(sbi, flag, false); sbi 1361 fs/f2fs/data.c f2fs_balance_fs(sbi, dn.node_changed); sbi 1469 fs/f2fs/data.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 1480 fs/f2fs/data.c page = f2fs_grab_cache_page(NODE_MAPPING(sbi), sbi 1485 fs/f2fs/data.c err = f2fs_get_node_info(sbi, inode->i_ino, &ni); sbi 1512 fs/f2fs/data.c page = f2fs_grab_cache_page(NODE_MAPPING(sbi), xnid, false); sbi 1516 fs/f2fs/data.c err = f2fs_get_node_info(sbi, xnid, &ni); sbi 1864 fs/f2fs/data.c f2fs_flush_merged_writes(fio->sbi); sbi 1872 fs/f2fs/data.c mpage = find_lock_page(META_MAPPING(fio->sbi), fio->old_blkaddr); sbi 1885 fs/f2fs/data.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 1886 fs/f2fs/data.c unsigned int policy = SM_I(sbi)->ipu_policy; sbi 1890 fs/f2fs/data.c if (policy & (0x1 << F2FS_IPU_SSR) && f2fs_need_SSR(sbi)) sbi 1893 fs/f2fs/data.c utilization(sbi) > SM_I(sbi)->min_ipu_util) sbi 1895 fs/f2fs/data.c if (policy & (0x1 << F2FS_IPU_SSR_UTIL) && f2fs_need_SSR(sbi) && sbi 1896 fs/f2fs/data.c utilization(sbi) > SM_I(sbi)->min_ipu_util) sbi 1913 fs/f2fs/data.c if (unlikely(fio && is_sbi_flag_set(sbi, SBI_CP_DISABLED) && sbi 1914 fs/f2fs/data.c !f2fs_is_checkpointed_data(sbi, fio->old_blkaddr))) sbi 1934 fs/f2fs/data.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 1936 fs/f2fs/data.c if (test_opt(sbi, LFS)) sbi 1949 fs/f2fs/data.c if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED) && sbi 1950 fs/f2fs/data.c f2fs_is_checkpointed_data(sbi, fio->old_blkaddr))) sbi 1981 fs/f2fs/data.c if (!f2fs_is_valid_blkaddr(fio->sbi, fio->old_blkaddr, sbi 1991 fs/f2fs/data.c if (fio->need_lock == LOCK_REQ && !f2fs_trylock_op(fio->sbi)) sbi 2008 fs/f2fs/data.c !f2fs_is_valid_blkaddr(fio->sbi, fio->old_blkaddr, sbi 2028 fs/f2fs/data.c f2fs_unlock_op(fio->sbi); sbi 2043 fs/f2fs/data.c if (!f2fs_trylock_op(fio->sbi)) { sbi 2050 fs/f2fs/data.c err = f2fs_get_node_info(fio->sbi, dn.nid, &ni); sbi 2073 fs/f2fs/data.c f2fs_unlock_op(fio->sbi); sbi 2084 fs/f2fs/data.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 2093 fs/f2fs/data.c .sbi = sbi, sbi 2112 fs/f2fs/data.c if (unlikely(f2fs_cp_error(sbi))) { sbi 2123 fs/f2fs/data.c if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING))) sbi 2144 fs/f2fs/data.c f2fs_available_free_memory(sbi, BASE_CHECK)))) sbi 2156 fs/f2fs/data.c else if (has_not_enough_free_secs(sbi, 0, 0)) sbi 2197 fs/f2fs/data.c f2fs_submit_merged_write_cond(sbi, NULL, page, 0, DATA); sbi 2206 fs/f2fs/data.c f2fs_submit_ipu_bio(sbi, bio, page); sbi 2207 fs/f2fs/data.c f2fs_balance_fs(sbi, need_balance_fs); sbi 2210 fs/f2fs/data.c if (unlikely(f2fs_cp_error(sbi))) { sbi 2211 fs/f2fs/data.c f2fs_submit_ipu_bio(sbi, bio, page); sbi 2212 fs/f2fs/data.c f2fs_submit_merged_write(sbi, DATA); sbi 2253 fs/f2fs/data.c struct f2fs_sb_info *sbi = F2FS_M_SB(mapping); sbi 2310 fs/f2fs/data.c if (atomic_read(&sbi->wb_sync_req[DATA]) && sbi 2335 fs/f2fs/data.c f2fs_submit_ipu_bio(sbi, &bio, page); sbi 2396 fs/f2fs/data.c __submit_bio(sbi, bio, DATA); sbi 2423 fs/f2fs/data.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 2437 fs/f2fs/data.c if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING))) sbi 2442 fs/f2fs/data.c get_dirty_pages(inode) < nr_pages_to_skip(sbi, DATA) && sbi 2443 fs/f2fs/data.c f2fs_available_free_memory(sbi, DIRTY_DENTS)) sbi 2454 fs/f2fs/data.c atomic_inc(&sbi->wb_sync_req[DATA]); sbi 2455 fs/f2fs/data.c else if (atomic_read(&sbi->wb_sync_req[DATA])) sbi 2459 fs/f2fs/data.c mutex_lock(&sbi->writepages); sbi 2468 fs/f2fs/data.c mutex_unlock(&sbi->writepages); sbi 2471 fs/f2fs/data.c atomic_dec(&sbi->wb_sync_req[DATA]); sbi 2515 fs/f2fs/data.c static int prepare_write_begin(struct f2fs_sb_info *sbi, sbi 2545 fs/f2fs/data.c __do_map_lock(sbi, flag, true); sbi 2550 fs/f2fs/data.c ipage = f2fs_get_node_page(sbi, inode->i_ino); sbi 2581 fs/f2fs/data.c __do_map_lock(sbi, F2FS_GET_BLOCK_PRE_AIO, sbi 2597 fs/f2fs/data.c __do_map_lock(sbi, flag, false); sbi 2606 fs/f2fs/data.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 2615 fs/f2fs/data.c if (!f2fs_is_checkpoint_ready(sbi)) { sbi 2621 fs/f2fs/data.c !f2fs_available_free_memory(sbi, INMEM_PAGES)) || sbi 2652 fs/f2fs/data.c err = prepare_write_begin(sbi, page, pos, len, sbi 2658 fs/f2fs/data.c has_not_enough_free_secs(sbi, 0, 0)) { sbi 2660 fs/f2fs/data.c f2fs_balance_fs(sbi, true); sbi 2684 fs/f2fs/data.c if (!f2fs_is_valid_blkaddr(sbi, blkaddr, sbi 2709 fs/f2fs/data.c f2fs_drop_inmem_pages_all(sbi, false); sbi 2815 fs/f2fs/data.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 2822 fs/f2fs/data.c int whint_mode = F2FS_OPTION(sbi).whint_mode; sbi 2890 fs/f2fs/data.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 2892 fs/f2fs/data.c if (inode->i_ino >= F2FS_ROOT_INO(sbi) && sbi 2897 fs/f2fs/data.c if (inode->i_ino == F2FS_META_INO(sbi)) { sbi 2898 fs/f2fs/data.c dec_page_count(sbi, F2FS_DIRTY_META); sbi 2899 fs/f2fs/data.c } else if (inode->i_ino == F2FS_NODE_INO(sbi)) { sbi 2900 fs/f2fs/data.c dec_page_count(sbi, F2FS_DIRTY_NODES); sbi 27 fs/f2fs/debug.c static void update_general_status(struct f2fs_sb_info *sbi) sbi 29 fs/f2fs/debug.c struct f2fs_stat_info *si = F2FS_STAT(sbi); sbi 30 fs/f2fs/debug.c struct f2fs_super_block *raw_super = F2FS_RAW_SUPER(sbi); sbi 40 fs/f2fs/debug.c si->hit_largest = atomic64_read(&sbi->read_hit_largest); sbi 41 fs/f2fs/debug.c si->hit_cached = atomic64_read(&sbi->read_hit_cached); sbi 42 fs/f2fs/debug.c si->hit_rbtree = atomic64_read(&sbi->read_hit_rbtree); sbi 44 fs/f2fs/debug.c si->total_ext = atomic64_read(&sbi->total_hit_ext); sbi 45 fs/f2fs/debug.c si->ext_tree = atomic_read(&sbi->total_ext_tree); sbi 46 fs/f2fs/debug.c si->zombie_tree = atomic_read(&sbi->total_zombie_tree); sbi 47 fs/f2fs/debug.c si->ext_node = atomic_read(&sbi->total_ext_node); sbi 48 fs/f2fs/debug.c si->ndirty_node = get_pages(sbi, F2FS_DIRTY_NODES); sbi 49 fs/f2fs/debug.c si->ndirty_dent = get_pages(sbi, F2FS_DIRTY_DENTS); sbi 50 fs/f2fs/debug.c si->ndirty_meta = get_pages(sbi, F2FS_DIRTY_META); sbi 51 fs/f2fs/debug.c si->ndirty_data = get_pages(sbi, F2FS_DIRTY_DATA); sbi 52 fs/f2fs/debug.c si->ndirty_qdata = get_pages(sbi, F2FS_DIRTY_QDATA); sbi 53 fs/f2fs/debug.c si->ndirty_imeta = get_pages(sbi, F2FS_DIRTY_IMETA); sbi 54 fs/f2fs/debug.c si->ndirty_dirs = sbi->ndirty_inode[DIR_INODE]; sbi 55 fs/f2fs/debug.c si->ndirty_files = sbi->ndirty_inode[FILE_INODE]; sbi 56 fs/f2fs/debug.c si->nquota_files = sbi->nquota_files; sbi 57 fs/f2fs/debug.c si->ndirty_all = sbi->ndirty_inode[DIRTY_META]; sbi 58 fs/f2fs/debug.c si->inmem_pages = get_pages(sbi, F2FS_INMEM_PAGES); sbi 59 fs/f2fs/debug.c si->aw_cnt = atomic_read(&sbi->aw_cnt); sbi 60 fs/f2fs/debug.c si->vw_cnt = atomic_read(&sbi->vw_cnt); sbi 61 fs/f2fs/debug.c si->max_aw_cnt = atomic_read(&sbi->max_aw_cnt); sbi 62 fs/f2fs/debug.c si->max_vw_cnt = atomic_read(&sbi->max_vw_cnt); sbi 63 fs/f2fs/debug.c si->nr_dio_read = get_pages(sbi, F2FS_DIO_READ); sbi 64 fs/f2fs/debug.c si->nr_dio_write = get_pages(sbi, F2FS_DIO_WRITE); sbi 65 fs/f2fs/debug.c si->nr_wb_cp_data = get_pages(sbi, F2FS_WB_CP_DATA); sbi 66 fs/f2fs/debug.c si->nr_wb_data = get_pages(sbi, F2FS_WB_DATA); sbi 67 fs/f2fs/debug.c si->nr_rd_data = get_pages(sbi, F2FS_RD_DATA); sbi 68 fs/f2fs/debug.c si->nr_rd_node = get_pages(sbi, F2FS_RD_NODE); sbi 69 fs/f2fs/debug.c si->nr_rd_meta = get_pages(sbi, F2FS_RD_META); sbi 70 fs/f2fs/debug.c if (SM_I(sbi)->fcc_info) { sbi 72 fs/f2fs/debug.c atomic_read(&SM_I(sbi)->fcc_info->issued_flush); sbi 74 fs/f2fs/debug.c atomic_read(&SM_I(sbi)->fcc_info->queued_flush); sbi 76 fs/f2fs/debug.c llist_empty(&SM_I(sbi)->fcc_info->issue_list); sbi 78 fs/f2fs/debug.c if (SM_I(sbi)->dcc_info) { sbi 80 fs/f2fs/debug.c atomic_read(&SM_I(sbi)->dcc_info->issued_discard); sbi 82 fs/f2fs/debug.c atomic_read(&SM_I(sbi)->dcc_info->queued_discard); sbi 84 fs/f2fs/debug.c atomic_read(&SM_I(sbi)->dcc_info->discard_cmd_cnt); sbi 85 fs/f2fs/debug.c si->undiscard_blks = SM_I(sbi)->dcc_info->undiscard_blks; sbi 87 fs/f2fs/debug.c si->total_count = (int)sbi->user_block_count / sbi->blocks_per_seg; sbi 88 fs/f2fs/debug.c si->rsvd_segs = reserved_segments(sbi); sbi 89 fs/f2fs/debug.c si->overp_segs = overprovision_segments(sbi); sbi 90 fs/f2fs/debug.c si->valid_count = valid_user_blocks(sbi); sbi 91 fs/f2fs/debug.c si->discard_blks = discard_blocks(sbi); sbi 92 fs/f2fs/debug.c si->valid_node_count = valid_node_count(sbi); sbi 93 fs/f2fs/debug.c si->valid_inode_count = valid_inode_count(sbi); sbi 94 fs/f2fs/debug.c si->inline_xattr = atomic_read(&sbi->inline_xattr); sbi 95 fs/f2fs/debug.c si->inline_inode = atomic_read(&sbi->inline_inode); sbi 96 fs/f2fs/debug.c si->inline_dir = atomic_read(&sbi->inline_dir); sbi 97 fs/f2fs/debug.c si->append = sbi->im[APPEND_INO].ino_num; sbi 98 fs/f2fs/debug.c si->update = sbi->im[UPDATE_INO].ino_num; sbi 99 fs/f2fs/debug.c si->orphans = sbi->im[ORPHAN_INO].ino_num; sbi 100 fs/f2fs/debug.c si->utilization = utilization(sbi); sbi 102 fs/f2fs/debug.c si->free_segs = free_segments(sbi); sbi 103 fs/f2fs/debug.c si->free_secs = free_sections(sbi); sbi 104 fs/f2fs/debug.c si->prefree_count = prefree_segments(sbi); sbi 105 fs/f2fs/debug.c si->dirty_count = dirty_segments(sbi); sbi 106 fs/f2fs/debug.c if (sbi->node_inode) sbi 107 fs/f2fs/debug.c si->node_pages = NODE_MAPPING(sbi)->nrpages; sbi 108 fs/f2fs/debug.c if (sbi->meta_inode) sbi 109 fs/f2fs/debug.c si->meta_pages = META_MAPPING(sbi)->nrpages; sbi 110 fs/f2fs/debug.c si->nats = NM_I(sbi)->nat_cnt; sbi 111 fs/f2fs/debug.c si->dirty_nats = NM_I(sbi)->dirty_nat_cnt; sbi 112 fs/f2fs/debug.c si->sits = MAIN_SEGS(sbi); sbi 113 fs/f2fs/debug.c si->dirty_sits = SIT_I(sbi)->dirty_sentries; sbi 114 fs/f2fs/debug.c si->free_nids = NM_I(sbi)->nid_cnt[FREE_NID]; sbi 115 fs/f2fs/debug.c si->avail_nids = NM_I(sbi)->available_nids; sbi 116 fs/f2fs/debug.c si->alloc_nids = NM_I(sbi)->nid_cnt[PREALLOC_NID]; sbi 117 fs/f2fs/debug.c si->bg_gc = sbi->bg_gc; sbi 118 fs/f2fs/debug.c si->io_skip_bggc = sbi->io_skip_bggc; sbi 119 fs/f2fs/debug.c si->other_skip_bggc = sbi->other_skip_bggc; sbi 120 fs/f2fs/debug.c si->skipped_atomic_files[BG_GC] = sbi->skipped_atomic_files[BG_GC]; sbi 121 fs/f2fs/debug.c si->skipped_atomic_files[FG_GC] = sbi->skipped_atomic_files[FG_GC]; sbi 122 fs/f2fs/debug.c si->util_free = (int)(free_user_blocks(sbi) >> sbi->log_blocks_per_seg) sbi 123 fs/f2fs/debug.c * 100 / (int)(sbi->user_block_count >> sbi->log_blocks_per_seg) sbi 125 fs/f2fs/debug.c si->util_valid = (int)(written_block_count(sbi) >> sbi 126 fs/f2fs/debug.c sbi->log_blocks_per_seg) sbi 127 fs/f2fs/debug.c * 100 / (int)(sbi->user_block_count >> sbi->log_blocks_per_seg) sbi 131 fs/f2fs/debug.c struct curseg_info *curseg = CURSEG_I(sbi, i); sbi 133 fs/f2fs/debug.c si->cursec[i] = GET_SEC_FROM_SEG(sbi, curseg->segno); sbi 134 fs/f2fs/debug.c si->curzone[i] = GET_ZONE_FROM_SEC(sbi, si->cursec[i]); sbi 138 fs/f2fs/debug.c si->meta_count[i] = atomic_read(&sbi->meta_count[i]); sbi 141 fs/f2fs/debug.c si->segment_count[i] = sbi->segment_count[i]; sbi 142 fs/f2fs/debug.c si->block_count[i] = sbi->block_count[i]; sbi 145 fs/f2fs/debug.c si->inplace_count = atomic_read(&sbi->inplace_count); sbi 151 fs/f2fs/debug.c static void update_sit_info(struct f2fs_sb_info *sbi) sbi 153 fs/f2fs/debug.c struct f2fs_stat_info *si = F2FS_STAT(sbi); sbi 161 fs/f2fs/debug.c blks_per_sec = BLKS_PER_SEC(sbi); sbi 163 fs/f2fs/debug.c for (segno = 0; segno < MAIN_SEGS(sbi); segno += sbi->segs_per_sec) { sbi 164 fs/f2fs/debug.c vblocks = get_valid_blocks(sbi, segno, true); sbi 173 fs/f2fs/debug.c dist = div_u64(MAIN_SECS(sbi) * hblks_per_sec * hblks_per_sec, 100); sbi 184 fs/f2fs/debug.c static void update_mem_info(struct f2fs_sb_info *sbi) sbi 186 fs/f2fs/debug.c struct f2fs_stat_info *si = F2FS_STAT(sbi); sbi 196 fs/f2fs/debug.c si->base_mem += sizeof(struct f2fs_sb_info) + sbi->sb->s_blocksize; sbi 198 fs/f2fs/debug.c si->base_mem += sizeof(*sbi->ckpt); sbi 205 fs/f2fs/debug.c si->base_mem += MAIN_SEGS(sbi) * sizeof(struct seg_entry); sbi 206 fs/f2fs/debug.c si->base_mem += f2fs_bitmap_size(MAIN_SEGS(sbi)); sbi 207 fs/f2fs/debug.c si->base_mem += 2 * SIT_VBLOCK_MAP_SIZE * MAIN_SEGS(sbi); sbi 208 fs/f2fs/debug.c si->base_mem += SIT_VBLOCK_MAP_SIZE * MAIN_SEGS(sbi); sbi 210 fs/f2fs/debug.c if (__is_large_section(sbi)) sbi 211 fs/f2fs/debug.c si->base_mem += MAIN_SECS(sbi) * sizeof(struct sec_entry); sbi 212 fs/f2fs/debug.c si->base_mem += __bitmap_size(sbi, SIT_BITMAP); sbi 216 fs/f2fs/debug.c si->base_mem += f2fs_bitmap_size(MAIN_SEGS(sbi)); sbi 217 fs/f2fs/debug.c si->base_mem += f2fs_bitmap_size(MAIN_SECS(sbi)); sbi 225 fs/f2fs/debug.c si->base_mem += NR_DIRTY_TYPE * f2fs_bitmap_size(MAIN_SEGS(sbi)); sbi 226 fs/f2fs/debug.c si->base_mem += f2fs_bitmap_size(MAIN_SECS(sbi)); sbi 230 fs/f2fs/debug.c si->base_mem += __bitmap_size(sbi, NAT_BITMAP); sbi 231 fs/f2fs/debug.c si->base_mem += (NM_I(sbi)->nat_bits_blocks << F2FS_BLKSIZE_BITS); sbi 232 fs/f2fs/debug.c si->base_mem += NM_I(sbi)->nat_blocks * sbi 234 fs/f2fs/debug.c si->base_mem += NM_I(sbi)->nat_blocks / 8; sbi 235 fs/f2fs/debug.c si->base_mem += NM_I(sbi)->nat_blocks * sizeof(unsigned short); sbi 241 fs/f2fs/debug.c if (sbi->gc_thread) sbi 245 fs/f2fs/debug.c if (SM_I(sbi)->fcc_info) sbi 247 fs/f2fs/debug.c if (SM_I(sbi)->dcc_info) { sbi 250 fs/f2fs/debug.c atomic_read(&SM_I(sbi)->dcc_info->discard_cmd_cnt); sbi 254 fs/f2fs/debug.c si->cache_mem += (NM_I(sbi)->nid_cnt[FREE_NID] + sbi 255 fs/f2fs/debug.c NM_I(sbi)->nid_cnt[PREALLOC_NID]) * sbi 257 fs/f2fs/debug.c si->cache_mem += NM_I(sbi)->nat_cnt * sizeof(struct nat_entry); sbi 258 fs/f2fs/debug.c si->cache_mem += NM_I(sbi)->dirty_nat_cnt * sbi 262 fs/f2fs/debug.c si->cache_mem += sbi->im[i].ino_num * sizeof(struct ino_entry); sbi 263 fs/f2fs/debug.c si->cache_mem += atomic_read(&sbi->total_ext_tree) * sbi 265 fs/f2fs/debug.c si->cache_mem += atomic_read(&sbi->total_ext_node) * sbi 269 fs/f2fs/debug.c if (sbi->node_inode) { sbi 270 fs/f2fs/debug.c unsigned npages = NODE_MAPPING(sbi)->nrpages; sbi 273 fs/f2fs/debug.c if (sbi->meta_inode) { sbi 274 fs/f2fs/debug.c unsigned npages = META_MAPPING(sbi)->nrpages; sbi 287 fs/f2fs/debug.c update_general_status(si->sbi); sbi 290 fs/f2fs/debug.c si->sbi->sb->s_bdev, i++, sbi 291 fs/f2fs/debug.c f2fs_readonly(si->sbi->sb) ? "RO": "RW", sbi 292 fs/f2fs/debug.c is_set_ckpt_flags(si->sbi, CP_DISABLED_FLAG) ? sbi 293 fs/f2fs/debug.c "Disabled": (f2fs_cp_error(si->sbi) ? "Error": "Good")); sbi 300 fs/f2fs/debug.c if (test_opt(si->sbi, DISCARD)) sbi 444 fs/f2fs/debug.c update_sit_info(si->sbi); sbi 449 fs/f2fs/debug.c update_mem_info(si->sbi); sbi 465 fs/f2fs/debug.c int f2fs_build_stats(struct f2fs_sb_info *sbi) sbi 467 fs/f2fs/debug.c struct f2fs_super_block *raw_super = F2FS_RAW_SUPER(sbi); sbi 471 fs/f2fs/debug.c si = f2fs_kzalloc(sbi, sizeof(struct f2fs_stat_info), GFP_KERNEL); sbi 483 fs/f2fs/debug.c si->sbi = sbi; sbi 484 fs/f2fs/debug.c sbi->stat_info = si; sbi 486 fs/f2fs/debug.c atomic64_set(&sbi->total_hit_ext, 0); sbi 487 fs/f2fs/debug.c atomic64_set(&sbi->read_hit_rbtree, 0); sbi 488 fs/f2fs/debug.c atomic64_set(&sbi->read_hit_largest, 0); sbi 489 fs/f2fs/debug.c atomic64_set(&sbi->read_hit_cached, 0); sbi 491 fs/f2fs/debug.c atomic_set(&sbi->inline_xattr, 0); sbi 492 fs/f2fs/debug.c atomic_set(&sbi->inline_inode, 0); sbi 493 fs/f2fs/debug.c atomic_set(&sbi->inline_dir, 0); sbi 494 fs/f2fs/debug.c atomic_set(&sbi->inplace_count, 0); sbi 496 fs/f2fs/debug.c atomic_set(&sbi->meta_count[i], 0); sbi 498 fs/f2fs/debug.c atomic_set(&sbi->aw_cnt, 0); sbi 499 fs/f2fs/debug.c atomic_set(&sbi->vw_cnt, 0); sbi 500 fs/f2fs/debug.c atomic_set(&sbi->max_aw_cnt, 0); sbi 501 fs/f2fs/debug.c atomic_set(&sbi->max_vw_cnt, 0); sbi 510 fs/f2fs/debug.c void f2fs_destroy_stats(struct f2fs_sb_info *sbi) sbi 512 fs/f2fs/debug.c struct f2fs_stat_info *si = F2FS_STAT(sbi); sbi 117 fs/f2fs/dir.c const struct f2fs_sb_info *sbi = F2FS_SB(parent->i_sb); sbi 118 fs/f2fs/dir.c const struct unicode_map *um = sbi->s_encoding; sbi 130 fs/f2fs/dir.c if (f2fs_has_strict_mode(sbi)) sbi 146 fs/f2fs/dir.c struct f2fs_sb_info *sbi = F2FS_I_SB(dir); sbi 153 fs/f2fs/dir.c cf_name->name = f2fs_kmalloc(sbi, F2FS_NAME_LEN, GFP_NOFS); sbi 157 fs/f2fs/dir.c cf_name->len = utf8_casefold(sbi->s_encoding, sbi 176 fs/f2fs/dir.c struct f2fs_sb_info *sbi = F2FS_I_SB(parent); sbi 187 fs/f2fs/dir.c if (sbi->s_encoding && IS_CASEFOLDED(parent)) { sbi 784 fs/f2fs/dir.c struct f2fs_sb_info *sbi = F2FS_I_SB(dir); sbi 802 fs/f2fs/dir.c f2fs_release_orphan_inode(sbi); sbi 902 fs/f2fs/dir.c struct f2fs_sb_info *sbi = F2FS_I_SB(d->inode); sbi 904 fs/f2fs/dir.c bool readdir_ra = sbi->readdir_ra == 1; sbi 924 fs/f2fs/dir.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 937 fs/f2fs/dir.c f2fs_warn(sbi, "%s: corrupted namelen=%d, run fsck to fix.", sbi 939 fs/f2fs/dir.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 964 fs/f2fs/dir.c f2fs_ra_node_page(sbi, le32_to_cpu(de->ino)); sbi 1085 fs/f2fs/dir.c struct f2fs_sb_info *sbi = F2FS_SB(dentry->d_sb); sbi 1086 fs/f2fs/dir.c const struct unicode_map *um = sbi->s_encoding; sbi 1094 fs/f2fs/dir.c norm = f2fs_kmalloc(sbi, PATH_MAX, GFP_ATOMIC); sbi 1100 fs/f2fs/dir.c if (f2fs_has_strict_mode(sbi)) sbi 61 fs/f2fs/extent_cache.c struct rb_node **f2fs_lookup_rb_tree_for_insert(struct f2fs_sb_info *sbi, sbi 79 fs/f2fs/extent_cache.c f2fs_bug_on(sbi, 1); sbi 168 fs/f2fs/extent_cache.c bool f2fs_check_rb_tree_consistence(struct f2fs_sb_info *sbi, sbi 187 fs/f2fs/extent_cache.c f2fs_info(sbi, "inconsistent rbtree, cur(%u, %u) next(%u, %u)", sbi 202 fs/f2fs/extent_cache.c static struct extent_node *__attach_extent_node(struct f2fs_sb_info *sbi, sbi 220 fs/f2fs/extent_cache.c atomic_inc(&sbi->total_ext_node); sbi 224 fs/f2fs/extent_cache.c static void __detach_extent_node(struct f2fs_sb_info *sbi, sbi 229 fs/f2fs/extent_cache.c atomic_dec(&sbi->total_ext_node); sbi 242 fs/f2fs/extent_cache.c static void __release_extent_node(struct f2fs_sb_info *sbi, sbi 245 fs/f2fs/extent_cache.c spin_lock(&sbi->extent_lock); sbi 246 fs/f2fs/extent_cache.c f2fs_bug_on(sbi, list_empty(&en->list)); sbi 248 fs/f2fs/extent_cache.c spin_unlock(&sbi->extent_lock); sbi 250 fs/f2fs/extent_cache.c __detach_extent_node(sbi, et, en); sbi 255 fs/f2fs/extent_cache.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 259 fs/f2fs/extent_cache.c mutex_lock(&sbi->extent_tree_lock); sbi 260 fs/f2fs/extent_cache.c et = radix_tree_lookup(&sbi->extent_tree_root, ino); sbi 263 fs/f2fs/extent_cache.c f2fs_radix_tree_insert(&sbi->extent_tree_root, ino, et); sbi 271 fs/f2fs/extent_cache.c atomic_inc(&sbi->total_ext_tree); sbi 273 fs/f2fs/extent_cache.c atomic_dec(&sbi->total_zombie_tree); sbi 276 fs/f2fs/extent_cache.c mutex_unlock(&sbi->extent_tree_lock); sbi 284 fs/f2fs/extent_cache.c static struct extent_node *__init_extent_tree(struct f2fs_sb_info *sbi, sbi 290 fs/f2fs/extent_cache.c en = __attach_extent_node(sbi, et, ei, NULL, p, true); sbi 299 fs/f2fs/extent_cache.c static unsigned int __free_extent_tree(struct f2fs_sb_info *sbi, sbi 310 fs/f2fs/extent_cache.c __release_extent_node(sbi, et, en); sbi 330 fs/f2fs/extent_cache.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 355 fs/f2fs/extent_cache.c en = __init_extent_tree(sbi, et, &ei); sbi 357 fs/f2fs/extent_cache.c spin_lock(&sbi->extent_lock); sbi 358 fs/f2fs/extent_cache.c list_add_tail(&en->list, &sbi->extent_list); sbi 359 fs/f2fs/extent_cache.c spin_unlock(&sbi->extent_lock); sbi 379 fs/f2fs/extent_cache.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 384 fs/f2fs/extent_cache.c f2fs_bug_on(sbi, !et); sbi 394 fs/f2fs/extent_cache.c stat_inc_largest_node_hit(sbi); sbi 404 fs/f2fs/extent_cache.c stat_inc_cached_node_hit(sbi); sbi 406 fs/f2fs/extent_cache.c stat_inc_rbtree_node_hit(sbi); sbi 409 fs/f2fs/extent_cache.c spin_lock(&sbi->extent_lock); sbi 411 fs/f2fs/extent_cache.c list_move_tail(&en->list, &sbi->extent_list); sbi 414 fs/f2fs/extent_cache.c spin_unlock(&sbi->extent_lock); sbi 417 fs/f2fs/extent_cache.c stat_inc_total_hit(sbi); sbi 424 fs/f2fs/extent_cache.c static struct extent_node *__try_merge_extent_node(struct f2fs_sb_info *sbi, sbi 442 fs/f2fs/extent_cache.c __release_extent_node(sbi, et, prev_ex); sbi 452 fs/f2fs/extent_cache.c spin_lock(&sbi->extent_lock); sbi 454 fs/f2fs/extent_cache.c list_move_tail(&en->list, &sbi->extent_list); sbi 457 fs/f2fs/extent_cache.c spin_unlock(&sbi->extent_lock); sbi 461 fs/f2fs/extent_cache.c static struct extent_node *__insert_extent_tree(struct f2fs_sb_info *sbi, sbi 479 fs/f2fs/extent_cache.c p = f2fs_lookup_rb_tree_for_insert(sbi, &et->root, &parent, sbi 482 fs/f2fs/extent_cache.c en = __attach_extent_node(sbi, et, ei, parent, p, leftmost); sbi 489 fs/f2fs/extent_cache.c spin_lock(&sbi->extent_lock); sbi 490 fs/f2fs/extent_cache.c list_add_tail(&en->list, &sbi->extent_list); sbi 492 fs/f2fs/extent_cache.c spin_unlock(&sbi->extent_lock); sbi 499 fs/f2fs/extent_cache.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 550 fs/f2fs/extent_cache.c f2fs_bug_on(sbi, pos >= org_end); sbi 563 fs/f2fs/extent_cache.c en1 = __insert_extent_tree(sbi, et, &ei, sbi 585 fs/f2fs/extent_cache.c __release_extent_node(sbi, et, en); sbi 603 fs/f2fs/extent_cache.c if (!__try_merge_extent_node(sbi, et, &ei, prev_en, next_en)) sbi 604 fs/f2fs/extent_cache.c __insert_extent_tree(sbi, et, &ei, sbi 618 fs/f2fs/extent_cache.c __free_extent_tree(sbi, et); sbi 631 fs/f2fs/extent_cache.c unsigned int f2fs_shrink_extent_tree(struct f2fs_sb_info *sbi, int nr_shrink) sbi 638 fs/f2fs/extent_cache.c if (!test_opt(sbi, EXTENT_CACHE)) sbi 641 fs/f2fs/extent_cache.c if (!atomic_read(&sbi->total_zombie_tree)) sbi 644 fs/f2fs/extent_cache.c if (!mutex_trylock(&sbi->extent_tree_lock)) sbi 648 fs/f2fs/extent_cache.c list_for_each_entry_safe(et, next, &sbi->zombie_list, list) { sbi 651 fs/f2fs/extent_cache.c node_cnt += __free_extent_tree(sbi, et); sbi 654 fs/f2fs/extent_cache.c f2fs_bug_on(sbi, atomic_read(&et->node_cnt)); sbi 656 fs/f2fs/extent_cache.c radix_tree_delete(&sbi->extent_tree_root, et->ino); sbi 658 fs/f2fs/extent_cache.c atomic_dec(&sbi->total_ext_tree); sbi 659 fs/f2fs/extent_cache.c atomic_dec(&sbi->total_zombie_tree); sbi 666 fs/f2fs/extent_cache.c mutex_unlock(&sbi->extent_tree_lock); sbi 670 fs/f2fs/extent_cache.c if (!mutex_trylock(&sbi->extent_tree_lock)) sbi 675 fs/f2fs/extent_cache.c spin_lock(&sbi->extent_lock); sbi 677 fs/f2fs/extent_cache.c if (list_empty(&sbi->extent_list)) sbi 679 fs/f2fs/extent_cache.c en = list_first_entry(&sbi->extent_list, sbi 684 fs/f2fs/extent_cache.c list_move_tail(&en->list, &sbi->extent_list); sbi 689 fs/f2fs/extent_cache.c spin_unlock(&sbi->extent_lock); sbi 691 fs/f2fs/extent_cache.c __detach_extent_node(sbi, et, en); sbi 695 fs/f2fs/extent_cache.c spin_lock(&sbi->extent_lock); sbi 697 fs/f2fs/extent_cache.c spin_unlock(&sbi->extent_lock); sbi 700 fs/f2fs/extent_cache.c mutex_unlock(&sbi->extent_tree_lock); sbi 702 fs/f2fs/extent_cache.c trace_f2fs_shrink_extent_tree(sbi, node_cnt, tree_cnt); sbi 709 fs/f2fs/extent_cache.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 717 fs/f2fs/extent_cache.c node_cnt = __free_extent_tree(sbi, et); sbi 725 fs/f2fs/extent_cache.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 735 fs/f2fs/extent_cache.c __free_extent_tree(sbi, et); sbi 747 fs/f2fs/extent_cache.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 756 fs/f2fs/extent_cache.c mutex_lock(&sbi->extent_tree_lock); sbi 757 fs/f2fs/extent_cache.c list_add_tail(&et->list, &sbi->zombie_list); sbi 758 fs/f2fs/extent_cache.c atomic_inc(&sbi->total_zombie_tree); sbi 759 fs/f2fs/extent_cache.c mutex_unlock(&sbi->extent_tree_lock); sbi 767 fs/f2fs/extent_cache.c mutex_lock(&sbi->extent_tree_lock); sbi 768 fs/f2fs/extent_cache.c f2fs_bug_on(sbi, atomic_read(&et->node_cnt)); sbi 769 fs/f2fs/extent_cache.c radix_tree_delete(&sbi->extent_tree_root, inode->i_ino); sbi 771 fs/f2fs/extent_cache.c atomic_dec(&sbi->total_ext_tree); sbi 772 fs/f2fs/extent_cache.c mutex_unlock(&sbi->extent_tree_lock); sbi 816 fs/f2fs/extent_cache.c void f2fs_init_extent_cache_info(struct f2fs_sb_info *sbi) sbi 818 fs/f2fs/extent_cache.c INIT_RADIX_TREE(&sbi->extent_tree_root, GFP_NOIO); sbi 819 fs/f2fs/extent_cache.c mutex_init(&sbi->extent_tree_lock); sbi 820 fs/f2fs/extent_cache.c INIT_LIST_HEAD(&sbi->extent_list); sbi 821 fs/f2fs/extent_cache.c spin_lock_init(&sbi->extent_lock); sbi 822 fs/f2fs/extent_cache.c atomic_set(&sbi->total_ext_tree, 0); sbi 823 fs/f2fs/extent_cache.c INIT_LIST_HEAD(&sbi->zombie_list); sbi 824 fs/f2fs/extent_cache.c atomic_set(&sbi->total_zombie_tree, 0); sbi 825 fs/f2fs/extent_cache.c atomic_set(&sbi->total_ext_node, 0); sbi 31 fs/f2fs/f2fs.h #define f2fs_bug_on(sbi, condition) BUG_ON(condition) sbi 33 fs/f2fs/f2fs.h #define f2fs_bug_on(sbi, condition) \ sbi 37 fs/f2fs/f2fs.h set_sbi_flag(sbi, SBI_NEED_FSCK); \ sbi 105 fs/f2fs/f2fs.h #define F2FS_OPTION(sbi) ((sbi)->mount_opt) sbi 106 fs/f2fs/f2fs.h #define clear_opt(sbi, option) (F2FS_OPTION(sbi).opt &= ~F2FS_MOUNT_##option) sbi 107 fs/f2fs/f2fs.h #define set_opt(sbi, option) (F2FS_OPTION(sbi).opt |= F2FS_MOUNT_##option) sbi 108 fs/f2fs/f2fs.h #define test_opt(sbi, option) (F2FS_OPTION(sbi).opt & F2FS_MOUNT_##option) sbi 162 fs/f2fs/f2fs.h #define F2FS_HAS_FEATURE(sbi, mask) __F2FS_HAS_FEATURE(sbi->raw_super, mask) sbi 163 fs/f2fs/f2fs.h #define F2FS_SET_FEATURE(sbi, mask) \ sbi 164 fs/f2fs/f2fs.h (sbi->raw_super->feature |= cpu_to_le32(mask)) sbi 165 fs/f2fs/f2fs.h #define F2FS_CLEAR_FEATURE(sbi, mask) \ sbi 166 fs/f2fs/f2fs.h (sbi->raw_super->feature &= ~cpu_to_le32(mask)) sbi 190 fs/f2fs/f2fs.h #define MAX_DISCARD_BLOCKS(sbi) BLKS_PER_SEC(sbi) sbi 1049 fs/f2fs/f2fs.h struct f2fs_sb_info *sbi; /* f2fs_sb_info pointer */ sbi 1074 fs/f2fs/f2fs.h struct f2fs_sb_info *sbi; /* f2fs superblock */ sbi 1083 fs/f2fs/f2fs.h #define FDEV(i) (sbi->devs[i]) sbi 1166 fs/f2fs/f2fs.h #define DUMMY_ENCRYPTION_ENABLED(sbi) \ sbi 1167 fs/f2fs/f2fs.h (unlikely(F2FS_OPTION(sbi).test_dummy_encryption)) sbi 1169 fs/f2fs/f2fs.h #define DUMMY_ENCRYPTION_ENABLED(sbi) (0) sbi 1374 fs/f2fs/f2fs.h static inline bool time_to_inject(struct f2fs_sb_info *sbi, int type) sbi 1376 fs/f2fs/f2fs.h struct f2fs_fault_info *ffi = &F2FS_OPTION(sbi).fault_info; sbi 1393 fs/f2fs/f2fs.h static inline bool time_to_inject(struct f2fs_sb_info *sbi, int type) sbi 1405 fs/f2fs/f2fs.h static inline bool f2fs_is_multi_device(struct f2fs_sb_info *sbi) sbi 1407 fs/f2fs/f2fs.h return sbi->s_ndevs > 1; sbi 1417 fs/f2fs/f2fs.h static inline void f2fs_update_time(struct f2fs_sb_info *sbi, int type) sbi 1421 fs/f2fs/f2fs.h sbi->last_time[type] = now; sbi 1425 fs/f2fs/f2fs.h sbi->last_time[DISCARD_TIME] = now; sbi 1426 fs/f2fs/f2fs.h sbi->last_time[GC_TIME] = now; sbi 1430 fs/f2fs/f2fs.h static inline bool f2fs_time_over(struct f2fs_sb_info *sbi, int type) sbi 1432 fs/f2fs/f2fs.h unsigned long interval = sbi->interval_time[type] * HZ; sbi 1434 fs/f2fs/f2fs.h return time_after(jiffies, sbi->last_time[type] + interval); sbi 1437 fs/f2fs/f2fs.h static inline unsigned int f2fs_time_to_wait(struct f2fs_sb_info *sbi, sbi 1440 fs/f2fs/f2fs.h unsigned long interval = sbi->interval_time[type] * HZ; sbi 1444 fs/f2fs/f2fs.h delta = (sbi->last_time[type] + interval) - jiffies; sbi 1454 fs/f2fs/f2fs.h static inline u32 __f2fs_crc32(struct f2fs_sb_info *sbi, u32 crc, sbi 1463 fs/f2fs/f2fs.h BUG_ON(crypto_shash_descsize(sbi->s_chksum_driver) != sizeof(desc.ctx)); sbi 1465 fs/f2fs/f2fs.h desc.shash.tfm = sbi->s_chksum_driver; sbi 1474 fs/f2fs/f2fs.h static inline u32 f2fs_crc32(struct f2fs_sb_info *sbi, const void *address, sbi 1477 fs/f2fs/f2fs.h return __f2fs_crc32(sbi, F2FS_SUPER_MAGIC, address, length); sbi 1480 fs/f2fs/f2fs.h static inline bool f2fs_crc_valid(struct f2fs_sb_info *sbi, __u32 blk_crc, sbi 1483 fs/f2fs/f2fs.h return f2fs_crc32(sbi, buf, buf_size) == blk_crc; sbi 1486 fs/f2fs/f2fs.h static inline u32 f2fs_chksum(struct f2fs_sb_info *sbi, u32 crc, sbi 1489 fs/f2fs/f2fs.h return __f2fs_crc32(sbi, crc, address, length); sbi 1517 fs/f2fs/f2fs.h static inline struct f2fs_super_block *F2FS_RAW_SUPER(struct f2fs_sb_info *sbi) sbi 1519 fs/f2fs/f2fs.h return (struct f2fs_super_block *)(sbi->raw_super); sbi 1522 fs/f2fs/f2fs.h static inline struct f2fs_checkpoint *F2FS_CKPT(struct f2fs_sb_info *sbi) sbi 1524 fs/f2fs/f2fs.h return (struct f2fs_checkpoint *)(sbi->ckpt); sbi 1537 fs/f2fs/f2fs.h static inline struct f2fs_nm_info *NM_I(struct f2fs_sb_info *sbi) sbi 1539 fs/f2fs/f2fs.h return (struct f2fs_nm_info *)(sbi->nm_info); sbi 1542 fs/f2fs/f2fs.h static inline struct f2fs_sm_info *SM_I(struct f2fs_sb_info *sbi) sbi 1544 fs/f2fs/f2fs.h return (struct f2fs_sm_info *)(sbi->sm_info); sbi 1547 fs/f2fs/f2fs.h static inline struct sit_info *SIT_I(struct f2fs_sb_info *sbi) sbi 1549 fs/f2fs/f2fs.h return (struct sit_info *)(SM_I(sbi)->sit_info); sbi 1552 fs/f2fs/f2fs.h static inline struct free_segmap_info *FREE_I(struct f2fs_sb_info *sbi) sbi 1554 fs/f2fs/f2fs.h return (struct free_segmap_info *)(SM_I(sbi)->free_info); sbi 1557 fs/f2fs/f2fs.h static inline struct dirty_seglist_info *DIRTY_I(struct f2fs_sb_info *sbi) sbi 1559 fs/f2fs/f2fs.h return (struct dirty_seglist_info *)(SM_I(sbi)->dirty_info); sbi 1562 fs/f2fs/f2fs.h static inline struct address_space *META_MAPPING(struct f2fs_sb_info *sbi) sbi 1564 fs/f2fs/f2fs.h return sbi->meta_inode->i_mapping; sbi 1567 fs/f2fs/f2fs.h static inline struct address_space *NODE_MAPPING(struct f2fs_sb_info *sbi) sbi 1569 fs/f2fs/f2fs.h return sbi->node_inode->i_mapping; sbi 1572 fs/f2fs/f2fs.h static inline bool is_sbi_flag_set(struct f2fs_sb_info *sbi, unsigned int type) sbi 1574 fs/f2fs/f2fs.h return test_bit(type, &sbi->s_flag); sbi 1577 fs/f2fs/f2fs.h static inline void set_sbi_flag(struct f2fs_sb_info *sbi, unsigned int type) sbi 1579 fs/f2fs/f2fs.h set_bit(type, &sbi->s_flag); sbi 1582 fs/f2fs/f2fs.h static inline void clear_sbi_flag(struct f2fs_sb_info *sbi, unsigned int type) sbi 1584 fs/f2fs/f2fs.h clear_bit(type, &sbi->s_flag); sbi 1612 fs/f2fs/f2fs.h static inline bool is_set_ckpt_flags(struct f2fs_sb_info *sbi, unsigned int f) sbi 1614 fs/f2fs/f2fs.h return __is_set_ckpt_flags(F2FS_CKPT(sbi), f); sbi 1626 fs/f2fs/f2fs.h static inline void set_ckpt_flags(struct f2fs_sb_info *sbi, unsigned int f) sbi 1630 fs/f2fs/f2fs.h spin_lock_irqsave(&sbi->cp_lock, flags); sbi 1631 fs/f2fs/f2fs.h __set_ckpt_flags(F2FS_CKPT(sbi), f); sbi 1632 fs/f2fs/f2fs.h spin_unlock_irqrestore(&sbi->cp_lock, flags); sbi 1644 fs/f2fs/f2fs.h static inline void clear_ckpt_flags(struct f2fs_sb_info *sbi, unsigned int f) sbi 1648 fs/f2fs/f2fs.h spin_lock_irqsave(&sbi->cp_lock, flags); sbi 1649 fs/f2fs/f2fs.h __clear_ckpt_flags(F2FS_CKPT(sbi), f); sbi 1650 fs/f2fs/f2fs.h spin_unlock_irqrestore(&sbi->cp_lock, flags); sbi 1653 fs/f2fs/f2fs.h static inline void disable_nat_bits(struct f2fs_sb_info *sbi, bool lock) sbi 1665 fs/f2fs/f2fs.h spin_lock_irqsave(&sbi->cp_lock, flags); sbi 1666 fs/f2fs/f2fs.h __clear_ckpt_flags(F2FS_CKPT(sbi), CP_NAT_BITS_FLAG); sbi 1667 fs/f2fs/f2fs.h nat_bits = NM_I(sbi)->nat_bits; sbi 1668 fs/f2fs/f2fs.h NM_I(sbi)->nat_bits = NULL; sbi 1670 fs/f2fs/f2fs.h spin_unlock_irqrestore(&sbi->cp_lock, flags); sbi 1675 fs/f2fs/f2fs.h static inline bool enabled_nat_bits(struct f2fs_sb_info *sbi, sbi 1678 fs/f2fs/f2fs.h bool set = is_set_ckpt_flags(sbi, CP_NAT_BITS_FLAG); sbi 1683 fs/f2fs/f2fs.h static inline void f2fs_lock_op(struct f2fs_sb_info *sbi) sbi 1685 fs/f2fs/f2fs.h down_read(&sbi->cp_rwsem); sbi 1688 fs/f2fs/f2fs.h static inline int f2fs_trylock_op(struct f2fs_sb_info *sbi) sbi 1690 fs/f2fs/f2fs.h return down_read_trylock(&sbi->cp_rwsem); sbi 1693 fs/f2fs/f2fs.h static inline void f2fs_unlock_op(struct f2fs_sb_info *sbi) sbi 1695 fs/f2fs/f2fs.h up_read(&sbi->cp_rwsem); sbi 1698 fs/f2fs/f2fs.h static inline void f2fs_lock_all(struct f2fs_sb_info *sbi) sbi 1700 fs/f2fs/f2fs.h down_write(&sbi->cp_rwsem); sbi 1703 fs/f2fs/f2fs.h static inline void f2fs_unlock_all(struct f2fs_sb_info *sbi) sbi 1705 fs/f2fs/f2fs.h up_write(&sbi->cp_rwsem); sbi 1708 fs/f2fs/f2fs.h static inline int __get_cp_reason(struct f2fs_sb_info *sbi) sbi 1712 fs/f2fs/f2fs.h if (test_opt(sbi, FASTBOOT)) sbi 1714 fs/f2fs/f2fs.h if (is_sbi_flag_set(sbi, SBI_IS_CLOSE)) sbi 1724 fs/f2fs/f2fs.h static inline bool __exist_node_summaries(struct f2fs_sb_info *sbi) sbi 1726 fs/f2fs/f2fs.h return (is_set_ckpt_flags(sbi, CP_UMOUNT_FLAG) || sbi 1727 fs/f2fs/f2fs.h is_set_ckpt_flags(sbi, CP_FASTBOOT_FLAG)); sbi 1745 fs/f2fs/f2fs.h static inline bool __allow_reserved_blocks(struct f2fs_sb_info *sbi, sbi 1750 fs/f2fs/f2fs.h if (!test_opt(sbi, RESERVE_ROOT)) sbi 1754 fs/f2fs/f2fs.h if (uid_eq(F2FS_OPTION(sbi).s_resuid, current_fsuid())) sbi 1756 fs/f2fs/f2fs.h if (!gid_eq(F2FS_OPTION(sbi).s_resgid, GLOBAL_ROOT_GID) && sbi 1757 fs/f2fs/f2fs.h in_group_p(F2FS_OPTION(sbi).s_resgid)) sbi 1765 fs/f2fs/f2fs.h static inline int inc_valid_block_count(struct f2fs_sb_info *sbi, sbi 1776 fs/f2fs/f2fs.h if (time_to_inject(sbi, FAULT_BLOCK)) { sbi 1786 fs/f2fs/f2fs.h percpu_counter_add(&sbi->alloc_valid_block_count, (*count)); sbi 1788 fs/f2fs/f2fs.h spin_lock(&sbi->stat_lock); sbi 1789 fs/f2fs/f2fs.h sbi->total_valid_block_count += (block_t)(*count); sbi 1790 fs/f2fs/f2fs.h avail_user_block_count = sbi->user_block_count - sbi 1791 fs/f2fs/f2fs.h sbi->current_reserved_blocks; sbi 1793 fs/f2fs/f2fs.h if (!__allow_reserved_blocks(sbi, inode, true)) sbi 1794 fs/f2fs/f2fs.h avail_user_block_count -= F2FS_OPTION(sbi).root_reserved_blocks; sbi 1795 fs/f2fs/f2fs.h if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED))) { sbi 1796 fs/f2fs/f2fs.h if (avail_user_block_count > sbi->unusable_block_count) sbi 1797 fs/f2fs/f2fs.h avail_user_block_count -= sbi->unusable_block_count; sbi 1801 fs/f2fs/f2fs.h if (unlikely(sbi->total_valid_block_count > avail_user_block_count)) { sbi 1802 fs/f2fs/f2fs.h diff = sbi->total_valid_block_count - avail_user_block_count; sbi 1807 fs/f2fs/f2fs.h sbi->total_valid_block_count -= diff; sbi 1809 fs/f2fs/f2fs.h spin_unlock(&sbi->stat_lock); sbi 1813 fs/f2fs/f2fs.h spin_unlock(&sbi->stat_lock); sbi 1816 fs/f2fs/f2fs.h percpu_counter_sub(&sbi->alloc_valid_block_count, release); sbi 1823 fs/f2fs/f2fs.h percpu_counter_sub(&sbi->alloc_valid_block_count, release); sbi 1830 fs/f2fs/f2fs.h void f2fs_printk(struct f2fs_sb_info *sbi, const char *fmt, ...); sbi 1832 fs/f2fs/f2fs.h #define f2fs_err(sbi, fmt, ...) \ sbi 1833 fs/f2fs/f2fs.h f2fs_printk(sbi, KERN_ERR fmt, ##__VA_ARGS__) sbi 1834 fs/f2fs/f2fs.h #define f2fs_warn(sbi, fmt, ...) \ sbi 1835 fs/f2fs/f2fs.h f2fs_printk(sbi, KERN_WARNING fmt, ##__VA_ARGS__) sbi 1836 fs/f2fs/f2fs.h #define f2fs_notice(sbi, fmt, ...) \ sbi 1837 fs/f2fs/f2fs.h f2fs_printk(sbi, KERN_NOTICE fmt, ##__VA_ARGS__) sbi 1838 fs/f2fs/f2fs.h #define f2fs_info(sbi, fmt, ...) \ sbi 1839 fs/f2fs/f2fs.h f2fs_printk(sbi, KERN_INFO fmt, ##__VA_ARGS__) sbi 1840 fs/f2fs/f2fs.h #define f2fs_debug(sbi, fmt, ...) \ sbi 1841 fs/f2fs/f2fs.h f2fs_printk(sbi, KERN_DEBUG fmt, ##__VA_ARGS__) sbi 1843 fs/f2fs/f2fs.h static inline void dec_valid_block_count(struct f2fs_sb_info *sbi, sbi 1849 fs/f2fs/f2fs.h spin_lock(&sbi->stat_lock); sbi 1850 fs/f2fs/f2fs.h f2fs_bug_on(sbi, sbi->total_valid_block_count < (block_t) count); sbi 1851 fs/f2fs/f2fs.h sbi->total_valid_block_count -= (block_t)count; sbi 1852 fs/f2fs/f2fs.h if (sbi->reserved_blocks && sbi 1853 fs/f2fs/f2fs.h sbi->current_reserved_blocks < sbi->reserved_blocks) sbi 1854 fs/f2fs/f2fs.h sbi->current_reserved_blocks = min(sbi->reserved_blocks, sbi 1855 fs/f2fs/f2fs.h sbi->current_reserved_blocks + count); sbi 1856 fs/f2fs/f2fs.h spin_unlock(&sbi->stat_lock); sbi 1858 fs/f2fs/f2fs.h f2fs_warn(sbi, "Inconsistent i_blocks, ino:%lu, iblocks:%llu, sectors:%llu", sbi 1862 fs/f2fs/f2fs.h set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 1868 fs/f2fs/f2fs.h static inline void inc_page_count(struct f2fs_sb_info *sbi, int count_type) sbi 1870 fs/f2fs/f2fs.h atomic_inc(&sbi->nr_pages[count_type]); sbi 1877 fs/f2fs/f2fs.h set_sbi_flag(sbi, SBI_IS_DIRTY); sbi 1889 fs/f2fs/f2fs.h static inline void dec_page_count(struct f2fs_sb_info *sbi, int count_type) sbi 1891 fs/f2fs/f2fs.h atomic_dec(&sbi->nr_pages[count_type]); sbi 1907 fs/f2fs/f2fs.h static inline s64 get_pages(struct f2fs_sb_info *sbi, int count_type) sbi 1909 fs/f2fs/f2fs.h return atomic_read(&sbi->nr_pages[count_type]); sbi 1917 fs/f2fs/f2fs.h static inline int get_blocktype_secs(struct f2fs_sb_info *sbi, int block_type) sbi 1919 fs/f2fs/f2fs.h unsigned int pages_per_sec = sbi->segs_per_sec * sbi->blocks_per_seg; sbi 1920 fs/f2fs/f2fs.h unsigned int segs = (get_pages(sbi, block_type) + pages_per_sec - 1) >> sbi 1921 fs/f2fs/f2fs.h sbi->log_blocks_per_seg; sbi 1923 fs/f2fs/f2fs.h return segs / sbi->segs_per_sec; sbi 1926 fs/f2fs/f2fs.h static inline block_t valid_user_blocks(struct f2fs_sb_info *sbi) sbi 1928 fs/f2fs/f2fs.h return sbi->total_valid_block_count; sbi 1931 fs/f2fs/f2fs.h static inline block_t discard_blocks(struct f2fs_sb_info *sbi) sbi 1933 fs/f2fs/f2fs.h return sbi->discard_blks; sbi 1936 fs/f2fs/f2fs.h static inline unsigned long __bitmap_size(struct f2fs_sb_info *sbi, int flag) sbi 1938 fs/f2fs/f2fs.h struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); sbi 1949 fs/f2fs/f2fs.h static inline block_t __cp_payload(struct f2fs_sb_info *sbi) sbi 1951 fs/f2fs/f2fs.h return le32_to_cpu(F2FS_RAW_SUPER(sbi)->cp_payload); sbi 1954 fs/f2fs/f2fs.h static inline void *__bitmap_ptr(struct f2fs_sb_info *sbi, int flag) sbi 1956 fs/f2fs/f2fs.h struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); sbi 1959 fs/f2fs/f2fs.h if (is_set_ckpt_flags(sbi, CP_LARGE_NAT_BITMAP_FLAG)) { sbi 1969 fs/f2fs/f2fs.h if (__cp_payload(sbi) > 0) { sbi 1981 fs/f2fs/f2fs.h static inline block_t __start_cp_addr(struct f2fs_sb_info *sbi) sbi 1983 fs/f2fs/f2fs.h block_t start_addr = le32_to_cpu(F2FS_RAW_SUPER(sbi)->cp_blkaddr); sbi 1985 fs/f2fs/f2fs.h if (sbi->cur_cp_pack == 2) sbi 1986 fs/f2fs/f2fs.h start_addr += sbi->blocks_per_seg; sbi 1990 fs/f2fs/f2fs.h static inline block_t __start_cp_next_addr(struct f2fs_sb_info *sbi) sbi 1992 fs/f2fs/f2fs.h block_t start_addr = le32_to_cpu(F2FS_RAW_SUPER(sbi)->cp_blkaddr); sbi 1994 fs/f2fs/f2fs.h if (sbi->cur_cp_pack == 1) sbi 1995 fs/f2fs/f2fs.h start_addr += sbi->blocks_per_seg; sbi 1999 fs/f2fs/f2fs.h static inline void __set_cp_next_pack(struct f2fs_sb_info *sbi) sbi 2001 fs/f2fs/f2fs.h sbi->cur_cp_pack = (sbi->cur_cp_pack == 1) ? 2 : 1; sbi 2004 fs/f2fs/f2fs.h static inline block_t __start_sum_addr(struct f2fs_sb_info *sbi) sbi 2006 fs/f2fs/f2fs.h return le32_to_cpu(F2FS_CKPT(sbi)->cp_pack_start_sum); sbi 2009 fs/f2fs/f2fs.h static inline int inc_valid_node_count(struct f2fs_sb_info *sbi, sbi 2028 fs/f2fs/f2fs.h if (time_to_inject(sbi, FAULT_BLOCK)) { sbi 2033 fs/f2fs/f2fs.h spin_lock(&sbi->stat_lock); sbi 2035 fs/f2fs/f2fs.h valid_block_count = sbi->total_valid_block_count + sbi 2036 fs/f2fs/f2fs.h sbi->current_reserved_blocks + 1; sbi 2038 fs/f2fs/f2fs.h if (!__allow_reserved_blocks(sbi, inode, false)) sbi 2039 fs/f2fs/f2fs.h valid_block_count += F2FS_OPTION(sbi).root_reserved_blocks; sbi 2040 fs/f2fs/f2fs.h user_block_count = sbi->user_block_count; sbi 2041 fs/f2fs/f2fs.h if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED))) sbi 2042 fs/f2fs/f2fs.h user_block_count -= sbi->unusable_block_count; sbi 2045 fs/f2fs/f2fs.h spin_unlock(&sbi->stat_lock); sbi 2049 fs/f2fs/f2fs.h valid_node_count = sbi->total_valid_node_count + 1; sbi 2050 fs/f2fs/f2fs.h if (unlikely(valid_node_count > sbi->total_node_count)) { sbi 2051 fs/f2fs/f2fs.h spin_unlock(&sbi->stat_lock); sbi 2055 fs/f2fs/f2fs.h sbi->total_valid_node_count++; sbi 2056 fs/f2fs/f2fs.h sbi->total_valid_block_count++; sbi 2057 fs/f2fs/f2fs.h spin_unlock(&sbi->stat_lock); sbi 2066 fs/f2fs/f2fs.h percpu_counter_inc(&sbi->alloc_valid_block_count); sbi 2079 fs/f2fs/f2fs.h static inline void dec_valid_node_count(struct f2fs_sb_info *sbi, sbi 2082 fs/f2fs/f2fs.h spin_lock(&sbi->stat_lock); sbi 2084 fs/f2fs/f2fs.h f2fs_bug_on(sbi, !sbi->total_valid_block_count); sbi 2085 fs/f2fs/f2fs.h f2fs_bug_on(sbi, !sbi->total_valid_node_count); sbi 2087 fs/f2fs/f2fs.h sbi->total_valid_node_count--; sbi 2088 fs/f2fs/f2fs.h sbi->total_valid_block_count--; sbi 2089 fs/f2fs/f2fs.h if (sbi->reserved_blocks && sbi 2090 fs/f2fs/f2fs.h sbi->current_reserved_blocks < sbi->reserved_blocks) sbi 2091 fs/f2fs/f2fs.h sbi->current_reserved_blocks++; sbi 2093 fs/f2fs/f2fs.h spin_unlock(&sbi->stat_lock); sbi 2099 fs/f2fs/f2fs.h f2fs_warn(sbi, "Inconsistent i_blocks, ino:%lu, iblocks:%llu", sbi 2102 fs/f2fs/f2fs.h set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 2109 fs/f2fs/f2fs.h static inline unsigned int valid_node_count(struct f2fs_sb_info *sbi) sbi 2111 fs/f2fs/f2fs.h return sbi->total_valid_node_count; sbi 2114 fs/f2fs/f2fs.h static inline void inc_valid_inode_count(struct f2fs_sb_info *sbi) sbi 2116 fs/f2fs/f2fs.h percpu_counter_inc(&sbi->total_valid_inode_count); sbi 2119 fs/f2fs/f2fs.h static inline void dec_valid_inode_count(struct f2fs_sb_info *sbi) sbi 2121 fs/f2fs/f2fs.h percpu_counter_dec(&sbi->total_valid_inode_count); sbi 2124 fs/f2fs/f2fs.h static inline s64 valid_inode_count(struct f2fs_sb_info *sbi) sbi 2126 fs/f2fs/f2fs.h return percpu_counter_sum_positive(&sbi->total_valid_inode_count); sbi 2215 fs/f2fs/f2fs.h static inline struct bio *f2fs_bio_alloc(struct f2fs_sb_info *sbi, sbi 2227 fs/f2fs/f2fs.h if (time_to_inject(sbi, FAULT_ALLOC_BIO)) { sbi 2235 fs/f2fs/f2fs.h static inline bool is_idle(struct f2fs_sb_info *sbi, int type) sbi 2237 fs/f2fs/f2fs.h if (sbi->gc_mode == GC_URGENT) sbi 2240 fs/f2fs/f2fs.h if (get_pages(sbi, F2FS_RD_DATA) || get_pages(sbi, F2FS_RD_NODE) || sbi 2241 fs/f2fs/f2fs.h get_pages(sbi, F2FS_RD_META) || get_pages(sbi, F2FS_WB_DATA) || sbi 2242 fs/f2fs/f2fs.h get_pages(sbi, F2FS_WB_CP_DATA) || sbi 2243 fs/f2fs/f2fs.h get_pages(sbi, F2FS_DIO_READ) || sbi 2244 fs/f2fs/f2fs.h get_pages(sbi, F2FS_DIO_WRITE)) sbi 2247 fs/f2fs/f2fs.h if (type != DISCARD_TIME && SM_I(sbi) && SM_I(sbi)->dcc_info && sbi 2248 fs/f2fs/f2fs.h atomic_read(&SM_I(sbi)->dcc_info->queued_discard)) sbi 2251 fs/f2fs/f2fs.h if (SM_I(sbi) && SM_I(sbi)->fcc_info && sbi 2252 fs/f2fs/f2fs.h atomic_read(&SM_I(sbi)->fcc_info->queued_flush)) sbi 2255 fs/f2fs/f2fs.h return f2fs_time_over(sbi, type); sbi 2728 fs/f2fs/f2fs.h struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 2730 fs/f2fs/f2fs.h spin_lock(&sbi->inode_lock[DIRTY_META]); sbi 2732 fs/f2fs/f2fs.h spin_unlock(&sbi->inode_lock[DIRTY_META]); sbi 2755 fs/f2fs/f2fs.h static inline bool f2fs_cp_error(struct f2fs_sb_info *sbi) sbi 2757 fs/f2fs/f2fs.h return is_set_ckpt_flags(sbi, CP_ERROR_FLAG); sbi 2773 fs/f2fs/f2fs.h struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 2775 fs/f2fs/f2fs.h if (!test_opt(sbi, EXTENT_CACHE) || sbi 2783 fs/f2fs/f2fs.h if (list_empty(&sbi->s_list)) sbi 2789 fs/f2fs/f2fs.h static inline void *f2fs_kmalloc(struct f2fs_sb_info *sbi, sbi 2794 fs/f2fs/f2fs.h if (time_to_inject(sbi, FAULT_KMALLOC)) { sbi 2806 fs/f2fs/f2fs.h static inline void *f2fs_kzalloc(struct f2fs_sb_info *sbi, sbi 2809 fs/f2fs/f2fs.h return f2fs_kmalloc(sbi, size, flags | __GFP_ZERO); sbi 2812 fs/f2fs/f2fs.h static inline void *f2fs_kvmalloc(struct f2fs_sb_info *sbi, sbi 2815 fs/f2fs/f2fs.h if (time_to_inject(sbi, FAULT_KVMALLOC)) { sbi 2823 fs/f2fs/f2fs.h static inline void *f2fs_kvzalloc(struct f2fs_sb_info *sbi, sbi 2826 fs/f2fs/f2fs.h return f2fs_kvmalloc(sbi, size, flags | __GFP_ZERO); sbi 2853 fs/f2fs/f2fs.h static inline void f2fs_reset_iostat(struct f2fs_sb_info *sbi) sbi 2857 fs/f2fs/f2fs.h spin_lock(&sbi->iostat_lock); sbi 2859 fs/f2fs/f2fs.h sbi->write_iostat[i] = 0; sbi 2860 fs/f2fs/f2fs.h spin_unlock(&sbi->iostat_lock); sbi 2863 fs/f2fs/f2fs.h static inline void f2fs_update_iostat(struct f2fs_sb_info *sbi, sbi 2866 fs/f2fs/f2fs.h if (!sbi->iostat_enable) sbi 2868 fs/f2fs/f2fs.h spin_lock(&sbi->iostat_lock); sbi 2869 fs/f2fs/f2fs.h sbi->write_iostat[type] += io_bytes; sbi 2872 fs/f2fs/f2fs.h sbi->write_iostat[APP_BUFFERED_IO] = sbi 2873 fs/f2fs/f2fs.h sbi->write_iostat[APP_WRITE_IO] - sbi 2874 fs/f2fs/f2fs.h sbi->write_iostat[APP_DIRECT_IO]; sbi 2875 fs/f2fs/f2fs.h spin_unlock(&sbi->iostat_lock); sbi 2878 fs/f2fs/f2fs.h #define __is_large_section(sbi) ((sbi)->segs_per_sec > 1) sbi 2882 fs/f2fs/f2fs.h bool f2fs_is_valid_blkaddr(struct f2fs_sb_info *sbi, sbi 2884 fs/f2fs/f2fs.h static inline void verify_blkaddr(struct f2fs_sb_info *sbi, sbi 2887 fs/f2fs/f2fs.h if (!f2fs_is_valid_blkaddr(sbi, blkaddr, type)) { sbi 2888 fs/f2fs/f2fs.h f2fs_err(sbi, "invalid blkaddr: %u, type: %d, run fsck to fix.", sbi 2890 fs/f2fs/f2fs.h f2fs_bug_on(sbi, 1); sbi 2944 fs/f2fs/f2fs.h bool f2fs_inode_chksum_verify(struct f2fs_sb_info *sbi, struct page *page); sbi 2945 fs/f2fs/f2fs.h void f2fs_inode_chksum_set(struct f2fs_sb_info *sbi, struct page *page); sbi 2948 fs/f2fs/f2fs.h int f2fs_try_to_free_nats(struct f2fs_sb_info *sbi, int nr_shrink); sbi 2958 fs/f2fs/f2fs.h int f2fs_update_extension_list(struct f2fs_sb_info *sbi, const char *name, sbi 3020 fs/f2fs/f2fs.h int f2fs_enable_quota_files(struct f2fs_sb_info *sbi, bool rdonly); sbi 3023 fs/f2fs/f2fs.h int f2fs_commit_super(struct f2fs_sb_info *sbi, bool recover); sbi 3025 fs/f2fs/f2fs.h int f2fs_sanity_check_ckpt(struct f2fs_sb_info *sbi); sbi 3039 fs/f2fs/f2fs.h int f2fs_check_nid_range(struct f2fs_sb_info *sbi, nid_t nid); sbi 3040 fs/f2fs/f2fs.h bool f2fs_available_free_memory(struct f2fs_sb_info *sbi, int type); sbi 3041 fs/f2fs/f2fs.h bool f2fs_in_warm_node_list(struct f2fs_sb_info *sbi, struct page *page); sbi 3042 fs/f2fs/f2fs.h void f2fs_init_fsync_node_info(struct f2fs_sb_info *sbi); sbi 3043 fs/f2fs/f2fs.h void f2fs_del_fsync_node_entry(struct f2fs_sb_info *sbi, struct page *page); sbi 3044 fs/f2fs/f2fs.h void f2fs_reset_fsync_node_info(struct f2fs_sb_info *sbi); sbi 3045 fs/f2fs/f2fs.h int f2fs_need_dentry_mark(struct f2fs_sb_info *sbi, nid_t nid); sbi 3046 fs/f2fs/f2fs.h bool f2fs_is_checkpointed_node(struct f2fs_sb_info *sbi, nid_t nid); sbi 3047 fs/f2fs/f2fs.h bool f2fs_need_inode_block_update(struct f2fs_sb_info *sbi, nid_t ino); sbi 3048 fs/f2fs/f2fs.h int f2fs_get_node_info(struct f2fs_sb_info *sbi, nid_t nid, sbi 3054 fs/f2fs/f2fs.h int f2fs_wait_on_node_pages_writeback(struct f2fs_sb_info *sbi, sbi 3059 fs/f2fs/f2fs.h void f2fs_ra_node_page(struct f2fs_sb_info *sbi, nid_t nid); sbi 3060 fs/f2fs/f2fs.h struct page *f2fs_get_node_page(struct f2fs_sb_info *sbi, pgoff_t nid); sbi 3063 fs/f2fs/f2fs.h int f2fs_fsync_node_pages(struct f2fs_sb_info *sbi, struct inode *inode, sbi 3066 fs/f2fs/f2fs.h int f2fs_sync_node_pages(struct f2fs_sb_info *sbi, sbi 3069 fs/f2fs/f2fs.h int f2fs_build_free_nids(struct f2fs_sb_info *sbi, bool sync, bool mount); sbi 3070 fs/f2fs/f2fs.h bool f2fs_alloc_nid(struct f2fs_sb_info *sbi, nid_t *nid); sbi 3071 fs/f2fs/f2fs.h void f2fs_alloc_nid_done(struct f2fs_sb_info *sbi, nid_t nid); sbi 3072 fs/f2fs/f2fs.h void f2fs_alloc_nid_failed(struct f2fs_sb_info *sbi, nid_t nid); sbi 3073 fs/f2fs/f2fs.h int f2fs_try_to_free_nids(struct f2fs_sb_info *sbi, int nr_shrink); sbi 3076 fs/f2fs/f2fs.h int f2fs_recover_inode_page(struct f2fs_sb_info *sbi, struct page *page); sbi 3077 fs/f2fs/f2fs.h int f2fs_restore_node_summary(struct f2fs_sb_info *sbi, sbi 3079 fs/f2fs/f2fs.h int f2fs_flush_nat_entries(struct f2fs_sb_info *sbi, struct cp_control *cpc); sbi 3080 fs/f2fs/f2fs.h int f2fs_build_node_manager(struct f2fs_sb_info *sbi); sbi 3081 fs/f2fs/f2fs.h void f2fs_destroy_node_manager(struct f2fs_sb_info *sbi); sbi 3088 fs/f2fs/f2fs.h bool f2fs_need_SSR(struct f2fs_sb_info *sbi); sbi 3090 fs/f2fs/f2fs.h void f2fs_drop_inmem_pages_all(struct f2fs_sb_info *sbi, bool gc_failure); sbi 3094 fs/f2fs/f2fs.h void f2fs_balance_fs(struct f2fs_sb_info *sbi, bool need); sbi 3095 fs/f2fs/f2fs.h void f2fs_balance_fs_bg(struct f2fs_sb_info *sbi); sbi 3096 fs/f2fs/f2fs.h int f2fs_issue_flush(struct f2fs_sb_info *sbi, nid_t ino); sbi 3097 fs/f2fs/f2fs.h int f2fs_create_flush_cmd_control(struct f2fs_sb_info *sbi); sbi 3098 fs/f2fs/f2fs.h int f2fs_flush_device_cache(struct f2fs_sb_info *sbi); sbi 3099 fs/f2fs/f2fs.h void f2fs_destroy_flush_cmd_control(struct f2fs_sb_info *sbi, bool free); sbi 3100 fs/f2fs/f2fs.h void f2fs_invalidate_blocks(struct f2fs_sb_info *sbi, block_t addr); sbi 3101 fs/f2fs/f2fs.h bool f2fs_is_checkpointed_data(struct f2fs_sb_info *sbi, block_t blkaddr); sbi 3102 fs/f2fs/f2fs.h void f2fs_drop_discard_cmd(struct f2fs_sb_info *sbi); sbi 3103 fs/f2fs/f2fs.h void f2fs_stop_discard_thread(struct f2fs_sb_info *sbi); sbi 3104 fs/f2fs/f2fs.h bool f2fs_issue_discard_timeout(struct f2fs_sb_info *sbi); sbi 3105 fs/f2fs/f2fs.h void f2fs_clear_prefree_segments(struct f2fs_sb_info *sbi, sbi 3107 fs/f2fs/f2fs.h void f2fs_dirty_to_prefree(struct f2fs_sb_info *sbi); sbi 3108 fs/f2fs/f2fs.h block_t f2fs_get_unusable_blocks(struct f2fs_sb_info *sbi); sbi 3109 fs/f2fs/f2fs.h int f2fs_disable_cp_again(struct f2fs_sb_info *sbi, block_t unusable); sbi 3110 fs/f2fs/f2fs.h void f2fs_release_discard_addrs(struct f2fs_sb_info *sbi); sbi 3111 fs/f2fs/f2fs.h int f2fs_npages_for_summary_flush(struct f2fs_sb_info *sbi, bool for_ra); sbi 3112 fs/f2fs/f2fs.h void allocate_segment_for_resize(struct f2fs_sb_info *sbi, int type, sbi 3114 fs/f2fs/f2fs.h void f2fs_allocate_new_segments(struct f2fs_sb_info *sbi); sbi 3115 fs/f2fs/f2fs.h int f2fs_trim_fs(struct f2fs_sb_info *sbi, struct fstrim_range *range); sbi 3116 fs/f2fs/f2fs.h bool f2fs_exist_trim_candidates(struct f2fs_sb_info *sbi, sbi 3118 fs/f2fs/f2fs.h struct page *f2fs_get_sum_page(struct f2fs_sb_info *sbi, unsigned int segno); sbi 3119 fs/f2fs/f2fs.h void f2fs_update_meta_page(struct f2fs_sb_info *sbi, void *src, sbi 3121 fs/f2fs/f2fs.h void f2fs_do_write_meta_page(struct f2fs_sb_info *sbi, struct page *page, sbi 3127 fs/f2fs/f2fs.h void f2fs_do_replace_block(struct f2fs_sb_info *sbi, struct f2fs_summary *sum, sbi 3130 fs/f2fs/f2fs.h void f2fs_replace_block(struct f2fs_sb_info *sbi, struct dnode_of_data *dn, sbi 3134 fs/f2fs/f2fs.h void f2fs_allocate_data_block(struct f2fs_sb_info *sbi, struct page *page, sbi 3143 fs/f2fs/f2fs.h void f2fs_write_data_summaries(struct f2fs_sb_info *sbi, block_t start_blk); sbi 3144 fs/f2fs/f2fs.h void f2fs_write_node_summaries(struct f2fs_sb_info *sbi, block_t start_blk); sbi 3147 fs/f2fs/f2fs.h void f2fs_flush_sit_entries(struct f2fs_sb_info *sbi, struct cp_control *cpc); sbi 3148 fs/f2fs/f2fs.h int f2fs_build_segment_manager(struct f2fs_sb_info *sbi); sbi 3149 fs/f2fs/f2fs.h void f2fs_destroy_segment_manager(struct f2fs_sb_info *sbi); sbi 3153 fs/f2fs/f2fs.h enum rw_hint f2fs_io_type_to_rw_hint(struct f2fs_sb_info *sbi, sbi 3159 fs/f2fs/f2fs.h void f2fs_stop_checkpoint(struct f2fs_sb_info *sbi, bool end_io); sbi 3160 fs/f2fs/f2fs.h struct page *f2fs_grab_meta_page(struct f2fs_sb_info *sbi, pgoff_t index); sbi 3161 fs/f2fs/f2fs.h struct page *f2fs_get_meta_page(struct f2fs_sb_info *sbi, pgoff_t index); sbi 3162 fs/f2fs/f2fs.h struct page *f2fs_get_meta_page_nofail(struct f2fs_sb_info *sbi, pgoff_t index); sbi 3163 fs/f2fs/f2fs.h struct page *f2fs_get_tmp_page(struct f2fs_sb_info *sbi, pgoff_t index); sbi 3164 fs/f2fs/f2fs.h bool f2fs_is_valid_blkaddr(struct f2fs_sb_info *sbi, sbi 3166 fs/f2fs/f2fs.h int f2fs_ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages, sbi 3168 fs/f2fs/f2fs.h void f2fs_ra_meta_pages_cond(struct f2fs_sb_info *sbi, pgoff_t index); sbi 3169 fs/f2fs/f2fs.h long f2fs_sync_meta_pages(struct f2fs_sb_info *sbi, enum page_type type, sbi 3171 fs/f2fs/f2fs.h void f2fs_add_ino_entry(struct f2fs_sb_info *sbi, nid_t ino, int type); sbi 3172 fs/f2fs/f2fs.h void f2fs_remove_ino_entry(struct f2fs_sb_info *sbi, nid_t ino, int type); sbi 3173 fs/f2fs/f2fs.h void f2fs_release_ino_entry(struct f2fs_sb_info *sbi, bool all); sbi 3174 fs/f2fs/f2fs.h bool f2fs_exist_written_data(struct f2fs_sb_info *sbi, nid_t ino, int mode); sbi 3175 fs/f2fs/f2fs.h void f2fs_set_dirty_device(struct f2fs_sb_info *sbi, nid_t ino, sbi 3177 fs/f2fs/f2fs.h bool f2fs_is_dirty_device(struct f2fs_sb_info *sbi, nid_t ino, sbi 3179 fs/f2fs/f2fs.h int f2fs_sync_inode_meta(struct f2fs_sb_info *sbi); sbi 3180 fs/f2fs/f2fs.h int f2fs_acquire_orphan_inode(struct f2fs_sb_info *sbi); sbi 3181 fs/f2fs/f2fs.h void f2fs_release_orphan_inode(struct f2fs_sb_info *sbi); sbi 3183 fs/f2fs/f2fs.h void f2fs_remove_orphan_inode(struct f2fs_sb_info *sbi, nid_t ino); sbi 3184 fs/f2fs/f2fs.h int f2fs_recover_orphan_inodes(struct f2fs_sb_info *sbi); sbi 3185 fs/f2fs/f2fs.h int f2fs_get_valid_checkpoint(struct f2fs_sb_info *sbi); sbi 3188 fs/f2fs/f2fs.h int f2fs_sync_dirty_inodes(struct f2fs_sb_info *sbi, enum inode_type type); sbi 3189 fs/f2fs/f2fs.h void f2fs_wait_on_all_pages(struct f2fs_sb_info *sbi, int type); sbi 3190 fs/f2fs/f2fs.h int f2fs_write_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc); sbi 3191 fs/f2fs/f2fs.h void f2fs_init_ino_entry_info(struct f2fs_sb_info *sbi); sbi 3200 fs/f2fs/f2fs.h void f2fs_submit_merged_write(struct f2fs_sb_info *sbi, enum page_type type); sbi 3201 fs/f2fs/f2fs.h void f2fs_submit_merged_write_cond(struct f2fs_sb_info *sbi, sbi 3204 fs/f2fs/f2fs.h void f2fs_flush_merged_writes(struct f2fs_sb_info *sbi); sbi 3208 fs/f2fs/f2fs.h struct block_device *f2fs_target_device(struct f2fs_sb_info *sbi, sbi 3210 fs/f2fs/f2fs.h int f2fs_target_device_index(struct f2fs_sb_info *sbi, block_t blkaddr); sbi 3226 fs/f2fs/f2fs.h void __do_map_lock(struct f2fs_sb_info *sbi, int flag, bool lock); sbi 3246 fs/f2fs/f2fs.h int f2fs_start_gc_thread(struct f2fs_sb_info *sbi); sbi 3247 fs/f2fs/f2fs.h void f2fs_stop_gc_thread(struct f2fs_sb_info *sbi); sbi 3249 fs/f2fs/f2fs.h int f2fs_gc(struct f2fs_sb_info *sbi, bool sync, bool background, sbi 3251 fs/f2fs/f2fs.h void f2fs_build_gc_manager(struct f2fs_sb_info *sbi); sbi 3252 fs/f2fs/f2fs.h int f2fs_resize_fs(struct f2fs_sb_info *sbi, __u64 block_count); sbi 3257 fs/f2fs/f2fs.h int f2fs_recover_fsync_data(struct f2fs_sb_info *sbi, bool check_only); sbi 3258 fs/f2fs/f2fs.h bool f2fs_space_for_roll_forward(struct f2fs_sb_info *sbi); sbi 3266 fs/f2fs/f2fs.h struct f2fs_sb_info *sbi; sbi 3311 fs/f2fs/f2fs.h static inline struct f2fs_stat_info *F2FS_STAT(struct f2fs_sb_info *sbi) sbi 3313 fs/f2fs/f2fs.h return (struct f2fs_stat_info *)sbi->stat_info; sbi 3319 fs/f2fs/f2fs.h #define stat_inc_bggc_count(sbi) ((sbi)->bg_gc++) sbi 3320 fs/f2fs/f2fs.h #define stat_io_skip_bggc_count(sbi) ((sbi)->io_skip_bggc++) sbi 3321 fs/f2fs/f2fs.h #define stat_other_skip_bggc_count(sbi) ((sbi)->other_skip_bggc++) sbi 3322 fs/f2fs/f2fs.h #define stat_inc_dirty_inode(sbi, type) ((sbi)->ndirty_inode[type]++) sbi 3323 fs/f2fs/f2fs.h #define stat_dec_dirty_inode(sbi, type) ((sbi)->ndirty_inode[type]--) sbi 3324 fs/f2fs/f2fs.h #define stat_inc_total_hit(sbi) (atomic64_inc(&(sbi)->total_hit_ext)) sbi 3325 fs/f2fs/f2fs.h #define stat_inc_rbtree_node_hit(sbi) (atomic64_inc(&(sbi)->read_hit_rbtree)) sbi 3326 fs/f2fs/f2fs.h #define stat_inc_largest_node_hit(sbi) (atomic64_inc(&(sbi)->read_hit_largest)) sbi 3327 fs/f2fs/f2fs.h #define stat_inc_cached_node_hit(sbi) (atomic64_inc(&(sbi)->read_hit_cached)) sbi 3358 fs/f2fs/f2fs.h #define stat_inc_meta_count(sbi, blkaddr) \ sbi 3360 fs/f2fs/f2fs.h if (blkaddr < SIT_I(sbi)->sit_base_addr) \ sbi 3361 fs/f2fs/f2fs.h atomic_inc(&(sbi)->meta_count[META_CP]); \ sbi 3362 fs/f2fs/f2fs.h else if (blkaddr < NM_I(sbi)->nat_blkaddr) \ sbi 3363 fs/f2fs/f2fs.h atomic_inc(&(sbi)->meta_count[META_SIT]); \ sbi 3364 fs/f2fs/f2fs.h else if (blkaddr < SM_I(sbi)->ssa_blkaddr) \ sbi 3365 fs/f2fs/f2fs.h atomic_inc(&(sbi)->meta_count[META_NAT]); \ sbi 3366 fs/f2fs/f2fs.h else if (blkaddr < SM_I(sbi)->main_blkaddr) \ sbi 3367 fs/f2fs/f2fs.h atomic_inc(&(sbi)->meta_count[META_SSA]); \ sbi 3369 fs/f2fs/f2fs.h #define stat_inc_seg_type(sbi, curseg) \ sbi 3370 fs/f2fs/f2fs.h ((sbi)->segment_count[(curseg)->alloc_type]++) sbi 3371 fs/f2fs/f2fs.h #define stat_inc_block_count(sbi, curseg) \ sbi 3372 fs/f2fs/f2fs.h ((sbi)->block_count[(curseg)->alloc_type]++) sbi 3373 fs/f2fs/f2fs.h #define stat_inc_inplace_blocks(sbi) \ sbi 3374 fs/f2fs/f2fs.h (atomic_inc(&(sbi)->inplace_count)) sbi 3397 fs/f2fs/f2fs.h #define stat_inc_seg_count(sbi, type, gc_type) \ sbi 3399 fs/f2fs/f2fs.h struct f2fs_stat_info *si = F2FS_STAT(sbi); \ sbi 3413 fs/f2fs/f2fs.h #define stat_inc_data_blk_count(sbi, blks, gc_type) \ sbi 3415 fs/f2fs/f2fs.h struct f2fs_stat_info *si = F2FS_STAT(sbi); \ sbi 3421 fs/f2fs/f2fs.h #define stat_inc_node_blk_count(sbi, blks, gc_type) \ sbi 3423 fs/f2fs/f2fs.h struct f2fs_stat_info *si = F2FS_STAT(sbi); \ sbi 3429 fs/f2fs/f2fs.h int f2fs_build_stats(struct f2fs_sb_info *sbi); sbi 3430 fs/f2fs/f2fs.h void f2fs_destroy_stats(struct f2fs_sb_info *sbi); sbi 3438 fs/f2fs/f2fs.h #define stat_io_skip_bggc_count(sbi) do { } while (0) sbi 3439 fs/f2fs/f2fs.h #define stat_other_skip_bggc_count(sbi) do { } while (0) sbi 3440 fs/f2fs/f2fs.h #define stat_inc_dirty_inode(sbi, type) do { } while (0) sbi 3441 fs/f2fs/f2fs.h #define stat_dec_dirty_inode(sbi, type) do { } while (0) sbi 3444 fs/f2fs/f2fs.h #define stat_inc_largest_node_hit(sbi) do { } while (0) sbi 3445 fs/f2fs/f2fs.h #define stat_inc_cached_node_hit(sbi) do { } while (0) sbi 3458 fs/f2fs/f2fs.h #define stat_inc_meta_count(sbi, blkaddr) do { } while (0) sbi 3459 fs/f2fs/f2fs.h #define stat_inc_seg_type(sbi, curseg) do { } while (0) sbi 3460 fs/f2fs/f2fs.h #define stat_inc_block_count(sbi, curseg) do { } while (0) sbi 3461 fs/f2fs/f2fs.h #define stat_inc_inplace_blocks(sbi) do { } while (0) sbi 3462 fs/f2fs/f2fs.h #define stat_inc_seg_count(sbi, type, gc_type) do { } while (0) sbi 3464 fs/f2fs/f2fs.h #define stat_inc_data_blk_count(sbi, blks, gc_type) do { } while (0) sbi 3465 fs/f2fs/f2fs.h #define stat_inc_node_blk_count(sbi, blks, gc_type) do { } while (0) sbi 3467 fs/f2fs/f2fs.h static inline int f2fs_build_stats(struct f2fs_sb_info *sbi) { return 0; } sbi 3468 fs/f2fs/f2fs.h static inline void f2fs_destroy_stats(struct f2fs_sb_info *sbi) { } sbi 3525 fs/f2fs/f2fs.h void f2fs_join_shrinker(struct f2fs_sb_info *sbi); sbi 3526 fs/f2fs/f2fs.h void f2fs_leave_shrinker(struct f2fs_sb_info *sbi); sbi 3533 fs/f2fs/f2fs.h struct rb_node **f2fs_lookup_rb_tree_for_insert(struct f2fs_sb_info *sbi, sbi 3542 fs/f2fs/f2fs.h bool f2fs_check_rb_tree_consistence(struct f2fs_sb_info *sbi, sbi 3544 fs/f2fs/f2fs.h unsigned int f2fs_shrink_extent_tree(struct f2fs_sb_info *sbi, int nr_shrink); sbi 3554 fs/f2fs/f2fs.h void f2fs_init_extent_cache_info(struct f2fs_sb_info *sbi); sbi 3563 fs/f2fs/f2fs.h int f2fs_register_sysfs(struct f2fs_sb_info *sbi); sbi 3564 fs/f2fs/f2fs.h void f2fs_unregister_sysfs(struct f2fs_sb_info *sbi); sbi 3595 fs/f2fs/f2fs.h static inline int f2fs_sb_has_##name(struct f2fs_sb_info *sbi) \ sbi 3597 fs/f2fs/f2fs.h return F2FS_HAS_FEATURE(sbi, F2FS_FEATURE_##flagname); \ sbi 3614 fs/f2fs/f2fs.h static inline bool f2fs_blkz_is_seq(struct f2fs_sb_info *sbi, int devi, sbi 3617 fs/f2fs/f2fs.h unsigned int zno = blkaddr >> sbi->log_blocks_per_blkz; sbi 3623 fs/f2fs/f2fs.h static inline bool f2fs_hw_should_discard(struct f2fs_sb_info *sbi) sbi 3625 fs/f2fs/f2fs.h return f2fs_sb_has_blkzoned(sbi); sbi 3634 fs/f2fs/f2fs.h static inline bool f2fs_hw_support_discard(struct f2fs_sb_info *sbi) sbi 3638 fs/f2fs/f2fs.h if (!f2fs_is_multi_device(sbi)) sbi 3639 fs/f2fs/f2fs.h return f2fs_bdev_support_discard(sbi->sb->s_bdev); sbi 3641 fs/f2fs/f2fs.h for (i = 0; i < sbi->s_ndevs; i++) sbi 3647 fs/f2fs/f2fs.h static inline bool f2fs_realtime_discard_enable(struct f2fs_sb_info *sbi) sbi 3649 fs/f2fs/f2fs.h return (test_opt(sbi, DISCARD) && f2fs_hw_support_discard(sbi)) || sbi 3650 fs/f2fs/f2fs.h f2fs_hw_should_discard(sbi); sbi 3653 fs/f2fs/f2fs.h static inline bool f2fs_hw_is_readonly(struct f2fs_sb_info *sbi) sbi 3657 fs/f2fs/f2fs.h if (!f2fs_is_multi_device(sbi)) sbi 3658 fs/f2fs/f2fs.h return bdev_read_only(sbi->sb->s_bdev); sbi 3660 fs/f2fs/f2fs.h for (i = 0; i < sbi->s_ndevs; i++) sbi 3667 fs/f2fs/f2fs.h static inline void set_opt_mode(struct f2fs_sb_info *sbi, unsigned int mt) sbi 3669 fs/f2fs/f2fs.h clear_opt(sbi, ADAPTIVE); sbi 3670 fs/f2fs/f2fs.h clear_opt(sbi, LFS); sbi 3674 fs/f2fs/f2fs.h set_opt(sbi, ADAPTIVE); sbi 3677 fs/f2fs/f2fs.h set_opt(sbi, LFS); sbi 3707 fs/f2fs/f2fs.h struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 3710 fs/f2fs/f2fs.h return (test_opt(sbi, LFS) && (rw == WRITE) && sbi 3717 fs/f2fs/f2fs.h struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 3722 fs/f2fs/f2fs.h if (f2fs_is_multi_device(sbi)) sbi 3728 fs/f2fs/f2fs.h if (f2fs_sb_has_blkzoned(sbi)) sbi 3730 fs/f2fs/f2fs.h if (test_opt(sbi, LFS) && (rw == WRITE)) { sbi 3733 fs/f2fs/f2fs.h if (F2FS_IO_ALIGNED(sbi)) sbi 3744 fs/f2fs/f2fs.h extern void f2fs_build_fault_attr(struct f2fs_sb_info *sbi, unsigned int rate, sbi 3747 fs/f2fs/f2fs.h #define f2fs_build_fault_attr(sbi, rate, type) do { } while (0) sbi 3750 fs/f2fs/f2fs.h static inline bool is_journalled_quota(struct f2fs_sb_info *sbi) sbi 3753 fs/f2fs/f2fs.h if (f2fs_sb_has_quota_ino(sbi)) sbi 3755 fs/f2fs/f2fs.h if (F2FS_OPTION(sbi).s_qf_names[USRQUOTA] || sbi 3756 fs/f2fs/f2fs.h F2FS_OPTION(sbi).s_qf_names[GRPQUOTA] || sbi 3757 fs/f2fs/f2fs.h F2FS_OPTION(sbi).s_qf_names[PRJQUOTA]) sbi 52 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 56 fs/f2fs/file.c if (unlikely(f2fs_cp_error(sbi))) { sbi 61 fs/f2fs/file.c if (!f2fs_is_checkpoint_ready(sbi)) { sbi 67 fs/f2fs/file.c f2fs_balance_fs(sbi, true); sbi 71 fs/f2fs/file.c f2fs_bug_on(sbi, f2fs_has_inline_data(inode)); sbi 85 fs/f2fs/file.c __do_map_lock(sbi, F2FS_GET_BLOCK_PRE_AIO, true); sbi 89 fs/f2fs/file.c __do_map_lock(sbi, F2FS_GET_BLOCK_PRE_AIO, false); sbi 119 fs/f2fs/file.c f2fs_update_iostat(sbi, APP_MAPPED_IO, F2FS_BLKSIZE); sbi 120 fs/f2fs/file.c f2fs_update_time(sbi, REQ_TIME); sbi 154 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 161 fs/f2fs/file.c else if (is_sbi_flag_set(sbi, SBI_NEED_CP)) sbi 165 fs/f2fs/file.c else if (!f2fs_space_for_roll_forward(sbi)) sbi 167 fs/f2fs/file.c else if (!f2fs_is_checkpointed_node(sbi, F2FS_I(inode)->i_pino)) sbi 169 fs/f2fs/file.c else if (test_opt(sbi, FASTBOOT)) sbi 171 fs/f2fs/file.c else if (F2FS_OPTION(sbi).active_logs == 2) sbi 173 fs/f2fs/file.c else if (F2FS_OPTION(sbi).fsync_mode == FSYNC_MODE_STRICT && sbi 174 fs/f2fs/file.c f2fs_need_dentry_mark(sbi, inode->i_ino) && sbi 175 fs/f2fs/file.c f2fs_exist_written_data(sbi, F2FS_I(inode)->i_pino, sbi 182 fs/f2fs/file.c static bool need_inode_page_update(struct f2fs_sb_info *sbi, nid_t ino) sbi 184 fs/f2fs/file.c struct page *i = find_get_page(NODE_MAPPING(sbi), ino); sbi 187 fs/f2fs/file.c if ((i && PageDirty(i)) || f2fs_need_inode_block_update(sbi, ino)) sbi 211 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 223 fs/f2fs/file.c is_sbi_flag_set(sbi, SBI_CP_DISABLED))) sbi 232 fs/f2fs/file.c if (datasync || get_dirty_pages(inode) <= SM_I(sbi)->min_fsync_blocks) sbi 252 fs/f2fs/file.c !f2fs_exist_written_data(sbi, ino, APPEND_INO)) { sbi 255 fs/f2fs/file.c if (need_inode_page_update(sbi, ino)) sbi 259 fs/f2fs/file.c f2fs_exist_written_data(sbi, ino, UPDATE_INO)) sbi 286 fs/f2fs/file.c atomic_inc(&sbi->wb_sync_req[NODE]); sbi 287 fs/f2fs/file.c ret = f2fs_fsync_node_pages(sbi, inode, &wbc, atomic, &seq_id); sbi 288 fs/f2fs/file.c atomic_dec(&sbi->wb_sync_req[NODE]); sbi 293 fs/f2fs/file.c if (unlikely(f2fs_cp_error(sbi))) { sbi 298 fs/f2fs/file.c if (f2fs_need_inode_block_update(sbi, ino)) { sbi 313 fs/f2fs/file.c ret = f2fs_wait_on_node_pages_writeback(sbi, seq_id); sbi 319 fs/f2fs/file.c f2fs_remove_ino_entry(sbi, ino, APPEND_INO); sbi 322 fs/f2fs/file.c if (!atomic && F2FS_OPTION(sbi).fsync_mode != FSYNC_MODE_NOBARRIER) sbi 323 fs/f2fs/file.c ret = f2fs_issue_flush(sbi, inode->i_ino); sbi 325 fs/f2fs/file.c f2fs_remove_ino_entry(sbi, ino, UPDATE_INO); sbi 327 fs/f2fs/file.c f2fs_remove_ino_entry(sbi, ino, FLUSH_INO); sbi 329 fs/f2fs/file.c f2fs_update_time(sbi, REQ_TIME); sbi 362 fs/f2fs/file.c static bool __found_offset(struct f2fs_sb_info *sbi, block_t blkaddr, sbi 517 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); sbi 539 fs/f2fs/file.c !f2fs_is_valid_blkaddr(sbi, blkaddr, sbi 543 fs/f2fs/file.c f2fs_invalidate_blocks(sbi, blkaddr); sbi 558 fs/f2fs/file.c dec_valid_block_count(sbi, dn->inode, nr_free); sbi 562 fs/f2fs/file.c f2fs_update_time(sbi, REQ_TIME); sbi 608 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 619 fs/f2fs/file.c if (free_from >= sbi->max_file_blocks) sbi 623 fs/f2fs/file.c f2fs_lock_op(sbi); sbi 625 fs/f2fs/file.c ipage = f2fs_get_node_page(sbi, inode->i_ino); sbi 649 fs/f2fs/file.c f2fs_bug_on(sbi, count < 0); sbi 661 fs/f2fs/file.c f2fs_unlock_op(sbi); sbi 890 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 896 fs/f2fs/file.c f2fs_balance_fs(sbi, true); sbi 898 fs/f2fs/file.c f2fs_lock_op(sbi); sbi 900 fs/f2fs/file.c f2fs_unlock_op(sbi); sbi 981 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 983 fs/f2fs/file.c f2fs_balance_fs(sbi, true); sbi 994 fs/f2fs/file.c f2fs_lock_op(sbi); sbi 996 fs/f2fs/file.c f2fs_unlock_op(sbi); sbi 1009 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 1035 fs/f2fs/file.c !f2fs_is_valid_blkaddr(sbi, *blkaddr, sbi 1041 fs/f2fs/file.c if (!f2fs_is_checkpointed_data(sbi, *blkaddr)) { sbi 1043 fs/f2fs/file.c if (test_opt(sbi, LFS)) { sbi 1065 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 1076 fs/f2fs/file.c dec_valid_block_count(sbi, inode, 1); sbi 1077 fs/f2fs/file.c f2fs_invalidate_blocks(sbi, *blkaddr); sbi 1090 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(src_inode); sbi 1111 fs/f2fs/file.c ret = f2fs_get_node_info(sbi, dn.nid, &ni); sbi 1130 fs/f2fs/file.c f2fs_replace_block(sbi, &dn, dn.data_blkaddr, sbi 1225 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 1231 fs/f2fs/file.c f2fs_balance_fs(sbi, true); sbi 1237 fs/f2fs/file.c f2fs_lock_op(sbi); sbi 1241 fs/f2fs/file.c f2fs_unlock_op(sbi); sbi 1291 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); sbi 1321 fs/f2fs/file.c f2fs_invalidate_blocks(sbi, dn->data_blkaddr); sbi 1335 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 1390 fs/f2fs/file.c f2fs_lock_op(sbi); sbi 1395 fs/f2fs/file.c f2fs_unlock_op(sbi); sbi 1407 fs/f2fs/file.c f2fs_unlock_op(sbi); sbi 1411 fs/f2fs/file.c f2fs_balance_fs(sbi, dn.node_changed); sbi 1442 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 1463 fs/f2fs/file.c f2fs_balance_fs(sbi, true); sbi 1492 fs/f2fs/file.c f2fs_lock_op(sbi); sbi 1497 fs/f2fs/file.c f2fs_unlock_op(sbi); sbi 1516 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 1533 fs/f2fs/file.c f2fs_balance_fs(sbi, true); sbi 1842 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 1885 fs/f2fs/file.c spin_lock(&sbi->inode_lock[ATOMIC_FILE]); sbi 1887 fs/f2fs/file.c list_add_tail(&fi->inmem_ilist, &sbi->inode_list[ATOMIC_FILE]); sbi 1888 fs/f2fs/file.c sbi->atomic_files++; sbi 1889 fs/f2fs/file.c spin_unlock(&sbi->inode_lock[ATOMIC_FILE]); sbi 2046 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 2047 fs/f2fs/file.c struct super_block *sb = sbi->sb; sbi 2071 fs/f2fs/file.c f2fs_stop_checkpoint(sbi, false); sbi 2072 fs/f2fs/file.c set_sbi_flag(sbi, SBI_IS_SHUTDOWN); sbi 2081 fs/f2fs/file.c f2fs_stop_checkpoint(sbi, false); sbi 2082 fs/f2fs/file.c set_sbi_flag(sbi, SBI_IS_SHUTDOWN); sbi 2085 fs/f2fs/file.c f2fs_stop_checkpoint(sbi, false); sbi 2086 fs/f2fs/file.c set_sbi_flag(sbi, SBI_IS_SHUTDOWN); sbi 2089 fs/f2fs/file.c f2fs_sync_meta_pages(sbi, META, LONG_MAX, FS_META_IO); sbi 2090 fs/f2fs/file.c f2fs_stop_checkpoint(sbi, false); sbi 2091 fs/f2fs/file.c set_sbi_flag(sbi, SBI_IS_SHUTDOWN); sbi 2094 fs/f2fs/file.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 2095 fs/f2fs/file.c set_sbi_flag(sbi, SBI_CP_DISABLED_QUICK); sbi 2096 fs/f2fs/file.c set_sbi_flag(sbi, SBI_IS_DIRTY); sbi 2105 fs/f2fs/file.c f2fs_stop_gc_thread(sbi); sbi 2106 fs/f2fs/file.c f2fs_stop_discard_thread(sbi); sbi 2108 fs/f2fs/file.c f2fs_drop_discard_cmd(sbi); sbi 2109 fs/f2fs/file.c clear_opt(sbi, DISCARD); sbi 2111 fs/f2fs/file.c f2fs_update_time(sbi, REQ_TIME); sbi 2116 fs/f2fs/file.c trace_f2fs_shutdown(sbi, in, ret); sbi 2189 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 2192 fs/f2fs/file.c if (!f2fs_sb_has_encrypt(sbi)) sbi 2199 fs/f2fs/file.c down_write(&sbi->sb_lock); sbi 2201 fs/f2fs/file.c if (uuid_is_nonzero(sbi->raw_super->encrypt_pw_salt)) sbi 2205 fs/f2fs/file.c generate_random_uuid(sbi->raw_super->encrypt_pw_salt); sbi 2207 fs/f2fs/file.c err = f2fs_commit_super(sbi, false); sbi 2210 fs/f2fs/file.c memset(sbi->raw_super->encrypt_pw_salt, 0, 16); sbi 2214 fs/f2fs/file.c if (copy_to_user((__u8 __user *)arg, sbi->raw_super->encrypt_pw_salt, sbi 2218 fs/f2fs/file.c up_write(&sbi->sb_lock); sbi 2269 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 2279 fs/f2fs/file.c if (f2fs_readonly(sbi->sb)) sbi 2287 fs/f2fs/file.c if (!mutex_trylock(&sbi->gc_mutex)) { sbi 2292 fs/f2fs/file.c mutex_lock(&sbi->gc_mutex); sbi 2295 fs/f2fs/file.c ret = f2fs_gc(sbi, sync, true, NULL_SEGNO); sbi 2304 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 2316 fs/f2fs/file.c if (f2fs_readonly(sbi->sb)) sbi 2320 fs/f2fs/file.c if (end < range.start || range.start < MAIN_BLKADDR(sbi) || sbi 2321 fs/f2fs/file.c end >= MAX_BLKADDR(sbi)) sbi 2330 fs/f2fs/file.c if (!mutex_trylock(&sbi->gc_mutex)) { sbi 2335 fs/f2fs/file.c mutex_lock(&sbi->gc_mutex); sbi 2338 fs/f2fs/file.c ret = f2fs_gc(sbi, range.sync, true, GET_SEGNO(sbi, range.start)); sbi 2339 fs/f2fs/file.c range.start += BLKS_PER_SEC(sbi); sbi 2350 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 2356 fs/f2fs/file.c if (f2fs_readonly(sbi->sb)) sbi 2359 fs/f2fs/file.c if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED))) { sbi 2360 fs/f2fs/file.c f2fs_info(sbi, "Skipping Checkpoint. Checkpoints currently disabled."); sbi 2368 fs/f2fs/file.c ret = f2fs_sync_fs(sbi->sb, 1); sbi 2374 fs/f2fs/file.c static int f2fs_defragment_range(struct f2fs_sb_info *sbi, sbi 2384 fs/f2fs/file.c unsigned int blk_per_seg = sbi->blocks_per_seg; sbi 2397 fs/f2fs/file.c f2fs_balance_fs(sbi, true); sbi 2451 fs/f2fs/file.c sec_num = DIV_ROUND_UP(total, BLKS_PER_SEC(sbi)); sbi 2458 fs/f2fs/file.c if (has_not_enough_free_secs(sbi, 0, sec_num)) { sbi 2525 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 2535 fs/f2fs/file.c if (f2fs_readonly(sbi->sb)) sbi 2547 fs/f2fs/file.c sbi->max_file_blocks)) sbi 2554 fs/f2fs/file.c err = f2fs_defragment_range(sbi, filp, &range); sbi 2557 fs/f2fs/file.c f2fs_update_time(sbi, REQ_TIME); sbi 2573 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(src); sbi 2646 fs/f2fs/file.c f2fs_balance_fs(sbi, true); sbi 2655 fs/f2fs/file.c f2fs_lock_op(sbi); sbi 2666 fs/f2fs/file.c f2fs_unlock_op(sbi); sbi 2725 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 2726 fs/f2fs/file.c struct sit_info *sm = SIT_I(sbi); sbi 2735 fs/f2fs/file.c if (f2fs_readonly(sbi->sb)) sbi 2738 fs/f2fs/file.c if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED))) sbi 2745 fs/f2fs/file.c if (!f2fs_is_multi_device(sbi) || sbi->s_ndevs - 1 <= range.dev_num || sbi 2746 fs/f2fs/file.c __is_large_section(sbi)) { sbi 2747 fs/f2fs/file.c f2fs_warn(sbi, "Can't flush %u in %d for segs_per_sec %u != 1", sbi 2748 fs/f2fs/file.c range.dev_num, sbi->s_ndevs, sbi->segs_per_sec); sbi 2757 fs/f2fs/file.c dev_start_segno = GET_SEGNO(sbi, FDEV(range.dev_num).start_blk); sbi 2758 fs/f2fs/file.c dev_end_segno = GET_SEGNO(sbi, FDEV(range.dev_num).end_blk); sbi 2766 fs/f2fs/file.c if (!mutex_trylock(&sbi->gc_mutex)) { sbi 2773 fs/f2fs/file.c ret = f2fs_gc(sbi, true, true, start_segno); sbi 2800 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 2801 fs/f2fs/file.c struct super_block *sb = sbi->sb; sbi 2808 fs/f2fs/file.c set_sbi_flag(sbi, SBI_QUOTA_NEED_REPAIR); sbi 2818 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 2823 fs/f2fs/file.c if (!f2fs_sb_has_project_quota(sbi)) { sbi 2843 fs/f2fs/file.c ipage = f2fs_get_node_page(sbi, inode->i_ino); sbi 2859 fs/f2fs/file.c f2fs_lock_op(sbi); sbi 2868 fs/f2fs/file.c f2fs_unlock_op(sbi); sbi 3008 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 3015 fs/f2fs/file.c if (fi->i_gc_failures[GC_FAILURE_PIN] > sbi->gc_pin_file_threshold) { sbi 3016 fs/f2fs/file.c f2fs_warn(sbi, "%s: Enable GC = ino %lx after %x GC trials", sbi 3125 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(file_inode(filp)); sbi 3132 fs/f2fs/file.c if (f2fs_readonly(sbi->sb)) sbi 3139 fs/f2fs/file.c ret = f2fs_resize_fs(sbi, block_count); sbi 3171 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 3176 fs/f2fs/file.c vbuf = f2fs_kzalloc(sbi, MAX_VOLUME_NAME, GFP_KERNEL); sbi 3180 fs/f2fs/file.c down_read(&sbi->sb_lock); sbi 3181 fs/f2fs/file.c count = utf16s_to_utf8s(sbi->raw_super->volume_name, sbi 3182 fs/f2fs/file.c ARRAY_SIZE(sbi->raw_super->volume_name), sbi 3184 fs/f2fs/file.c up_read(&sbi->sb_lock); sbi 3197 fs/f2fs/file.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 3212 fs/f2fs/file.c down_write(&sbi->sb_lock); sbi 3214 fs/f2fs/file.c memset(sbi->raw_super->volume_name, 0, sbi 3215 fs/f2fs/file.c sizeof(sbi->raw_super->volume_name)); sbi 3217 fs/f2fs/file.c sbi->raw_super->volume_name, sbi 3218 fs/f2fs/file.c ARRAY_SIZE(sbi->raw_super->volume_name)); sbi 3220 fs/f2fs/file.c err = f2fs_commit_super(sbi, false); sbi 3222 fs/f2fs/file.c up_write(&sbi->sb_lock); sbi 25 fs/f2fs/gc.c struct f2fs_sb_info *sbi = data; sbi 26 fs/f2fs/gc.c struct f2fs_gc_kthread *gc_th = sbi->gc_thread; sbi 27 fs/f2fs/gc.c wait_queue_head_t *wq = &sbi->gc_thread->gc_wait_queue_head; sbi 44 fs/f2fs/gc.c stat_other_skip_bggc_count(sbi); sbi 50 fs/f2fs/gc.c if (sbi->sb->s_writers.frozen >= SB_FREEZE_WRITE) { sbi 52 fs/f2fs/gc.c stat_other_skip_bggc_count(sbi); sbi 56 fs/f2fs/gc.c if (time_to_inject(sbi, FAULT_CHECKPOINT)) { sbi 58 fs/f2fs/gc.c f2fs_stop_checkpoint(sbi, false); sbi 61 fs/f2fs/gc.c if (!sb_start_write_trylock(sbi->sb)) { sbi 62 fs/f2fs/gc.c stat_other_skip_bggc_count(sbi); sbi 79 fs/f2fs/gc.c if (sbi->gc_mode == GC_URGENT) { sbi 81 fs/f2fs/gc.c mutex_lock(&sbi->gc_mutex); sbi 85 fs/f2fs/gc.c if (!mutex_trylock(&sbi->gc_mutex)) { sbi 86 fs/f2fs/gc.c stat_other_skip_bggc_count(sbi); sbi 90 fs/f2fs/gc.c if (!is_idle(sbi, GC_TIME)) { sbi 92 fs/f2fs/gc.c mutex_unlock(&sbi->gc_mutex); sbi 93 fs/f2fs/gc.c stat_io_skip_bggc_count(sbi); sbi 97 fs/f2fs/gc.c if (has_enough_invalid_blocks(sbi)) sbi 102 fs/f2fs/gc.c stat_inc_bggc_count(sbi); sbi 105 fs/f2fs/gc.c if (f2fs_gc(sbi, test_opt(sbi, FORCE_FG_GC), true, NULL_SEGNO)) sbi 108 fs/f2fs/gc.c trace_f2fs_background_gc(sbi->sb, wait_ms, sbi 109 fs/f2fs/gc.c prefree_segments(sbi), free_segments(sbi)); sbi 112 fs/f2fs/gc.c f2fs_balance_fs_bg(sbi); sbi 114 fs/f2fs/gc.c sb_end_write(sbi->sb); sbi 120 fs/f2fs/gc.c int f2fs_start_gc_thread(struct f2fs_sb_info *sbi) sbi 123 fs/f2fs/gc.c dev_t dev = sbi->sb->s_bdev->bd_dev; sbi 126 fs/f2fs/gc.c gc_th = f2fs_kmalloc(sbi, sizeof(struct f2fs_gc_kthread), GFP_KERNEL); sbi 139 fs/f2fs/gc.c sbi->gc_thread = gc_th; sbi 140 fs/f2fs/gc.c init_waitqueue_head(&sbi->gc_thread->gc_wait_queue_head); sbi 141 fs/f2fs/gc.c sbi->gc_thread->f2fs_gc_task = kthread_run(gc_thread_func, sbi, sbi 146 fs/f2fs/gc.c sbi->gc_thread = NULL; sbi 152 fs/f2fs/gc.c void f2fs_stop_gc_thread(struct f2fs_sb_info *sbi) sbi 154 fs/f2fs/gc.c struct f2fs_gc_kthread *gc_th = sbi->gc_thread; sbi 159 fs/f2fs/gc.c sbi->gc_thread = NULL; sbi 162 fs/f2fs/gc.c static int select_gc_type(struct f2fs_sb_info *sbi, int gc_type) sbi 166 fs/f2fs/gc.c switch (sbi->gc_mode) { sbi 178 fs/f2fs/gc.c static void select_policy(struct f2fs_sb_info *sbi, int gc_type, sbi 181 fs/f2fs/gc.c struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); sbi 189 fs/f2fs/gc.c p->gc_mode = select_gc_type(sbi, gc_type); sbi 192 fs/f2fs/gc.c p->ofs_unit = sbi->segs_per_sec; sbi 197 fs/f2fs/gc.c (sbi->gc_mode != GC_URGENT) && sbi 198 fs/f2fs/gc.c p->max_search > sbi->max_victim_search) sbi 199 fs/f2fs/gc.c p->max_search = sbi->max_victim_search; sbi 202 fs/f2fs/gc.c if (test_opt(sbi, NOHEAP) && sbi 206 fs/f2fs/gc.c p->offset = SIT_I(sbi)->last_victim[p->gc_mode]; sbi 209 fs/f2fs/gc.c static unsigned int get_max_cost(struct f2fs_sb_info *sbi, sbi 214 fs/f2fs/gc.c return sbi->blocks_per_seg; sbi 216 fs/f2fs/gc.c return 2 * sbi->blocks_per_seg * p->ofs_unit; sbi 223 fs/f2fs/gc.c static unsigned int check_bg_victims(struct f2fs_sb_info *sbi) sbi 225 fs/f2fs/gc.c struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); sbi 233 fs/f2fs/gc.c for_each_set_bit(secno, dirty_i->victim_secmap, MAIN_SECS(sbi)) { sbi 234 fs/f2fs/gc.c if (sec_usage_check(sbi, secno)) sbi 237 fs/f2fs/gc.c return GET_SEG_FROM_SEC(sbi, secno); sbi 242 fs/f2fs/gc.c static unsigned int get_cb_cost(struct f2fs_sb_info *sbi, unsigned int segno) sbi 244 fs/f2fs/gc.c struct sit_info *sit_i = SIT_I(sbi); sbi 245 fs/f2fs/gc.c unsigned int secno = GET_SEC_FROM_SEG(sbi, segno); sbi 246 fs/f2fs/gc.c unsigned int start = GET_SEG_FROM_SEC(sbi, secno); sbi 253 fs/f2fs/gc.c for (i = 0; i < sbi->segs_per_sec; i++) sbi 254 fs/f2fs/gc.c mtime += get_seg_entry(sbi, start + i)->mtime; sbi 255 fs/f2fs/gc.c vblocks = get_valid_blocks(sbi, segno, true); sbi 257 fs/f2fs/gc.c mtime = div_u64(mtime, sbi->segs_per_sec); sbi 258 fs/f2fs/gc.c vblocks = div_u64(vblocks, sbi->segs_per_sec); sbi 260 fs/f2fs/gc.c u = (vblocks * 100) >> sbi->log_blocks_per_seg; sbi 274 fs/f2fs/gc.c static inline unsigned int get_gc_cost(struct f2fs_sb_info *sbi, sbi 278 fs/f2fs/gc.c return get_seg_entry(sbi, segno)->ckpt_valid_blocks; sbi 282 fs/f2fs/gc.c return get_valid_blocks(sbi, segno, true); sbi 284 fs/f2fs/gc.c return get_cb_cost(sbi, segno); sbi 307 fs/f2fs/gc.c static int get_victim_by_default(struct f2fs_sb_info *sbi, sbi 310 fs/f2fs/gc.c struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); sbi 311 fs/f2fs/gc.c struct sit_info *sm = SIT_I(sbi); sbi 318 fs/f2fs/gc.c last_segment = MAIN_SECS(sbi) * sbi->segs_per_sec; sbi 321 fs/f2fs/gc.c select_policy(sbi, gc_type, type, &p); sbi 324 fs/f2fs/gc.c p.min_cost = get_max_cost(sbi, &p); sbi 327 fs/f2fs/gc.c if (get_valid_blocks(sbi, *result, false) && sbi 328 fs/f2fs/gc.c !sec_usage_check(sbi, GET_SEC_FROM_SEG(sbi, *result))) sbi 336 fs/f2fs/gc.c if (__is_large_section(sbi) && p.alloc_mode == LFS) { sbi 337 fs/f2fs/gc.c if (sbi->next_victim_seg[BG_GC] != NULL_SEGNO) { sbi 338 fs/f2fs/gc.c p.min_segno = sbi->next_victim_seg[BG_GC]; sbi 340 fs/f2fs/gc.c sbi->next_victim_seg[BG_GC] = NULL_SEGNO; sbi 344 fs/f2fs/gc.c sbi->next_victim_seg[FG_GC] != NULL_SEGNO) { sbi 345 fs/f2fs/gc.c p.min_segno = sbi->next_victim_seg[FG_GC]; sbi 347 fs/f2fs/gc.c sbi->next_victim_seg[FG_GC] = NULL_SEGNO; sbi 354 fs/f2fs/gc.c p.min_segno = check_bg_victims(sbi); sbi 395 fs/f2fs/gc.c secno = GET_SEC_FROM_SEG(sbi, segno); sbi 397 fs/f2fs/gc.c if (sec_usage_check(sbi, secno)) sbi 400 fs/f2fs/gc.c if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED) && sbi 401 fs/f2fs/gc.c get_ckpt_valid_blocks(sbi, segno) && sbi 407 fs/f2fs/gc.c cost = get_gc_cost(sbi, segno, &p); sbi 420 fs/f2fs/gc.c (MAIN_SECS(sbi) * sbi->segs_per_sec); sbi 429 fs/f2fs/gc.c secno = GET_SEC_FROM_SEG(sbi, p.min_segno); sbi 431 fs/f2fs/gc.c sbi->cur_victim_sec = secno; sbi 439 fs/f2fs/gc.c trace_f2fs_get_victim(sbi->sb, type, gc_type, &p, sbi 440 fs/f2fs/gc.c sbi->cur_victim_sec, sbi 441 fs/f2fs/gc.c prefree_segments(sbi), free_segments(sbi)); sbi 487 fs/f2fs/gc.c static int check_valid_map(struct f2fs_sb_info *sbi, sbi 490 fs/f2fs/gc.c struct sit_info *sit_i = SIT_I(sbi); sbi 495 fs/f2fs/gc.c sentry = get_seg_entry(sbi, segno); sbi 506 fs/f2fs/gc.c static int gc_node_segment(struct f2fs_sb_info *sbi, sbi 516 fs/f2fs/gc.c start_addr = START_BLOCK(sbi, segno); sbi 522 fs/f2fs/gc.c atomic_inc(&sbi->wb_sync_req[NODE]); sbi 524 fs/f2fs/gc.c for (off = 0; off < sbi->blocks_per_seg; off++, entry++) { sbi 531 fs/f2fs/gc.c if (gc_type == BG_GC && has_not_enough_free_secs(sbi, 0, 0)) sbi 534 fs/f2fs/gc.c if (check_valid_map(sbi, segno, off) == 0) sbi 538 fs/f2fs/gc.c f2fs_ra_meta_pages(sbi, NAT_BLOCK_OFFSET(nid), 1, sbi 544 fs/f2fs/gc.c f2fs_ra_node_page(sbi, nid); sbi 549 fs/f2fs/gc.c node_page = f2fs_get_node_page(sbi, nid); sbi 554 fs/f2fs/gc.c if (check_valid_map(sbi, segno, off) == 0) { sbi 559 fs/f2fs/gc.c if (f2fs_get_node_info(sbi, nid, &ni)) { sbi 572 fs/f2fs/gc.c stat_inc_node_blk_count(sbi, 1, gc_type); sbi 579 fs/f2fs/gc.c atomic_dec(&sbi->wb_sync_req[NODE]); sbi 610 fs/f2fs/gc.c static bool is_alive(struct f2fs_sb_info *sbi, struct f2fs_summary *sum, sbi 621 fs/f2fs/gc.c node_page = f2fs_get_node_page(sbi, nid); sbi 625 fs/f2fs/gc.c if (f2fs_get_node_info(sbi, nid, dni)) { sbi 631 fs/f2fs/gc.c f2fs_warn(sbi, "%s: valid data with mismatched node version.", sbi 633 fs/f2fs/gc.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 642 fs/f2fs/gc.c unsigned int segno = GET_SEGNO(sbi, blkaddr); sbi 643 fs/f2fs/gc.c unsigned long offset = GET_BLKOFF_FROM_SEG0(sbi, blkaddr); sbi 645 fs/f2fs/gc.c if (unlikely(check_valid_map(sbi, segno, offset))) { sbi 646 fs/f2fs/gc.c if (!test_and_set_bit(segno, SIT_I(sbi)->invalid_segmap)) { sbi 647 fs/f2fs/gc.c f2fs_err(sbi, "mismatched blkaddr %u (source_blkaddr %u) in seg %u\n", sbi 649 fs/f2fs/gc.c f2fs_bug_on(sbi, 1); sbi 660 fs/f2fs/gc.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 666 fs/f2fs/gc.c .sbi = sbi, sbi 684 fs/f2fs/gc.c if (unlikely(!f2fs_is_valid_blkaddr(sbi, dn.data_blkaddr, sbi 702 fs/f2fs/gc.c if (unlikely(!f2fs_is_valid_blkaddr(sbi, dn.data_blkaddr, sbi 720 fs/f2fs/gc.c fio.encrypted_page = f2fs_pagecache_get_page(META_MAPPING(sbi), sbi 749 fs/f2fs/gc.c .sbi = F2FS_I_SB(inode), sbi 765 fs/f2fs/gc.c bool lfs_mode = test_opt(fio.sbi, LFS); sbi 809 fs/f2fs/gc.c err = f2fs_get_node_info(fio.sbi, dn.nid, &ni); sbi 820 fs/f2fs/gc.c down_write(&fio.sbi->io_order_lock); sbi 822 fs/f2fs/gc.c mpage = f2fs_grab_cache_page(META_MAPPING(fio.sbi), sbi 837 fs/f2fs/gc.c if (unlikely(mpage->mapping != META_MAPPING(fio.sbi) || sbi 845 fs/f2fs/gc.c f2fs_allocate_data_block(fio.sbi, NULL, fio.old_blkaddr, &newaddr, sbi 848 fs/f2fs/gc.c fio.encrypted_page = f2fs_pagecache_get_page(META_MAPPING(fio.sbi), sbi 861 fs/f2fs/gc.c invalidate_mapping_pages(META_MAPPING(fio.sbi), sbi 866 fs/f2fs/gc.c dec_page_count(fio.sbi, F2FS_DIRTY_META); sbi 885 fs/f2fs/gc.c f2fs_update_iostat(fio.sbi, FS_GC_DATA_IO, F2FS_BLKSIZE); sbi 895 fs/f2fs/gc.c f2fs_do_replace_block(fio.sbi, &sum, newaddr, fio.old_blkaddr, sbi 899 fs/f2fs/gc.c up_write(&fio.sbi->io_order_lock); sbi 944 fs/f2fs/gc.c .sbi = F2FS_I_SB(inode), sbi 992 fs/f2fs/gc.c static int gc_data_segment(struct f2fs_sb_info *sbi, struct f2fs_summary *sum, sbi 995 fs/f2fs/gc.c struct super_block *sb = sbi->sb; sbi 1002 fs/f2fs/gc.c start_addr = START_BLOCK(sbi, segno); sbi 1007 fs/f2fs/gc.c for (off = 0; off < sbi->blocks_per_seg; off++, entry++) { sbi 1016 fs/f2fs/gc.c if (gc_type == BG_GC && has_not_enough_free_secs(sbi, 0, 0)) sbi 1019 fs/f2fs/gc.c if (check_valid_map(sbi, segno, off) == 0) sbi 1023 fs/f2fs/gc.c f2fs_ra_meta_pages(sbi, NAT_BLOCK_OFFSET(nid), 1, sbi 1029 fs/f2fs/gc.c f2fs_ra_node_page(sbi, nid); sbi 1034 fs/f2fs/gc.c if (!is_alive(sbi, entry, &dni, start_addr + off, &nofs)) sbi 1038 fs/f2fs/gc.c f2fs_ra_node_page(sbi, dni.ino); sbi 1052 fs/f2fs/gc.c sbi->skipped_gc_rwsem++; sbi 1096 fs/f2fs/gc.c sbi->skipped_gc_rwsem++; sbi 1124 fs/f2fs/gc.c stat_inc_data_blk_count(sbi, 1, gc_type); sbi 1134 fs/f2fs/gc.c static int __get_victim(struct f2fs_sb_info *sbi, unsigned int *victim, sbi 1137 fs/f2fs/gc.c struct sit_info *sit_i = SIT_I(sbi); sbi 1141 fs/f2fs/gc.c ret = DIRTY_I(sbi)->v_ops->get_victim(sbi, victim, gc_type, sbi 1147 fs/f2fs/gc.c static int do_garbage_collect(struct f2fs_sb_info *sbi, sbi 1155 fs/f2fs/gc.c unsigned int end_segno = start_segno + sbi->segs_per_sec; sbi 1157 fs/f2fs/gc.c unsigned char type = IS_DATASEG(get_seg_entry(sbi, segno)->type) ? sbi 1161 fs/f2fs/gc.c if (__is_large_section(sbi)) sbi 1162 fs/f2fs/gc.c end_segno = rounddown(end_segno, sbi->segs_per_sec); sbi 1165 fs/f2fs/gc.c if (__is_large_section(sbi)) sbi 1166 fs/f2fs/gc.c f2fs_ra_meta_pages(sbi, GET_SUM_BLOCK(sbi, segno), sbi 1171 fs/f2fs/gc.c sum_page = f2fs_get_sum_page(sbi, segno++); sbi 1177 fs/f2fs/gc.c sum_page = find_get_page(META_MAPPING(sbi), sbi 1178 fs/f2fs/gc.c GET_SUM_BLOCK(sbi, segno)); sbi 1192 fs/f2fs/gc.c sum_page = find_get_page(META_MAPPING(sbi), sbi 1193 fs/f2fs/gc.c GET_SUM_BLOCK(sbi, segno)); sbi 1196 fs/f2fs/gc.c if (get_valid_blocks(sbi, segno, false) == 0) sbi 1198 fs/f2fs/gc.c if (__is_large_section(sbi) && sbi 1199 fs/f2fs/gc.c migrated >= sbi->migration_granularity) sbi 1201 fs/f2fs/gc.c if (!PageUptodate(sum_page) || unlikely(f2fs_cp_error(sbi))) sbi 1206 fs/f2fs/gc.c f2fs_err(sbi, "Inconsistent segment (%u) type [%d, %d] in SSA and SIT", sbi 1208 fs/f2fs/gc.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 1209 fs/f2fs/gc.c f2fs_stop_checkpoint(sbi, false); sbi 1221 fs/f2fs/gc.c submitted += gc_node_segment(sbi, sum->entries, segno, sbi 1224 fs/f2fs/gc.c submitted += gc_data_segment(sbi, sum->entries, gc_list, sbi 1227 fs/f2fs/gc.c stat_inc_seg_count(sbi, type, gc_type); sbi 1231 fs/f2fs/gc.c get_valid_blocks(sbi, segno, false) == 0) sbi 1235 fs/f2fs/gc.c if (__is_large_section(sbi) && segno + 1 < end_segno) sbi 1236 fs/f2fs/gc.c sbi->next_victim_seg[gc_type] = segno + 1; sbi 1242 fs/f2fs/gc.c f2fs_submit_merged_write(sbi, sbi 1247 fs/f2fs/gc.c stat_inc_call_count(sbi->stat_info); sbi 1252 fs/f2fs/gc.c int f2fs_gc(struct f2fs_sb_info *sbi, bool sync, sbi 1264 fs/f2fs/gc.c unsigned long long last_skipped = sbi->skipped_atomic_files[FG_GC]; sbi 1268 fs/f2fs/gc.c trace_f2fs_gc_begin(sbi->sb, sync, background, sbi 1269 fs/f2fs/gc.c get_pages(sbi, F2FS_DIRTY_NODES), sbi 1270 fs/f2fs/gc.c get_pages(sbi, F2FS_DIRTY_DENTS), sbi 1271 fs/f2fs/gc.c get_pages(sbi, F2FS_DIRTY_IMETA), sbi 1272 fs/f2fs/gc.c free_sections(sbi), sbi 1273 fs/f2fs/gc.c free_segments(sbi), sbi 1274 fs/f2fs/gc.c reserved_segments(sbi), sbi 1275 fs/f2fs/gc.c prefree_segments(sbi)); sbi 1277 fs/f2fs/gc.c cpc.reason = __get_cp_reason(sbi); sbi 1278 fs/f2fs/gc.c sbi->skipped_gc_rwsem = 0; sbi 1281 fs/f2fs/gc.c if (unlikely(!(sbi->sb->s_flags & SB_ACTIVE))) { sbi 1285 fs/f2fs/gc.c if (unlikely(f2fs_cp_error(sbi))) { sbi 1290 fs/f2fs/gc.c if (gc_type == BG_GC && has_not_enough_free_secs(sbi, 0, 0)) { sbi 1296 fs/f2fs/gc.c if (prefree_segments(sbi) && sbi 1297 fs/f2fs/gc.c !is_sbi_flag_set(sbi, SBI_CP_DISABLED)) { sbi 1298 fs/f2fs/gc.c ret = f2fs_write_checkpoint(sbi, &cpc); sbi 1302 fs/f2fs/gc.c if (has_not_enough_free_secs(sbi, 0, 0)) sbi 1311 fs/f2fs/gc.c if (!__get_victim(sbi, &segno, gc_type)) { sbi 1316 fs/f2fs/gc.c seg_freed = do_garbage_collect(sbi, segno, &gc_list, gc_type); sbi 1317 fs/f2fs/gc.c if (gc_type == FG_GC && seg_freed == sbi->segs_per_sec) sbi 1322 fs/f2fs/gc.c if (sbi->skipped_atomic_files[FG_GC] > last_skipped || sbi 1323 fs/f2fs/gc.c sbi->skipped_gc_rwsem) sbi 1325 fs/f2fs/gc.c last_skipped = sbi->skipped_atomic_files[FG_GC]; sbi 1330 fs/f2fs/gc.c sbi->cur_victim_sec = NULL_SEGNO; sbi 1335 fs/f2fs/gc.c if (has_not_enough_free_secs(sbi, sec_freed, 0)) { sbi 1344 fs/f2fs/gc.c sbi->skipped_gc_rwsem) { sbi 1345 fs/f2fs/gc.c f2fs_drop_inmem_pages_all(sbi, true); sbi 1349 fs/f2fs/gc.c if (gc_type == FG_GC && !is_sbi_flag_set(sbi, SBI_CP_DISABLED)) sbi 1350 fs/f2fs/gc.c ret = f2fs_write_checkpoint(sbi, &cpc); sbi 1353 fs/f2fs/gc.c SIT_I(sbi)->last_victim[ALLOC_NEXT] = 0; sbi 1354 fs/f2fs/gc.c SIT_I(sbi)->last_victim[FLUSH_DEVICE] = init_segno; sbi 1356 fs/f2fs/gc.c trace_f2fs_gc_end(sbi->sb, ret, total_freed, sec_freed, sbi 1357 fs/f2fs/gc.c get_pages(sbi, F2FS_DIRTY_NODES), sbi 1358 fs/f2fs/gc.c get_pages(sbi, F2FS_DIRTY_DENTS), sbi 1359 fs/f2fs/gc.c get_pages(sbi, F2FS_DIRTY_IMETA), sbi 1360 fs/f2fs/gc.c free_sections(sbi), sbi 1361 fs/f2fs/gc.c free_segments(sbi), sbi 1362 fs/f2fs/gc.c reserved_segments(sbi), sbi 1363 fs/f2fs/gc.c prefree_segments(sbi)); sbi 1365 fs/f2fs/gc.c mutex_unlock(&sbi->gc_mutex); sbi 1374 fs/f2fs/gc.c void f2fs_build_gc_manager(struct f2fs_sb_info *sbi) sbi 1376 fs/f2fs/gc.c DIRTY_I(sbi)->v_ops = &default_v_ops; sbi 1378 fs/f2fs/gc.c sbi->gc_pin_file_threshold = DEF_GC_FAILED_PINNED_FILES; sbi 1381 fs/f2fs/gc.c if (f2fs_is_multi_device(sbi) && !__is_large_section(sbi)) sbi 1382 fs/f2fs/gc.c SIT_I(sbi)->last_victim[ALLOC_NEXT] = sbi 1383 fs/f2fs/gc.c GET_SEGNO(sbi, FDEV(0).end_blk) + 1; sbi 1386 fs/f2fs/gc.c static int free_segment_range(struct f2fs_sb_info *sbi, unsigned int start, sbi 1395 fs/f2fs/gc.c allocate_segment_for_resize(sbi, type, start, end); sbi 1398 fs/f2fs/gc.c for (segno = start; segno <= end; segno += sbi->segs_per_sec) { sbi 1404 fs/f2fs/gc.c mutex_lock(&sbi->gc_mutex); sbi 1405 fs/f2fs/gc.c do_garbage_collect(sbi, segno, &gc_list, FG_GC); sbi 1406 fs/f2fs/gc.c mutex_unlock(&sbi->gc_mutex); sbi 1409 fs/f2fs/gc.c if (get_valid_blocks(sbi, segno, true)) sbi 1413 fs/f2fs/gc.c err = f2fs_sync_fs(sbi->sb, 1); sbi 1417 fs/f2fs/gc.c next_inuse = find_next_inuse(FREE_I(sbi), end + 1, start); sbi 1419 fs/f2fs/gc.c f2fs_err(sbi, "segno %u should be free but still inuse!", sbi 1421 fs/f2fs/gc.c f2fs_bug_on(sbi, 1); sbi 1426 fs/f2fs/gc.c static void update_sb_metadata(struct f2fs_sb_info *sbi, int secs) sbi 1428 fs/f2fs/gc.c struct f2fs_super_block *raw_sb = F2FS_RAW_SUPER(sbi); sbi 1433 fs/f2fs/gc.c int segs = secs * sbi->segs_per_sec; sbi 1439 fs/f2fs/gc.c (long long)segs * sbi->blocks_per_seg); sbi 1442 fs/f2fs/gc.c static void update_fs_metadata(struct f2fs_sb_info *sbi, int secs) sbi 1444 fs/f2fs/gc.c int segs = secs * sbi->segs_per_sec; sbi 1446 fs/f2fs/gc.c le64_to_cpu(F2FS_CKPT(sbi)->user_block_count); sbi 1448 fs/f2fs/gc.c SM_I(sbi)->segment_count = (int)SM_I(sbi)->segment_count + segs; sbi 1449 fs/f2fs/gc.c MAIN_SEGS(sbi) = (int)MAIN_SEGS(sbi) + segs; sbi 1450 fs/f2fs/gc.c FREE_I(sbi)->free_sections = (int)FREE_I(sbi)->free_sections + secs; sbi 1451 fs/f2fs/gc.c FREE_I(sbi)->free_segments = (int)FREE_I(sbi)->free_segments + segs; sbi 1452 fs/f2fs/gc.c F2FS_CKPT(sbi)->user_block_count = cpu_to_le64(user_block_count + sbi 1453 fs/f2fs/gc.c (long long)segs * sbi->blocks_per_seg); sbi 1456 fs/f2fs/gc.c int f2fs_resize_fs(struct f2fs_sb_info *sbi, __u64 block_count) sbi 1464 fs/f2fs/gc.c old_block_count = le64_to_cpu(F2FS_RAW_SUPER(sbi)->block_count); sbi 1469 fs/f2fs/gc.c div_u64_rem(block_count, BLKS_PER_SEC(sbi), &rem); sbi 1476 fs/f2fs/gc.c if (is_sbi_flag_set(sbi, SBI_NEED_FSCK)) { sbi 1477 fs/f2fs/gc.c f2fs_err(sbi, "Should run fsck to repair first."); sbi 1481 fs/f2fs/gc.c if (test_opt(sbi, DISABLE_CHECKPOINT)) { sbi 1482 fs/f2fs/gc.c f2fs_err(sbi, "Checkpoint should be enabled."); sbi 1486 fs/f2fs/gc.c freeze_bdev(sbi->sb->s_bdev); sbi 1489 fs/f2fs/gc.c secs = div_u64(shrunk_blocks, BLKS_PER_SEC(sbi)); sbi 1490 fs/f2fs/gc.c spin_lock(&sbi->stat_lock); sbi 1491 fs/f2fs/gc.c if (shrunk_blocks + valid_user_blocks(sbi) + sbi 1492 fs/f2fs/gc.c sbi->current_reserved_blocks + sbi->unusable_block_count + sbi 1493 fs/f2fs/gc.c F2FS_OPTION(sbi).root_reserved_blocks > sbi->user_block_count) sbi 1496 fs/f2fs/gc.c sbi->user_block_count -= shrunk_blocks; sbi 1497 fs/f2fs/gc.c spin_unlock(&sbi->stat_lock); sbi 1499 fs/f2fs/gc.c thaw_bdev(sbi->sb->s_bdev, sbi->sb); sbi 1503 fs/f2fs/gc.c mutex_lock(&sbi->resize_mutex); sbi 1504 fs/f2fs/gc.c set_sbi_flag(sbi, SBI_IS_RESIZEFS); sbi 1506 fs/f2fs/gc.c mutex_lock(&DIRTY_I(sbi)->seglist_lock); sbi 1508 fs/f2fs/gc.c MAIN_SECS(sbi) -= secs; sbi 1511 fs/f2fs/gc.c if (SIT_I(sbi)->last_victim[gc_mode] >= sbi 1512 fs/f2fs/gc.c MAIN_SECS(sbi) * sbi->segs_per_sec) sbi 1513 fs/f2fs/gc.c SIT_I(sbi)->last_victim[gc_mode] = 0; sbi 1516 fs/f2fs/gc.c if (sbi->next_victim_seg[gc_type] >= sbi 1517 fs/f2fs/gc.c MAIN_SECS(sbi) * sbi->segs_per_sec) sbi 1518 fs/f2fs/gc.c sbi->next_victim_seg[gc_type] = NULL_SEGNO; sbi 1520 fs/f2fs/gc.c mutex_unlock(&DIRTY_I(sbi)->seglist_lock); sbi 1522 fs/f2fs/gc.c err = free_segment_range(sbi, MAIN_SECS(sbi) * sbi->segs_per_sec, sbi 1523 fs/f2fs/gc.c MAIN_SEGS(sbi) - 1); sbi 1527 fs/f2fs/gc.c update_sb_metadata(sbi, -secs); sbi 1529 fs/f2fs/gc.c err = f2fs_commit_super(sbi, false); sbi 1531 fs/f2fs/gc.c update_sb_metadata(sbi, secs); sbi 1535 fs/f2fs/gc.c mutex_lock(&sbi->cp_mutex); sbi 1536 fs/f2fs/gc.c update_fs_metadata(sbi, -secs); sbi 1537 fs/f2fs/gc.c clear_sbi_flag(sbi, SBI_IS_RESIZEFS); sbi 1538 fs/f2fs/gc.c set_sbi_flag(sbi, SBI_IS_DIRTY); sbi 1539 fs/f2fs/gc.c mutex_unlock(&sbi->cp_mutex); sbi 1541 fs/f2fs/gc.c err = f2fs_sync_fs(sbi->sb, 1); sbi 1543 fs/f2fs/gc.c mutex_lock(&sbi->cp_mutex); sbi 1544 fs/f2fs/gc.c update_fs_metadata(sbi, secs); sbi 1545 fs/f2fs/gc.c mutex_unlock(&sbi->cp_mutex); sbi 1546 fs/f2fs/gc.c update_sb_metadata(sbi, secs); sbi 1547 fs/f2fs/gc.c f2fs_commit_super(sbi, false); sbi 1551 fs/f2fs/gc.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 1552 fs/f2fs/gc.c f2fs_err(sbi, "resize_fs failed, should run fsck to repair!"); sbi 1554 fs/f2fs/gc.c MAIN_SECS(sbi) += secs; sbi 1555 fs/f2fs/gc.c spin_lock(&sbi->stat_lock); sbi 1556 fs/f2fs/gc.c sbi->user_block_count += shrunk_blocks; sbi 1557 fs/f2fs/gc.c spin_unlock(&sbi->stat_lock); sbi 1559 fs/f2fs/gc.c clear_sbi_flag(sbi, SBI_IS_RESIZEFS); sbi 1560 fs/f2fs/gc.c mutex_unlock(&sbi->resize_mutex); sbi 1561 fs/f2fs/gc.c thaw_bdev(sbi->sb->s_bdev, sbi->sb); sbi 47 fs/f2fs/gc.h static inline block_t free_user_blocks(struct f2fs_sb_info *sbi) sbi 49 fs/f2fs/gc.h if (free_segments(sbi) < overprovision_segments(sbi)) sbi 52 fs/f2fs/gc.h return (free_segments(sbi) - overprovision_segments(sbi)) sbi 53 fs/f2fs/gc.h << sbi->log_blocks_per_seg; sbi 56 fs/f2fs/gc.h static inline block_t limit_invalid_user_blocks(struct f2fs_sb_info *sbi) sbi 58 fs/f2fs/gc.h return (long)(sbi->user_block_count * LIMIT_INVALID_BLOCK) / 100; sbi 61 fs/f2fs/gc.h static inline block_t limit_free_user_blocks(struct f2fs_sb_info *sbi) sbi 63 fs/f2fs/gc.h block_t reclaimable_user_blocks = sbi->user_block_count - sbi 64 fs/f2fs/gc.h written_block_count(sbi); sbi 97 fs/f2fs/gc.h static inline bool has_enough_invalid_blocks(struct f2fs_sb_info *sbi) sbi 99 fs/f2fs/gc.h block_t invalid_user_blocks = sbi->user_block_count - sbi 100 fs/f2fs/gc.h written_block_count(sbi); sbi 106 fs/f2fs/gc.h if (invalid_user_blocks > limit_invalid_user_blocks(sbi) && sbi 107 fs/f2fs/gc.h free_user_blocks(sbi) < limit_free_user_blocks(sbi)) sbi 112 fs/f2fs/hash.c struct f2fs_sb_info *sbi = F2FS_SB(dir->i_sb); sbi 113 fs/f2fs/hash.c const struct unicode_map *um = sbi->s_encoding; sbi 121 fs/f2fs/hash.c buff = f2fs_kzalloc(sbi, sizeof(char) * PATH_MAX, GFP_KERNEL); sbi 113 fs/f2fs/inline.c .sbi = F2FS_I_SB(dn->inode), sbi 132 fs/f2fs/inline.c err = f2fs_get_node_info(fio.sbi, dn->nid, &ni); sbi 143 fs/f2fs/inline.c set_sbi_flag(fio.sbi, SBI_NEED_FSCK); sbi 144 fs/f2fs/inline.c f2fs_warn(fio.sbi, "%s: corrupted inline inode ino=%lx, i_addr[0]:0x%x, run fsck to fix.", sbi 184 fs/f2fs/inline.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 196 fs/f2fs/inline.c f2fs_lock_op(sbi); sbi 198 fs/f2fs/inline.c ipage = f2fs_get_node_page(sbi, inode->i_ino); sbi 211 fs/f2fs/inline.c f2fs_unlock_op(sbi); sbi 215 fs/f2fs/inline.c f2fs_balance_fs(sbi, dn.node_changed); sbi 257 fs/f2fs/inline.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 276 fs/f2fs/inline.c ipage = f2fs_get_node_page(sbi, inode->i_ino); sbi 277 fs/f2fs/inline.c f2fs_bug_on(sbi, IS_ERR(ipage)); sbi 294 fs/f2fs/inline.c ipage = f2fs_get_node_page(sbi, inode->i_ino); sbi 295 fs/f2fs/inline.c f2fs_bug_on(sbi, IS_ERR(ipage)); sbi 310 fs/f2fs/inline.c struct f2fs_sb_info *sbi = F2FS_SB(dir->i_sb); sbi 318 fs/f2fs/inline.c ipage = f2fs_get_node_page(sbi, dir->i_ino); sbi 546 fs/f2fs/inline.c struct f2fs_sb_info *sbi = F2FS_I_SB(dir); sbi 556 fs/f2fs/inline.c ipage = f2fs_get_node_page(sbi, dir->i_ino); sbi 640 fs/f2fs/inline.c struct f2fs_sb_info *sbi = F2FS_I_SB(dir); sbi 646 fs/f2fs/inline.c ipage = f2fs_get_node_page(sbi, dir->i_ino); sbi 73 fs/f2fs/inode.c static int __written_first_block(struct f2fs_sb_info *sbi, sbi 80 fs/f2fs/inode.c if (!f2fs_is_valid_blkaddr(sbi, addr, DATA_GENERIC_ENHANCE)) sbi 122 fs/f2fs/inode.c static bool f2fs_enable_inode_chksum(struct f2fs_sb_info *sbi, struct page *page) sbi 126 fs/f2fs/inode.c if (!f2fs_sb_has_inode_chksum(sbi)) sbi 139 fs/f2fs/inode.c static __u32 f2fs_inode_chksum(struct f2fs_sb_info *sbi, struct page *page) sbi 150 fs/f2fs/inode.c chksum = f2fs_chksum(sbi, sbi->s_chksum_seed, (__u8 *)&ino, sbi 152 fs/f2fs/inode.c chksum_seed = f2fs_chksum(sbi, chksum, (__u8 *)&gen, sizeof(gen)); sbi 154 fs/f2fs/inode.c chksum = f2fs_chksum(sbi, chksum_seed, (__u8 *)ri, offset); sbi 155 fs/f2fs/inode.c chksum = f2fs_chksum(sbi, chksum, (__u8 *)&dummy_cs, cs_size); sbi 157 fs/f2fs/inode.c chksum = f2fs_chksum(sbi, chksum, (__u8 *)ri + offset, sbi 162 fs/f2fs/inode.c bool f2fs_inode_chksum_verify(struct f2fs_sb_info *sbi, struct page *page) sbi 167 fs/f2fs/inode.c if (unlikely(is_sbi_flag_set(sbi, SBI_IS_SHUTDOWN))) sbi 171 fs/f2fs/inode.c if (!f2fs_enable_inode_chksum(sbi, page)) sbi 173 fs/f2fs/inode.c if (!f2fs_enable_inode_chksum(sbi, page) || sbi 180 fs/f2fs/inode.c calculated = f2fs_inode_chksum(sbi, page); sbi 183 fs/f2fs/inode.c f2fs_warn(sbi, "checksum invalid, nid = %lu, ino_of_node = %x, %x vs. %x", sbi 189 fs/f2fs/inode.c void f2fs_inode_chksum_set(struct f2fs_sb_info *sbi, struct page *page) sbi 193 fs/f2fs/inode.c if (!f2fs_enable_inode_chksum(sbi, page)) sbi 196 fs/f2fs/inode.c ri->i_inode_checksum = cpu_to_le32(f2fs_inode_chksum(sbi, page)); sbi 201 fs/f2fs/inode.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 207 fs/f2fs/inode.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 208 fs/f2fs/inode.c f2fs_warn(sbi, "%s: corrupted inode i_blocks i_ino=%lx iblocks=%llu, run fsck to fix.", sbi 214 fs/f2fs/inode.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 215 fs/f2fs/inode.c f2fs_warn(sbi, "%s: corrupted inode footer i_ino=%lx, ino,nid: [%u, %u] run fsck to fix.", sbi 221 fs/f2fs/inode.c if (f2fs_sb_has_flexible_inline_xattr(sbi) sbi 223 fs/f2fs/inode.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 224 fs/f2fs/inode.c f2fs_warn(sbi, "%s: corrupted inode ino=%lx, run fsck to fix.", sbi 230 fs/f2fs/inode.c !f2fs_sb_has_extra_attr(sbi)) { sbi 231 fs/f2fs/inode.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 232 fs/f2fs/inode.c f2fs_warn(sbi, "%s: inode (ino=%lx) is with extra_attr, but extra_attr feature is off", sbi 239 fs/f2fs/inode.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 240 fs/f2fs/inode.c f2fs_warn(sbi, "%s: inode (ino=%lx) has corrupted i_extra_isize: %d, max: %zu", sbi 247 fs/f2fs/inode.c f2fs_sb_has_flexible_inline_xattr(sbi) && sbi 251 fs/f2fs/inode.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 252 fs/f2fs/inode.c f2fs_warn(sbi, "%s: inode (ino=%lx) has corrupted i_inline_xattr_size: %d, max: %zu", sbi 262 fs/f2fs/inode.c (!f2fs_is_valid_blkaddr(sbi, ei->blk, sbi 264 fs/f2fs/inode.c !f2fs_is_valid_blkaddr(sbi, ei->blk + ei->len - 1, sbi 266 fs/f2fs/inode.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 267 fs/f2fs/inode.c f2fs_warn(sbi, "%s: inode (ino=%lx) extent info [%u, %u, %u] is incorrect, run fsck to fix", sbi 276 fs/f2fs/inode.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 277 fs/f2fs/inode.c f2fs_warn(sbi, "%s: inode (ino=%lx, mode=%u) should not have inline_data, run fsck to fix", sbi 283 fs/f2fs/inode.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 284 fs/f2fs/inode.c f2fs_warn(sbi, "%s: inode (ino=%lx, mode=%u) should not have inline_dentry, run fsck to fix", sbi 294 fs/f2fs/inode.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 302 fs/f2fs/inode.c if (f2fs_check_nid_range(sbi, inode->i_ino)) sbi 305 fs/f2fs/inode.c node_page = f2fs_get_node_page(sbi, inode->i_ino); sbi 347 fs/f2fs/inode.c if (f2fs_sb_has_flexible_inline_xattr(sbi)) { sbi 382 fs/f2fs/inode.c err = __written_first_block(sbi, ri); sbi 391 fs/f2fs/inode.c if (!f2fs_need_inode_block_update(sbi, inode->i_ino)) sbi 397 fs/f2fs/inode.c if (f2fs_has_extra_attr(inode) && f2fs_sb_has_project_quota(sbi) && sbi 404 fs/f2fs/inode.c if (f2fs_has_extra_attr(inode) && f2fs_sb_has_inode_crtime(sbi) && sbi 425 fs/f2fs/inode.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 437 fs/f2fs/inode.c if (ino == F2FS_NODE_INO(sbi) || ino == F2FS_META_INO(sbi)) sbi 444 fs/f2fs/inode.c if (ino == F2FS_NODE_INO(sbi)) { sbi 447 fs/f2fs/inode.c } else if (ino == F2FS_META_INO(sbi)) { sbi 592 fs/f2fs/inode.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 595 fs/f2fs/inode.c node_page = f2fs_get_node_page(sbi, inode->i_ino); sbi 602 fs/f2fs/inode.c f2fs_stop_checkpoint(sbi, false); sbi 612 fs/f2fs/inode.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 614 fs/f2fs/inode.c if (inode->i_ino == F2FS_NODE_INO(sbi) || sbi 615 fs/f2fs/inode.c inode->i_ino == F2FS_META_INO(sbi)) sbi 625 fs/f2fs/inode.c if (!f2fs_is_checkpoint_ready(sbi)) sbi 634 fs/f2fs/inode.c f2fs_balance_fs(sbi, true); sbi 643 fs/f2fs/inode.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 654 fs/f2fs/inode.c if (inode->i_ino == F2FS_NODE_INO(sbi) || sbi 655 fs/f2fs/inode.c inode->i_ino == F2FS_META_INO(sbi)) sbi 658 fs/f2fs/inode.c f2fs_bug_on(sbi, get_dirty_pages(inode)); sbi 669 fs/f2fs/inode.c set_sbi_flag(sbi, SBI_QUOTA_NEED_REPAIR); sbi 672 fs/f2fs/inode.c f2fs_remove_ino_entry(sbi, inode->i_ino, APPEND_INO); sbi 673 fs/f2fs/inode.c f2fs_remove_ino_entry(sbi, inode->i_ino, UPDATE_INO); sbi 674 fs/f2fs/inode.c f2fs_remove_ino_entry(sbi, inode->i_ino, FLUSH_INO); sbi 683 fs/f2fs/inode.c if (time_to_inject(sbi, FAULT_EVICT_INODE)) { sbi 689 fs/f2fs/inode.c f2fs_lock_op(sbi); sbi 691 fs/f2fs/inode.c f2fs_unlock_op(sbi); sbi 705 fs/f2fs/inode.c set_sbi_flag(sbi, SBI_QUOTA_NEED_REPAIR); sbi 715 fs/f2fs/inode.c if (likely(!f2fs_cp_error(sbi) && sbi 716 fs/f2fs/inode.c !is_sbi_flag_set(sbi, SBI_CP_DISABLED))) sbi 717 fs/f2fs/inode.c f2fs_bug_on(sbi, is_inode_flag_set(inode, FI_DIRTY_INODE)); sbi 723 fs/f2fs/inode.c invalidate_mapping_pages(NODE_MAPPING(sbi), inode->i_ino, sbi 726 fs/f2fs/inode.c invalidate_mapping_pages(NODE_MAPPING(sbi), xnid, xnid); sbi 729 fs/f2fs/inode.c f2fs_add_ino_entry(sbi, inode->i_ino, APPEND_INO); sbi 731 fs/f2fs/inode.c f2fs_add_ino_entry(sbi, inode->i_ino, UPDATE_INO); sbi 734 fs/f2fs/inode.c f2fs_alloc_nid_failed(sbi, inode->i_ino); sbi 752 fs/f2fs/inode.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 777 fs/f2fs/inode.c err = f2fs_get_node_info(sbi, inode->i_ino, &ni); sbi 779 fs/f2fs/inode.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 780 fs/f2fs/inode.c f2fs_warn(sbi, "May loss orphan inode, run fsck to fix."); sbi 785 fs/f2fs/inode.c err = f2fs_acquire_orphan_inode(sbi); sbi 787 fs/f2fs/inode.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 788 fs/f2fs/inode.c f2fs_warn(sbi, "Too many orphan inodes, run fsck to fix."); sbi 792 fs/f2fs/inode.c f2fs_alloc_nid_done(sbi, inode->i_ino); sbi 798 fs/f2fs/inode.c f2fs_unlock_op(sbi); sbi 27 fs/f2fs/namei.c struct f2fs_sb_info *sbi = F2FS_I_SB(dir); sbi 38 fs/f2fs/namei.c f2fs_lock_op(sbi); sbi 39 fs/f2fs/namei.c if (!f2fs_alloc_nid(sbi, &ino)) { sbi 40 fs/f2fs/namei.c f2fs_unlock_op(sbi); sbi 44 fs/f2fs/namei.c f2fs_unlock_op(sbi); sbi 65 fs/f2fs/namei.c if (f2fs_sb_has_project_quota(sbi) && sbi 79 fs/f2fs/namei.c if ((IS_ENCRYPTED(dir) || DUMMY_ENCRYPTION_ENABLED(sbi)) && sbi 83 fs/f2fs/namei.c if (f2fs_sb_has_extra_attr(sbi)) { sbi 88 fs/f2fs/namei.c if (test_opt(sbi, INLINE_XATTR)) sbi 91 fs/f2fs/namei.c if (test_opt(sbi, INLINE_DATA) && f2fs_may_inline_data(inode)) sbi 96 fs/f2fs/namei.c if (f2fs_sb_has_flexible_inline_xattr(sbi)) { sbi 97 fs/f2fs/namei.c f2fs_bug_on(sbi, !f2fs_has_extra_attr(inode)); sbi 99 fs/f2fs/namei.c xattr_size = F2FS_OPTION(sbi).inline_xattr_size; sbi 172 fs/f2fs/namei.c static inline void set_file_temperature(struct f2fs_sb_info *sbi, struct inode *inode, sbi 175 fs/f2fs/namei.c __u8 (*extlist)[F2FS_EXTENSION_LEN] = sbi->raw_super->extension_list; sbi 178 fs/f2fs/namei.c down_read(&sbi->sb_lock); sbi 180 fs/f2fs/namei.c cold_count = le32_to_cpu(sbi->raw_super->extension_count); sbi 181 fs/f2fs/namei.c hot_count = sbi->raw_super->hot_ext_count; sbi 188 fs/f2fs/namei.c up_read(&sbi->sb_lock); sbi 199 fs/f2fs/namei.c int f2fs_update_extension_list(struct f2fs_sb_info *sbi, const char *name, sbi 202 fs/f2fs/namei.c __u8 (*extlist)[F2FS_EXTENSION_LEN] = sbi->raw_super->extension_list; sbi 203 fs/f2fs/namei.c int cold_count = le32_to_cpu(sbi->raw_super->extension_count); sbi 204 fs/f2fs/namei.c int hot_count = sbi->raw_super->hot_ext_count; sbi 238 fs/f2fs/namei.c sbi->raw_super->hot_ext_count = hot_count - 1; sbi 240 fs/f2fs/namei.c sbi->raw_super->extension_count = sbi 250 fs/f2fs/namei.c sbi->raw_super->hot_ext_count = hot_count + 1; sbi 260 fs/f2fs/namei.c sbi->raw_super->extension_count = cpu_to_le32(cold_count + 1); sbi 268 fs/f2fs/namei.c struct f2fs_sb_info *sbi = F2FS_I_SB(dir); sbi 273 fs/f2fs/namei.c if (unlikely(f2fs_cp_error(sbi))) sbi 275 fs/f2fs/namei.c if (!f2fs_is_checkpoint_ready(sbi)) sbi 286 fs/f2fs/namei.c if (!test_opt(sbi, DISABLE_EXT_IDENTIFY)) sbi 287 fs/f2fs/namei.c set_file_temperature(sbi, inode, dentry->d_name.name); sbi 294 fs/f2fs/namei.c f2fs_lock_op(sbi); sbi 298 fs/f2fs/namei.c f2fs_unlock_op(sbi); sbi 300 fs/f2fs/namei.c f2fs_alloc_nid_done(sbi, ino); sbi 305 fs/f2fs/namei.c f2fs_sync_fs(sbi->sb, 1); sbi 307 fs/f2fs/namei.c f2fs_balance_fs(sbi, true); sbi 318 fs/f2fs/namei.c struct f2fs_sb_info *sbi = F2FS_I_SB(dir); sbi 321 fs/f2fs/namei.c if (unlikely(f2fs_cp_error(sbi))) sbi 323 fs/f2fs/namei.c if (!f2fs_is_checkpoint_ready(sbi)) sbi 339 fs/f2fs/namei.c f2fs_balance_fs(sbi, true); sbi 345 fs/f2fs/namei.c f2fs_lock_op(sbi); sbi 349 fs/f2fs/namei.c f2fs_unlock_op(sbi); sbi 354 fs/f2fs/namei.c f2fs_sync_fs(sbi->sb, 1); sbi 359 fs/f2fs/namei.c f2fs_unlock_op(sbi); sbi 378 fs/f2fs/namei.c struct f2fs_sb_info *sbi = F2FS_I_SB(dir); sbi 385 fs/f2fs/namei.c if (f2fs_readonly(sbi->sb)) { sbi 386 fs/f2fs/namei.c f2fs_info(sbi, "skip recovering inline_dots inode (ino:%lu, pino:%u) in readonly mountpoint", sbi 395 fs/f2fs/namei.c f2fs_balance_fs(sbi, true); sbi 397 fs/f2fs/namei.c f2fs_lock_op(sbi); sbi 422 fs/f2fs/namei.c f2fs_unlock_op(sbi); sbi 514 fs/f2fs/namei.c struct f2fs_sb_info *sbi = F2FS_I_SB(dir); sbi 522 fs/f2fs/namei.c if (unlikely(f2fs_cp_error(sbi))) sbi 539 fs/f2fs/namei.c f2fs_balance_fs(sbi, true); sbi 541 fs/f2fs/namei.c f2fs_lock_op(sbi); sbi 542 fs/f2fs/namei.c err = f2fs_acquire_orphan_inode(sbi); sbi 544 fs/f2fs/namei.c f2fs_unlock_op(sbi); sbi 559 fs/f2fs/namei.c f2fs_unlock_op(sbi); sbi 562 fs/f2fs/namei.c f2fs_sync_fs(sbi->sb, 1); sbi 585 fs/f2fs/namei.c struct f2fs_sb_info *sbi = F2FS_I_SB(dir); sbi 591 fs/f2fs/namei.c if (unlikely(f2fs_cp_error(sbi))) sbi 593 fs/f2fs/namei.c if (!f2fs_is_checkpoint_ready(sbi)) sbi 616 fs/f2fs/namei.c f2fs_lock_op(sbi); sbi 620 fs/f2fs/namei.c f2fs_unlock_op(sbi); sbi 621 fs/f2fs/namei.c f2fs_alloc_nid_done(sbi, inode->i_ino); sbi 646 fs/f2fs/namei.c f2fs_sync_fs(sbi->sb, 1); sbi 651 fs/f2fs/namei.c f2fs_balance_fs(sbi, true); sbi 664 fs/f2fs/namei.c struct f2fs_sb_info *sbi = F2FS_I_SB(dir); sbi 668 fs/f2fs/namei.c if (unlikely(f2fs_cp_error(sbi))) sbi 685 fs/f2fs/namei.c f2fs_lock_op(sbi); sbi 689 fs/f2fs/namei.c f2fs_unlock_op(sbi); sbi 691 fs/f2fs/namei.c f2fs_alloc_nid_done(sbi, inode->i_ino); sbi 696 fs/f2fs/namei.c f2fs_sync_fs(sbi->sb, 1); sbi 698 fs/f2fs/namei.c f2fs_balance_fs(sbi, true); sbi 718 fs/f2fs/namei.c struct f2fs_sb_info *sbi = F2FS_I_SB(dir); sbi 722 fs/f2fs/namei.c if (unlikely(f2fs_cp_error(sbi))) sbi 724 fs/f2fs/namei.c if (!f2fs_is_checkpoint_ready(sbi)) sbi 738 fs/f2fs/namei.c f2fs_lock_op(sbi); sbi 742 fs/f2fs/namei.c f2fs_unlock_op(sbi); sbi 744 fs/f2fs/namei.c f2fs_alloc_nid_done(sbi, inode->i_ino); sbi 749 fs/f2fs/namei.c f2fs_sync_fs(sbi->sb, 1); sbi 751 fs/f2fs/namei.c f2fs_balance_fs(sbi, true); sbi 761 fs/f2fs/namei.c struct f2fs_sb_info *sbi = F2FS_I_SB(dir); sbi 782 fs/f2fs/namei.c f2fs_lock_op(sbi); sbi 783 fs/f2fs/namei.c err = f2fs_acquire_orphan_inode(sbi); sbi 796 fs/f2fs/namei.c f2fs_alloc_nid_done(sbi, inode->i_ino); sbi 806 fs/f2fs/namei.c f2fs_unlock_op(sbi); sbi 809 fs/f2fs/namei.c f2fs_balance_fs(sbi, true); sbi 813 fs/f2fs/namei.c f2fs_release_orphan_inode(sbi); sbi 821 fs/f2fs/namei.c struct f2fs_sb_info *sbi = F2FS_I_SB(dir); sbi 823 fs/f2fs/namei.c if (unlikely(f2fs_cp_error(sbi))) sbi 825 fs/f2fs/namei.c if (!f2fs_is_checkpoint_ready(sbi)) sbi 828 fs/f2fs/namei.c if (IS_ENCRYPTED(dir) || DUMMY_ENCRYPTION_ENABLED(sbi)) { sbi 849 fs/f2fs/namei.c struct f2fs_sb_info *sbi = F2FS_I_SB(old_dir); sbi 861 fs/f2fs/namei.c if (unlikely(f2fs_cp_error(sbi))) sbi 863 fs/f2fs/namei.c if (!f2fs_is_checkpoint_ready(sbi)) sbi 923 fs/f2fs/namei.c f2fs_balance_fs(sbi, true); sbi 925 fs/f2fs/namei.c f2fs_lock_op(sbi); sbi 927 fs/f2fs/namei.c err = f2fs_acquire_orphan_inode(sbi); sbi 943 fs/f2fs/namei.c f2fs_release_orphan_inode(sbi); sbi 945 fs/f2fs/namei.c f2fs_balance_fs(sbi, true); sbi 947 fs/f2fs/namei.c f2fs_lock_op(sbi); sbi 951 fs/f2fs/namei.c f2fs_unlock_op(sbi); sbi 975 fs/f2fs/namei.c f2fs_unlock_op(sbi); sbi 1011 fs/f2fs/namei.c if (F2FS_OPTION(sbi).fsync_mode == FSYNC_MODE_STRICT) { sbi 1012 fs/f2fs/namei.c f2fs_add_ino_entry(sbi, new_dir->i_ino, TRANS_DIR_INO); sbi 1014 fs/f2fs/namei.c f2fs_add_ino_entry(sbi, old_inode->i_ino, sbi 1018 fs/f2fs/namei.c f2fs_unlock_op(sbi); sbi 1021 fs/f2fs/namei.c f2fs_sync_fs(sbi->sb, 1); sbi 1023 fs/f2fs/namei.c f2fs_update_time(sbi, REQ_TIME); sbi 1027 fs/f2fs/namei.c f2fs_unlock_op(sbi); sbi 1044 fs/f2fs/namei.c struct f2fs_sb_info *sbi = F2FS_I_SB(old_dir); sbi 1054 fs/f2fs/namei.c if (unlikely(f2fs_cp_error(sbi))) sbi 1056 fs/f2fs/namei.c if (!f2fs_is_checkpoint_ready(sbi)) sbi 1128 fs/f2fs/namei.c f2fs_balance_fs(sbi, true); sbi 1130 fs/f2fs/namei.c f2fs_lock_op(sbi); sbi 1178 fs/f2fs/namei.c if (F2FS_OPTION(sbi).fsync_mode == FSYNC_MODE_STRICT) { sbi 1179 fs/f2fs/namei.c f2fs_add_ino_entry(sbi, old_dir->i_ino, TRANS_DIR_INO); sbi 1180 fs/f2fs/namei.c f2fs_add_ino_entry(sbi, new_dir->i_ino, TRANS_DIR_INO); sbi 1183 fs/f2fs/namei.c f2fs_unlock_op(sbi); sbi 1186 fs/f2fs/namei.c f2fs_sync_fs(sbi->sb, 1); sbi 1188 fs/f2fs/namei.c f2fs_update_time(sbi, REQ_TIME); sbi 33 fs/f2fs/node.c int f2fs_check_nid_range(struct f2fs_sb_info *sbi, nid_t nid) sbi 35 fs/f2fs/node.c if (unlikely(nid < F2FS_ROOT_INO(sbi) || nid >= NM_I(sbi)->max_nid)) { sbi 36 fs/f2fs/node.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 37 fs/f2fs/node.c f2fs_warn(sbi, "%s: out-of-range nid=%x, run fsck to fix.", sbi 44 fs/f2fs/node.c bool f2fs_available_free_memory(struct f2fs_sb_info *sbi, int type) sbi 46 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 68 fs/f2fs/node.c if (excess_cached_nats(sbi)) sbi 71 fs/f2fs/node.c if (sbi->sb->s_bdi->wb.dirty_exceeded) sbi 73 fs/f2fs/node.c mem_size = get_pages(sbi, F2FS_DIRTY_DENTS); sbi 79 fs/f2fs/node.c mem_size += sbi->im[i].ino_num * sbi 84 fs/f2fs/node.c mem_size = (atomic_read(&sbi->total_ext_tree) * sbi 86 fs/f2fs/node.c atomic_read(&sbi->total_ext_node) * sbi 91 fs/f2fs/node.c mem_size = get_pages(sbi, F2FS_INMEM_PAGES); sbi 94 fs/f2fs/node.c if (!sbi->sb->s_bdi->wb.dirty_exceeded) sbi 110 fs/f2fs/node.c static struct page *get_current_nat_page(struct f2fs_sb_info *sbi, nid_t nid) sbi 112 fs/f2fs/node.c return f2fs_get_meta_page_nofail(sbi, current_nat_addr(sbi, nid)); sbi 115 fs/f2fs/node.c static struct page *get_next_nat_page(struct f2fs_sb_info *sbi, nid_t nid) sbi 122 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 124 fs/f2fs/node.c dst_off = next_nat_addr(sbi, current_nat_addr(sbi, nid)); sbi 127 fs/f2fs/node.c src_page = get_current_nat_page(sbi, nid); sbi 130 fs/f2fs/node.c dst_page = f2fs_grab_meta_page(sbi, dst_off); sbi 131 fs/f2fs/node.c f2fs_bug_on(sbi, PageDirty(src_page)); sbi 286 fs/f2fs/node.c bool f2fs_in_warm_node_list(struct f2fs_sb_info *sbi, struct page *page) sbi 288 fs/f2fs/node.c return NODE_MAPPING(sbi) == page->mapping && sbi 292 fs/f2fs/node.c void f2fs_init_fsync_node_info(struct f2fs_sb_info *sbi) sbi 294 fs/f2fs/node.c spin_lock_init(&sbi->fsync_node_lock); sbi 295 fs/f2fs/node.c INIT_LIST_HEAD(&sbi->fsync_node_list); sbi 296 fs/f2fs/node.c sbi->fsync_seg_id = 0; sbi 297 fs/f2fs/node.c sbi->fsync_node_num = 0; sbi 300 fs/f2fs/node.c static unsigned int f2fs_add_fsync_node_entry(struct f2fs_sb_info *sbi, sbi 313 fs/f2fs/node.c spin_lock_irqsave(&sbi->fsync_node_lock, flags); sbi 314 fs/f2fs/node.c list_add_tail(&fn->list, &sbi->fsync_node_list); sbi 315 fs/f2fs/node.c fn->seq_id = sbi->fsync_seg_id++; sbi 317 fs/f2fs/node.c sbi->fsync_node_num++; sbi 318 fs/f2fs/node.c spin_unlock_irqrestore(&sbi->fsync_node_lock, flags); sbi 323 fs/f2fs/node.c void f2fs_del_fsync_node_entry(struct f2fs_sb_info *sbi, struct page *page) sbi 328 fs/f2fs/node.c spin_lock_irqsave(&sbi->fsync_node_lock, flags); sbi 329 fs/f2fs/node.c list_for_each_entry(fn, &sbi->fsync_node_list, list) { sbi 332 fs/f2fs/node.c sbi->fsync_node_num--; sbi 333 fs/f2fs/node.c spin_unlock_irqrestore(&sbi->fsync_node_lock, flags); sbi 339 fs/f2fs/node.c spin_unlock_irqrestore(&sbi->fsync_node_lock, flags); sbi 340 fs/f2fs/node.c f2fs_bug_on(sbi, 1); sbi 343 fs/f2fs/node.c void f2fs_reset_fsync_node_info(struct f2fs_sb_info *sbi) sbi 347 fs/f2fs/node.c spin_lock_irqsave(&sbi->fsync_node_lock, flags); sbi 348 fs/f2fs/node.c sbi->fsync_seg_id = 0; sbi 349 fs/f2fs/node.c spin_unlock_irqrestore(&sbi->fsync_node_lock, flags); sbi 352 fs/f2fs/node.c int f2fs_need_dentry_mark(struct f2fs_sb_info *sbi, nid_t nid) sbi 354 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 369 fs/f2fs/node.c bool f2fs_is_checkpointed_node(struct f2fs_sb_info *sbi, nid_t nid) sbi 371 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 383 fs/f2fs/node.c bool f2fs_need_inode_block_update(struct f2fs_sb_info *sbi, nid_t ino) sbi 385 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 400 fs/f2fs/node.c static void cache_nat_entry(struct f2fs_sb_info *sbi, nid_t nid, sbi 403 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 415 fs/f2fs/node.c f2fs_bug_on(sbi, nat_get_ino(e) != le32_to_cpu(ne->ino) || sbi 424 fs/f2fs/node.c static void set_node_addr(struct f2fs_sb_info *sbi, struct node_info *ni, sbi 427 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 436 fs/f2fs/node.c f2fs_bug_on(sbi, ni->blk_addr == NEW_ADDR); sbi 444 fs/f2fs/node.c f2fs_bug_on(sbi, ni->blk_addr != NULL_ADDR); sbi 451 fs/f2fs/node.c f2fs_bug_on(sbi, nat_get_blkaddr(e) != ni->blk_addr); sbi 452 fs/f2fs/node.c f2fs_bug_on(sbi, nat_get_blkaddr(e) == NULL_ADDR && sbi 454 fs/f2fs/node.c f2fs_bug_on(sbi, nat_get_blkaddr(e) == NEW_ADDR && sbi 456 fs/f2fs/node.c f2fs_bug_on(sbi, __is_valid_data_blkaddr(nat_get_blkaddr(e)) && sbi 482 fs/f2fs/node.c int f2fs_try_to_free_nats(struct f2fs_sb_info *sbi, int nr_shrink) sbi 484 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 516 fs/f2fs/node.c int f2fs_get_node_info(struct f2fs_sb_info *sbi, nid_t nid, sbi 519 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 520 fs/f2fs/node.c struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_HOT_DATA); sbi 560 fs/f2fs/node.c index = current_nat_addr(sbi, nid); sbi 563 fs/f2fs/node.c page = f2fs_get_meta_page(sbi, index); sbi 574 fs/f2fs/node.c !f2fs_is_valid_blkaddr(sbi, blkaddr, DATA_GENERIC_ENHANCE)) sbi 578 fs/f2fs/node.c cache_nat_entry(sbi, nid, &ne); sbi 587 fs/f2fs/node.c struct f2fs_sb_info *sbi = F2FS_P_SB(parent); sbi 599 fs/f2fs/node.c f2fs_ra_node_page(sbi, nid); sbi 724 fs/f2fs/node.c struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); sbi 741 fs/f2fs/node.c npage[0] = f2fs_get_node_page(sbi, nids[0]); sbi 765 fs/f2fs/node.c if (!f2fs_alloc_nid(sbi, &(nids[i]))) { sbi 773 fs/f2fs/node.c f2fs_alloc_nid_failed(sbi, nids[i]); sbi 779 fs/f2fs/node.c f2fs_alloc_nid_done(sbi, nids[i]); sbi 797 fs/f2fs/node.c npage[i] = f2fs_get_node_page(sbi, nids[i]); sbi 833 fs/f2fs/node.c struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); sbi 838 fs/f2fs/node.c err = f2fs_get_node_info(sbi, dn->nid, &ni); sbi 843 fs/f2fs/node.c f2fs_invalidate_blocks(sbi, ni.blk_addr); sbi 844 fs/f2fs/node.c dec_valid_node_count(sbi, dn->inode, dn->nid == dn->inode->i_ino); sbi 845 fs/f2fs/node.c set_node_addr(sbi, &ni, NULL_ADDR, false); sbi 848 fs/f2fs/node.c f2fs_remove_orphan_inode(sbi, dn->nid); sbi 849 fs/f2fs/node.c dec_valid_inode_count(sbi); sbi 854 fs/f2fs/node.c set_sbi_flag(sbi, SBI_IS_DIRTY); sbi 859 fs/f2fs/node.c invalidate_mapping_pages(NODE_MAPPING(sbi), sbi 1038 fs/f2fs/node.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 1052 fs/f2fs/node.c page = f2fs_get_node_page(sbi, inode->i_ino); sbi 1115 fs/f2fs/node.c BUG_ON(page->mapping != NODE_MAPPING(sbi)); sbi 1134 fs/f2fs/node.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 1143 fs/f2fs/node.c npage = f2fs_get_node_page(sbi, nid); sbi 1218 fs/f2fs/node.c struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode); sbi 1226 fs/f2fs/node.c page = f2fs_grab_cache_page(NODE_MAPPING(sbi), dn->nid, false); sbi 1230 fs/f2fs/node.c if (unlikely((err = inc_valid_node_count(sbi, dn->inode, !ofs)))) sbi 1234 fs/f2fs/node.c err = f2fs_get_node_info(sbi, dn->nid, &new_ni); sbi 1236 fs/f2fs/node.c dec_valid_node_count(sbi, dn->inode, !ofs); sbi 1239 fs/f2fs/node.c f2fs_bug_on(sbi, new_ni.blk_addr != NULL_ADDR); sbi 1246 fs/f2fs/node.c set_node_addr(sbi, &new_ni, NEW_ADDR, false); sbi 1260 fs/f2fs/node.c inc_valid_inode_count(sbi); sbi 1276 fs/f2fs/node.c struct f2fs_sb_info *sbi = F2FS_P_SB(page); sbi 1279 fs/f2fs/node.c .sbi = sbi, sbi 1289 fs/f2fs/node.c if (!f2fs_inode_chksum_verify(sbi, page)) { sbi 1296 fs/f2fs/node.c err = f2fs_get_node_info(sbi, page->index, &ni); sbi 1301 fs/f2fs/node.c is_sbi_flag_set(sbi, SBI_IS_SHUTDOWN)) { sbi 1313 fs/f2fs/node.c void f2fs_ra_node_page(struct f2fs_sb_info *sbi, nid_t nid) sbi 1320 fs/f2fs/node.c if (f2fs_check_nid_range(sbi, nid)) sbi 1323 fs/f2fs/node.c apage = xa_load(&NODE_MAPPING(sbi)->i_pages, nid); sbi 1327 fs/f2fs/node.c apage = f2fs_grab_cache_page(NODE_MAPPING(sbi), nid, false); sbi 1335 fs/f2fs/node.c static struct page *__get_node_page(struct f2fs_sb_info *sbi, pgoff_t nid, sbi 1343 fs/f2fs/node.c if (f2fs_check_nid_range(sbi, nid)) sbi 1346 fs/f2fs/node.c page = f2fs_grab_cache_page(NODE_MAPPING(sbi), nid, false); sbi 1364 fs/f2fs/node.c if (unlikely(page->mapping != NODE_MAPPING(sbi))) { sbi 1374 fs/f2fs/node.c if (!f2fs_inode_chksum_verify(sbi, page)) { sbi 1380 fs/f2fs/node.c f2fs_warn(sbi, "inconsistent node block, nid:%lu, node_footer[nid:%u,ino:%u,ofs:%u,cpver:%llu,blkaddr:%u]", sbi 1393 fs/f2fs/node.c struct page *f2fs_get_node_page(struct f2fs_sb_info *sbi, pgoff_t nid) sbi 1395 fs/f2fs/node.c return __get_node_page(sbi, nid, NULL, 0); sbi 1400 fs/f2fs/node.c struct f2fs_sb_info *sbi = F2FS_P_SB(parent); sbi 1403 fs/f2fs/node.c return __get_node_page(sbi, nid, parent, start); sbi 1406 fs/f2fs/node.c static void flush_inline_data(struct f2fs_sb_info *sbi, nid_t ino) sbi 1413 fs/f2fs/node.c inode = ilookup(sbi->sb, ino); sbi 1442 fs/f2fs/node.c static struct page *last_fsync_dnode(struct f2fs_sb_info *sbi, nid_t ino) sbi 1452 fs/f2fs/node.c while ((nr_pages = pagevec_lookup_tag(&pvec, NODE_MAPPING(sbi), &index, sbi 1459 fs/f2fs/node.c if (unlikely(f2fs_cp_error(sbi))) { sbi 1472 fs/f2fs/node.c if (unlikely(page->mapping != NODE_MAPPING(sbi))) { sbi 1502 fs/f2fs/node.c struct f2fs_sb_info *sbi = F2FS_P_SB(page); sbi 1506 fs/f2fs/node.c .sbi = sbi, sbi 1521 fs/f2fs/node.c if (unlikely(f2fs_cp_error(sbi))) sbi 1524 fs/f2fs/node.c if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING))) sbi 1527 fs/f2fs/node.c if (!is_sbi_flag_set(sbi, SBI_CP_DISABLED) && sbi 1534 fs/f2fs/node.c f2fs_bug_on(sbi, page->index != nid); sbi 1536 fs/f2fs/node.c if (f2fs_get_node_info(sbi, nid, &ni)) sbi 1540 fs/f2fs/node.c if (!down_read_trylock(&sbi->node_write)) sbi 1543 fs/f2fs/node.c down_read(&sbi->node_write); sbi 1549 fs/f2fs/node.c dec_page_count(sbi, F2FS_DIRTY_NODES); sbi 1550 fs/f2fs/node.c up_read(&sbi->node_write); sbi 1556 fs/f2fs/node.c !f2fs_is_valid_blkaddr(sbi, ni.blk_addr, sbi 1558 fs/f2fs/node.c up_read(&sbi->node_write); sbi 1562 fs/f2fs/node.c if (atomic && !test_opt(sbi, NOBARRIER)) sbi 1566 fs/f2fs/node.c if (f2fs_in_warm_node_list(sbi, page)) { sbi 1567 fs/f2fs/node.c seq = f2fs_add_fsync_node_entry(sbi, page); sbi 1577 fs/f2fs/node.c set_node_addr(sbi, &ni, fio.new_blkaddr, is_fsync_dnode(page)); sbi 1578 fs/f2fs/node.c dec_page_count(sbi, F2FS_DIRTY_NODES); sbi 1579 fs/f2fs/node.c up_read(&sbi->node_write); sbi 1582 fs/f2fs/node.c f2fs_submit_merged_write_cond(sbi, NULL, page, 0, NODE); sbi 1588 fs/f2fs/node.c if (unlikely(f2fs_cp_error(sbi))) { sbi 1589 fs/f2fs/node.c f2fs_submit_merged_write(sbi, NODE); sbi 1596 fs/f2fs/node.c f2fs_balance_fs(sbi, false); sbi 1649 fs/f2fs/node.c int f2fs_fsync_node_pages(struct f2fs_sb_info *sbi, struct inode *inode, sbi 1663 fs/f2fs/node.c last_page = last_fsync_dnode(sbi, ino); sbi 1671 fs/f2fs/node.c while ((nr_pages = pagevec_lookup_tag(&pvec, NODE_MAPPING(sbi), &index, sbi 1679 fs/f2fs/node.c if (unlikely(f2fs_cp_error(sbi))) { sbi 1693 fs/f2fs/node.c if (unlikely(page->mapping != NODE_MAPPING(sbi))) { sbi 1718 fs/f2fs/node.c f2fs_need_dentry_mark(sbi, ino)); sbi 1753 fs/f2fs/node.c f2fs_debug(sbi, "Retry to write fsync mark: ino=%u, idx=%lx", sbi 1763 fs/f2fs/node.c f2fs_submit_merged_write_cond(sbi, NULL, NULL, ino, NODE); sbi 1769 fs/f2fs/node.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 1778 fs/f2fs/node.c spin_lock(&sbi->inode_lock[DIRTY_META]); sbi 1780 fs/f2fs/node.c spin_unlock(&sbi->inode_lock[DIRTY_META]); sbi 1793 fs/f2fs/node.c struct f2fs_sb_info *sbi = F2FS_P_SB(page); sbi 1797 fs/f2fs/node.c inode = find_inode_nowait(sbi->sb, ino, f2fs_match_ino, NULL); sbi 1808 fs/f2fs/node.c int f2fs_sync_node_pages(struct f2fs_sb_info *sbi, sbi 1825 fs/f2fs/node.c NODE_MAPPING(sbi), &index, PAGECACHE_TAG_DIRTY))) { sbi 1834 fs/f2fs/node.c if (atomic_read(&sbi->wb_sync_req[NODE]) && sbi 1860 fs/f2fs/node.c if (unlikely(page->mapping != NODE_MAPPING(sbi))) { sbi 1875 fs/f2fs/node.c flush_inline_data(sbi, ino_of_node(page)); sbi 1914 fs/f2fs/node.c if (!is_sbi_flag_set(sbi, SBI_CP_DISABLED) && sbi 1922 fs/f2fs/node.c f2fs_submit_merged_write(sbi, NODE); sbi 1924 fs/f2fs/node.c if (unlikely(f2fs_cp_error(sbi))) sbi 1929 fs/f2fs/node.c int f2fs_wait_on_node_pages_writeback(struct f2fs_sb_info *sbi, sbi 1934 fs/f2fs/node.c struct list_head *head = &sbi->fsync_node_list; sbi 1940 fs/f2fs/node.c spin_lock_irqsave(&sbi->fsync_node_lock, flags); sbi 1942 fs/f2fs/node.c spin_unlock_irqrestore(&sbi->fsync_node_lock, flags); sbi 1947 fs/f2fs/node.c spin_unlock_irqrestore(&sbi->fsync_node_lock, flags); sbi 1953 fs/f2fs/node.c spin_unlock_irqrestore(&sbi->fsync_node_lock, flags); sbi 1965 fs/f2fs/node.c ret2 = filemap_check_errors(NODE_MAPPING(sbi)); sbi 1975 fs/f2fs/node.c struct f2fs_sb_info *sbi = F2FS_M_SB(mapping); sbi 1979 fs/f2fs/node.c if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING))) sbi 1983 fs/f2fs/node.c f2fs_balance_fs_bg(sbi); sbi 1987 fs/f2fs/node.c get_pages(sbi, F2FS_DIRTY_NODES) < sbi 1988 fs/f2fs/node.c nr_pages_to_skip(sbi, NODE)) sbi 1992 fs/f2fs/node.c atomic_inc(&sbi->wb_sync_req[NODE]); sbi 1993 fs/f2fs/node.c else if (atomic_read(&sbi->wb_sync_req[NODE])) sbi 1998 fs/f2fs/node.c diff = nr_pages_to_write(sbi, NODE, wbc); sbi 2000 fs/f2fs/node.c f2fs_sync_node_pages(sbi, wbc, true, FS_NODE_IO); sbi 2005 fs/f2fs/node.c atomic_dec(&sbi->wb_sync_req[NODE]); sbi 2009 fs/f2fs/node.c wbc->pages_skipped += get_pages(sbi, F2FS_DIRTY_NODES); sbi 2054 fs/f2fs/node.c static int __insert_free_nid(struct f2fs_sb_info *sbi, sbi 2057 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 2063 fs/f2fs/node.c f2fs_bug_on(sbi, state != i->state); sbi 2070 fs/f2fs/node.c static void __remove_free_nid(struct f2fs_sb_info *sbi, sbi 2073 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 2075 fs/f2fs/node.c f2fs_bug_on(sbi, state != i->state); sbi 2082 fs/f2fs/node.c static void __move_free_nid(struct f2fs_sb_info *sbi, struct free_nid *i, sbi 2085 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 2087 fs/f2fs/node.c f2fs_bug_on(sbi, org_state != i->state); sbi 2104 fs/f2fs/node.c static void update_free_nid_bitmap(struct f2fs_sb_info *sbi, nid_t nid, sbi 2107 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 2129 fs/f2fs/node.c static bool add_free_nid(struct f2fs_sb_info *sbi, sbi 2132 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 2142 fs/f2fs/node.c if (unlikely(f2fs_check_nid_range(sbi, nid))) sbi 2188 fs/f2fs/node.c err = __insert_free_nid(sbi, i, FREE_NID); sbi 2191 fs/f2fs/node.c update_free_nid_bitmap(sbi, nid, ret, build); sbi 2203 fs/f2fs/node.c static void remove_free_nid(struct f2fs_sb_info *sbi, nid_t nid) sbi 2205 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 2212 fs/f2fs/node.c __remove_free_nid(sbi, i, FREE_NID); sbi 2221 fs/f2fs/node.c static int scan_nat_page(struct f2fs_sb_info *sbi, sbi 2224 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 2244 fs/f2fs/node.c add_free_nid(sbi, start_nid, true, true); sbi 2246 fs/f2fs/node.c spin_lock(&NM_I(sbi)->nid_list_lock); sbi 2247 fs/f2fs/node.c update_free_nid_bitmap(sbi, start_nid, false, true); sbi 2248 fs/f2fs/node.c spin_unlock(&NM_I(sbi)->nid_list_lock); sbi 2255 fs/f2fs/node.c static void scan_curseg_cache(struct f2fs_sb_info *sbi) sbi 2257 fs/f2fs/node.c struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_HOT_DATA); sbi 2269 fs/f2fs/node.c add_free_nid(sbi, nid, true, false); sbi 2271 fs/f2fs/node.c remove_free_nid(sbi, nid); sbi 2276 fs/f2fs/node.c static void scan_free_nid_bits(struct f2fs_sb_info *sbi) sbi 2278 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 2296 fs/f2fs/node.c add_free_nid(sbi, nid, true, false); sbi 2303 fs/f2fs/node.c scan_curseg_cache(sbi); sbi 2308 fs/f2fs/node.c static int __f2fs_build_free_nids(struct f2fs_sb_info *sbi, sbi 2311 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 2322 fs/f2fs/node.c if (!sync && !f2fs_available_free_memory(sbi, FREE_NIDS)) sbi 2327 fs/f2fs/node.c scan_free_nid_bits(sbi); sbi 2334 fs/f2fs/node.c f2fs_ra_meta_pages(sbi, NAT_BLOCK_OFFSET(nid), FREE_NID_PAGES, sbi 2342 fs/f2fs/node.c struct page *page = get_current_nat_page(sbi, nid); sbi 2347 fs/f2fs/node.c ret = scan_nat_page(sbi, page, nid); sbi 2353 fs/f2fs/node.c f2fs_bug_on(sbi, !mount); sbi 2354 fs/f2fs/node.c f2fs_err(sbi, "NAT is corrupt, run fsck to fix it"); sbi 2371 fs/f2fs/node.c scan_curseg_cache(sbi); sbi 2375 fs/f2fs/node.c f2fs_ra_meta_pages(sbi, NAT_BLOCK_OFFSET(nm_i->next_scan_nid), sbi 2381 fs/f2fs/node.c int f2fs_build_free_nids(struct f2fs_sb_info *sbi, bool sync, bool mount) sbi 2385 fs/f2fs/node.c mutex_lock(&NM_I(sbi)->build_lock); sbi 2386 fs/f2fs/node.c ret = __f2fs_build_free_nids(sbi, sync, mount); sbi 2387 fs/f2fs/node.c mutex_unlock(&NM_I(sbi)->build_lock); sbi 2397 fs/f2fs/node.c bool f2fs_alloc_nid(struct f2fs_sb_info *sbi, nid_t *nid) sbi 2399 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 2402 fs/f2fs/node.c if (time_to_inject(sbi, FAULT_ALLOC_NID)) { sbi 2416 fs/f2fs/node.c f2fs_bug_on(sbi, list_empty(&nm_i->free_nid_list)); sbi 2421 fs/f2fs/node.c __move_free_nid(sbi, i, FREE_NID, PREALLOC_NID); sbi 2424 fs/f2fs/node.c update_free_nid_bitmap(sbi, *nid, false, false); sbi 2432 fs/f2fs/node.c if (!f2fs_build_free_nids(sbi, true, false)) sbi 2440 fs/f2fs/node.c void f2fs_alloc_nid_done(struct f2fs_sb_info *sbi, nid_t nid) sbi 2442 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 2447 fs/f2fs/node.c f2fs_bug_on(sbi, !i); sbi 2448 fs/f2fs/node.c __remove_free_nid(sbi, i, PREALLOC_NID); sbi 2457 fs/f2fs/node.c void f2fs_alloc_nid_failed(struct f2fs_sb_info *sbi, nid_t nid) sbi 2459 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 2468 fs/f2fs/node.c f2fs_bug_on(sbi, !i); sbi 2470 fs/f2fs/node.c if (!f2fs_available_free_memory(sbi, FREE_NIDS)) { sbi 2471 fs/f2fs/node.c __remove_free_nid(sbi, i, PREALLOC_NID); sbi 2474 fs/f2fs/node.c __move_free_nid(sbi, i, PREALLOC_NID, FREE_NID); sbi 2479 fs/f2fs/node.c update_free_nid_bitmap(sbi, nid, true, false); sbi 2487 fs/f2fs/node.c int f2fs_try_to_free_nids(struct f2fs_sb_info *sbi, int nr_shrink) sbi 2489 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 2505 fs/f2fs/node.c __remove_free_nid(sbi, i, FREE_NID); sbi 2546 fs/f2fs/node.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 2558 fs/f2fs/node.c err = f2fs_get_node_info(sbi, prev_xnid, &ni); sbi 2562 fs/f2fs/node.c f2fs_invalidate_blocks(sbi, ni.blk_addr); sbi 2563 fs/f2fs/node.c dec_valid_node_count(sbi, inode, false); sbi 2564 fs/f2fs/node.c set_node_addr(sbi, &ni, NULL_ADDR, false); sbi 2568 fs/f2fs/node.c if (!f2fs_alloc_nid(sbi, &new_xnid)) sbi 2574 fs/f2fs/node.c f2fs_alloc_nid_failed(sbi, new_xnid); sbi 2578 fs/f2fs/node.c f2fs_alloc_nid_done(sbi, new_xnid); sbi 2590 fs/f2fs/node.c int f2fs_recover_inode_page(struct f2fs_sb_info *sbi, struct page *page) sbi 2598 fs/f2fs/node.c err = f2fs_get_node_info(sbi, ino, &old_ni); sbi 2605 fs/f2fs/node.c ipage = f2fs_grab_cache_page(NODE_MAPPING(sbi), ino, false); sbi 2612 fs/f2fs/node.c remove_free_nid(sbi, ino); sbi 2631 fs/f2fs/node.c if (f2fs_sb_has_flexible_inline_xattr(sbi) && sbi 2636 fs/f2fs/node.c if (f2fs_sb_has_project_quota(sbi) && sbi 2641 fs/f2fs/node.c if (f2fs_sb_has_inode_crtime(sbi) && sbi 2652 fs/f2fs/node.c if (unlikely(inc_valid_node_count(sbi, NULL, true))) sbi 2654 fs/f2fs/node.c set_node_addr(sbi, &new_ni, NEW_ADDR, false); sbi 2655 fs/f2fs/node.c inc_valid_inode_count(sbi); sbi 2661 fs/f2fs/node.c int f2fs_restore_node_summary(struct f2fs_sb_info *sbi, sbi 2670 fs/f2fs/node.c last_offset = sbi->blocks_per_seg; sbi 2671 fs/f2fs/node.c addr = START_BLOCK(sbi, segno); sbi 2678 fs/f2fs/node.c f2fs_ra_meta_pages(sbi, addr, nrpages, META_POR, true); sbi 2681 fs/f2fs/node.c struct page *page = f2fs_get_tmp_page(sbi, idx); sbi 2694 fs/f2fs/node.c invalidate_mapping_pages(META_MAPPING(sbi), addr, sbi 2700 fs/f2fs/node.c static void remove_nats_in_journal(struct f2fs_sb_info *sbi) sbi 2702 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 2703 fs/f2fs/node.c struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_HOT_DATA); sbi 2757 fs/f2fs/node.c static void __update_nat_bits(struct f2fs_sb_info *sbi, nid_t start_nid, sbi 2760 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 2766 fs/f2fs/node.c if (!enabled_nat_bits(sbi, NULL)) sbi 2790 fs/f2fs/node.c static int __flush_nat_entry_set(struct f2fs_sb_info *sbi, sbi 2793 fs/f2fs/node.c struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_HOT_DATA); sbi 2806 fs/f2fs/node.c if (enabled_nat_bits(sbi, cpc) || sbi 2813 fs/f2fs/node.c page = get_next_nat_page(sbi, start_nid); sbi 2818 fs/f2fs/node.c f2fs_bug_on(sbi, !nat_blk); sbi 2827 fs/f2fs/node.c f2fs_bug_on(sbi, nat_get_blkaddr(ne) == NEW_ADDR); sbi 2832 fs/f2fs/node.c f2fs_bug_on(sbi, offset < 0); sbi 2840 fs/f2fs/node.c __clear_nat_cache_dirty(NM_I(sbi), set, ne); sbi 2842 fs/f2fs/node.c add_free_nid(sbi, nid, false, true); sbi 2844 fs/f2fs/node.c spin_lock(&NM_I(sbi)->nid_list_lock); sbi 2845 fs/f2fs/node.c update_free_nid_bitmap(sbi, nid, false, false); sbi 2846 fs/f2fs/node.c spin_unlock(&NM_I(sbi)->nid_list_lock); sbi 2853 fs/f2fs/node.c __update_nat_bits(sbi, start_nid, page); sbi 2859 fs/f2fs/node.c radix_tree_delete(&NM_I(sbi)->nat_set_root, set->set); sbi 2868 fs/f2fs/node.c int f2fs_flush_nat_entries(struct f2fs_sb_info *sbi, struct cp_control *cpc) sbi 2870 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 2871 fs/f2fs/node.c struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_HOT_DATA); sbi 2881 fs/f2fs/node.c if (enabled_nat_bits(sbi, cpc)) { sbi 2883 fs/f2fs/node.c remove_nats_in_journal(sbi); sbi 2897 fs/f2fs/node.c if (enabled_nat_bits(sbi, cpc) || sbi 2899 fs/f2fs/node.c remove_nats_in_journal(sbi); sbi 2912 fs/f2fs/node.c err = __flush_nat_entry_set(sbi, set, cpc); sbi 2923 fs/f2fs/node.c static int __get_nat_bitmaps(struct f2fs_sb_info *sbi) sbi 2925 fs/f2fs/node.c struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); sbi 2926 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 2932 fs/f2fs/node.c if (!enabled_nat_bits(sbi, NULL)) sbi 2936 fs/f2fs/node.c nm_i->nat_bits = f2fs_kzalloc(sbi, sbi 2941 fs/f2fs/node.c nat_bits_addr = __start_cp_addr(sbi) + sbi->blocks_per_seg - sbi 2946 fs/f2fs/node.c page = f2fs_get_meta_page(sbi, nat_bits_addr++); sbi 2957 fs/f2fs/node.c disable_nat_bits(sbi, true); sbi 2964 fs/f2fs/node.c f2fs_notice(sbi, "Found nat_bits in checkpoint"); sbi 2968 fs/f2fs/node.c static inline void load_free_nid_bitmap(struct f2fs_sb_info *sbi) sbi 2970 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 2974 fs/f2fs/node.c if (!enabled_nat_bits(sbi, NULL)) sbi 2987 fs/f2fs/node.c spin_lock(&NM_I(sbi)->nid_list_lock); sbi 2989 fs/f2fs/node.c update_free_nid_bitmap(sbi, nid, true, true); sbi 2990 fs/f2fs/node.c spin_unlock(&NM_I(sbi)->nid_list_lock); sbi 3002 fs/f2fs/node.c static int init_node_manager(struct f2fs_sb_info *sbi) sbi 3004 fs/f2fs/node.c struct f2fs_super_block *sb_raw = F2FS_RAW_SUPER(sbi); sbi 3005 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 3018 fs/f2fs/node.c nm_i->available_nids = nm_i->max_nid - sbi->total_valid_node_count - sbi 3038 fs/f2fs/node.c nm_i->next_scan_nid = le32_to_cpu(sbi->ckpt->next_free_nid); sbi 3039 fs/f2fs/node.c nm_i->bitmap_size = __bitmap_size(sbi, NAT_BITMAP); sbi 3040 fs/f2fs/node.c version_bitmap = __bitmap_ptr(sbi, NAT_BITMAP); sbi 3049 fs/f2fs/node.c err = __get_nat_bitmaps(sbi); sbi 3063 fs/f2fs/node.c static int init_free_nid_cache(struct f2fs_sb_info *sbi) sbi 3065 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 3069 fs/f2fs/node.c f2fs_kzalloc(sbi, array_size(sizeof(unsigned char *), sbi 3076 fs/f2fs/node.c nm_i->free_nid_bitmap[i] = f2fs_kvzalloc(sbi, sbi 3082 fs/f2fs/node.c nm_i->nat_block_bitmap = f2fs_kvzalloc(sbi, nm_i->nat_blocks / 8, sbi 3088 fs/f2fs/node.c f2fs_kvzalloc(sbi, array_size(sizeof(unsigned short), sbi 3096 fs/f2fs/node.c int f2fs_build_node_manager(struct f2fs_sb_info *sbi) sbi 3100 fs/f2fs/node.c sbi->nm_info = f2fs_kzalloc(sbi, sizeof(struct f2fs_nm_info), sbi 3102 fs/f2fs/node.c if (!sbi->nm_info) sbi 3105 fs/f2fs/node.c err = init_node_manager(sbi); sbi 3109 fs/f2fs/node.c err = init_free_nid_cache(sbi); sbi 3114 fs/f2fs/node.c load_free_nid_bitmap(sbi); sbi 3116 fs/f2fs/node.c return f2fs_build_free_nids(sbi, true, true); sbi 3119 fs/f2fs/node.c void f2fs_destroy_node_manager(struct f2fs_sb_info *sbi) sbi 3121 fs/f2fs/node.c struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 3134 fs/f2fs/node.c __remove_free_nid(sbi, i, FREE_NID); sbi 3139 fs/f2fs/node.c f2fs_bug_on(sbi, nm_i->nid_cnt[FREE_NID]); sbi 3140 fs/f2fs/node.c f2fs_bug_on(sbi, nm_i->nid_cnt[PREALLOC_NID]); sbi 3141 fs/f2fs/node.c f2fs_bug_on(sbi, !list_empty(&nm_i->free_nid_list)); sbi 3159 fs/f2fs/node.c f2fs_bug_on(sbi, nm_i->nat_cnt); sbi 3170 fs/f2fs/node.c f2fs_bug_on(sbi, !list_empty(&setvec[idx]->entry_list)); sbi 3192 fs/f2fs/node.c sbi->nm_info = NULL; sbi 124 fs/f2fs/node.h static inline bool excess_dirty_nats(struct f2fs_sb_info *sbi) sbi 126 fs/f2fs/node.h return NM_I(sbi)->dirty_nat_cnt >= NM_I(sbi)->max_nid * sbi 127 fs/f2fs/node.h NM_I(sbi)->dirty_nats_ratio / 100; sbi 130 fs/f2fs/node.h static inline bool excess_cached_nats(struct f2fs_sb_info *sbi) sbi 132 fs/f2fs/node.h return NM_I(sbi)->nat_cnt >= DEF_NAT_CACHE_THRESHOLD; sbi 135 fs/f2fs/node.h static inline bool excess_dirty_nodes(struct f2fs_sb_info *sbi) sbi 137 fs/f2fs/node.h return get_pages(sbi, F2FS_DIRTY_NODES) >= sbi->blocks_per_seg * 8; sbi 163 fs/f2fs/node.h static inline void next_free_nid(struct f2fs_sb_info *sbi, nid_t *nid) sbi 165 fs/f2fs/node.h struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 181 fs/f2fs/node.h static inline void get_nat_bitmap(struct f2fs_sb_info *sbi, void *addr) sbi 183 fs/f2fs/node.h struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 188 fs/f2fs/node.h f2fs_bug_on(sbi, 1); sbi 193 fs/f2fs/node.h static inline pgoff_t current_nat_addr(struct f2fs_sb_info *sbi, nid_t start) sbi 195 fs/f2fs/node.h struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 208 fs/f2fs/node.h (block_off & (sbi->blocks_per_seg - 1))); sbi 211 fs/f2fs/node.h block_addr += sbi->blocks_per_seg; sbi 216 fs/f2fs/node.h static inline pgoff_t next_nat_addr(struct f2fs_sb_info *sbi, sbi 219 fs/f2fs/node.h struct f2fs_nm_info *nm_i = NM_I(sbi); sbi 222 fs/f2fs/node.h block_addr ^= 1 << sbi->log_blocks_per_seg; sbi 47 fs/f2fs/recovery.c bool f2fs_space_for_roll_forward(struct f2fs_sb_info *sbi) sbi 49 fs/f2fs/recovery.c s64 nalloc = percpu_counter_sum_positive(&sbi->alloc_valid_block_count); sbi 51 fs/f2fs/recovery.c if (sbi->last_valid_block_count + nalloc > sbi->user_block_count) sbi 68 fs/f2fs/recovery.c static struct fsync_inode_entry *add_fsync_inode(struct f2fs_sb_info *sbi, sbi 75 fs/f2fs/recovery.c inode = f2fs_iget_retry(sbi->sb, ino); sbi 299 fs/f2fs/recovery.c static int find_fsync_dnodes(struct f2fs_sb_info *sbi, struct list_head *head, sbi 306 fs/f2fs/recovery.c unsigned int free_blocks = MAIN_SEGS(sbi) * sbi->blocks_per_seg - sbi 307 fs/f2fs/recovery.c valid_user_blocks(sbi); sbi 311 fs/f2fs/recovery.c curseg = CURSEG_I(sbi, CURSEG_WARM_NODE); sbi 312 fs/f2fs/recovery.c blkaddr = NEXT_FREE_BLKADDR(sbi, curseg); sbi 317 fs/f2fs/recovery.c if (!f2fs_is_valid_blkaddr(sbi, blkaddr, META_POR)) sbi 320 fs/f2fs/recovery.c page = f2fs_get_tmp_page(sbi, blkaddr); sbi 340 fs/f2fs/recovery.c err = f2fs_recover_inode_page(sbi, page); sbi 352 fs/f2fs/recovery.c entry = add_fsync_inode(sbi, head, ino_of_node(page), sbi 372 fs/f2fs/recovery.c f2fs_notice(sbi, "%s: detect looped node chain, blkaddr:%u, next:%u", sbi 384 fs/f2fs/recovery.c f2fs_ra_meta_pages_cond(sbi, blkaddr); sbi 397 fs/f2fs/recovery.c static int check_index_in_prev_nodes(struct f2fs_sb_info *sbi, sbi 401 fs/f2fs/recovery.c unsigned int segno = GET_SEGNO(sbi, blkaddr); sbi 402 fs/f2fs/recovery.c unsigned short blkoff = GET_BLKOFF_FROM_SEG0(sbi, blkaddr); sbi 413 fs/f2fs/recovery.c sentry = get_seg_entry(sbi, segno); sbi 419 fs/f2fs/recovery.c struct curseg_info *curseg = CURSEG_I(sbi, i); sbi 426 fs/f2fs/recovery.c sum_page = f2fs_get_sum_page(sbi, segno); sbi 448 fs/f2fs/recovery.c node_page = f2fs_get_node_page(sbi, nid); sbi 460 fs/f2fs/recovery.c inode = f2fs_iget_retry(sbi->sb, ino); sbi 507 fs/f2fs/recovery.c static int do_recover_data(struct f2fs_sb_info *sbi, struct inode *inode, sbi 546 fs/f2fs/recovery.c err = f2fs_get_node_info(sbi, dn.nid, &ni); sbi 550 fs/f2fs/recovery.c f2fs_bug_on(sbi, ni.ino != ino_of_node(page)); sbi 553 fs/f2fs/recovery.c f2fs_warn(sbi, "Inconsistent ofs_of_node, ino:%lu, ofs:%u, %u", sbi 567 fs/f2fs/recovery.c !f2fs_is_valid_blkaddr(sbi, src, META_POR)) { sbi 573 fs/f2fs/recovery.c !f2fs_is_valid_blkaddr(sbi, dest, META_POR)) { sbi 604 fs/f2fs/recovery.c if (f2fs_is_valid_blkaddr(sbi, dest, META_POR)) { sbi 612 fs/f2fs/recovery.c f2fs_bug_on(sbi, err); sbi 618 fs/f2fs/recovery.c err = check_index_in_prev_nodes(sbi, dest, &dn); sbi 628 fs/f2fs/recovery.c f2fs_replace_block(sbi, &dn, src, dest, sbi 641 fs/f2fs/recovery.c f2fs_notice(sbi, "recover_data: ino = %lx (i_size: %s) recovered = %d, err = %d", sbi 647 fs/f2fs/recovery.c static int recover_data(struct f2fs_sb_info *sbi, struct list_head *inode_list, sbi 656 fs/f2fs/recovery.c curseg = CURSEG_I(sbi, CURSEG_WARM_NODE); sbi 657 fs/f2fs/recovery.c blkaddr = NEXT_FREE_BLKADDR(sbi, curseg); sbi 662 fs/f2fs/recovery.c if (!f2fs_is_valid_blkaddr(sbi, blkaddr, META_POR)) sbi 665 fs/f2fs/recovery.c f2fs_ra_meta_pages_cond(sbi, blkaddr); sbi 667 fs/f2fs/recovery.c page = f2fs_get_tmp_page(sbi, blkaddr); sbi 700 fs/f2fs/recovery.c err = do_recover_data(sbi, entry->inode, page); sbi 714 fs/f2fs/recovery.c f2fs_allocate_new_segments(sbi); sbi 718 fs/f2fs/recovery.c int f2fs_recover_fsync_data(struct f2fs_sb_info *sbi, bool check_only) sbi 724 fs/f2fs/recovery.c unsigned long s_flags = sbi->sb->s_flags; sbi 731 fs/f2fs/recovery.c f2fs_info(sbi, "recover fsync data on readonly fs"); sbi 732 fs/f2fs/recovery.c sbi->sb->s_flags &= ~SB_RDONLY; sbi 737 fs/f2fs/recovery.c sbi->sb->s_flags |= SB_ACTIVE; sbi 739 fs/f2fs/recovery.c quota_enabled = f2fs_enable_quota_files(sbi, s_flags & SB_RDONLY); sbi 754 fs/f2fs/recovery.c mutex_lock(&sbi->cp_mutex); sbi 757 fs/f2fs/recovery.c err = find_fsync_dnodes(sbi, &inode_list, check_only); sbi 769 fs/f2fs/recovery.c err = recover_data(sbi, &inode_list, &tmp_inode_list, &dir_list); sbi 771 fs/f2fs/recovery.c f2fs_bug_on(sbi, !list_empty(&inode_list)); sbi 774 fs/f2fs/recovery.c sbi->sb->s_flags = s_flags; sbi 781 fs/f2fs/recovery.c truncate_inode_pages_range(META_MAPPING(sbi), sbi 782 fs/f2fs/recovery.c (loff_t)MAIN_BLKADDR(sbi) << PAGE_SHIFT, -1); sbi 785 fs/f2fs/recovery.c truncate_inode_pages_final(NODE_MAPPING(sbi)); sbi 786 fs/f2fs/recovery.c truncate_inode_pages_final(META_MAPPING(sbi)); sbi 788 fs/f2fs/recovery.c clear_sbi_flag(sbi, SBI_POR_DOING); sbi 790 fs/f2fs/recovery.c mutex_unlock(&sbi->cp_mutex); sbi 796 fs/f2fs/recovery.c set_sbi_flag(sbi, SBI_IS_RECOVERED); sbi 802 fs/f2fs/recovery.c err = f2fs_write_checkpoint(sbi, &cpc); sbi 811 fs/f2fs/recovery.c f2fs_quota_off_umount(sbi->sb); sbi 813 fs/f2fs/recovery.c sbi->sb->s_flags = s_flags; /* Restore SB_RDONLY status */ sbi 169 fs/f2fs/segment.c bool f2fs_need_SSR(struct f2fs_sb_info *sbi) sbi 171 fs/f2fs/segment.c int node_secs = get_blocktype_secs(sbi, F2FS_DIRTY_NODES); sbi 172 fs/f2fs/segment.c int dent_secs = get_blocktype_secs(sbi, F2FS_DIRTY_DENTS); sbi 173 fs/f2fs/segment.c int imeta_secs = get_blocktype_secs(sbi, F2FS_DIRTY_IMETA); sbi 175 fs/f2fs/segment.c if (test_opt(sbi, LFS)) sbi 177 fs/f2fs/segment.c if (sbi->gc_mode == GC_URGENT) sbi 179 fs/f2fs/segment.c if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED))) sbi 182 fs/f2fs/segment.c return free_sections(sbi) <= (node_secs + 2 * dent_secs + imeta_secs + sbi 183 fs/f2fs/segment.c SM_I(sbi)->min_ssr_sections + reserved_sections(sbi)); sbi 214 fs/f2fs/segment.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 256 fs/f2fs/segment.c err = f2fs_get_node_info(sbi, dn.nid, &ni); sbi 263 fs/f2fs/segment.c f2fs_invalidate_blocks(sbi, dn.data_blkaddr); sbi 266 fs/f2fs/segment.c f2fs_replace_block(sbi, &dn, dn.data_blkaddr, sbi 286 fs/f2fs/segment.c void f2fs_drop_inmem_pages_all(struct f2fs_sb_info *sbi, bool gc_failure) sbi 288 fs/f2fs/segment.c struct list_head *head = &sbi->inode_list[ATOMIC_FILE]; sbi 291 fs/f2fs/segment.c unsigned int count = sbi->atomic_files; sbi 294 fs/f2fs/segment.c spin_lock(&sbi->inode_lock[ATOMIC_FILE]); sbi 296 fs/f2fs/segment.c spin_unlock(&sbi->inode_lock[ATOMIC_FILE]); sbi 303 fs/f2fs/segment.c spin_unlock(&sbi->inode_lock[ATOMIC_FILE]); sbi 326 fs/f2fs/segment.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 339 fs/f2fs/segment.c spin_lock(&sbi->inode_lock[ATOMIC_FILE]); sbi 344 fs/f2fs/segment.c sbi->atomic_files--; sbi 346 fs/f2fs/segment.c spin_unlock(&sbi->inode_lock[ATOMIC_FILE]); sbi 352 fs/f2fs/segment.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 356 fs/f2fs/segment.c f2fs_bug_on(sbi, !IS_ATOMIC_WRITTEN_PAGE(page)); sbi 364 fs/f2fs/segment.c f2fs_bug_on(sbi, list_empty(head) || cur->page != page); sbi 368 fs/f2fs/segment.c dec_page_count(sbi, F2FS_INMEM_PAGES); sbi 380 fs/f2fs/segment.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 384 fs/f2fs/segment.c .sbi = sbi, sbi 435 fs/f2fs/segment.c f2fs_submit_merged_write_cond(sbi, inode, NULL, 0, DATA); sbi 462 fs/f2fs/segment.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 466 fs/f2fs/segment.c f2fs_balance_fs(sbi, true); sbi 470 fs/f2fs/segment.c f2fs_lock_op(sbi); sbi 479 fs/f2fs/segment.c f2fs_unlock_op(sbi); sbi 489 fs/f2fs/segment.c void f2fs_balance_fs(struct f2fs_sb_info *sbi, bool need) sbi 491 fs/f2fs/segment.c if (time_to_inject(sbi, FAULT_CHECKPOINT)) { sbi 493 fs/f2fs/segment.c f2fs_stop_checkpoint(sbi, false); sbi 497 fs/f2fs/segment.c if (need && excess_cached_nats(sbi)) sbi 498 fs/f2fs/segment.c f2fs_balance_fs_bg(sbi); sbi 500 fs/f2fs/segment.c if (!f2fs_is_checkpoint_ready(sbi)) sbi 507 fs/f2fs/segment.c if (has_not_enough_free_secs(sbi, 0, 0)) { sbi 508 fs/f2fs/segment.c mutex_lock(&sbi->gc_mutex); sbi 509 fs/f2fs/segment.c f2fs_gc(sbi, false, false, NULL_SEGNO); sbi 513 fs/f2fs/segment.c void f2fs_balance_fs_bg(struct f2fs_sb_info *sbi) sbi 515 fs/f2fs/segment.c if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING))) sbi 519 fs/f2fs/segment.c if (!f2fs_available_free_memory(sbi, EXTENT_CACHE)) sbi 520 fs/f2fs/segment.c f2fs_shrink_extent_tree(sbi, EXTENT_CACHE_SHRINK_NUMBER); sbi 523 fs/f2fs/segment.c if (!f2fs_available_free_memory(sbi, NAT_ENTRIES)) sbi 524 fs/f2fs/segment.c f2fs_try_to_free_nats(sbi, NAT_ENTRY_PER_BLOCK); sbi 526 fs/f2fs/segment.c if (!f2fs_available_free_memory(sbi, FREE_NIDS)) sbi 527 fs/f2fs/segment.c f2fs_try_to_free_nids(sbi, MAX_FREE_NIDS); sbi 529 fs/f2fs/segment.c f2fs_build_free_nids(sbi, false, false); sbi 531 fs/f2fs/segment.c if (!is_idle(sbi, REQ_TIME) && sbi 532 fs/f2fs/segment.c (!excess_dirty_nats(sbi) && !excess_dirty_nodes(sbi))) sbi 536 fs/f2fs/segment.c if (!f2fs_available_free_memory(sbi, NAT_ENTRIES) || sbi 537 fs/f2fs/segment.c !f2fs_available_free_memory(sbi, INO_ENTRIES) || sbi 538 fs/f2fs/segment.c excess_prefree_segs(sbi) || sbi 539 fs/f2fs/segment.c excess_dirty_nats(sbi) || sbi 540 fs/f2fs/segment.c excess_dirty_nodes(sbi) || sbi 541 fs/f2fs/segment.c f2fs_time_over(sbi, CP_TIME)) { sbi 542 fs/f2fs/segment.c if (test_opt(sbi, DATA_FLUSH)) { sbi 545 fs/f2fs/segment.c mutex_lock(&sbi->flush_lock); sbi 548 fs/f2fs/segment.c f2fs_sync_dirty_inodes(sbi, FILE_INODE); sbi 551 fs/f2fs/segment.c mutex_unlock(&sbi->flush_lock); sbi 553 fs/f2fs/segment.c f2fs_sync_fs(sbi->sb, true); sbi 554 fs/f2fs/segment.c stat_inc_bg_cp_count(sbi->stat_info); sbi 558 fs/f2fs/segment.c static int __submit_flush_wait(struct f2fs_sb_info *sbi, sbi 564 fs/f2fs/segment.c bio = f2fs_bio_alloc(sbi, 0, false); sbi 573 fs/f2fs/segment.c trace_f2fs_issue_flush(bdev, test_opt(sbi, NOBARRIER), sbi 574 fs/f2fs/segment.c test_opt(sbi, FLUSH_MERGE), ret); sbi 578 fs/f2fs/segment.c static int submit_flush_wait(struct f2fs_sb_info *sbi, nid_t ino) sbi 583 fs/f2fs/segment.c if (!f2fs_is_multi_device(sbi)) sbi 584 fs/f2fs/segment.c return __submit_flush_wait(sbi, sbi->sb->s_bdev); sbi 586 fs/f2fs/segment.c for (i = 0; i < sbi->s_ndevs; i++) { sbi 587 fs/f2fs/segment.c if (!f2fs_is_dirty_device(sbi, ino, i, FLUSH_INO)) sbi 589 fs/f2fs/segment.c ret = __submit_flush_wait(sbi, FDEV(i).bdev); sbi 598 fs/f2fs/segment.c struct f2fs_sb_info *sbi = data; sbi 599 fs/f2fs/segment.c struct flush_cmd_control *fcc = SM_I(sbi)->fcc_info; sbi 605 fs/f2fs/segment.c sb_start_intwrite(sbi->sb); sbi 616 fs/f2fs/segment.c ret = submit_flush_wait(sbi, cmd->ino); sbi 627 fs/f2fs/segment.c sb_end_intwrite(sbi->sb); sbi 634 fs/f2fs/segment.c int f2fs_issue_flush(struct f2fs_sb_info *sbi, nid_t ino) sbi 636 fs/f2fs/segment.c struct flush_cmd_control *fcc = SM_I(sbi)->fcc_info; sbi 640 fs/f2fs/segment.c if (test_opt(sbi, NOBARRIER)) sbi 643 fs/f2fs/segment.c if (!test_opt(sbi, FLUSH_MERGE)) { sbi 645 fs/f2fs/segment.c ret = submit_flush_wait(sbi, ino); sbi 652 fs/f2fs/segment.c f2fs_is_multi_device(sbi)) { sbi 653 fs/f2fs/segment.c ret = submit_flush_wait(sbi, ino); sbi 684 fs/f2fs/segment.c ret = submit_flush_wait(sbi, ino); sbi 701 fs/f2fs/segment.c int f2fs_create_flush_cmd_control(struct f2fs_sb_info *sbi) sbi 703 fs/f2fs/segment.c dev_t dev = sbi->sb->s_bdev->bd_dev; sbi 707 fs/f2fs/segment.c if (SM_I(sbi)->fcc_info) { sbi 708 fs/f2fs/segment.c fcc = SM_I(sbi)->fcc_info; sbi 714 fs/f2fs/segment.c fcc = f2fs_kzalloc(sbi, sizeof(struct flush_cmd_control), GFP_KERNEL); sbi 721 fs/f2fs/segment.c SM_I(sbi)->fcc_info = fcc; sbi 722 fs/f2fs/segment.c if (!test_opt(sbi, FLUSH_MERGE)) sbi 726 fs/f2fs/segment.c fcc->f2fs_issue_flush = kthread_run(issue_flush_thread, sbi, sbi 731 fs/f2fs/segment.c SM_I(sbi)->fcc_info = NULL; sbi 738 fs/f2fs/segment.c void f2fs_destroy_flush_cmd_control(struct f2fs_sb_info *sbi, bool free) sbi 740 fs/f2fs/segment.c struct flush_cmd_control *fcc = SM_I(sbi)->fcc_info; sbi 750 fs/f2fs/segment.c SM_I(sbi)->fcc_info = NULL; sbi 754 fs/f2fs/segment.c int f2fs_flush_device_cache(struct f2fs_sb_info *sbi) sbi 758 fs/f2fs/segment.c if (!f2fs_is_multi_device(sbi)) sbi 761 fs/f2fs/segment.c for (i = 1; i < sbi->s_ndevs; i++) { sbi 762 fs/f2fs/segment.c if (!f2fs_test_bit(i, (char *)&sbi->dirty_device)) sbi 764 fs/f2fs/segment.c ret = __submit_flush_wait(sbi, FDEV(i).bdev); sbi 768 fs/f2fs/segment.c spin_lock(&sbi->dev_lock); sbi 769 fs/f2fs/segment.c f2fs_clear_bit(i, (char *)&sbi->dirty_device); sbi 770 fs/f2fs/segment.c spin_unlock(&sbi->dev_lock); sbi 776 fs/f2fs/segment.c static void __locate_dirty_segment(struct f2fs_sb_info *sbi, unsigned int segno, sbi 779 fs/f2fs/segment.c struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); sbi 782 fs/f2fs/segment.c if (IS_CURSEG(sbi, segno)) sbi 789 fs/f2fs/segment.c struct seg_entry *sentry = get_seg_entry(sbi, segno); sbi 793 fs/f2fs/segment.c f2fs_bug_on(sbi, 1); sbi 801 fs/f2fs/segment.c static void __remove_dirty_segment(struct f2fs_sb_info *sbi, unsigned int segno, sbi 804 fs/f2fs/segment.c struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); sbi 810 fs/f2fs/segment.c struct seg_entry *sentry = get_seg_entry(sbi, segno); sbi 816 fs/f2fs/segment.c if (get_valid_blocks(sbi, segno, true) == 0) { sbi 817 fs/f2fs/segment.c clear_bit(GET_SEC_FROM_SEG(sbi, segno), sbi 820 fs/f2fs/segment.c clear_bit(segno, SIT_I(sbi)->invalid_segmap); sbi 831 fs/f2fs/segment.c static void locate_dirty_segment(struct f2fs_sb_info *sbi, unsigned int segno) sbi 833 fs/f2fs/segment.c struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); sbi 836 fs/f2fs/segment.c if (segno == NULL_SEGNO || IS_CURSEG(sbi, segno)) sbi 841 fs/f2fs/segment.c valid_blocks = get_valid_blocks(sbi, segno, false); sbi 842 fs/f2fs/segment.c ckpt_valid_blocks = get_ckpt_valid_blocks(sbi, segno); sbi 844 fs/f2fs/segment.c if (valid_blocks == 0 && (!is_sbi_flag_set(sbi, SBI_CP_DISABLED) || sbi 845 fs/f2fs/segment.c ckpt_valid_blocks == sbi->blocks_per_seg)) { sbi 846 fs/f2fs/segment.c __locate_dirty_segment(sbi, segno, PRE); sbi 847 fs/f2fs/segment.c __remove_dirty_segment(sbi, segno, DIRTY); sbi 848 fs/f2fs/segment.c } else if (valid_blocks < sbi->blocks_per_seg) { sbi 849 fs/f2fs/segment.c __locate_dirty_segment(sbi, segno, DIRTY); sbi 852 fs/f2fs/segment.c __remove_dirty_segment(sbi, segno, DIRTY); sbi 859 fs/f2fs/segment.c void f2fs_dirty_to_prefree(struct f2fs_sb_info *sbi) sbi 861 fs/f2fs/segment.c struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); sbi 865 fs/f2fs/segment.c for_each_set_bit(segno, dirty_i->dirty_segmap[DIRTY], MAIN_SEGS(sbi)) { sbi 866 fs/f2fs/segment.c if (get_valid_blocks(sbi, segno, false)) sbi 868 fs/f2fs/segment.c if (IS_CURSEG(sbi, segno)) sbi 870 fs/f2fs/segment.c __locate_dirty_segment(sbi, segno, PRE); sbi 871 fs/f2fs/segment.c __remove_dirty_segment(sbi, segno, DIRTY); sbi 876 fs/f2fs/segment.c block_t f2fs_get_unusable_blocks(struct f2fs_sb_info *sbi) sbi 879 fs/f2fs/segment.c (overprovision_segments(sbi) - reserved_segments(sbi)); sbi 880 fs/f2fs/segment.c block_t ovp_holes = ovp_hole_segs << sbi->log_blocks_per_seg; sbi 881 fs/f2fs/segment.c struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); sbi 888 fs/f2fs/segment.c for_each_set_bit(segno, dirty_i->dirty_segmap[DIRTY], MAIN_SEGS(sbi)) { sbi 889 fs/f2fs/segment.c se = get_seg_entry(sbi, segno); sbi 891 fs/f2fs/segment.c holes[NODE] += sbi->blocks_per_seg - se->valid_blocks; sbi 893 fs/f2fs/segment.c holes[DATA] += sbi->blocks_per_seg - se->valid_blocks; sbi 903 fs/f2fs/segment.c int f2fs_disable_cp_again(struct f2fs_sb_info *sbi, block_t unusable) sbi 906 fs/f2fs/segment.c (overprovision_segments(sbi) - reserved_segments(sbi)); sbi 907 fs/f2fs/segment.c if (unusable > F2FS_OPTION(sbi).unusable_cap) sbi 909 fs/f2fs/segment.c if (is_sbi_flag_set(sbi, SBI_CP_DISABLED_QUICK) && sbi 910 fs/f2fs/segment.c dirty_segments(sbi) > ovp_hole_segs) sbi 916 fs/f2fs/segment.c static unsigned int get_free_segment(struct f2fs_sb_info *sbi) sbi 918 fs/f2fs/segment.c struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); sbi 922 fs/f2fs/segment.c for_each_set_bit(segno, dirty_i->dirty_segmap[DIRTY], MAIN_SEGS(sbi)) { sbi 923 fs/f2fs/segment.c if (get_valid_blocks(sbi, segno, false)) sbi 925 fs/f2fs/segment.c if (get_ckpt_valid_blocks(sbi, segno)) sbi 934 fs/f2fs/segment.c static struct discard_cmd *__create_discard_cmd(struct f2fs_sb_info *sbi, sbi 938 fs/f2fs/segment.c struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 942 fs/f2fs/segment.c f2fs_bug_on(sbi, !len); sbi 966 fs/f2fs/segment.c static struct discard_cmd *__attach_discard_cmd(struct f2fs_sb_info *sbi, sbi 972 fs/f2fs/segment.c struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 975 fs/f2fs/segment.c dc = __create_discard_cmd(sbi, bdev, lstart, start, len); sbi 998 fs/f2fs/segment.c static void __remove_discard_cmd(struct f2fs_sb_info *sbi, sbi 1001 fs/f2fs/segment.c struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 1013 fs/f2fs/segment.c f2fs_bug_on(sbi, dc->ref); sbi 1042 fs/f2fs/segment.c static void __check_sit_bitmap(struct f2fs_sb_info *sbi, sbi 1049 fs/f2fs/segment.c unsigned long offset, size, max_blocks = sbi->blocks_per_seg; sbi 1053 fs/f2fs/segment.c segno = GET_SEGNO(sbi, blk); sbi 1054 fs/f2fs/segment.c sentry = get_seg_entry(sbi, segno); sbi 1055 fs/f2fs/segment.c offset = GET_BLKOFF_FROM_SEG0(sbi, blk); sbi 1057 fs/f2fs/segment.c if (end < START_BLOCK(sbi, segno + 1)) sbi 1058 fs/f2fs/segment.c size = GET_BLKOFF_FROM_SEG0(sbi, end); sbi 1063 fs/f2fs/segment.c f2fs_bug_on(sbi, offset != size); sbi 1064 fs/f2fs/segment.c blk = START_BLOCK(sbi, segno + 1); sbi 1069 fs/f2fs/segment.c static void __init_discard_policy(struct f2fs_sb_info *sbi, sbi 1090 fs/f2fs/segment.c if (utilization(sbi) > DEF_DISCARD_URGENT_UTIL) { sbi 1109 fs/f2fs/segment.c static void __update_discard_tree_range(struct f2fs_sb_info *sbi, sbi 1113 fs/f2fs/segment.c static int __submit_discard_cmd(struct f2fs_sb_info *sbi, sbi 1122 fs/f2fs/segment.c struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 1132 fs/f2fs/segment.c if (is_sbi_flag_set(sbi, SBI_NEED_FSCK)) sbi 1160 fs/f2fs/segment.c if (time_to_inject(sbi, FAULT_DISCARD)) { sbi 1179 fs/f2fs/segment.c f2fs_bug_on(sbi, !bio); sbi 1198 fs/f2fs/segment.c __check_sit_bitmap(sbi, lstart, lstart + len); sbi 1207 fs/f2fs/segment.c f2fs_update_iostat(sbi, FS_DISCARD, 1); sbi 1216 fs/f2fs/segment.c __update_discard_tree_range(sbi, bdev, lstart, start, len); sbi 1220 fs/f2fs/segment.c static struct discard_cmd *__insert_discard_tree(struct f2fs_sb_info *sbi, sbi 1226 fs/f2fs/segment.c struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 1238 fs/f2fs/segment.c p = f2fs_lookup_rb_tree_for_insert(sbi, &dcc->root, &parent, sbi 1241 fs/f2fs/segment.c dc = __attach_discard_cmd(sbi, bdev, lstart, start, len, parent, sbi 1255 fs/f2fs/segment.c static void __punch_discard_cmd(struct f2fs_sb_info *sbi, sbi 1258 fs/f2fs/segment.c struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 1263 fs/f2fs/segment.c __remove_discard_cmd(sbi, dc); sbi 1278 fs/f2fs/segment.c __insert_discard_tree(sbi, dc->bdev, blkaddr + 1, sbi 1292 fs/f2fs/segment.c static void __update_discard_tree_range(struct f2fs_sb_info *sbi, sbi 1296 fs/f2fs/segment.c struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 1365 fs/f2fs/segment.c __remove_discard_cmd(sbi, tdc); sbi 1370 fs/f2fs/segment.c __insert_discard_tree(sbi, bdev, di.lstart, di.start, sbi 1383 fs/f2fs/segment.c static int __queue_discard_cmd(struct f2fs_sb_info *sbi, sbi 1393 fs/f2fs/segment.c if (f2fs_is_multi_device(sbi)) { sbi 1394 fs/f2fs/segment.c int devi = f2fs_target_device_index(sbi, blkstart); sbi 1398 fs/f2fs/segment.c mutex_lock(&SM_I(sbi)->dcc_info->cmd_lock); sbi 1399 fs/f2fs/segment.c __update_discard_tree_range(sbi, bdev, lblkstart, blkstart, blklen); sbi 1400 fs/f2fs/segment.c mutex_unlock(&SM_I(sbi)->dcc_info->cmd_lock); sbi 1404 fs/f2fs/segment.c static unsigned int __issue_discard_cmd_orderly(struct f2fs_sb_info *sbi, sbi 1407 fs/f2fs/segment.c struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 1434 fs/f2fs/segment.c if (dpolicy->io_aware && !is_idle(sbi, DISCARD_TIME)) { sbi 1440 fs/f2fs/segment.c err = __submit_discard_cmd(sbi, dpolicy, dc, &issued); sbi 1447 fs/f2fs/segment.c __remove_discard_cmd(sbi, dc); sbi 1464 fs/f2fs/segment.c static int __issue_discard_cmd(struct f2fs_sb_info *sbi, sbi 1467 fs/f2fs/segment.c struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 1475 fs/f2fs/segment.c f2fs_update_time(sbi, dpolicy->timeout); sbi 1479 fs/f2fs/segment.c f2fs_time_over(sbi, dpolicy->timeout)) sbi 1486 fs/f2fs/segment.c return __issue_discard_cmd_orderly(sbi, dpolicy); sbi 1494 fs/f2fs/segment.c f2fs_bug_on(sbi, !f2fs_check_rb_tree_consistence(sbi, sbi 1498 fs/f2fs/segment.c f2fs_bug_on(sbi, dc->state != D_PREP); sbi 1501 fs/f2fs/segment.c f2fs_time_over(sbi, dpolicy->timeout)) sbi 1505 fs/f2fs/segment.c !is_idle(sbi, DISCARD_TIME)) { sbi 1510 fs/f2fs/segment.c __submit_discard_cmd(sbi, dpolicy, dc, &issued); sbi 1529 fs/f2fs/segment.c static bool __drop_discard_cmd(struct f2fs_sb_info *sbi) sbi 1531 fs/f2fs/segment.c struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 1541 fs/f2fs/segment.c f2fs_bug_on(sbi, dc->state != D_PREP); sbi 1542 fs/f2fs/segment.c __remove_discard_cmd(sbi, dc); sbi 1551 fs/f2fs/segment.c void f2fs_drop_discard_cmd(struct f2fs_sb_info *sbi) sbi 1553 fs/f2fs/segment.c __drop_discard_cmd(sbi); sbi 1556 fs/f2fs/segment.c static unsigned int __wait_one_discard_bio(struct f2fs_sb_info *sbi, sbi 1559 fs/f2fs/segment.c struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 1564 fs/f2fs/segment.c f2fs_bug_on(sbi, dc->state != D_DONE); sbi 1569 fs/f2fs/segment.c __remove_discard_cmd(sbi, dc); sbi 1576 fs/f2fs/segment.c static unsigned int __wait_discard_cmd_range(struct f2fs_sb_info *sbi, sbi 1580 fs/f2fs/segment.c struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 1600 fs/f2fs/segment.c __remove_discard_cmd(sbi, dc); sbi 1610 fs/f2fs/segment.c trimmed += __wait_one_discard_bio(sbi, dc); sbi 1617 fs/f2fs/segment.c static unsigned int __wait_all_discard_cmd(struct f2fs_sb_info *sbi, sbi 1624 fs/f2fs/segment.c return __wait_discard_cmd_range(sbi, dpolicy, 0, UINT_MAX); sbi 1627 fs/f2fs/segment.c __init_discard_policy(sbi, &dp, DPOLICY_FSTRIM, 1); sbi 1628 fs/f2fs/segment.c discard_blks = __wait_discard_cmd_range(sbi, &dp, 0, UINT_MAX); sbi 1629 fs/f2fs/segment.c __init_discard_policy(sbi, &dp, DPOLICY_UMOUNT, 1); sbi 1630 fs/f2fs/segment.c discard_blks += __wait_discard_cmd_range(sbi, &dp, 0, UINT_MAX); sbi 1636 fs/f2fs/segment.c static void f2fs_wait_discard_bio(struct f2fs_sb_info *sbi, block_t blkaddr) sbi 1638 fs/f2fs/segment.c struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 1647 fs/f2fs/segment.c __punch_discard_cmd(sbi, dc, blkaddr); sbi 1656 fs/f2fs/segment.c __wait_one_discard_bio(sbi, dc); sbi 1659 fs/f2fs/segment.c void f2fs_stop_discard_thread(struct f2fs_sb_info *sbi) sbi 1661 fs/f2fs/segment.c struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 1672 fs/f2fs/segment.c bool f2fs_issue_discard_timeout(struct f2fs_sb_info *sbi) sbi 1674 fs/f2fs/segment.c struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 1678 fs/f2fs/segment.c __init_discard_policy(sbi, &dpolicy, DPOLICY_UMOUNT, sbi 1681 fs/f2fs/segment.c __issue_discard_cmd(sbi, &dpolicy); sbi 1682 fs/f2fs/segment.c dropped = __drop_discard_cmd(sbi); sbi 1685 fs/f2fs/segment.c __wait_all_discard_cmd(sbi, NULL); sbi 1687 fs/f2fs/segment.c f2fs_bug_on(sbi, atomic_read(&dcc->discard_cmd_cnt)); sbi 1693 fs/f2fs/segment.c struct f2fs_sb_info *sbi = data; sbi 1694 fs/f2fs/segment.c struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 1703 fs/f2fs/segment.c __init_discard_policy(sbi, &dpolicy, DPOLICY_BG, sbi 1716 fs/f2fs/segment.c __wait_all_discard_cmd(sbi, NULL); sbi 1720 fs/f2fs/segment.c if (f2fs_readonly(sbi->sb)) sbi 1724 fs/f2fs/segment.c if (is_sbi_flag_set(sbi, SBI_NEED_FSCK)) { sbi 1729 fs/f2fs/segment.c if (sbi->gc_mode == GC_URGENT) sbi 1730 fs/f2fs/segment.c __init_discard_policy(sbi, &dpolicy, DPOLICY_FORCE, 1); sbi 1732 fs/f2fs/segment.c sb_start_intwrite(sbi->sb); sbi 1734 fs/f2fs/segment.c issued = __issue_discard_cmd(sbi, &dpolicy); sbi 1736 fs/f2fs/segment.c __wait_all_discard_cmd(sbi, &dpolicy); sbi 1739 fs/f2fs/segment.c wait_ms = f2fs_time_to_wait(sbi, DISCARD_TIME); sbi 1746 fs/f2fs/segment.c sb_end_intwrite(sbi->sb); sbi 1753 fs/f2fs/segment.c static int __f2fs_issue_discard_zone(struct f2fs_sb_info *sbi, sbi 1760 fs/f2fs/segment.c if (f2fs_is_multi_device(sbi)) { sbi 1761 fs/f2fs/segment.c devi = f2fs_target_device_index(sbi, blkstart); sbi 1764 fs/f2fs/segment.c f2fs_err(sbi, "Invalid block %x", blkstart); sbi 1771 fs/f2fs/segment.c if (f2fs_blkz_is_seq(sbi, devi, blkstart)) { sbi 1777 fs/f2fs/segment.c f2fs_err(sbi, "(%d) %s: Unaligned zone reset attempted (block %x + %x)", sbi 1778 fs/f2fs/segment.c devi, sbi->s_ndevs ? FDEV(devi).path : "", sbi 1787 fs/f2fs/segment.c return __queue_discard_cmd(sbi, bdev, lblkstart, blklen); sbi 1791 fs/f2fs/segment.c static int __issue_discard_async(struct f2fs_sb_info *sbi, sbi 1795 fs/f2fs/segment.c if (f2fs_sb_has_blkzoned(sbi) && bdev_is_zoned(bdev)) sbi 1796 fs/f2fs/segment.c return __f2fs_issue_discard_zone(sbi, bdev, blkstart, blklen); sbi 1798 fs/f2fs/segment.c return __queue_discard_cmd(sbi, bdev, blkstart, blklen); sbi 1801 fs/f2fs/segment.c static int f2fs_issue_discard(struct f2fs_sb_info *sbi, sbi 1811 fs/f2fs/segment.c bdev = f2fs_target_device(sbi, blkstart, NULL); sbi 1816 fs/f2fs/segment.c f2fs_target_device(sbi, i, NULL); sbi 1819 fs/f2fs/segment.c err = __issue_discard_async(sbi, bdev, sbi 1829 fs/f2fs/segment.c se = get_seg_entry(sbi, GET_SEGNO(sbi, i)); sbi 1830 fs/f2fs/segment.c offset = GET_BLKOFF_FROM_SEG0(sbi, i); sbi 1833 fs/f2fs/segment.c sbi->discard_blks--; sbi 1837 fs/f2fs/segment.c err = __issue_discard_async(sbi, bdev, start, len); sbi 1841 fs/f2fs/segment.c static bool add_discard_addrs(struct f2fs_sb_info *sbi, struct cp_control *cpc, sbi 1845 fs/f2fs/segment.c int max_blocks = sbi->blocks_per_seg; sbi 1846 fs/f2fs/segment.c struct seg_entry *se = get_seg_entry(sbi, cpc->trim_start); sbi 1850 fs/f2fs/segment.c unsigned long *dmap = SIT_I(sbi)->tmp_map; sbi 1854 fs/f2fs/segment.c struct list_head *head = &SM_I(sbi)->dcc_info->entry_list; sbi 1857 fs/f2fs/segment.c if (se->valid_blocks == max_blocks || !f2fs_hw_support_discard(sbi)) sbi 1861 fs/f2fs/segment.c if (!f2fs_realtime_discard_enable(sbi) || !se->valid_blocks || sbi 1862 fs/f2fs/segment.c SM_I(sbi)->dcc_info->nr_discards >= sbi 1863 fs/f2fs/segment.c SM_I(sbi)->dcc_info->max_discards) sbi 1872 fs/f2fs/segment.c while (force || SM_I(sbi)->dcc_info->nr_discards <= sbi 1873 fs/f2fs/segment.c SM_I(sbi)->dcc_info->max_discards) { sbi 1889 fs/f2fs/segment.c de->start_blkaddr = START_BLOCK(sbi, cpc->trim_start); sbi 1896 fs/f2fs/segment.c SM_I(sbi)->dcc_info->nr_discards += end - start; sbi 1907 fs/f2fs/segment.c void f2fs_release_discard_addrs(struct f2fs_sb_info *sbi) sbi 1909 fs/f2fs/segment.c struct list_head *head = &(SM_I(sbi)->dcc_info->entry_list); sbi 1920 fs/f2fs/segment.c static void set_prefree_as_free_segments(struct f2fs_sb_info *sbi) sbi 1922 fs/f2fs/segment.c struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); sbi 1926 fs/f2fs/segment.c for_each_set_bit(segno, dirty_i->dirty_segmap[PRE], MAIN_SEGS(sbi)) sbi 1927 fs/f2fs/segment.c __set_test_and_free(sbi, segno); sbi 1931 fs/f2fs/segment.c void f2fs_clear_prefree_segments(struct f2fs_sb_info *sbi, sbi 1934 fs/f2fs/segment.c struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 1937 fs/f2fs/segment.c struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); sbi 1942 fs/f2fs/segment.c bool need_align = test_opt(sbi, LFS) && __is_large_section(sbi); sbi 1951 fs/f2fs/segment.c start = find_next_bit(prefree_map, MAIN_SEGS(sbi), end + 1); sbi 1952 fs/f2fs/segment.c if (start >= MAIN_SEGS(sbi)) sbi 1954 fs/f2fs/segment.c end = find_next_zero_bit(prefree_map, MAIN_SEGS(sbi), sbi 1958 fs/f2fs/segment.c start = rounddown(start, sbi->segs_per_sec); sbi 1959 fs/f2fs/segment.c end = roundup(end, sbi->segs_per_sec); sbi 1967 fs/f2fs/segment.c if (!f2fs_realtime_discard_enable(sbi)) sbi 1974 fs/f2fs/segment.c if (!test_opt(sbi, LFS) || !__is_large_section(sbi)) { sbi 1975 fs/f2fs/segment.c f2fs_issue_discard(sbi, START_BLOCK(sbi, start), sbi 1976 fs/f2fs/segment.c (end - start) << sbi->log_blocks_per_seg); sbi 1980 fs/f2fs/segment.c secno = GET_SEC_FROM_SEG(sbi, start); sbi 1981 fs/f2fs/segment.c start_segno = GET_SEG_FROM_SEC(sbi, secno); sbi 1982 fs/f2fs/segment.c if (!IS_CURSEC(sbi, secno) && sbi 1983 fs/f2fs/segment.c !get_valid_blocks(sbi, start, true)) sbi 1984 fs/f2fs/segment.c f2fs_issue_discard(sbi, START_BLOCK(sbi, start_segno), sbi 1985 fs/f2fs/segment.c sbi->segs_per_sec << sbi->log_blocks_per_seg); sbi 1987 fs/f2fs/segment.c start = start_segno + sbi->segs_per_sec; sbi 2003 fs/f2fs/segment.c sbi->blocks_per_seg, cur_pos); sbi 2006 fs/f2fs/segment.c if (f2fs_sb_has_blkzoned(sbi) || sbi 2010 fs/f2fs/segment.c f2fs_issue_discard(sbi, entry->start_blkaddr + cur_pos, sbi 2015 fs/f2fs/segment.c sbi->blocks_per_seg, cur_pos); sbi 2021 fs/f2fs/segment.c if (cur_pos < sbi->blocks_per_seg) sbi 2028 fs/f2fs/segment.c wake_up_discard_thread(sbi, false); sbi 2031 fs/f2fs/segment.c static int create_discard_cmd_control(struct f2fs_sb_info *sbi) sbi 2033 fs/f2fs/segment.c dev_t dev = sbi->sb->s_bdev->bd_dev; sbi 2037 fs/f2fs/segment.c if (SM_I(sbi)->dcc_info) { sbi 2038 fs/f2fs/segment.c dcc = SM_I(sbi)->dcc_info; sbi 2042 fs/f2fs/segment.c dcc = f2fs_kzalloc(sbi, sizeof(struct discard_cmd_control), GFP_KERNEL); sbi 2057 fs/f2fs/segment.c dcc->max_discards = MAIN_SEGS(sbi) << sbi->log_blocks_per_seg; sbi 2064 fs/f2fs/segment.c SM_I(sbi)->dcc_info = dcc; sbi 2066 fs/f2fs/segment.c dcc->f2fs_issue_discard = kthread_run(issue_discard_thread, sbi, sbi 2071 fs/f2fs/segment.c SM_I(sbi)->dcc_info = NULL; sbi 2078 fs/f2fs/segment.c static void destroy_discard_cmd_control(struct f2fs_sb_info *sbi) sbi 2080 fs/f2fs/segment.c struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 2085 fs/f2fs/segment.c f2fs_stop_discard_thread(sbi); sbi 2092 fs/f2fs/segment.c f2fs_issue_discard_timeout(sbi); sbi 2095 fs/f2fs/segment.c SM_I(sbi)->dcc_info = NULL; sbi 2098 fs/f2fs/segment.c static bool __mark_sit_entry_dirty(struct f2fs_sb_info *sbi, unsigned int segno) sbi 2100 fs/f2fs/segment.c struct sit_info *sit_i = SIT_I(sbi); sbi 2110 fs/f2fs/segment.c static void __set_sit_entry_type(struct f2fs_sb_info *sbi, int type, sbi 2113 fs/f2fs/segment.c struct seg_entry *se = get_seg_entry(sbi, segno); sbi 2116 fs/f2fs/segment.c __mark_sit_entry_dirty(sbi, segno); sbi 2119 fs/f2fs/segment.c static void update_sit_entry(struct f2fs_sb_info *sbi, block_t blkaddr, int del) sbi 2129 fs/f2fs/segment.c segno = GET_SEGNO(sbi, blkaddr); sbi 2131 fs/f2fs/segment.c se = get_seg_entry(sbi, segno); sbi 2133 fs/f2fs/segment.c offset = GET_BLKOFF_FROM_SEG0(sbi, blkaddr); sbi 2135 fs/f2fs/segment.c f2fs_bug_on(sbi, (new_vblocks >> (sizeof(unsigned short) << 3) || sbi 2136 fs/f2fs/segment.c (new_vblocks > sbi->blocks_per_seg))); sbi 2139 fs/f2fs/segment.c se->mtime = get_mtime(sbi, false); sbi 2140 fs/f2fs/segment.c if (se->mtime > SIT_I(sbi)->max_mtime) sbi 2141 fs/f2fs/segment.c SIT_I(sbi)->max_mtime = se->mtime; sbi 2150 fs/f2fs/segment.c f2fs_err(sbi, "Inconsistent error when setting bitmap, blk:%u, old bit:%d", sbi 2152 fs/f2fs/segment.c f2fs_bug_on(sbi, 1); sbi 2156 fs/f2fs/segment.c f2fs_err(sbi, "Bitmap was wrongly set, blk:%u", sbi 2158 fs/f2fs/segment.c f2fs_bug_on(sbi, 1); sbi 2164 fs/f2fs/segment.c sbi->discard_blks--; sbi 2170 fs/f2fs/segment.c if (!is_sbi_flag_set(sbi, SBI_CP_DISABLED)) { sbi 2180 fs/f2fs/segment.c f2fs_err(sbi, "Inconsistent error when clearing bitmap, blk:%u, old bit:%d", sbi 2182 fs/f2fs/segment.c f2fs_bug_on(sbi, 1); sbi 2186 fs/f2fs/segment.c f2fs_err(sbi, "Bitmap was wrongly cleared, blk:%u", sbi 2188 fs/f2fs/segment.c f2fs_bug_on(sbi, 1); sbi 2191 fs/f2fs/segment.c } else if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED))) { sbi 2199 fs/f2fs/segment.c spin_lock(&sbi->stat_lock); sbi 2200 fs/f2fs/segment.c sbi->unusable_block_count++; sbi 2201 fs/f2fs/segment.c spin_unlock(&sbi->stat_lock); sbi 2206 fs/f2fs/segment.c sbi->discard_blks++; sbi 2211 fs/f2fs/segment.c __mark_sit_entry_dirty(sbi, segno); sbi 2214 fs/f2fs/segment.c SIT_I(sbi)->written_valid_blocks += del; sbi 2216 fs/f2fs/segment.c if (__is_large_section(sbi)) sbi 2217 fs/f2fs/segment.c get_sec_entry(sbi, segno)->valid_blocks += del; sbi 2220 fs/f2fs/segment.c void f2fs_invalidate_blocks(struct f2fs_sb_info *sbi, block_t addr) sbi 2222 fs/f2fs/segment.c unsigned int segno = GET_SEGNO(sbi, addr); sbi 2223 fs/f2fs/segment.c struct sit_info *sit_i = SIT_I(sbi); sbi 2225 fs/f2fs/segment.c f2fs_bug_on(sbi, addr == NULL_ADDR); sbi 2229 fs/f2fs/segment.c invalidate_mapping_pages(META_MAPPING(sbi), addr, addr); sbi 2234 fs/f2fs/segment.c update_sit_entry(sbi, addr, -1); sbi 2237 fs/f2fs/segment.c locate_dirty_segment(sbi, segno); sbi 2242 fs/f2fs/segment.c bool f2fs_is_checkpointed_data(struct f2fs_sb_info *sbi, block_t blkaddr) sbi 2244 fs/f2fs/segment.c struct sit_info *sit_i = SIT_I(sbi); sbi 2254 fs/f2fs/segment.c segno = GET_SEGNO(sbi, blkaddr); sbi 2255 fs/f2fs/segment.c se = get_seg_entry(sbi, segno); sbi 2256 fs/f2fs/segment.c offset = GET_BLKOFF_FROM_SEG0(sbi, blkaddr); sbi 2269 fs/f2fs/segment.c static void __add_sum_entry(struct f2fs_sb_info *sbi, int type, sbi 2272 fs/f2fs/segment.c struct curseg_info *curseg = CURSEG_I(sbi, type); sbi 2281 fs/f2fs/segment.c int f2fs_npages_for_summary_flush(struct f2fs_sb_info *sbi, bool for_ra) sbi 2287 fs/f2fs/segment.c if (sbi->ckpt->alloc_type[i] == SSR) sbi 2288 fs/f2fs/segment.c valid_sum_count += sbi->blocks_per_seg; sbi 2292 fs/f2fs/segment.c F2FS_CKPT(sbi)->cur_data_blkoff[i]); sbi 2294 fs/f2fs/segment.c valid_sum_count += curseg_blkoff(sbi, i); sbi 2311 fs/f2fs/segment.c struct page *f2fs_get_sum_page(struct f2fs_sb_info *sbi, unsigned int segno) sbi 2313 fs/f2fs/segment.c return f2fs_get_meta_page_nofail(sbi, GET_SUM_BLOCK(sbi, segno)); sbi 2316 fs/f2fs/segment.c void f2fs_update_meta_page(struct f2fs_sb_info *sbi, sbi 2319 fs/f2fs/segment.c struct page *page = f2fs_grab_meta_page(sbi, blk_addr); sbi 2326 fs/f2fs/segment.c static void write_sum_page(struct f2fs_sb_info *sbi, sbi 2329 fs/f2fs/segment.c f2fs_update_meta_page(sbi, (void *)sum_blk, blk_addr); sbi 2332 fs/f2fs/segment.c static void write_current_sum_page(struct f2fs_sb_info *sbi, sbi 2335 fs/f2fs/segment.c struct curseg_info *curseg = CURSEG_I(sbi, type); sbi 2336 fs/f2fs/segment.c struct page *page = f2fs_grab_meta_page(sbi, blk_addr); sbi 2358 fs/f2fs/segment.c static int is_next_segment_free(struct f2fs_sb_info *sbi, int type) sbi 2360 fs/f2fs/segment.c struct curseg_info *curseg = CURSEG_I(sbi, type); sbi 2362 fs/f2fs/segment.c struct free_segmap_info *free_i = FREE_I(sbi); sbi 2364 fs/f2fs/segment.c if (segno < MAIN_SEGS(sbi) && segno % sbi->segs_per_sec) sbi 2373 fs/f2fs/segment.c static void get_new_segment(struct f2fs_sb_info *sbi, sbi 2376 fs/f2fs/segment.c struct free_segmap_info *free_i = FREE_I(sbi); sbi 2378 fs/f2fs/segment.c unsigned int total_zones = MAIN_SECS(sbi) / sbi->secs_per_zone; sbi 2379 fs/f2fs/segment.c unsigned int hint = GET_SEC_FROM_SEG(sbi, *newseg); sbi 2380 fs/f2fs/segment.c unsigned int old_zoneno = GET_ZONE_FROM_SEG(sbi, *newseg); sbi 2388 fs/f2fs/segment.c if (!new_sec && ((*newseg + 1) % sbi->segs_per_sec)) { sbi 2390 fs/f2fs/segment.c GET_SEG_FROM_SEC(sbi, hint + 1), *newseg + 1); sbi 2391 fs/f2fs/segment.c if (segno < GET_SEG_FROM_SEC(sbi, hint + 1)) sbi 2395 fs/f2fs/segment.c secno = find_next_zero_bit(free_i->free_secmap, MAIN_SECS(sbi), hint); sbi 2396 fs/f2fs/segment.c if (secno >= MAIN_SECS(sbi)) { sbi 2399 fs/f2fs/segment.c MAIN_SECS(sbi), 0); sbi 2400 fs/f2fs/segment.c f2fs_bug_on(sbi, secno >= MAIN_SECS(sbi)); sbi 2415 fs/f2fs/segment.c MAIN_SECS(sbi), 0); sbi 2416 fs/f2fs/segment.c f2fs_bug_on(sbi, left_start >= MAIN_SECS(sbi)); sbi 2421 fs/f2fs/segment.c segno = GET_SEG_FROM_SEC(sbi, secno); sbi 2422 fs/f2fs/segment.c zoneno = GET_ZONE_FROM_SEC(sbi, secno); sbi 2427 fs/f2fs/segment.c if (sbi->secs_per_zone == 1) sbi 2438 fs/f2fs/segment.c if (CURSEG_I(sbi, i)->zone == zoneno) sbi 2444 fs/f2fs/segment.c hint = zoneno * sbi->secs_per_zone - 1; sbi 2448 fs/f2fs/segment.c hint = (zoneno + 1) * sbi->secs_per_zone; sbi 2454 fs/f2fs/segment.c f2fs_bug_on(sbi, test_bit(segno, free_i->free_segmap)); sbi 2455 fs/f2fs/segment.c __set_inuse(sbi, segno); sbi 2460 fs/f2fs/segment.c static void reset_curseg(struct f2fs_sb_info *sbi, int type, int modified) sbi 2462 fs/f2fs/segment.c struct curseg_info *curseg = CURSEG_I(sbi, type); sbi 2466 fs/f2fs/segment.c curseg->zone = GET_ZONE_FROM_SEG(sbi, curseg->segno); sbi 2476 fs/f2fs/segment.c __set_sit_entry_type(sbi, type, curseg->segno, modified); sbi 2479 fs/f2fs/segment.c static unsigned int __get_next_segno(struct f2fs_sb_info *sbi, int type) sbi 2482 fs/f2fs/segment.c if (__is_large_section(sbi)) sbi 2483 fs/f2fs/segment.c return CURSEG_I(sbi, type)->segno; sbi 2485 fs/f2fs/segment.c if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED))) sbi 2488 fs/f2fs/segment.c if (test_opt(sbi, NOHEAP) && sbi 2492 fs/f2fs/segment.c if (SIT_I(sbi)->last_victim[ALLOC_NEXT]) sbi 2493 fs/f2fs/segment.c return SIT_I(sbi)->last_victim[ALLOC_NEXT]; sbi 2496 fs/f2fs/segment.c if (F2FS_OPTION(sbi).alloc_mode == ALLOC_MODE_REUSE) sbi 2499 fs/f2fs/segment.c return CURSEG_I(sbi, type)->segno; sbi 2506 fs/f2fs/segment.c static void new_curseg(struct f2fs_sb_info *sbi, int type, bool new_sec) sbi 2508 fs/f2fs/segment.c struct curseg_info *curseg = CURSEG_I(sbi, type); sbi 2512 fs/f2fs/segment.c write_sum_page(sbi, curseg->sum_blk, sbi 2513 fs/f2fs/segment.c GET_SUM_BLOCK(sbi, segno)); sbi 2517 fs/f2fs/segment.c if (test_opt(sbi, NOHEAP)) sbi 2520 fs/f2fs/segment.c segno = __get_next_segno(sbi, type); sbi 2521 fs/f2fs/segment.c get_new_segment(sbi, &segno, new_sec, dir); sbi 2523 fs/f2fs/segment.c reset_curseg(sbi, type, 1); sbi 2527 fs/f2fs/segment.c static void __next_free_blkoff(struct f2fs_sb_info *sbi, sbi 2530 fs/f2fs/segment.c struct seg_entry *se = get_seg_entry(sbi, seg->segno); sbi 2532 fs/f2fs/segment.c unsigned long *target_map = SIT_I(sbi)->tmp_map; sbi 2540 fs/f2fs/segment.c pos = __find_rev_next_zero_bit(target_map, sbi->blocks_per_seg, start); sbi 2550 fs/f2fs/segment.c static void __refresh_next_blkoff(struct f2fs_sb_info *sbi, sbi 2554 fs/f2fs/segment.c __next_free_blkoff(sbi, seg, seg->next_blkoff + 1); sbi 2563 fs/f2fs/segment.c static void change_curseg(struct f2fs_sb_info *sbi, int type) sbi 2565 fs/f2fs/segment.c struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); sbi 2566 fs/f2fs/segment.c struct curseg_info *curseg = CURSEG_I(sbi, type); sbi 2571 fs/f2fs/segment.c write_sum_page(sbi, curseg->sum_blk, sbi 2572 fs/f2fs/segment.c GET_SUM_BLOCK(sbi, curseg->segno)); sbi 2573 fs/f2fs/segment.c __set_test_and_inuse(sbi, new_segno); sbi 2576 fs/f2fs/segment.c __remove_dirty_segment(sbi, new_segno, PRE); sbi 2577 fs/f2fs/segment.c __remove_dirty_segment(sbi, new_segno, DIRTY); sbi 2580 fs/f2fs/segment.c reset_curseg(sbi, type, 1); sbi 2582 fs/f2fs/segment.c __next_free_blkoff(sbi, curseg, 0); sbi 2584 fs/f2fs/segment.c sum_page = f2fs_get_sum_page(sbi, new_segno); sbi 2585 fs/f2fs/segment.c f2fs_bug_on(sbi, IS_ERR(sum_page)); sbi 2591 fs/f2fs/segment.c static int get_ssr_segment(struct f2fs_sb_info *sbi, int type) sbi 2593 fs/f2fs/segment.c struct curseg_info *curseg = CURSEG_I(sbi, type); sbi 2594 fs/f2fs/segment.c const struct victim_selection *v_ops = DIRTY_I(sbi)->v_ops; sbi 2600 fs/f2fs/segment.c if (v_ops->get_victim(sbi, &segno, BG_GC, type, SSR)) { sbi 2627 fs/f2fs/segment.c if (v_ops->get_victim(sbi, &segno, BG_GC, i, SSR)) { sbi 2634 fs/f2fs/segment.c if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED))) { sbi 2635 fs/f2fs/segment.c segno = get_free_segment(sbi); sbi 2648 fs/f2fs/segment.c static void allocate_segment_by_default(struct f2fs_sb_info *sbi, sbi 2651 fs/f2fs/segment.c struct curseg_info *curseg = CURSEG_I(sbi, type); sbi 2654 fs/f2fs/segment.c new_curseg(sbi, type, true); sbi 2655 fs/f2fs/segment.c else if (!is_set_ckpt_flags(sbi, CP_CRC_RECOVERY_FLAG) && sbi 2657 fs/f2fs/segment.c new_curseg(sbi, type, false); sbi 2658 fs/f2fs/segment.c else if (curseg->alloc_type == LFS && is_next_segment_free(sbi, type) && sbi 2659 fs/f2fs/segment.c likely(!is_sbi_flag_set(sbi, SBI_CP_DISABLED))) sbi 2660 fs/f2fs/segment.c new_curseg(sbi, type, false); sbi 2661 fs/f2fs/segment.c else if (f2fs_need_SSR(sbi) && get_ssr_segment(sbi, type)) sbi 2662 fs/f2fs/segment.c change_curseg(sbi, type); sbi 2664 fs/f2fs/segment.c new_curseg(sbi, type, false); sbi 2666 fs/f2fs/segment.c stat_inc_seg_type(sbi, curseg); sbi 2669 fs/f2fs/segment.c void allocate_segment_for_resize(struct f2fs_sb_info *sbi, int type, sbi 2672 fs/f2fs/segment.c struct curseg_info *curseg = CURSEG_I(sbi, type); sbi 2675 fs/f2fs/segment.c down_read(&SM_I(sbi)->curseg_lock); sbi 2677 fs/f2fs/segment.c down_write(&SIT_I(sbi)->sentry_lock); sbi 2679 fs/f2fs/segment.c segno = CURSEG_I(sbi, type)->segno; sbi 2683 fs/f2fs/segment.c if (f2fs_need_SSR(sbi) && get_ssr_segment(sbi, type)) sbi 2684 fs/f2fs/segment.c change_curseg(sbi, type); sbi 2686 fs/f2fs/segment.c new_curseg(sbi, type, true); sbi 2688 fs/f2fs/segment.c stat_inc_seg_type(sbi, curseg); sbi 2690 fs/f2fs/segment.c locate_dirty_segment(sbi, segno); sbi 2692 fs/f2fs/segment.c up_write(&SIT_I(sbi)->sentry_lock); sbi 2695 fs/f2fs/segment.c f2fs_notice(sbi, "For resize: curseg of type %d: %u ==> %u", sbi 2699 fs/f2fs/segment.c up_read(&SM_I(sbi)->curseg_lock); sbi 2702 fs/f2fs/segment.c void f2fs_allocate_new_segments(struct f2fs_sb_info *sbi) sbi 2708 fs/f2fs/segment.c down_write(&SIT_I(sbi)->sentry_lock); sbi 2711 fs/f2fs/segment.c curseg = CURSEG_I(sbi, i); sbi 2713 fs/f2fs/segment.c SIT_I(sbi)->s_ops->allocate_segment(sbi, i, true); sbi 2714 fs/f2fs/segment.c locate_dirty_segment(sbi, old_segno); sbi 2717 fs/f2fs/segment.c up_write(&SIT_I(sbi)->sentry_lock); sbi 2724 fs/f2fs/segment.c bool f2fs_exist_trim_candidates(struct f2fs_sb_info *sbi, sbi 2730 fs/f2fs/segment.c down_write(&SIT_I(sbi)->sentry_lock); sbi 2732 fs/f2fs/segment.c if (add_discard_addrs(sbi, cpc, true)) { sbi 2737 fs/f2fs/segment.c up_write(&SIT_I(sbi)->sentry_lock); sbi 2743 fs/f2fs/segment.c static unsigned int __issue_discard_cmd_range(struct f2fs_sb_info *sbi, sbi 2747 fs/f2fs/segment.c struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 2760 fs/f2fs/segment.c f2fs_bug_on(sbi, !f2fs_check_rb_tree_consistence(sbi, sbi 2785 fs/f2fs/segment.c err = __submit_discard_cmd(sbi, dpolicy, dc, &issued); sbi 2791 fs/f2fs/segment.c __remove_discard_cmd(sbi, dc); sbi 2795 fs/f2fs/segment.c trimmed += __wait_all_discard_cmd(sbi, NULL); sbi 2802 fs/f2fs/segment.c __remove_discard_cmd(sbi, dc); sbi 2815 fs/f2fs/segment.c int f2fs_trim_fs(struct f2fs_sb_info *sbi, struct fstrim_range *range) sbi 2825 fs/f2fs/segment.c bool need_align = test_opt(sbi, LFS) && __is_large_section(sbi); sbi 2827 fs/f2fs/segment.c if (start >= MAX_BLKADDR(sbi) || range->len < sbi->blocksize) sbi 2830 fs/f2fs/segment.c if (end < MAIN_BLKADDR(sbi)) sbi 2833 fs/f2fs/segment.c if (is_sbi_flag_set(sbi, SBI_NEED_FSCK)) { sbi 2834 fs/f2fs/segment.c f2fs_warn(sbi, "Found FS corruption, run fsck to fix."); sbi 2839 fs/f2fs/segment.c start_segno = (start <= MAIN_BLKADDR(sbi)) ? 0 : GET_SEGNO(sbi, start); sbi 2840 fs/f2fs/segment.c end_segno = (end >= MAX_BLKADDR(sbi)) ? MAIN_SEGS(sbi) - 1 : sbi 2841 fs/f2fs/segment.c GET_SEGNO(sbi, end); sbi 2843 fs/f2fs/segment.c start_segno = rounddown(start_segno, sbi->segs_per_sec); sbi 2844 fs/f2fs/segment.c end_segno = roundup(end_segno + 1, sbi->segs_per_sec) - 1; sbi 2852 fs/f2fs/segment.c if (sbi->discard_blks == 0) sbi 2855 fs/f2fs/segment.c mutex_lock(&sbi->gc_mutex); sbi 2856 fs/f2fs/segment.c err = f2fs_write_checkpoint(sbi, &cpc); sbi 2857 fs/f2fs/segment.c mutex_unlock(&sbi->gc_mutex); sbi 2867 fs/f2fs/segment.c if (f2fs_realtime_discard_enable(sbi)) sbi 2870 fs/f2fs/segment.c start_block = START_BLOCK(sbi, start_segno); sbi 2871 fs/f2fs/segment.c end_block = START_BLOCK(sbi, end_segno + 1); sbi 2873 fs/f2fs/segment.c __init_discard_policy(sbi, &dpolicy, DPOLICY_FSTRIM, cpc.trim_minlen); sbi 2874 fs/f2fs/segment.c trimmed = __issue_discard_cmd_range(sbi, &dpolicy, sbi 2877 fs/f2fs/segment.c trimmed += __wait_discard_cmd_range(sbi, &dpolicy, sbi 2885 fs/f2fs/segment.c static bool __has_curseg_space(struct f2fs_sb_info *sbi, int type) sbi 2887 fs/f2fs/segment.c struct curseg_info *curseg = CURSEG_I(sbi, type); sbi 2888 fs/f2fs/segment.c if (curseg->next_blkoff < sbi->blocks_per_seg) sbi 2966 fs/f2fs/segment.c enum rw_hint f2fs_io_type_to_rw_hint(struct f2fs_sb_info *sbi, sbi 2969 fs/f2fs/segment.c if (F2FS_OPTION(sbi).whint_mode == WHINT_MODE_USER) { sbi 2980 fs/f2fs/segment.c } else if (F2FS_OPTION(sbi).whint_mode == WHINT_MODE_FS) { sbi 3050 fs/f2fs/segment.c switch (F2FS_OPTION(fio->sbi).active_logs) { sbi 3061 fs/f2fs/segment.c f2fs_bug_on(fio->sbi, true); sbi 3073 fs/f2fs/segment.c void f2fs_allocate_data_block(struct f2fs_sb_info *sbi, struct page *page, sbi 3078 fs/f2fs/segment.c struct sit_info *sit_i = SIT_I(sbi); sbi 3079 fs/f2fs/segment.c struct curseg_info *curseg = CURSEG_I(sbi, type); sbi 3081 fs/f2fs/segment.c down_read(&SM_I(sbi)->curseg_lock); sbi 3086 fs/f2fs/segment.c *new_blkaddr = NEXT_FREE_BLKADDR(sbi, curseg); sbi 3088 fs/f2fs/segment.c f2fs_wait_discard_bio(sbi, *new_blkaddr); sbi 3095 fs/f2fs/segment.c __add_sum_entry(sbi, type, sum); sbi 3097 fs/f2fs/segment.c __refresh_next_blkoff(sbi, curseg); sbi 3099 fs/f2fs/segment.c stat_inc_block_count(sbi, curseg); sbi 3105 fs/f2fs/segment.c update_sit_entry(sbi, *new_blkaddr, 1); sbi 3106 fs/f2fs/segment.c if (GET_SEGNO(sbi, old_blkaddr) != NULL_SEGNO) sbi 3107 fs/f2fs/segment.c update_sit_entry(sbi, old_blkaddr, -1); sbi 3109 fs/f2fs/segment.c if (!__has_curseg_space(sbi, type)) sbi 3110 fs/f2fs/segment.c sit_i->s_ops->allocate_segment(sbi, type, false); sbi 3117 fs/f2fs/segment.c locate_dirty_segment(sbi, GET_SEGNO(sbi, old_blkaddr)); sbi 3118 fs/f2fs/segment.c locate_dirty_segment(sbi, GET_SEGNO(sbi, *new_blkaddr)); sbi 3123 fs/f2fs/segment.c fill_node_footer_blkaddr(page, NEXT_FREE_BLKADDR(sbi, curseg)); sbi 3125 fs/f2fs/segment.c f2fs_inode_chksum_set(sbi, page); sbi 3128 fs/f2fs/segment.c if (F2FS_IO_ALIGNED(sbi)) sbi 3136 fs/f2fs/segment.c io = sbi->write_io[fio->type] + fio->temp; sbi 3144 fs/f2fs/segment.c up_read(&SM_I(sbi)->curseg_lock); sbi 3149 fs/f2fs/segment.c struct f2fs_sb_info *sbi = fio->sbi; sbi 3152 fs/f2fs/segment.c if (!f2fs_is_multi_device(sbi)) sbi 3155 fs/f2fs/segment.c devidx = f2fs_target_device_index(sbi, fio->new_blkaddr); sbi 3158 fs/f2fs/segment.c f2fs_set_dirty_device(sbi, fio->ino, devidx, FLUSH_INO); sbi 3161 fs/f2fs/segment.c if (!f2fs_test_bit(devidx, (char *)&sbi->dirty_device)) { sbi 3162 fs/f2fs/segment.c spin_lock(&sbi->dev_lock); sbi 3163 fs/f2fs/segment.c f2fs_set_bit(devidx, (char *)&sbi->dirty_device); sbi 3164 fs/f2fs/segment.c spin_unlock(&sbi->dev_lock); sbi 3171 fs/f2fs/segment.c bool keep_order = (test_opt(fio->sbi, LFS) && type == CURSEG_COLD_DATA); sbi 3174 fs/f2fs/segment.c down_read(&fio->sbi->io_order_lock); sbi 3176 fs/f2fs/segment.c f2fs_allocate_data_block(fio->sbi, fio->page, fio->old_blkaddr, sbi 3178 fs/f2fs/segment.c if (GET_SEGNO(fio->sbi, fio->old_blkaddr) != NULL_SEGNO) sbi 3179 fs/f2fs/segment.c invalidate_mapping_pages(META_MAPPING(fio->sbi), sbi 3192 fs/f2fs/segment.c up_read(&fio->sbi->io_order_lock); sbi 3195 fs/f2fs/segment.c void f2fs_do_write_meta_page(struct f2fs_sb_info *sbi, struct page *page, sbi 3199 fs/f2fs/segment.c .sbi = sbi, sbi 3211 fs/f2fs/segment.c if (unlikely(page->index >= MAIN_BLKADDR(sbi))) sbi 3218 fs/f2fs/segment.c stat_inc_meta_count(sbi, page->index); sbi 3219 fs/f2fs/segment.c f2fs_update_iostat(sbi, io_type, F2FS_BLKSIZE); sbi 3229 fs/f2fs/segment.c f2fs_update_iostat(fio->sbi, fio->io_type, F2FS_BLKSIZE); sbi 3235 fs/f2fs/segment.c struct f2fs_sb_info *sbi = fio->sbi; sbi 3238 fs/f2fs/segment.c f2fs_bug_on(sbi, dn->data_blkaddr == NULL_ADDR); sbi 3243 fs/f2fs/segment.c f2fs_update_iostat(sbi, fio->io_type, F2FS_BLKSIZE); sbi 3249 fs/f2fs/segment.c struct f2fs_sb_info *sbi = fio->sbi; sbi 3256 fs/f2fs/segment.c segno = GET_SEGNO(sbi, fio->new_blkaddr); sbi 3258 fs/f2fs/segment.c if (!IS_DATASEG(get_seg_entry(sbi, segno)->type)) { sbi 3259 fs/f2fs/segment.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 3260 fs/f2fs/segment.c f2fs_warn(sbi, "%s: incorrect segment(%u) type, run fsck to fix.", sbi 3265 fs/f2fs/segment.c stat_inc_inplace_blocks(fio->sbi); sbi 3273 fs/f2fs/segment.c f2fs_update_iostat(fio->sbi, fio->io_type, F2FS_BLKSIZE); sbi 3279 fs/f2fs/segment.c static inline int __f2fs_get_curseg(struct f2fs_sb_info *sbi, sbi 3285 fs/f2fs/segment.c if (CURSEG_I(sbi, i)->segno == segno) sbi 3291 fs/f2fs/segment.c void f2fs_do_replace_block(struct f2fs_sb_info *sbi, struct f2fs_summary *sum, sbi 3295 fs/f2fs/segment.c struct sit_info *sit_i = SIT_I(sbi); sbi 3302 fs/f2fs/segment.c segno = GET_SEGNO(sbi, new_blkaddr); sbi 3303 fs/f2fs/segment.c se = get_seg_entry(sbi, segno); sbi 3306 fs/f2fs/segment.c down_write(&SM_I(sbi)->curseg_lock); sbi 3310 fs/f2fs/segment.c if (se->valid_blocks == 0 && !IS_CURSEG(sbi, segno)) { sbi 3317 fs/f2fs/segment.c if (IS_CURSEG(sbi, segno)) { sbi 3319 fs/f2fs/segment.c type = __f2fs_get_curseg(sbi, segno); sbi 3320 fs/f2fs/segment.c f2fs_bug_on(sbi, type == NO_CHECK_TYPE); sbi 3326 fs/f2fs/segment.c f2fs_bug_on(sbi, !IS_DATASEG(type)); sbi 3327 fs/f2fs/segment.c curseg = CURSEG_I(sbi, type); sbi 3338 fs/f2fs/segment.c change_curseg(sbi, type); sbi 3341 fs/f2fs/segment.c curseg->next_blkoff = GET_BLKOFF_FROM_SEG0(sbi, new_blkaddr); sbi 3342 fs/f2fs/segment.c __add_sum_entry(sbi, type, sum); sbi 3345 fs/f2fs/segment.c update_sit_entry(sbi, new_blkaddr, 1); sbi 3346 fs/f2fs/segment.c if (GET_SEGNO(sbi, old_blkaddr) != NULL_SEGNO) { sbi 3347 fs/f2fs/segment.c invalidate_mapping_pages(META_MAPPING(sbi), sbi 3349 fs/f2fs/segment.c update_sit_entry(sbi, old_blkaddr, -1); sbi 3352 fs/f2fs/segment.c locate_dirty_segment(sbi, GET_SEGNO(sbi, old_blkaddr)); sbi 3353 fs/f2fs/segment.c locate_dirty_segment(sbi, GET_SEGNO(sbi, new_blkaddr)); sbi 3355 fs/f2fs/segment.c locate_dirty_segment(sbi, old_cursegno); sbi 3360 fs/f2fs/segment.c change_curseg(sbi, type); sbi 3367 fs/f2fs/segment.c up_write(&SM_I(sbi)->curseg_lock); sbi 3370 fs/f2fs/segment.c void f2fs_replace_block(struct f2fs_sb_info *sbi, struct dnode_of_data *dn, sbi 3379 fs/f2fs/segment.c f2fs_do_replace_block(sbi, &sum, old_addr, new_addr, sbi 3389 fs/f2fs/segment.c struct f2fs_sb_info *sbi = F2FS_P_SB(page); sbi 3391 fs/f2fs/segment.c f2fs_submit_merged_write_cond(sbi, NULL, page, 0, type); sbi 3394 fs/f2fs/segment.c f2fs_bug_on(sbi, locked && PageWriteback(page)); sbi 3403 fs/f2fs/segment.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 3412 fs/f2fs/segment.c cpage = find_lock_page(META_MAPPING(sbi), blkaddr); sbi 3428 fs/f2fs/segment.c static int read_compacted_summaries(struct f2fs_sb_info *sbi) sbi 3430 fs/f2fs/segment.c struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); sbi 3437 fs/f2fs/segment.c start = start_sum_block(sbi); sbi 3439 fs/f2fs/segment.c page = f2fs_get_meta_page(sbi, start++); sbi 3445 fs/f2fs/segment.c seg_i = CURSEG_I(sbi, CURSEG_HOT_DATA); sbi 3449 fs/f2fs/segment.c seg_i = CURSEG_I(sbi, CURSEG_COLD_DATA); sbi 3458 fs/f2fs/segment.c seg_i = CURSEG_I(sbi, i); sbi 3462 fs/f2fs/segment.c reset_curseg(sbi, i, 0); sbi 3467 fs/f2fs/segment.c blk_off = sbi->blocks_per_seg; sbi 3481 fs/f2fs/segment.c page = f2fs_get_meta_page(sbi, start++); sbi 3492 fs/f2fs/segment.c static int read_normal_summaries(struct f2fs_sb_info *sbi, int type) sbi 3494 fs/f2fs/segment.c struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); sbi 3508 fs/f2fs/segment.c if (__exist_node_summaries(sbi)) sbi 3509 fs/f2fs/segment.c blk_addr = sum_blk_addr(sbi, NR_CURSEG_TYPE, type); sbi 3511 fs/f2fs/segment.c blk_addr = sum_blk_addr(sbi, NR_CURSEG_DATA_TYPE, type); sbi 3517 fs/f2fs/segment.c if (__exist_node_summaries(sbi)) sbi 3518 fs/f2fs/segment.c blk_addr = sum_blk_addr(sbi, NR_CURSEG_NODE_TYPE, sbi 3521 fs/f2fs/segment.c blk_addr = GET_SUM_BLOCK(sbi, segno); sbi 3524 fs/f2fs/segment.c new = f2fs_get_meta_page(sbi, blk_addr); sbi 3530 fs/f2fs/segment.c if (__exist_node_summaries(sbi)) { sbi 3533 fs/f2fs/segment.c for (i = 0; i < sbi->blocks_per_seg; i++, ns++) { sbi 3538 fs/f2fs/segment.c err = f2fs_restore_node_summary(sbi, segno, sum); sbi 3545 fs/f2fs/segment.c curseg = CURSEG_I(sbi, type); sbi 3556 fs/f2fs/segment.c reset_curseg(sbi, type, 0); sbi 3565 fs/f2fs/segment.c static int restore_curseg_summaries(struct f2fs_sb_info *sbi) sbi 3567 fs/f2fs/segment.c struct f2fs_journal *sit_j = CURSEG_I(sbi, CURSEG_COLD_DATA)->journal; sbi 3568 fs/f2fs/segment.c struct f2fs_journal *nat_j = CURSEG_I(sbi, CURSEG_HOT_DATA)->journal; sbi 3572 fs/f2fs/segment.c if (is_set_ckpt_flags(sbi, CP_COMPACT_SUM_FLAG)) { sbi 3573 fs/f2fs/segment.c int npages = f2fs_npages_for_summary_flush(sbi, true); sbi 3576 fs/f2fs/segment.c f2fs_ra_meta_pages(sbi, start_sum_block(sbi), npages, sbi 3580 fs/f2fs/segment.c err = read_compacted_summaries(sbi); sbi 3586 fs/f2fs/segment.c if (__exist_node_summaries(sbi)) sbi 3587 fs/f2fs/segment.c f2fs_ra_meta_pages(sbi, sum_blk_addr(sbi, NR_CURSEG_TYPE, type), sbi 3591 fs/f2fs/segment.c err = read_normal_summaries(sbi, type); sbi 3599 fs/f2fs/segment.c f2fs_err(sbi, "invalid journal entries nats %u sits %u\n", sbi 3607 fs/f2fs/segment.c static void write_compacted_summaries(struct f2fs_sb_info *sbi, block_t blkaddr) sbi 3616 fs/f2fs/segment.c page = f2fs_grab_meta_page(sbi, blkaddr++); sbi 3621 fs/f2fs/segment.c seg_i = CURSEG_I(sbi, CURSEG_HOT_DATA); sbi 3626 fs/f2fs/segment.c seg_i = CURSEG_I(sbi, CURSEG_COLD_DATA); sbi 3633 fs/f2fs/segment.c seg_i = CURSEG_I(sbi, i); sbi 3634 fs/f2fs/segment.c if (sbi->ckpt->alloc_type[i] == SSR) sbi 3635 fs/f2fs/segment.c blkoff = sbi->blocks_per_seg; sbi 3637 fs/f2fs/segment.c blkoff = curseg_blkoff(sbi, i); sbi 3641 fs/f2fs/segment.c page = f2fs_grab_meta_page(sbi, blkaddr++); sbi 3665 fs/f2fs/segment.c static void write_normal_summaries(struct f2fs_sb_info *sbi, sbi 3675 fs/f2fs/segment.c write_current_sum_page(sbi, i, blkaddr + (i - type)); sbi 3678 fs/f2fs/segment.c void f2fs_write_data_summaries(struct f2fs_sb_info *sbi, block_t start_blk) sbi 3680 fs/f2fs/segment.c if (is_set_ckpt_flags(sbi, CP_COMPACT_SUM_FLAG)) sbi 3681 fs/f2fs/segment.c write_compacted_summaries(sbi, start_blk); sbi 3683 fs/f2fs/segment.c write_normal_summaries(sbi, start_blk, CURSEG_HOT_DATA); sbi 3686 fs/f2fs/segment.c void f2fs_write_node_summaries(struct f2fs_sb_info *sbi, block_t start_blk) sbi 3688 fs/f2fs/segment.c write_normal_summaries(sbi, start_blk, CURSEG_HOT_NODE); sbi 3713 fs/f2fs/segment.c static struct page *get_current_sit_page(struct f2fs_sb_info *sbi, sbi 3716 fs/f2fs/segment.c return f2fs_get_meta_page_nofail(sbi, current_sit_addr(sbi, segno)); sbi 3719 fs/f2fs/segment.c static struct page *get_next_sit_page(struct f2fs_sb_info *sbi, sbi 3722 fs/f2fs/segment.c struct sit_info *sit_i = SIT_I(sbi); sbi 3726 fs/f2fs/segment.c src_off = current_sit_addr(sbi, start); sbi 3727 fs/f2fs/segment.c dst_off = next_sit_addr(sbi, src_off); sbi 3729 fs/f2fs/segment.c page = f2fs_grab_meta_page(sbi, dst_off); sbi 3730 fs/f2fs/segment.c seg_info_to_sit_page(sbi, page, start); sbi 3789 fs/f2fs/segment.c static void add_sits_in_set(struct f2fs_sb_info *sbi) sbi 3791 fs/f2fs/segment.c struct f2fs_sm_info *sm_info = SM_I(sbi); sbi 3793 fs/f2fs/segment.c unsigned long *bitmap = SIT_I(sbi)->dirty_sentries_bitmap; sbi 3796 fs/f2fs/segment.c for_each_set_bit(segno, bitmap, MAIN_SEGS(sbi)) sbi 3800 fs/f2fs/segment.c static void remove_sits_in_journal(struct f2fs_sb_info *sbi) sbi 3802 fs/f2fs/segment.c struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_COLD_DATA); sbi 3812 fs/f2fs/segment.c dirtied = __mark_sit_entry_dirty(sbi, segno); sbi 3815 fs/f2fs/segment.c add_sit_entry(segno, &SM_I(sbi)->sit_entry_set); sbi 3825 fs/f2fs/segment.c void f2fs_flush_sit_entries(struct f2fs_sb_info *sbi, struct cp_control *cpc) sbi 3827 fs/f2fs/segment.c struct sit_info *sit_i = SIT_I(sbi); sbi 3829 fs/f2fs/segment.c struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_COLD_DATA); sbi 3832 fs/f2fs/segment.c struct list_head *head = &SM_I(sbi)->sit_entry_set; sbi 3833 fs/f2fs/segment.c bool to_journal = !is_sbi_flag_set(sbi, SBI_IS_RESIZEFS); sbi 3845 fs/f2fs/segment.c add_sits_in_set(sbi); sbi 3854 fs/f2fs/segment.c remove_sits_in_journal(sbi); sbi 3866 fs/f2fs/segment.c (unsigned long)MAIN_SEGS(sbi)); sbi 3876 fs/f2fs/segment.c page = get_next_sit_page(sbi, start_segno); sbi 3884 fs/f2fs/segment.c se = get_seg_entry(sbi, segno); sbi 3888 fs/f2fs/segment.c f2fs_bug_on(sbi, 1); sbi 3894 fs/f2fs/segment.c add_discard_addrs(sbi, cpc, false); sbi 3900 fs/f2fs/segment.c f2fs_bug_on(sbi, offset < 0); sbi 3905 fs/f2fs/segment.c check_block_count(sbi, segno, sbi 3911 fs/f2fs/segment.c check_block_count(sbi, segno, sbi 3925 fs/f2fs/segment.c f2fs_bug_on(sbi, ses->entry_cnt); sbi 3929 fs/f2fs/segment.c f2fs_bug_on(sbi, !list_empty(head)); sbi 3930 fs/f2fs/segment.c f2fs_bug_on(sbi, sit_i->dirty_sentries); sbi 3936 fs/f2fs/segment.c add_discard_addrs(sbi, cpc, false); sbi 3942 fs/f2fs/segment.c set_prefree_as_free_segments(sbi); sbi 3945 fs/f2fs/segment.c static int build_sit_info(struct f2fs_sb_info *sbi) sbi 3947 fs/f2fs/segment.c struct f2fs_super_block *raw_super = F2FS_RAW_SUPER(sbi); sbi 3954 fs/f2fs/segment.c sit_i = f2fs_kzalloc(sbi, sizeof(struct sit_info), GFP_KERNEL); sbi 3958 fs/f2fs/segment.c SM_I(sbi)->sit_info = sit_i; sbi 3961 fs/f2fs/segment.c f2fs_kvzalloc(sbi, array_size(sizeof(struct seg_entry), sbi 3962 fs/f2fs/segment.c MAIN_SEGS(sbi)), sbi 3967 fs/f2fs/segment.c main_bitmap_size = f2fs_bitmap_size(MAIN_SEGS(sbi)); sbi 3968 fs/f2fs/segment.c sit_i->dirty_sentries_bitmap = f2fs_kvzalloc(sbi, main_bitmap_size, sbi 3974 fs/f2fs/segment.c bitmap_size = MAIN_SEGS(sbi) * SIT_VBLOCK_MAP_SIZE * 4; sbi 3976 fs/f2fs/segment.c bitmap_size = MAIN_SEGS(sbi) * SIT_VBLOCK_MAP_SIZE * 3; sbi 3978 fs/f2fs/segment.c sit_i->bitmap = f2fs_kvzalloc(sbi, bitmap_size, GFP_KERNEL); sbi 3984 fs/f2fs/segment.c for (start = 0; start < MAIN_SEGS(sbi); start++) { sbi 4000 fs/f2fs/segment.c sit_i->tmp_map = f2fs_kzalloc(sbi, SIT_VBLOCK_MAP_SIZE, GFP_KERNEL); sbi 4004 fs/f2fs/segment.c if (__is_large_section(sbi)) { sbi 4006 fs/f2fs/segment.c f2fs_kvzalloc(sbi, array_size(sizeof(struct sec_entry), sbi 4007 fs/f2fs/segment.c MAIN_SECS(sbi)), sbi 4017 fs/f2fs/segment.c sit_bitmap_size = __bitmap_size(sbi, SIT_BITMAP); sbi 4018 fs/f2fs/segment.c src_bitmap = __bitmap_ptr(sbi, SIT_BITMAP); sbi 4030 fs/f2fs/segment.c sit_i->invalid_segmap = f2fs_kvzalloc(sbi, sbi 4040 fs/f2fs/segment.c sit_i->sit_blocks = sit_segs << sbi->log_blocks_per_seg; sbi 4045 fs/f2fs/segment.c sit_i->elapsed_time = le64_to_cpu(sbi->ckpt->elapsed_time); sbi 4051 fs/f2fs/segment.c static int build_free_segmap(struct f2fs_sb_info *sbi) sbi 4057 fs/f2fs/segment.c free_i = f2fs_kzalloc(sbi, sizeof(struct free_segmap_info), GFP_KERNEL); sbi 4061 fs/f2fs/segment.c SM_I(sbi)->free_info = free_i; sbi 4063 fs/f2fs/segment.c bitmap_size = f2fs_bitmap_size(MAIN_SEGS(sbi)); sbi 4064 fs/f2fs/segment.c free_i->free_segmap = f2fs_kvmalloc(sbi, bitmap_size, GFP_KERNEL); sbi 4068 fs/f2fs/segment.c sec_bitmap_size = f2fs_bitmap_size(MAIN_SECS(sbi)); sbi 4069 fs/f2fs/segment.c free_i->free_secmap = f2fs_kvmalloc(sbi, sec_bitmap_size, GFP_KERNEL); sbi 4078 fs/f2fs/segment.c free_i->start_segno = GET_SEGNO_FROM_SEG0(sbi, MAIN_BLKADDR(sbi)); sbi 4085 fs/f2fs/segment.c static int build_curseg(struct f2fs_sb_info *sbi) sbi 4090 fs/f2fs/segment.c array = f2fs_kzalloc(sbi, array_size(NR_CURSEG_TYPE, sizeof(*array)), sbi 4095 fs/f2fs/segment.c SM_I(sbi)->curseg_array = array; sbi 4099 fs/f2fs/segment.c array[i].sum_blk = f2fs_kzalloc(sbi, PAGE_SIZE, GFP_KERNEL); sbi 4103 fs/f2fs/segment.c array[i].journal = f2fs_kzalloc(sbi, sbi 4110 fs/f2fs/segment.c return restore_curseg_summaries(sbi); sbi 4113 fs/f2fs/segment.c static int build_sit_entries(struct f2fs_sb_info *sbi) sbi 4115 fs/f2fs/segment.c struct sit_info *sit_i = SIT_I(sbi); sbi 4116 fs/f2fs/segment.c struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_COLD_DATA); sbi 4120 fs/f2fs/segment.c int sit_blk_cnt = SIT_BLK_CNT(sbi); sbi 4127 fs/f2fs/segment.c readed = f2fs_ra_meta_pages(sbi, start_blk, BIO_MAX_PAGES, sbi 4133 fs/f2fs/segment.c for (; start < end && start < MAIN_SEGS(sbi); start++) { sbi 4138 fs/f2fs/segment.c page = get_current_sit_page(sbi, start); sbi 4145 fs/f2fs/segment.c err = check_block_count(sbi, start, &sit); sbi 4153 fs/f2fs/segment.c if (is_set_ckpt_flags(sbi, CP_TRIMMED_FLAG)) { sbi 4160 fs/f2fs/segment.c sbi->discard_blks += sbi 4161 fs/f2fs/segment.c sbi->blocks_per_seg - sbi 4165 fs/f2fs/segment.c if (__is_large_section(sbi)) sbi 4166 fs/f2fs/segment.c get_sec_entry(sbi, start)->valid_blocks += sbi 4177 fs/f2fs/segment.c if (start >= MAIN_SEGS(sbi)) { sbi 4178 fs/f2fs/segment.c f2fs_err(sbi, "Wrong journal entry on segno %u", sbi 4191 fs/f2fs/segment.c err = check_block_count(sbi, start, &sit); sbi 4198 fs/f2fs/segment.c if (is_set_ckpt_flags(sbi, CP_TRIMMED_FLAG)) { sbi 4203 fs/f2fs/segment.c sbi->discard_blks += old_valid_blocks; sbi 4204 fs/f2fs/segment.c sbi->discard_blks -= se->valid_blocks; sbi 4207 fs/f2fs/segment.c if (__is_large_section(sbi)) { sbi 4208 fs/f2fs/segment.c get_sec_entry(sbi, start)->valid_blocks += sbi 4210 fs/f2fs/segment.c get_sec_entry(sbi, start)->valid_blocks -= sbi 4216 fs/f2fs/segment.c if (!err && total_node_blocks != valid_node_count(sbi)) { sbi 4217 fs/f2fs/segment.c f2fs_err(sbi, "SIT is corrupted node# %u vs %u", sbi 4218 fs/f2fs/segment.c total_node_blocks, valid_node_count(sbi)); sbi 4225 fs/f2fs/segment.c static void init_free_segmap(struct f2fs_sb_info *sbi) sbi 4230 fs/f2fs/segment.c for (start = 0; start < MAIN_SEGS(sbi); start++) { sbi 4231 fs/f2fs/segment.c struct seg_entry *sentry = get_seg_entry(sbi, start); sbi 4233 fs/f2fs/segment.c __set_free(sbi, start); sbi 4235 fs/f2fs/segment.c SIT_I(sbi)->written_valid_blocks += sbi 4241 fs/f2fs/segment.c struct curseg_info *curseg_t = CURSEG_I(sbi, type); sbi 4242 fs/f2fs/segment.c __set_test_and_inuse(sbi, curseg_t->segno); sbi 4246 fs/f2fs/segment.c static void init_dirty_segmap(struct f2fs_sb_info *sbi) sbi 4248 fs/f2fs/segment.c struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); sbi 4249 fs/f2fs/segment.c struct free_segmap_info *free_i = FREE_I(sbi); sbi 4255 fs/f2fs/segment.c segno = find_next_inuse(free_i, MAIN_SEGS(sbi), offset); sbi 4256 fs/f2fs/segment.c if (segno >= MAIN_SEGS(sbi)) sbi 4259 fs/f2fs/segment.c valid_blocks = get_valid_blocks(sbi, segno, false); sbi 4260 fs/f2fs/segment.c if (valid_blocks == sbi->blocks_per_seg || !valid_blocks) sbi 4262 fs/f2fs/segment.c if (valid_blocks > sbi->blocks_per_seg) { sbi 4263 fs/f2fs/segment.c f2fs_bug_on(sbi, 1); sbi 4267 fs/f2fs/segment.c __locate_dirty_segment(sbi, segno, DIRTY); sbi 4272 fs/f2fs/segment.c static int init_victim_secmap(struct f2fs_sb_info *sbi) sbi 4274 fs/f2fs/segment.c struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); sbi 4275 fs/f2fs/segment.c unsigned int bitmap_size = f2fs_bitmap_size(MAIN_SECS(sbi)); sbi 4277 fs/f2fs/segment.c dirty_i->victim_secmap = f2fs_kvzalloc(sbi, bitmap_size, GFP_KERNEL); sbi 4283 fs/f2fs/segment.c static int build_dirty_segmap(struct f2fs_sb_info *sbi) sbi 4289 fs/f2fs/segment.c dirty_i = f2fs_kzalloc(sbi, sizeof(struct dirty_seglist_info), sbi 4294 fs/f2fs/segment.c SM_I(sbi)->dirty_info = dirty_i; sbi 4297 fs/f2fs/segment.c bitmap_size = f2fs_bitmap_size(MAIN_SEGS(sbi)); sbi 4300 fs/f2fs/segment.c dirty_i->dirty_segmap[i] = f2fs_kvzalloc(sbi, bitmap_size, sbi 4306 fs/f2fs/segment.c init_dirty_segmap(sbi); sbi 4307 fs/f2fs/segment.c return init_victim_secmap(sbi); sbi 4310 fs/f2fs/segment.c static int sanity_check_curseg(struct f2fs_sb_info *sbi) sbi 4319 fs/f2fs/segment.c struct curseg_info *curseg = CURSEG_I(sbi, i); sbi 4320 fs/f2fs/segment.c struct seg_entry *se = get_seg_entry(sbi, curseg->segno); sbi 4329 fs/f2fs/segment.c for (blkofs += 1; blkofs < sbi->blocks_per_seg; blkofs++) { sbi 4333 fs/f2fs/segment.c f2fs_err(sbi, sbi 4346 fs/f2fs/segment.c static void init_min_max_mtime(struct f2fs_sb_info *sbi) sbi 4348 fs/f2fs/segment.c struct sit_info *sit_i = SIT_I(sbi); sbi 4355 fs/f2fs/segment.c for (segno = 0; segno < MAIN_SEGS(sbi); segno += sbi->segs_per_sec) { sbi 4359 fs/f2fs/segment.c for (i = 0; i < sbi->segs_per_sec; i++) sbi 4360 fs/f2fs/segment.c mtime += get_seg_entry(sbi, segno + i)->mtime; sbi 4362 fs/f2fs/segment.c mtime = div_u64(mtime, sbi->segs_per_sec); sbi 4367 fs/f2fs/segment.c sit_i->max_mtime = get_mtime(sbi, false); sbi 4371 fs/f2fs/segment.c int f2fs_build_segment_manager(struct f2fs_sb_info *sbi) sbi 4373 fs/f2fs/segment.c struct f2fs_super_block *raw_super = F2FS_RAW_SUPER(sbi); sbi 4374 fs/f2fs/segment.c struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); sbi 4378 fs/f2fs/segment.c sm_info = f2fs_kzalloc(sbi, sizeof(struct f2fs_sm_info), GFP_KERNEL); sbi 4383 fs/f2fs/segment.c sbi->sm_info = sm_info; sbi 4396 fs/f2fs/segment.c if (!test_opt(sbi, LFS)) sbi 4400 fs/f2fs/segment.c sm_info->min_seq_blocks = sbi->blocks_per_seg * sbi->segs_per_sec; sbi 4402 fs/f2fs/segment.c sm_info->min_ssr_sections = reserved_sections(sbi); sbi 4408 fs/f2fs/segment.c if (!f2fs_readonly(sbi->sb)) { sbi 4409 fs/f2fs/segment.c err = f2fs_create_flush_cmd_control(sbi); sbi 4414 fs/f2fs/segment.c err = create_discard_cmd_control(sbi); sbi 4418 fs/f2fs/segment.c err = build_sit_info(sbi); sbi 4421 fs/f2fs/segment.c err = build_free_segmap(sbi); sbi 4424 fs/f2fs/segment.c err = build_curseg(sbi); sbi 4429 fs/f2fs/segment.c err = build_sit_entries(sbi); sbi 4433 fs/f2fs/segment.c init_free_segmap(sbi); sbi 4434 fs/f2fs/segment.c err = build_dirty_segmap(sbi); sbi 4438 fs/f2fs/segment.c err = sanity_check_curseg(sbi); sbi 4442 fs/f2fs/segment.c init_min_max_mtime(sbi); sbi 4446 fs/f2fs/segment.c static void discard_dirty_segmap(struct f2fs_sb_info *sbi, sbi 4449 fs/f2fs/segment.c struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); sbi 4457 fs/f2fs/segment.c static void destroy_victim_secmap(struct f2fs_sb_info *sbi) sbi 4459 fs/f2fs/segment.c struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); sbi 4463 fs/f2fs/segment.c static void destroy_dirty_segmap(struct f2fs_sb_info *sbi) sbi 4465 fs/f2fs/segment.c struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); sbi 4473 fs/f2fs/segment.c discard_dirty_segmap(sbi, i); sbi 4475 fs/f2fs/segment.c destroy_victim_secmap(sbi); sbi 4476 fs/f2fs/segment.c SM_I(sbi)->dirty_info = NULL; sbi 4480 fs/f2fs/segment.c static void destroy_curseg(struct f2fs_sb_info *sbi) sbi 4482 fs/f2fs/segment.c struct curseg_info *array = SM_I(sbi)->curseg_array; sbi 4487 fs/f2fs/segment.c SM_I(sbi)->curseg_array = NULL; sbi 4495 fs/f2fs/segment.c static void destroy_free_segmap(struct f2fs_sb_info *sbi) sbi 4497 fs/f2fs/segment.c struct free_segmap_info *free_i = SM_I(sbi)->free_info; sbi 4500 fs/f2fs/segment.c SM_I(sbi)->free_info = NULL; sbi 4506 fs/f2fs/segment.c static void destroy_sit_info(struct f2fs_sb_info *sbi) sbi 4508 fs/f2fs/segment.c struct sit_info *sit_i = SIT_I(sbi); sbi 4521 fs/f2fs/segment.c SM_I(sbi)->sit_info = NULL; sbi 4530 fs/f2fs/segment.c void f2fs_destroy_segment_manager(struct f2fs_sb_info *sbi) sbi 4532 fs/f2fs/segment.c struct f2fs_sm_info *sm_info = SM_I(sbi); sbi 4536 fs/f2fs/segment.c f2fs_destroy_flush_cmd_control(sbi, true); sbi 4537 fs/f2fs/segment.c destroy_discard_cmd_control(sbi); sbi 4538 fs/f2fs/segment.c destroy_dirty_segmap(sbi); sbi 4539 fs/f2fs/segment.c destroy_curseg(sbi); sbi 4540 fs/f2fs/segment.c destroy_free_segmap(sbi); sbi 4541 fs/f2fs/segment.c destroy_sit_info(sbi); sbi 4542 fs/f2fs/segment.c sbi->sm_info = NULL; sbi 31 fs/f2fs/segment.h #define IS_CURSEG(sbi, seg) \ sbi 32 fs/f2fs/segment.h (((seg) == CURSEG_I(sbi, CURSEG_HOT_DATA)->segno) || \ sbi 33 fs/f2fs/segment.h ((seg) == CURSEG_I(sbi, CURSEG_WARM_DATA)->segno) || \ sbi 34 fs/f2fs/segment.h ((seg) == CURSEG_I(sbi, CURSEG_COLD_DATA)->segno) || \ sbi 35 fs/f2fs/segment.h ((seg) == CURSEG_I(sbi, CURSEG_HOT_NODE)->segno) || \ sbi 36 fs/f2fs/segment.h ((seg) == CURSEG_I(sbi, CURSEG_WARM_NODE)->segno) || \ sbi 37 fs/f2fs/segment.h ((seg) == CURSEG_I(sbi, CURSEG_COLD_NODE)->segno)) sbi 39 fs/f2fs/segment.h #define IS_CURSEC(sbi, secno) \ sbi 40 fs/f2fs/segment.h (((secno) == CURSEG_I(sbi, CURSEG_HOT_DATA)->segno / \ sbi 41 fs/f2fs/segment.h (sbi)->segs_per_sec) || \ sbi 42 fs/f2fs/segment.h ((secno) == CURSEG_I(sbi, CURSEG_WARM_DATA)->segno / \ sbi 43 fs/f2fs/segment.h (sbi)->segs_per_sec) || \ sbi 44 fs/f2fs/segment.h ((secno) == CURSEG_I(sbi, CURSEG_COLD_DATA)->segno / \ sbi 45 fs/f2fs/segment.h (sbi)->segs_per_sec) || \ sbi 46 fs/f2fs/segment.h ((secno) == CURSEG_I(sbi, CURSEG_HOT_NODE)->segno / \ sbi 47 fs/f2fs/segment.h (sbi)->segs_per_sec) || \ sbi 48 fs/f2fs/segment.h ((secno) == CURSEG_I(sbi, CURSEG_WARM_NODE)->segno / \ sbi 49 fs/f2fs/segment.h (sbi)->segs_per_sec) || \ sbi 50 fs/f2fs/segment.h ((secno) == CURSEG_I(sbi, CURSEG_COLD_NODE)->segno / \ sbi 51 fs/f2fs/segment.h (sbi)->segs_per_sec)) \ sbi 53 fs/f2fs/segment.h #define MAIN_BLKADDR(sbi) \ sbi 54 fs/f2fs/segment.h (SM_I(sbi) ? SM_I(sbi)->main_blkaddr : \ sbi 55 fs/f2fs/segment.h le32_to_cpu(F2FS_RAW_SUPER(sbi)->main_blkaddr)) sbi 56 fs/f2fs/segment.h #define SEG0_BLKADDR(sbi) \ sbi 57 fs/f2fs/segment.h (SM_I(sbi) ? SM_I(sbi)->seg0_blkaddr : \ sbi 58 fs/f2fs/segment.h le32_to_cpu(F2FS_RAW_SUPER(sbi)->segment0_blkaddr)) sbi 60 fs/f2fs/segment.h #define MAIN_SEGS(sbi) (SM_I(sbi)->main_segments) sbi 61 fs/f2fs/segment.h #define MAIN_SECS(sbi) ((sbi)->total_sections) sbi 63 fs/f2fs/segment.h #define TOTAL_SEGS(sbi) \ sbi 64 fs/f2fs/segment.h (SM_I(sbi) ? SM_I(sbi)->segment_count : \ sbi 65 fs/f2fs/segment.h le32_to_cpu(F2FS_RAW_SUPER(sbi)->segment_count)) sbi 66 fs/f2fs/segment.h #define TOTAL_BLKS(sbi) (TOTAL_SEGS(sbi) << (sbi)->log_blocks_per_seg) sbi 68 fs/f2fs/segment.h #define MAX_BLKADDR(sbi) (SEG0_BLKADDR(sbi) + TOTAL_BLKS(sbi)) sbi 69 fs/f2fs/segment.h #define SEGMENT_SIZE(sbi) (1ULL << ((sbi)->log_blocksize + \ sbi 70 fs/f2fs/segment.h (sbi)->log_blocks_per_seg)) sbi 72 fs/f2fs/segment.h #define START_BLOCK(sbi, segno) (SEG0_BLKADDR(sbi) + \ sbi 73 fs/f2fs/segment.h (GET_R2L_SEGNO(FREE_I(sbi), segno) << (sbi)->log_blocks_per_seg)) sbi 75 fs/f2fs/segment.h #define NEXT_FREE_BLKADDR(sbi, curseg) \ sbi 76 fs/f2fs/segment.h (START_BLOCK(sbi, (curseg)->segno) + (curseg)->next_blkoff) sbi 78 fs/f2fs/segment.h #define GET_SEGOFF_FROM_SEG0(sbi, blk_addr) ((blk_addr) - SEG0_BLKADDR(sbi)) sbi 79 fs/f2fs/segment.h #define GET_SEGNO_FROM_SEG0(sbi, blk_addr) \ sbi 80 fs/f2fs/segment.h (GET_SEGOFF_FROM_SEG0(sbi, blk_addr) >> (sbi)->log_blocks_per_seg) sbi 81 fs/f2fs/segment.h #define GET_BLKOFF_FROM_SEG0(sbi, blk_addr) \ sbi 82 fs/f2fs/segment.h (GET_SEGOFF_FROM_SEG0(sbi, blk_addr) & ((sbi)->blocks_per_seg - 1)) sbi 84 fs/f2fs/segment.h #define GET_SEGNO(sbi, blk_addr) \ sbi 86 fs/f2fs/segment.h NULL_SEGNO : GET_L2R_SEGNO(FREE_I(sbi), \ sbi 87 fs/f2fs/segment.h GET_SEGNO_FROM_SEG0(sbi, blk_addr))) sbi 88 fs/f2fs/segment.h #define BLKS_PER_SEC(sbi) \ sbi 89 fs/f2fs/segment.h ((sbi)->segs_per_sec * (sbi)->blocks_per_seg) sbi 90 fs/f2fs/segment.h #define GET_SEC_FROM_SEG(sbi, segno) \ sbi 91 fs/f2fs/segment.h ((segno) / (sbi)->segs_per_sec) sbi 92 fs/f2fs/segment.h #define GET_SEG_FROM_SEC(sbi, secno) \ sbi 93 fs/f2fs/segment.h ((secno) * (sbi)->segs_per_sec) sbi 94 fs/f2fs/segment.h #define GET_ZONE_FROM_SEC(sbi, secno) \ sbi 95 fs/f2fs/segment.h ((secno) / (sbi)->secs_per_zone) sbi 96 fs/f2fs/segment.h #define GET_ZONE_FROM_SEG(sbi, segno) \ sbi 97 fs/f2fs/segment.h GET_ZONE_FROM_SEC(sbi, GET_SEC_FROM_SEG(sbi, segno)) sbi 99 fs/f2fs/segment.h #define GET_SUM_BLOCK(sbi, segno) \ sbi 100 fs/f2fs/segment.h ((sbi)->sm_info->ssa_blkaddr + (segno)) sbi 111 fs/f2fs/segment.h #define SIT_BLK_CNT(sbi) \ sbi 112 fs/f2fs/segment.h DIV_ROUND_UP(MAIN_SEGS(sbi), SIT_ENTRY_PER_BLOCK) sbi 314 fs/f2fs/segment.h static inline struct curseg_info *CURSEG_I(struct f2fs_sb_info *sbi, int type) sbi 316 fs/f2fs/segment.h return (struct curseg_info *)(SM_I(sbi)->curseg_array + type); sbi 319 fs/f2fs/segment.h static inline struct seg_entry *get_seg_entry(struct f2fs_sb_info *sbi, sbi 322 fs/f2fs/segment.h struct sit_info *sit_i = SIT_I(sbi); sbi 326 fs/f2fs/segment.h static inline struct sec_entry *get_sec_entry(struct f2fs_sb_info *sbi, sbi 329 fs/f2fs/segment.h struct sit_info *sit_i = SIT_I(sbi); sbi 330 fs/f2fs/segment.h return &sit_i->sec_entries[GET_SEC_FROM_SEG(sbi, segno)]; sbi 333 fs/f2fs/segment.h static inline unsigned int get_valid_blocks(struct f2fs_sb_info *sbi, sbi 340 fs/f2fs/segment.h if (use_section && __is_large_section(sbi)) sbi 341 fs/f2fs/segment.h return get_sec_entry(sbi, segno)->valid_blocks; sbi 343 fs/f2fs/segment.h return get_seg_entry(sbi, segno)->valid_blocks; sbi 346 fs/f2fs/segment.h static inline unsigned int get_ckpt_valid_blocks(struct f2fs_sb_info *sbi, sbi 349 fs/f2fs/segment.h return get_seg_entry(sbi, segno)->ckpt_valid_blocks; sbi 376 fs/f2fs/segment.h static inline void seg_info_to_sit_page(struct f2fs_sb_info *sbi, sbi 383 fs/f2fs/segment.h (unsigned long)MAIN_SEGS(sbi)); sbi 390 fs/f2fs/segment.h se = get_seg_entry(sbi, start + i); sbi 414 fs/f2fs/segment.h static inline void __set_free(struct f2fs_sb_info *sbi, unsigned int segno) sbi 416 fs/f2fs/segment.h struct free_segmap_info *free_i = FREE_I(sbi); sbi 417 fs/f2fs/segment.h unsigned int secno = GET_SEC_FROM_SEG(sbi, segno); sbi 418 fs/f2fs/segment.h unsigned int start_segno = GET_SEG_FROM_SEC(sbi, secno); sbi 426 fs/f2fs/segment.h start_segno + sbi->segs_per_sec, start_segno); sbi 427 fs/f2fs/segment.h if (next >= start_segno + sbi->segs_per_sec) { sbi 434 fs/f2fs/segment.h static inline void __set_inuse(struct f2fs_sb_info *sbi, sbi 437 fs/f2fs/segment.h struct free_segmap_info *free_i = FREE_I(sbi); sbi 438 fs/f2fs/segment.h unsigned int secno = GET_SEC_FROM_SEG(sbi, segno); sbi 446 fs/f2fs/segment.h static inline void __set_test_and_free(struct f2fs_sb_info *sbi, sbi 449 fs/f2fs/segment.h struct free_segmap_info *free_i = FREE_I(sbi); sbi 450 fs/f2fs/segment.h unsigned int secno = GET_SEC_FROM_SEG(sbi, segno); sbi 451 fs/f2fs/segment.h unsigned int start_segno = GET_SEG_FROM_SEC(sbi, secno); sbi 458 fs/f2fs/segment.h if (IS_CURSEC(sbi, secno)) sbi 461 fs/f2fs/segment.h start_segno + sbi->segs_per_sec, start_segno); sbi 462 fs/f2fs/segment.h if (next >= start_segno + sbi->segs_per_sec) { sbi 471 fs/f2fs/segment.h static inline void __set_test_and_inuse(struct f2fs_sb_info *sbi, sbi 474 fs/f2fs/segment.h struct free_segmap_info *free_i = FREE_I(sbi); sbi 475 fs/f2fs/segment.h unsigned int secno = GET_SEC_FROM_SEG(sbi, segno); sbi 486 fs/f2fs/segment.h static inline void get_sit_bitmap(struct f2fs_sb_info *sbi, sbi 489 fs/f2fs/segment.h struct sit_info *sit_i = SIT_I(sbi); sbi 494 fs/f2fs/segment.h f2fs_bug_on(sbi, 1); sbi 499 fs/f2fs/segment.h static inline block_t written_block_count(struct f2fs_sb_info *sbi) sbi 501 fs/f2fs/segment.h return SIT_I(sbi)->written_valid_blocks; sbi 504 fs/f2fs/segment.h static inline unsigned int free_segments(struct f2fs_sb_info *sbi) sbi 506 fs/f2fs/segment.h return FREE_I(sbi)->free_segments; sbi 509 fs/f2fs/segment.h static inline int reserved_segments(struct f2fs_sb_info *sbi) sbi 511 fs/f2fs/segment.h return SM_I(sbi)->reserved_segments; sbi 514 fs/f2fs/segment.h static inline unsigned int free_sections(struct f2fs_sb_info *sbi) sbi 516 fs/f2fs/segment.h return FREE_I(sbi)->free_sections; sbi 519 fs/f2fs/segment.h static inline unsigned int prefree_segments(struct f2fs_sb_info *sbi) sbi 521 fs/f2fs/segment.h return DIRTY_I(sbi)->nr_dirty[PRE]; sbi 524 fs/f2fs/segment.h static inline unsigned int dirty_segments(struct f2fs_sb_info *sbi) sbi 526 fs/f2fs/segment.h return DIRTY_I(sbi)->nr_dirty[DIRTY_HOT_DATA] + sbi 527 fs/f2fs/segment.h DIRTY_I(sbi)->nr_dirty[DIRTY_WARM_DATA] + sbi 528 fs/f2fs/segment.h DIRTY_I(sbi)->nr_dirty[DIRTY_COLD_DATA] + sbi 529 fs/f2fs/segment.h DIRTY_I(sbi)->nr_dirty[DIRTY_HOT_NODE] + sbi 530 fs/f2fs/segment.h DIRTY_I(sbi)->nr_dirty[DIRTY_WARM_NODE] + sbi 531 fs/f2fs/segment.h DIRTY_I(sbi)->nr_dirty[DIRTY_COLD_NODE]; sbi 534 fs/f2fs/segment.h static inline int overprovision_segments(struct f2fs_sb_info *sbi) sbi 536 fs/f2fs/segment.h return SM_I(sbi)->ovp_segments; sbi 539 fs/f2fs/segment.h static inline int reserved_sections(struct f2fs_sb_info *sbi) sbi 541 fs/f2fs/segment.h return GET_SEC_FROM_SEG(sbi, (unsigned int)reserved_segments(sbi)); sbi 544 fs/f2fs/segment.h static inline bool has_curseg_enough_space(struct f2fs_sb_info *sbi) sbi 546 fs/f2fs/segment.h unsigned int node_blocks = get_pages(sbi, F2FS_DIRTY_NODES) + sbi 547 fs/f2fs/segment.h get_pages(sbi, F2FS_DIRTY_DENTS); sbi 548 fs/f2fs/segment.h unsigned int dent_blocks = get_pages(sbi, F2FS_DIRTY_DENTS); sbi 554 fs/f2fs/segment.h segno = CURSEG_I(sbi, i)->segno; sbi 555 fs/f2fs/segment.h left_blocks = sbi->blocks_per_seg - sbi 556 fs/f2fs/segment.h get_seg_entry(sbi, segno)->ckpt_valid_blocks; sbi 563 fs/f2fs/segment.h segno = CURSEG_I(sbi, CURSEG_HOT_DATA)->segno; sbi 564 fs/f2fs/segment.h left_blocks = sbi->blocks_per_seg - sbi 565 fs/f2fs/segment.h get_seg_entry(sbi, segno)->ckpt_valid_blocks; sbi 571 fs/f2fs/segment.h static inline bool has_not_enough_free_secs(struct f2fs_sb_info *sbi, sbi 574 fs/f2fs/segment.h int node_secs = get_blocktype_secs(sbi, F2FS_DIRTY_NODES); sbi 575 fs/f2fs/segment.h int dent_secs = get_blocktype_secs(sbi, F2FS_DIRTY_DENTS); sbi 576 fs/f2fs/segment.h int imeta_secs = get_blocktype_secs(sbi, F2FS_DIRTY_IMETA); sbi 578 fs/f2fs/segment.h if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING))) sbi 581 fs/f2fs/segment.h if (free_sections(sbi) + freed == reserved_sections(sbi) + needed && sbi 582 fs/f2fs/segment.h has_curseg_enough_space(sbi)) sbi 584 fs/f2fs/segment.h return (free_sections(sbi) + freed) <= sbi 586 fs/f2fs/segment.h reserved_sections(sbi) + needed); sbi 589 fs/f2fs/segment.h static inline bool f2fs_is_checkpoint_ready(struct f2fs_sb_info *sbi) sbi 591 fs/f2fs/segment.h if (likely(!is_sbi_flag_set(sbi, SBI_CP_DISABLED))) sbi 593 fs/f2fs/segment.h if (likely(!has_not_enough_free_secs(sbi, 0, 0))) sbi 598 fs/f2fs/segment.h static inline bool excess_prefree_segs(struct f2fs_sb_info *sbi) sbi 600 fs/f2fs/segment.h return prefree_segments(sbi) > SM_I(sbi)->rec_prefree_segments; sbi 603 fs/f2fs/segment.h static inline int utilization(struct f2fs_sb_info *sbi) sbi 605 fs/f2fs/segment.h return div_u64((u64)valid_user_blocks(sbi) * 100, sbi 606 fs/f2fs/segment.h sbi->user_block_count); sbi 638 fs/f2fs/segment.h static inline unsigned int curseg_segno(struct f2fs_sb_info *sbi, sbi 641 fs/f2fs/segment.h struct curseg_info *curseg = CURSEG_I(sbi, type); sbi 645 fs/f2fs/segment.h static inline unsigned char curseg_alloc_type(struct f2fs_sb_info *sbi, sbi 648 fs/f2fs/segment.h struct curseg_info *curseg = CURSEG_I(sbi, type); sbi 652 fs/f2fs/segment.h static inline unsigned short curseg_blkoff(struct f2fs_sb_info *sbi, int type) sbi 654 fs/f2fs/segment.h struct curseg_info *curseg = CURSEG_I(sbi, type); sbi 658 fs/f2fs/segment.h static inline void check_seg_range(struct f2fs_sb_info *sbi, unsigned int segno) sbi 660 fs/f2fs/segment.h f2fs_bug_on(sbi, segno > TOTAL_SEGS(sbi) - 1); sbi 665 fs/f2fs/segment.h struct f2fs_sb_info *sbi = fio->sbi; sbi 668 fs/f2fs/segment.h verify_blkaddr(sbi, fio->old_blkaddr, __is_meta_io(fio) ? sbi 670 fs/f2fs/segment.h verify_blkaddr(sbi, fio->new_blkaddr, __is_meta_io(fio) ? sbi 677 fs/f2fs/segment.h static inline int check_block_count(struct f2fs_sb_info *sbi, sbi 688 fs/f2fs/segment.h sbi->blocks_per_seg, sbi 693 fs/f2fs/segment.h sbi->blocks_per_seg, sbi 697 fs/f2fs/segment.h } while (cur_pos < sbi->blocks_per_seg); sbi 700 fs/f2fs/segment.h f2fs_err(sbi, "Mismatch valid blocks %d vs. %d", sbi 702 fs/f2fs/segment.h set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 707 fs/f2fs/segment.h if (unlikely(GET_SIT_VBLOCKS(raw_sit) > sbi->blocks_per_seg sbi 708 fs/f2fs/segment.h || segno > TOTAL_SEGS(sbi) - 1)) { sbi 709 fs/f2fs/segment.h f2fs_err(sbi, "Wrong valid blocks %d or segno %u", sbi 711 fs/f2fs/segment.h set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 717 fs/f2fs/segment.h static inline pgoff_t current_sit_addr(struct f2fs_sb_info *sbi, sbi 720 fs/f2fs/segment.h struct sit_info *sit_i = SIT_I(sbi); sbi 724 fs/f2fs/segment.h check_seg_range(sbi, start); sbi 729 fs/f2fs/segment.h f2fs_bug_on(sbi, 1); sbi 739 fs/f2fs/segment.h static inline pgoff_t next_sit_addr(struct f2fs_sb_info *sbi, sbi 742 fs/f2fs/segment.h struct sit_info *sit_i = SIT_I(sbi); sbi 762 fs/f2fs/segment.h static inline unsigned long long get_mtime(struct f2fs_sb_info *sbi, sbi 765 fs/f2fs/segment.h struct sit_info *sit_i = SIT_I(sbi); sbi 789 fs/f2fs/segment.h static inline block_t start_sum_block(struct f2fs_sb_info *sbi) sbi 791 fs/f2fs/segment.h return __start_cp_addr(sbi) + sbi 792 fs/f2fs/segment.h le32_to_cpu(F2FS_CKPT(sbi)->cp_pack_start_sum); sbi 795 fs/f2fs/segment.h static inline block_t sum_blk_addr(struct f2fs_sb_info *sbi, int base, int type) sbi 797 fs/f2fs/segment.h return __start_cp_addr(sbi) + sbi 798 fs/f2fs/segment.h le32_to_cpu(F2FS_CKPT(sbi)->cp_pack_total_block_count) sbi 802 fs/f2fs/segment.h static inline bool sec_usage_check(struct f2fs_sb_info *sbi, unsigned int secno) sbi 804 fs/f2fs/segment.h if (IS_CURSEC(sbi, secno) || (sbi->cur_victim_sec == secno)) sbi 816 fs/f2fs/segment.h static inline int nr_pages_to_skip(struct f2fs_sb_info *sbi, int type) sbi 818 fs/f2fs/segment.h if (sbi->sb->s_bdi->wb.dirty_exceeded) sbi 822 fs/f2fs/segment.h return sbi->blocks_per_seg; sbi 824 fs/f2fs/segment.h return 8 * sbi->blocks_per_seg; sbi 834 fs/f2fs/segment.h static inline long nr_pages_to_write(struct f2fs_sb_info *sbi, int type, sbi 851 fs/f2fs/segment.h static inline void wake_up_discard_thread(struct f2fs_sb_info *sbi, bool force) sbi 853 fs/f2fs/segment.h struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; sbi 870 fs/f2fs/segment.h if (!wakeup || !is_idle(sbi, DISCARD_TIME)) sbi 19 fs/f2fs/shrinker.c static unsigned long __count_nat_entries(struct f2fs_sb_info *sbi) sbi 21 fs/f2fs/shrinker.c long count = NM_I(sbi)->nat_cnt - NM_I(sbi)->dirty_nat_cnt; sbi 26 fs/f2fs/shrinker.c static unsigned long __count_free_nids(struct f2fs_sb_info *sbi) sbi 28 fs/f2fs/shrinker.c long count = NM_I(sbi)->nid_cnt[FREE_NID] - MAX_FREE_NIDS; sbi 33 fs/f2fs/shrinker.c static unsigned long __count_extent_cache(struct f2fs_sb_info *sbi) sbi 35 fs/f2fs/shrinker.c return atomic_read(&sbi->total_zombie_tree) + sbi 36 fs/f2fs/shrinker.c atomic_read(&sbi->total_ext_node); sbi 42 fs/f2fs/shrinker.c struct f2fs_sb_info *sbi; sbi 49 fs/f2fs/shrinker.c sbi = list_entry(p, struct f2fs_sb_info, s_list); sbi 52 fs/f2fs/shrinker.c if (!mutex_trylock(&sbi->umount_mutex)) { sbi 59 fs/f2fs/shrinker.c count += __count_extent_cache(sbi); sbi 62 fs/f2fs/shrinker.c count += __count_nat_entries(sbi); sbi 65 fs/f2fs/shrinker.c count += __count_free_nids(sbi); sbi 69 fs/f2fs/shrinker.c mutex_unlock(&sbi->umount_mutex); sbi 79 fs/f2fs/shrinker.c struct f2fs_sb_info *sbi; sbi 90 fs/f2fs/shrinker.c sbi = list_entry(p, struct f2fs_sb_info, s_list); sbi 92 fs/f2fs/shrinker.c if (sbi->shrinker_run_no == run_no) sbi 96 fs/f2fs/shrinker.c if (!mutex_trylock(&sbi->umount_mutex)) { sbi 102 fs/f2fs/shrinker.c sbi->shrinker_run_no = run_no; sbi 105 fs/f2fs/shrinker.c freed += f2fs_shrink_extent_tree(sbi, nr >> 1); sbi 109 fs/f2fs/shrinker.c freed += f2fs_try_to_free_nats(sbi, nr - freed); sbi 113 fs/f2fs/shrinker.c freed += f2fs_try_to_free_nids(sbi, nr - freed); sbi 117 fs/f2fs/shrinker.c list_move_tail(&sbi->s_list, &f2fs_list); sbi 118 fs/f2fs/shrinker.c mutex_unlock(&sbi->umount_mutex); sbi 126 fs/f2fs/shrinker.c void f2fs_join_shrinker(struct f2fs_sb_info *sbi) sbi 129 fs/f2fs/shrinker.c list_add_tail(&sbi->s_list, &f2fs_list); sbi 133 fs/f2fs/shrinker.c void f2fs_leave_shrinker(struct f2fs_sb_info *sbi) sbi 135 fs/f2fs/shrinker.c f2fs_shrink_extent_tree(sbi, __count_extent_cache(sbi)); sbi 138 fs/f2fs/shrinker.c list_del_init(&sbi->s_list); sbi 60 fs/f2fs/super.c void f2fs_build_fault_attr(struct f2fs_sb_info *sbi, unsigned int rate, sbi 63 fs/f2fs/super.c struct f2fs_fault_info *ffi = &F2FS_OPTION(sbi).fault_info; sbi 209 fs/f2fs/super.c void f2fs_printk(struct f2fs_sb_info *sbi, const char *fmt, ...) sbi 221 fs/f2fs/super.c KERN_SOH_ASCII, level, sbi->sb->s_id, &vaf); sbi 256 fs/f2fs/super.c static inline void limit_reserve_root(struct f2fs_sb_info *sbi) sbi 258 fs/f2fs/super.c block_t limit = min((sbi->user_block_count << 1) / 1000, sbi 259 fs/f2fs/super.c sbi->user_block_count - sbi->reserved_blocks); sbi 262 fs/f2fs/super.c if (test_opt(sbi, RESERVE_ROOT) && sbi 263 fs/f2fs/super.c F2FS_OPTION(sbi).root_reserved_blocks > limit) { sbi 264 fs/f2fs/super.c F2FS_OPTION(sbi).root_reserved_blocks = limit; sbi 265 fs/f2fs/super.c f2fs_info(sbi, "Reduce reserved blocks for root = %u", sbi 266 fs/f2fs/super.c F2FS_OPTION(sbi).root_reserved_blocks); sbi 268 fs/f2fs/super.c if (!test_opt(sbi, RESERVE_ROOT) && sbi 269 fs/f2fs/super.c (!uid_eq(F2FS_OPTION(sbi).s_resuid, sbi 271 fs/f2fs/super.c !gid_eq(F2FS_OPTION(sbi).s_resgid, sbi 273 fs/f2fs/super.c f2fs_info(sbi, "Ignore s_resuid=%u, s_resgid=%u w/o reserve_root", sbi 275 fs/f2fs/super.c F2FS_OPTION(sbi).s_resuid), sbi 277 fs/f2fs/super.c F2FS_OPTION(sbi).s_resgid)); sbi 293 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 297 fs/f2fs/super.c if (sb_any_quota_loaded(sb) && !F2FS_OPTION(sbi).s_qf_names[qtype]) { sbi 298 fs/f2fs/super.c f2fs_err(sbi, "Cannot change journaled quota options when quota turned on"); sbi 301 fs/f2fs/super.c if (f2fs_sb_has_quota_ino(sbi)) { sbi 302 fs/f2fs/super.c f2fs_info(sbi, "QUOTA feature is enabled, so ignore qf_name"); sbi 308 fs/f2fs/super.c f2fs_err(sbi, "Not enough memory for storing quotafile name"); sbi 311 fs/f2fs/super.c if (F2FS_OPTION(sbi).s_qf_names[qtype]) { sbi 312 fs/f2fs/super.c if (strcmp(F2FS_OPTION(sbi).s_qf_names[qtype], qname) == 0) sbi 315 fs/f2fs/super.c f2fs_err(sbi, "%s quota file already specified", sbi 320 fs/f2fs/super.c f2fs_err(sbi, "quotafile must be on filesystem root"); sbi 323 fs/f2fs/super.c F2FS_OPTION(sbi).s_qf_names[qtype] = qname; sbi 324 fs/f2fs/super.c set_opt(sbi, QUOTA); sbi 333 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 335 fs/f2fs/super.c if (sb_any_quota_loaded(sb) && F2FS_OPTION(sbi).s_qf_names[qtype]) { sbi 336 fs/f2fs/super.c f2fs_err(sbi, "Cannot change journaled quota options when quota turned on"); sbi 339 fs/f2fs/super.c kvfree(F2FS_OPTION(sbi).s_qf_names[qtype]); sbi 340 fs/f2fs/super.c F2FS_OPTION(sbi).s_qf_names[qtype] = NULL; sbi 344 fs/f2fs/super.c static int f2fs_check_quota_options(struct f2fs_sb_info *sbi) sbi 351 fs/f2fs/super.c if (test_opt(sbi, PRJQUOTA) && !f2fs_sb_has_project_quota(sbi)) { sbi 352 fs/f2fs/super.c f2fs_err(sbi, "Project quota feature not enabled. Cannot enable project quota enforcement."); sbi 355 fs/f2fs/super.c if (F2FS_OPTION(sbi).s_qf_names[USRQUOTA] || sbi 356 fs/f2fs/super.c F2FS_OPTION(sbi).s_qf_names[GRPQUOTA] || sbi 357 fs/f2fs/super.c F2FS_OPTION(sbi).s_qf_names[PRJQUOTA]) { sbi 358 fs/f2fs/super.c if (test_opt(sbi, USRQUOTA) && sbi 359 fs/f2fs/super.c F2FS_OPTION(sbi).s_qf_names[USRQUOTA]) sbi 360 fs/f2fs/super.c clear_opt(sbi, USRQUOTA); sbi 362 fs/f2fs/super.c if (test_opt(sbi, GRPQUOTA) && sbi 363 fs/f2fs/super.c F2FS_OPTION(sbi).s_qf_names[GRPQUOTA]) sbi 364 fs/f2fs/super.c clear_opt(sbi, GRPQUOTA); sbi 366 fs/f2fs/super.c if (test_opt(sbi, PRJQUOTA) && sbi 367 fs/f2fs/super.c F2FS_OPTION(sbi).s_qf_names[PRJQUOTA]) sbi 368 fs/f2fs/super.c clear_opt(sbi, PRJQUOTA); sbi 370 fs/f2fs/super.c if (test_opt(sbi, GRPQUOTA) || test_opt(sbi, USRQUOTA) || sbi 371 fs/f2fs/super.c test_opt(sbi, PRJQUOTA)) { sbi 372 fs/f2fs/super.c f2fs_err(sbi, "old and new quota format mixing"); sbi 376 fs/f2fs/super.c if (!F2FS_OPTION(sbi).s_jquota_fmt) { sbi 377 fs/f2fs/super.c f2fs_err(sbi, "journaled quota format not specified"); sbi 382 fs/f2fs/super.c if (f2fs_sb_has_quota_ino(sbi) && F2FS_OPTION(sbi).s_jquota_fmt) { sbi 383 fs/f2fs/super.c f2fs_info(sbi, "QUOTA feature is enabled, so ignore jquota_fmt"); sbi 384 fs/f2fs/super.c F2FS_OPTION(sbi).s_jquota_fmt = 0; sbi 392 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 423 fs/f2fs/super.c set_opt(sbi, BG_GC); sbi 424 fs/f2fs/super.c clear_opt(sbi, FORCE_FG_GC); sbi 426 fs/f2fs/super.c clear_opt(sbi, BG_GC); sbi 427 fs/f2fs/super.c clear_opt(sbi, FORCE_FG_GC); sbi 429 fs/f2fs/super.c set_opt(sbi, BG_GC); sbi 430 fs/f2fs/super.c set_opt(sbi, FORCE_FG_GC); sbi 438 fs/f2fs/super.c set_opt(sbi, DISABLE_ROLL_FORWARD); sbi 442 fs/f2fs/super.c set_opt(sbi, NORECOVERY); sbi 447 fs/f2fs/super.c set_opt(sbi, DISCARD); sbi 450 fs/f2fs/super.c if (f2fs_sb_has_blkzoned(sbi)) { sbi 451 fs/f2fs/super.c f2fs_warn(sbi, "discard is required for zoned block devices"); sbi 454 fs/f2fs/super.c clear_opt(sbi, DISCARD); sbi 457 fs/f2fs/super.c set_opt(sbi, NOHEAP); sbi 460 fs/f2fs/super.c clear_opt(sbi, NOHEAP); sbi 464 fs/f2fs/super.c set_opt(sbi, XATTR_USER); sbi 467 fs/f2fs/super.c clear_opt(sbi, XATTR_USER); sbi 470 fs/f2fs/super.c set_opt(sbi, INLINE_XATTR); sbi 473 fs/f2fs/super.c clear_opt(sbi, INLINE_XATTR); sbi 478 fs/f2fs/super.c set_opt(sbi, INLINE_XATTR_SIZE); sbi 479 fs/f2fs/super.c F2FS_OPTION(sbi).inline_xattr_size = arg; sbi 483 fs/f2fs/super.c f2fs_info(sbi, "user_xattr options not supported"); sbi 486 fs/f2fs/super.c f2fs_info(sbi, "nouser_xattr options not supported"); sbi 489 fs/f2fs/super.c f2fs_info(sbi, "inline_xattr options not supported"); sbi 492 fs/f2fs/super.c f2fs_info(sbi, "noinline_xattr options not supported"); sbi 497 fs/f2fs/super.c set_opt(sbi, POSIX_ACL); sbi 500 fs/f2fs/super.c clear_opt(sbi, POSIX_ACL); sbi 504 fs/f2fs/super.c f2fs_info(sbi, "acl options not supported"); sbi 507 fs/f2fs/super.c f2fs_info(sbi, "noacl options not supported"); sbi 515 fs/f2fs/super.c F2FS_OPTION(sbi).active_logs = arg; sbi 518 fs/f2fs/super.c set_opt(sbi, DISABLE_EXT_IDENTIFY); sbi 521 fs/f2fs/super.c set_opt(sbi, INLINE_DATA); sbi 524 fs/f2fs/super.c set_opt(sbi, INLINE_DENTRY); sbi 527 fs/f2fs/super.c clear_opt(sbi, INLINE_DENTRY); sbi 530 fs/f2fs/super.c set_opt(sbi, FLUSH_MERGE); sbi 533 fs/f2fs/super.c clear_opt(sbi, FLUSH_MERGE); sbi 536 fs/f2fs/super.c set_opt(sbi, NOBARRIER); sbi 539 fs/f2fs/super.c set_opt(sbi, FASTBOOT); sbi 542 fs/f2fs/super.c set_opt(sbi, EXTENT_CACHE); sbi 545 fs/f2fs/super.c clear_opt(sbi, EXTENT_CACHE); sbi 548 fs/f2fs/super.c clear_opt(sbi, INLINE_DATA); sbi 551 fs/f2fs/super.c set_opt(sbi, DATA_FLUSH); sbi 556 fs/f2fs/super.c if (test_opt(sbi, RESERVE_ROOT)) { sbi 557 fs/f2fs/super.c f2fs_info(sbi, "Preserve previous reserve_root=%u", sbi 558 fs/f2fs/super.c F2FS_OPTION(sbi).root_reserved_blocks); sbi 560 fs/f2fs/super.c F2FS_OPTION(sbi).root_reserved_blocks = arg; sbi 561 fs/f2fs/super.c set_opt(sbi, RESERVE_ROOT); sbi 569 fs/f2fs/super.c f2fs_err(sbi, "Invalid uid value %d", arg); sbi 572 fs/f2fs/super.c F2FS_OPTION(sbi).s_resuid = uid; sbi 579 fs/f2fs/super.c f2fs_err(sbi, "Invalid gid value %d", arg); sbi 582 fs/f2fs/super.c F2FS_OPTION(sbi).s_resgid = gid; sbi 591 fs/f2fs/super.c if (f2fs_sb_has_blkzoned(sbi)) { sbi 592 fs/f2fs/super.c f2fs_warn(sbi, "adaptive mode is not allowed with zoned block device feature"); sbi 596 fs/f2fs/super.c set_opt_mode(sbi, F2FS_MOUNT_ADAPTIVE); sbi 599 fs/f2fs/super.c set_opt_mode(sbi, F2FS_MOUNT_LFS); sbi 610 fs/f2fs/super.c f2fs_warn(sbi, "Not support %d, larger than %d", sbi 614 fs/f2fs/super.c F2FS_OPTION(sbi).write_io_size_bits = arg; sbi 620 fs/f2fs/super.c f2fs_build_fault_attr(sbi, arg, F2FS_ALL_FAULT_TYPE); sbi 621 fs/f2fs/super.c set_opt(sbi, FAULT_INJECTION); sbi 627 fs/f2fs/super.c f2fs_build_fault_attr(sbi, 0, arg); sbi 628 fs/f2fs/super.c set_opt(sbi, FAULT_INJECTION); sbi 632 fs/f2fs/super.c f2fs_info(sbi, "fault_injection options not supported"); sbi 636 fs/f2fs/super.c f2fs_info(sbi, "fault_type options not supported"); sbi 648 fs/f2fs/super.c set_opt(sbi, USRQUOTA); sbi 651 fs/f2fs/super.c set_opt(sbi, GRPQUOTA); sbi 654 fs/f2fs/super.c set_opt(sbi, PRJQUOTA); sbi 687 fs/f2fs/super.c F2FS_OPTION(sbi).s_jquota_fmt = QFMT_VFS_OLD; sbi 690 fs/f2fs/super.c F2FS_OPTION(sbi).s_jquota_fmt = QFMT_VFS_V0; sbi 693 fs/f2fs/super.c F2FS_OPTION(sbi).s_jquota_fmt = QFMT_VFS_V1; sbi 696 fs/f2fs/super.c clear_opt(sbi, QUOTA); sbi 697 fs/f2fs/super.c clear_opt(sbi, USRQUOTA); sbi 698 fs/f2fs/super.c clear_opt(sbi, GRPQUOTA); sbi 699 fs/f2fs/super.c clear_opt(sbi, PRJQUOTA); sbi 716 fs/f2fs/super.c f2fs_info(sbi, "quota operations not supported"); sbi 725 fs/f2fs/super.c F2FS_OPTION(sbi).whint_mode = WHINT_MODE_USER; sbi 728 fs/f2fs/super.c F2FS_OPTION(sbi).whint_mode = WHINT_MODE_OFF; sbi 731 fs/f2fs/super.c F2FS_OPTION(sbi).whint_mode = WHINT_MODE_FS; sbi 745 fs/f2fs/super.c F2FS_OPTION(sbi).alloc_mode = ALLOC_MODE_DEFAULT; sbi 748 fs/f2fs/super.c F2FS_OPTION(sbi).alloc_mode = ALLOC_MODE_REUSE; sbi 761 fs/f2fs/super.c F2FS_OPTION(sbi).fsync_mode = FSYNC_MODE_POSIX; sbi 764 fs/f2fs/super.c F2FS_OPTION(sbi).fsync_mode = FSYNC_MODE_STRICT; sbi 767 fs/f2fs/super.c F2FS_OPTION(sbi).fsync_mode = sbi 777 fs/f2fs/super.c if (!f2fs_sb_has_encrypt(sbi)) { sbi 778 fs/f2fs/super.c f2fs_err(sbi, "Encrypt feature is off"); sbi 782 fs/f2fs/super.c F2FS_OPTION(sbi).test_dummy_encryption = true; sbi 783 fs/f2fs/super.c f2fs_info(sbi, "Test dummy encryption mode enabled"); sbi 785 fs/f2fs/super.c f2fs_info(sbi, "Test dummy encryption mount option ignored"); sbi 794 fs/f2fs/super.c F2FS_OPTION(sbi).unusable_cap = sbi 795 fs/f2fs/super.c sbi->user_block_count; sbi 797 fs/f2fs/super.c F2FS_OPTION(sbi).unusable_cap = sbi 798 fs/f2fs/super.c (sbi->user_block_count / 100) * arg; sbi 799 fs/f2fs/super.c set_opt(sbi, DISABLE_CHECKPOINT); sbi 804 fs/f2fs/super.c F2FS_OPTION(sbi).unusable_cap = arg; sbi 805 fs/f2fs/super.c set_opt(sbi, DISABLE_CHECKPOINT); sbi 808 fs/f2fs/super.c set_opt(sbi, DISABLE_CHECKPOINT); sbi 811 fs/f2fs/super.c clear_opt(sbi, DISABLE_CHECKPOINT); sbi 814 fs/f2fs/super.c f2fs_err(sbi, "Unrecognized mount option \"%s\" or missing value", sbi 820 fs/f2fs/super.c if (f2fs_check_quota_options(sbi)) sbi 823 fs/f2fs/super.c if (f2fs_sb_has_quota_ino(sbi) && !f2fs_readonly(sbi->sb)) { sbi 824 fs/f2fs/super.c f2fs_info(sbi, "Filesystem with quota feature cannot be mounted RDWR without CONFIG_QUOTA"); sbi 827 fs/f2fs/super.c if (f2fs_sb_has_project_quota(sbi) && !f2fs_readonly(sbi->sb)) { sbi 828 fs/f2fs/super.c f2fs_err(sbi, "Filesystem with project quota feature cannot be mounted RDWR without CONFIG_QUOTA"); sbi 833 fs/f2fs/super.c if (f2fs_sb_has_casefold(sbi)) { sbi 834 fs/f2fs/super.c f2fs_err(sbi, sbi 840 fs/f2fs/super.c if (F2FS_IO_SIZE_BITS(sbi) && !test_opt(sbi, LFS)) { sbi 841 fs/f2fs/super.c f2fs_err(sbi, "Should set mode=lfs with %uKB-sized IO", sbi 842 fs/f2fs/super.c F2FS_IO_SIZE_KB(sbi)); sbi 846 fs/f2fs/super.c if (test_opt(sbi, INLINE_XATTR_SIZE)) { sbi 849 fs/f2fs/super.c if (!f2fs_sb_has_extra_attr(sbi) || sbi 850 fs/f2fs/super.c !f2fs_sb_has_flexible_inline_xattr(sbi)) { sbi 851 fs/f2fs/super.c f2fs_err(sbi, "extra_attr or flexible_inline_xattr feature is off"); sbi 854 fs/f2fs/super.c if (!test_opt(sbi, INLINE_XATTR)) { sbi 855 fs/f2fs/super.c f2fs_err(sbi, "inline_xattr_size option should be set with inline_xattr option"); sbi 862 fs/f2fs/super.c if (F2FS_OPTION(sbi).inline_xattr_size < min_size || sbi 863 fs/f2fs/super.c F2FS_OPTION(sbi).inline_xattr_size > max_size) { sbi 864 fs/f2fs/super.c f2fs_err(sbi, "inline xattr size is out of range: %d ~ %d", sbi 870 fs/f2fs/super.c if (test_opt(sbi, DISABLE_CHECKPOINT) && test_opt(sbi, LFS)) { sbi 871 fs/f2fs/super.c f2fs_err(sbi, "LFS not compatible with checkpoint=disable\n"); sbi 878 fs/f2fs/super.c if (F2FS_OPTION(sbi).active_logs != NR_CURSEG_TYPE) sbi 879 fs/f2fs/super.c F2FS_OPTION(sbi).whint_mode = WHINT_MODE_OFF; sbi 914 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 921 fs/f2fs/super.c if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED))) { sbi 922 fs/f2fs/super.c if (inode->i_ino == F2FS_NODE_INO(sbi) || sbi 923 fs/f2fs/super.c inode->i_ino == F2FS_META_INO(sbi)) { sbi 976 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 979 fs/f2fs/super.c spin_lock(&sbi->inode_lock[DIRTY_META]); sbi 984 fs/f2fs/super.c stat_inc_dirty_inode(sbi, DIRTY_META); sbi 988 fs/f2fs/super.c &sbi->inode_list[DIRTY_META]); sbi 989 fs/f2fs/super.c inc_page_count(sbi, F2FS_DIRTY_IMETA); sbi 991 fs/f2fs/super.c spin_unlock(&sbi->inode_lock[DIRTY_META]); sbi 997 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 999 fs/f2fs/super.c spin_lock(&sbi->inode_lock[DIRTY_META]); sbi 1001 fs/f2fs/super.c spin_unlock(&sbi->inode_lock[DIRTY_META]); sbi 1006 fs/f2fs/super.c dec_page_count(sbi, F2FS_DIRTY_IMETA); sbi 1011 fs/f2fs/super.c spin_unlock(&sbi->inode_lock[DIRTY_META]); sbi 1021 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 1023 fs/f2fs/super.c if (inode->i_ino == F2FS_NODE_INO(sbi) || sbi 1024 fs/f2fs/super.c inode->i_ino == F2FS_META_INO(sbi)) sbi 1042 fs/f2fs/super.c static void destroy_percpu_info(struct f2fs_sb_info *sbi) sbi 1044 fs/f2fs/super.c percpu_counter_destroy(&sbi->alloc_valid_block_count); sbi 1045 fs/f2fs/super.c percpu_counter_destroy(&sbi->total_valid_inode_count); sbi 1048 fs/f2fs/super.c static void destroy_device_list(struct f2fs_sb_info *sbi) sbi 1052 fs/f2fs/super.c for (i = 0; i < sbi->s_ndevs; i++) { sbi 1058 fs/f2fs/super.c kvfree(sbi->devs); sbi 1063 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 1070 fs/f2fs/super.c mutex_lock(&sbi->umount_mutex); sbi 1077 fs/f2fs/super.c if ((is_sbi_flag_set(sbi, SBI_IS_DIRTY) || sbi 1078 fs/f2fs/super.c !is_set_ckpt_flags(sbi, CP_UMOUNT_FLAG))) { sbi 1082 fs/f2fs/super.c f2fs_write_checkpoint(sbi, &cpc); sbi 1086 fs/f2fs/super.c dropped = f2fs_issue_discard_timeout(sbi); sbi 1088 fs/f2fs/super.c if ((f2fs_hw_support_discard(sbi) || f2fs_hw_should_discard(sbi)) && sbi 1089 fs/f2fs/super.c !sbi->discard_blks && !dropped) { sbi 1093 fs/f2fs/super.c f2fs_write_checkpoint(sbi, &cpc); sbi 1100 fs/f2fs/super.c f2fs_release_ino_entry(sbi, true); sbi 1102 fs/f2fs/super.c f2fs_leave_shrinker(sbi); sbi 1103 fs/f2fs/super.c mutex_unlock(&sbi->umount_mutex); sbi 1106 fs/f2fs/super.c f2fs_flush_merged_writes(sbi); sbi 1108 fs/f2fs/super.c f2fs_wait_on_all_pages(sbi, F2FS_WB_CP_DATA); sbi 1110 fs/f2fs/super.c f2fs_bug_on(sbi, sbi->fsync_node_num); sbi 1112 fs/f2fs/super.c iput(sbi->node_inode); sbi 1113 fs/f2fs/super.c sbi->node_inode = NULL; sbi 1115 fs/f2fs/super.c iput(sbi->meta_inode); sbi 1116 fs/f2fs/super.c sbi->meta_inode = NULL; sbi 1122 fs/f2fs/super.c f2fs_destroy_stats(sbi); sbi 1125 fs/f2fs/super.c f2fs_destroy_node_manager(sbi); sbi 1126 fs/f2fs/super.c f2fs_destroy_segment_manager(sbi); sbi 1128 fs/f2fs/super.c kvfree(sbi->ckpt); sbi 1130 fs/f2fs/super.c f2fs_unregister_sysfs(sbi); sbi 1133 fs/f2fs/super.c if (sbi->s_chksum_driver) sbi 1134 fs/f2fs/super.c crypto_free_shash(sbi->s_chksum_driver); sbi 1135 fs/f2fs/super.c kvfree(sbi->raw_super); sbi 1137 fs/f2fs/super.c destroy_device_list(sbi); sbi 1138 fs/f2fs/super.c mempool_destroy(sbi->write_io_dummy); sbi 1141 fs/f2fs/super.c kvfree(F2FS_OPTION(sbi).s_qf_names[i]); sbi 1143 fs/f2fs/super.c destroy_percpu_info(sbi); sbi 1145 fs/f2fs/super.c kvfree(sbi->write_io[i]); sbi 1147 fs/f2fs/super.c utf8_unload(sbi->s_encoding); sbi 1149 fs/f2fs/super.c kvfree(sbi); sbi 1154 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 1157 fs/f2fs/super.c if (unlikely(f2fs_cp_error(sbi))) sbi 1159 fs/f2fs/super.c if (unlikely(is_sbi_flag_set(sbi, SBI_CP_DISABLED))) sbi 1164 fs/f2fs/super.c if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING))) sbi 1170 fs/f2fs/super.c cpc.reason = __get_cp_reason(sbi); sbi 1172 fs/f2fs/super.c mutex_lock(&sbi->gc_mutex); sbi 1173 fs/f2fs/super.c err = f2fs_write_checkpoint(sbi, &cpc); sbi 1174 fs/f2fs/super.c mutex_unlock(&sbi->gc_mutex); sbi 1248 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 1253 fs/f2fs/super.c total_count = le64_to_cpu(sbi->raw_super->block_count); sbi 1254 fs/f2fs/super.c user_block_count = sbi->user_block_count; sbi 1255 fs/f2fs/super.c start_count = le32_to_cpu(sbi->raw_super->segment0_blkaddr); sbi 1257 fs/f2fs/super.c buf->f_bsize = sbi->blocksize; sbi 1260 fs/f2fs/super.c buf->f_bfree = user_block_count - valid_user_blocks(sbi) - sbi 1261 fs/f2fs/super.c sbi->current_reserved_blocks; sbi 1263 fs/f2fs/super.c spin_lock(&sbi->stat_lock); sbi 1264 fs/f2fs/super.c if (unlikely(buf->f_bfree <= sbi->unusable_block_count)) sbi 1267 fs/f2fs/super.c buf->f_bfree -= sbi->unusable_block_count; sbi 1268 fs/f2fs/super.c spin_unlock(&sbi->stat_lock); sbi 1270 fs/f2fs/super.c if (buf->f_bfree > F2FS_OPTION(sbi).root_reserved_blocks) sbi 1272 fs/f2fs/super.c F2FS_OPTION(sbi).root_reserved_blocks; sbi 1276 fs/f2fs/super.c avail_node_count = sbi->total_node_count - F2FS_RESERVED_NODE_NUM; sbi 1283 fs/f2fs/super.c buf->f_ffree = min(avail_node_count - valid_node_count(sbi), sbi 1304 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 1306 fs/f2fs/super.c if (F2FS_OPTION(sbi).s_jquota_fmt) { sbi 1309 fs/f2fs/super.c switch (F2FS_OPTION(sbi).s_jquota_fmt) { sbi 1323 fs/f2fs/super.c if (F2FS_OPTION(sbi).s_qf_names[USRQUOTA]) sbi 1325 fs/f2fs/super.c F2FS_OPTION(sbi).s_qf_names[USRQUOTA]); sbi 1327 fs/f2fs/super.c if (F2FS_OPTION(sbi).s_qf_names[GRPQUOTA]) sbi 1329 fs/f2fs/super.c F2FS_OPTION(sbi).s_qf_names[GRPQUOTA]); sbi 1331 fs/f2fs/super.c if (F2FS_OPTION(sbi).s_qf_names[PRJQUOTA]) sbi 1333 fs/f2fs/super.c F2FS_OPTION(sbi).s_qf_names[PRJQUOTA]); sbi 1339 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_SB(root->d_sb); sbi 1341 fs/f2fs/super.c if (!f2fs_readonly(sbi->sb) && test_opt(sbi, BG_GC)) { sbi 1342 fs/f2fs/super.c if (test_opt(sbi, FORCE_FG_GC)) sbi 1349 fs/f2fs/super.c if (test_opt(sbi, DISABLE_ROLL_FORWARD)) sbi 1351 fs/f2fs/super.c if (test_opt(sbi, NORECOVERY)) sbi 1353 fs/f2fs/super.c if (test_opt(sbi, DISCARD)) sbi 1357 fs/f2fs/super.c if (test_opt(sbi, NOHEAP)) sbi 1362 fs/f2fs/super.c if (test_opt(sbi, XATTR_USER)) sbi 1366 fs/f2fs/super.c if (test_opt(sbi, INLINE_XATTR)) sbi 1370 fs/f2fs/super.c if (test_opt(sbi, INLINE_XATTR_SIZE)) sbi 1372 fs/f2fs/super.c F2FS_OPTION(sbi).inline_xattr_size); sbi 1375 fs/f2fs/super.c if (test_opt(sbi, POSIX_ACL)) sbi 1380 fs/f2fs/super.c if (test_opt(sbi, DISABLE_EXT_IDENTIFY)) sbi 1382 fs/f2fs/super.c if (test_opt(sbi, INLINE_DATA)) sbi 1386 fs/f2fs/super.c if (test_opt(sbi, INLINE_DENTRY)) sbi 1390 fs/f2fs/super.c if (!f2fs_readonly(sbi->sb) && test_opt(sbi, FLUSH_MERGE)) sbi 1392 fs/f2fs/super.c if (test_opt(sbi, NOBARRIER)) sbi 1394 fs/f2fs/super.c if (test_opt(sbi, FASTBOOT)) sbi 1396 fs/f2fs/super.c if (test_opt(sbi, EXTENT_CACHE)) sbi 1400 fs/f2fs/super.c if (test_opt(sbi, DATA_FLUSH)) sbi 1404 fs/f2fs/super.c if (test_opt(sbi, ADAPTIVE)) sbi 1406 fs/f2fs/super.c else if (test_opt(sbi, LFS)) sbi 1408 fs/f2fs/super.c seq_printf(seq, ",active_logs=%u", F2FS_OPTION(sbi).active_logs); sbi 1409 fs/f2fs/super.c if (test_opt(sbi, RESERVE_ROOT)) sbi 1411 fs/f2fs/super.c F2FS_OPTION(sbi).root_reserved_blocks, sbi 1413 fs/f2fs/super.c F2FS_OPTION(sbi).s_resuid), sbi 1415 fs/f2fs/super.c F2FS_OPTION(sbi).s_resgid)); sbi 1416 fs/f2fs/super.c if (F2FS_IO_SIZE_BITS(sbi)) sbi 1418 fs/f2fs/super.c F2FS_OPTION(sbi).write_io_size_bits); sbi 1420 fs/f2fs/super.c if (test_opt(sbi, FAULT_INJECTION)) { sbi 1422 fs/f2fs/super.c F2FS_OPTION(sbi).fault_info.inject_rate); sbi 1424 fs/f2fs/super.c F2FS_OPTION(sbi).fault_info.inject_type); sbi 1428 fs/f2fs/super.c if (test_opt(sbi, QUOTA)) sbi 1430 fs/f2fs/super.c if (test_opt(sbi, USRQUOTA)) sbi 1432 fs/f2fs/super.c if (test_opt(sbi, GRPQUOTA)) sbi 1434 fs/f2fs/super.c if (test_opt(sbi, PRJQUOTA)) sbi 1437 fs/f2fs/super.c f2fs_show_quota_options(seq, sbi->sb); sbi 1438 fs/f2fs/super.c if (F2FS_OPTION(sbi).whint_mode == WHINT_MODE_USER) sbi 1440 fs/f2fs/super.c else if (F2FS_OPTION(sbi).whint_mode == WHINT_MODE_FS) sbi 1443 fs/f2fs/super.c if (F2FS_OPTION(sbi).test_dummy_encryption) sbi 1447 fs/f2fs/super.c if (F2FS_OPTION(sbi).alloc_mode == ALLOC_MODE_DEFAULT) sbi 1449 fs/f2fs/super.c else if (F2FS_OPTION(sbi).alloc_mode == ALLOC_MODE_REUSE) sbi 1452 fs/f2fs/super.c if (test_opt(sbi, DISABLE_CHECKPOINT)) sbi 1454 fs/f2fs/super.c F2FS_OPTION(sbi).unusable_cap); sbi 1455 fs/f2fs/super.c if (F2FS_OPTION(sbi).fsync_mode == FSYNC_MODE_POSIX) sbi 1457 fs/f2fs/super.c else if (F2FS_OPTION(sbi).fsync_mode == FSYNC_MODE_STRICT) sbi 1459 fs/f2fs/super.c else if (F2FS_OPTION(sbi).fsync_mode == FSYNC_MODE_NOBARRIER) sbi 1464 fs/f2fs/super.c static void default_options(struct f2fs_sb_info *sbi) sbi 1467 fs/f2fs/super.c F2FS_OPTION(sbi).active_logs = NR_CURSEG_TYPE; sbi 1468 fs/f2fs/super.c F2FS_OPTION(sbi).inline_xattr_size = DEFAULT_INLINE_XATTR_ADDRS; sbi 1469 fs/f2fs/super.c F2FS_OPTION(sbi).whint_mode = WHINT_MODE_OFF; sbi 1470 fs/f2fs/super.c F2FS_OPTION(sbi).alloc_mode = ALLOC_MODE_DEFAULT; sbi 1471 fs/f2fs/super.c F2FS_OPTION(sbi).fsync_mode = FSYNC_MODE_POSIX; sbi 1472 fs/f2fs/super.c F2FS_OPTION(sbi).test_dummy_encryption = false; sbi 1473 fs/f2fs/super.c F2FS_OPTION(sbi).s_resuid = make_kuid(&init_user_ns, F2FS_DEF_RESUID); sbi 1474 fs/f2fs/super.c F2FS_OPTION(sbi).s_resgid = make_kgid(&init_user_ns, F2FS_DEF_RESGID); sbi 1476 fs/f2fs/super.c set_opt(sbi, BG_GC); sbi 1477 fs/f2fs/super.c set_opt(sbi, INLINE_XATTR); sbi 1478 fs/f2fs/super.c set_opt(sbi, INLINE_DATA); sbi 1479 fs/f2fs/super.c set_opt(sbi, INLINE_DENTRY); sbi 1480 fs/f2fs/super.c set_opt(sbi, EXTENT_CACHE); sbi 1481 fs/f2fs/super.c set_opt(sbi, NOHEAP); sbi 1482 fs/f2fs/super.c clear_opt(sbi, DISABLE_CHECKPOINT); sbi 1483 fs/f2fs/super.c F2FS_OPTION(sbi).unusable_cap = 0; sbi 1484 fs/f2fs/super.c sbi->sb->s_flags |= SB_LAZYTIME; sbi 1485 fs/f2fs/super.c set_opt(sbi, FLUSH_MERGE); sbi 1486 fs/f2fs/super.c set_opt(sbi, DISCARD); sbi 1487 fs/f2fs/super.c if (f2fs_sb_has_blkzoned(sbi)) sbi 1488 fs/f2fs/super.c set_opt_mode(sbi, F2FS_MOUNT_LFS); sbi 1490 fs/f2fs/super.c set_opt_mode(sbi, F2FS_MOUNT_ADAPTIVE); sbi 1493 fs/f2fs/super.c set_opt(sbi, XATTR_USER); sbi 1496 fs/f2fs/super.c set_opt(sbi, POSIX_ACL); sbi 1499 fs/f2fs/super.c f2fs_build_fault_attr(sbi, 0, 0); sbi 1506 fs/f2fs/super.c static int f2fs_disable_checkpoint(struct f2fs_sb_info *sbi) sbi 1508 fs/f2fs/super.c unsigned int s_flags = sbi->sb->s_flags; sbi 1515 fs/f2fs/super.c f2fs_err(sbi, "checkpoint=disable on readonly fs"); sbi 1518 fs/f2fs/super.c sbi->sb->s_flags |= SB_ACTIVE; sbi 1520 fs/f2fs/super.c f2fs_update_time(sbi, DISABLE_TIME); sbi 1522 fs/f2fs/super.c while (!f2fs_time_over(sbi, DISABLE_TIME)) { sbi 1523 fs/f2fs/super.c mutex_lock(&sbi->gc_mutex); sbi 1524 fs/f2fs/super.c err = f2fs_gc(sbi, true, false, NULL_SEGNO); sbi 1533 fs/f2fs/super.c ret = sync_filesystem(sbi->sb); sbi 1539 fs/f2fs/super.c unusable = f2fs_get_unusable_blocks(sbi); sbi 1540 fs/f2fs/super.c if (f2fs_disable_cp_again(sbi, unusable)) { sbi 1545 fs/f2fs/super.c mutex_lock(&sbi->gc_mutex); sbi 1547 fs/f2fs/super.c set_sbi_flag(sbi, SBI_CP_DISABLED); sbi 1548 fs/f2fs/super.c err = f2fs_write_checkpoint(sbi, &cpc); sbi 1552 fs/f2fs/super.c spin_lock(&sbi->stat_lock); sbi 1553 fs/f2fs/super.c sbi->unusable_block_count = unusable; sbi 1554 fs/f2fs/super.c spin_unlock(&sbi->stat_lock); sbi 1557 fs/f2fs/super.c mutex_unlock(&sbi->gc_mutex); sbi 1559 fs/f2fs/super.c sbi->sb->s_flags = s_flags; /* Restore MS_RDONLY status */ sbi 1563 fs/f2fs/super.c static void f2fs_enable_checkpoint(struct f2fs_sb_info *sbi) sbi 1565 fs/f2fs/super.c mutex_lock(&sbi->gc_mutex); sbi 1566 fs/f2fs/super.c f2fs_dirty_to_prefree(sbi); sbi 1568 fs/f2fs/super.c clear_sbi_flag(sbi, SBI_CP_DISABLED); sbi 1569 fs/f2fs/super.c set_sbi_flag(sbi, SBI_IS_DIRTY); sbi 1570 fs/f2fs/super.c mutex_unlock(&sbi->gc_mutex); sbi 1572 fs/f2fs/super.c f2fs_sync_fs(sbi->sb, 1); sbi 1577 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 1583 fs/f2fs/super.c bool no_extent_cache = !test_opt(sbi, EXTENT_CACHE); sbi 1584 fs/f2fs/super.c bool disable_checkpoint = test_opt(sbi, DISABLE_CHECKPOINT); sbi 1585 fs/f2fs/super.c bool no_io_align = !F2FS_IO_ALIGNED(sbi); sbi 1595 fs/f2fs/super.c org_mount_opt = sbi->mount_opt; sbi 1599 fs/f2fs/super.c org_mount_opt.s_jquota_fmt = F2FS_OPTION(sbi).s_jquota_fmt; sbi 1601 fs/f2fs/super.c if (F2FS_OPTION(sbi).s_qf_names[i]) { sbi 1603 fs/f2fs/super.c kstrdup(F2FS_OPTION(sbi).s_qf_names[i], sbi 1617 fs/f2fs/super.c if (!(*flags & SB_RDONLY) && is_sbi_flag_set(sbi, SBI_NEED_SB_WRITE)) { sbi 1618 fs/f2fs/super.c err = f2fs_commit_super(sbi, false); sbi 1619 fs/f2fs/super.c f2fs_info(sbi, "Try to recover all the superblocks, ret: %d", sbi 1622 fs/f2fs/super.c clear_sbi_flag(sbi, SBI_NEED_SB_WRITE); sbi 1625 fs/f2fs/super.c default_options(sbi); sbi 1632 fs/f2fs/super.c disable_checkpoint != test_opt(sbi, DISABLE_CHECKPOINT); sbi 1651 fs/f2fs/super.c } else if (f2fs_sb_has_quota_ino(sbi)) { sbi 1659 fs/f2fs/super.c if (no_extent_cache == !!test_opt(sbi, EXTENT_CACHE)) { sbi 1661 fs/f2fs/super.c f2fs_warn(sbi, "switch extent_cache option is not allowed"); sbi 1665 fs/f2fs/super.c if (no_io_align == !!F2FS_IO_ALIGNED(sbi)) { sbi 1667 fs/f2fs/super.c f2fs_warn(sbi, "switch io_bits option is not allowed"); sbi 1671 fs/f2fs/super.c if ((*flags & SB_RDONLY) && test_opt(sbi, DISABLE_CHECKPOINT)) { sbi 1673 fs/f2fs/super.c f2fs_warn(sbi, "disabling checkpoint not compatible with read-only"); sbi 1682 fs/f2fs/super.c if ((*flags & SB_RDONLY) || !test_opt(sbi, BG_GC)) { sbi 1683 fs/f2fs/super.c if (sbi->gc_thread) { sbi 1684 fs/f2fs/super.c f2fs_stop_gc_thread(sbi); sbi 1687 fs/f2fs/super.c } else if (!sbi->gc_thread) { sbi 1688 fs/f2fs/super.c err = f2fs_start_gc_thread(sbi); sbi 1695 fs/f2fs/super.c F2FS_OPTION(sbi).whint_mode != org_mount_opt.whint_mode) { sbi 1699 fs/f2fs/super.c set_sbi_flag(sbi, SBI_IS_DIRTY); sbi 1700 fs/f2fs/super.c set_sbi_flag(sbi, SBI_IS_CLOSE); sbi 1702 fs/f2fs/super.c clear_sbi_flag(sbi, SBI_IS_CLOSE); sbi 1706 fs/f2fs/super.c if (test_opt(sbi, DISABLE_CHECKPOINT)) { sbi 1707 fs/f2fs/super.c err = f2fs_disable_checkpoint(sbi); sbi 1711 fs/f2fs/super.c f2fs_enable_checkpoint(sbi); sbi 1719 fs/f2fs/super.c if ((*flags & SB_RDONLY) || !test_opt(sbi, FLUSH_MERGE)) { sbi 1720 fs/f2fs/super.c clear_opt(sbi, FLUSH_MERGE); sbi 1721 fs/f2fs/super.c f2fs_destroy_flush_cmd_control(sbi, false); sbi 1723 fs/f2fs/super.c err = f2fs_create_flush_cmd_control(sbi); sbi 1735 fs/f2fs/super.c (test_opt(sbi, POSIX_ACL) ? SB_POSIXACL : 0); sbi 1737 fs/f2fs/super.c limit_reserve_root(sbi); sbi 1742 fs/f2fs/super.c if (f2fs_start_gc_thread(sbi)) sbi 1743 fs/f2fs/super.c f2fs_warn(sbi, "background gc thread has stopped"); sbi 1745 fs/f2fs/super.c f2fs_stop_gc_thread(sbi); sbi 1749 fs/f2fs/super.c F2FS_OPTION(sbi).s_jquota_fmt = org_mount_opt.s_jquota_fmt; sbi 1751 fs/f2fs/super.c kvfree(F2FS_OPTION(sbi).s_qf_names[i]); sbi 1752 fs/f2fs/super.c F2FS_OPTION(sbi).s_qf_names[i] = org_mount_opt.s_qf_names[i]; sbi 1755 fs/f2fs/super.c sbi->mount_opt = org_mount_opt; sbi 1880 fs/f2fs/super.c static int f2fs_quota_on_mount(struct f2fs_sb_info *sbi, int type) sbi 1882 fs/f2fs/super.c if (is_set_ckpt_flags(sbi, CP_QUOTA_NEED_FSCK_FLAG)) { sbi 1883 fs/f2fs/super.c f2fs_err(sbi, "quota sysfile may be corrupted, skip loading it"); sbi 1887 fs/f2fs/super.c return dquot_quota_on_mount(sbi->sb, F2FS_OPTION(sbi).s_qf_names[type], sbi 1888 fs/f2fs/super.c F2FS_OPTION(sbi).s_jquota_fmt, type); sbi 1891 fs/f2fs/super.c int f2fs_enable_quota_files(struct f2fs_sb_info *sbi, bool rdonly) sbi 1896 fs/f2fs/super.c if (f2fs_sb_has_quota_ino(sbi) && rdonly) { sbi 1897 fs/f2fs/super.c err = f2fs_enable_quotas(sbi->sb); sbi 1899 fs/f2fs/super.c f2fs_err(sbi, "Cannot turn on quota_ino: %d", err); sbi 1906 fs/f2fs/super.c if (F2FS_OPTION(sbi).s_qf_names[i]) { sbi 1907 fs/f2fs/super.c err = f2fs_quota_on_mount(sbi, i); sbi 1912 fs/f2fs/super.c f2fs_err(sbi, "Cannot turn on quotas: %d on %d", sbi 1947 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 1951 fs/f2fs/super.c test_opt(sbi, USRQUOTA), sbi 1952 fs/f2fs/super.c test_opt(sbi, GRPQUOTA), sbi 1953 fs/f2fs/super.c test_opt(sbi, PRJQUOTA), sbi 1957 fs/f2fs/super.c f2fs_err(sbi, "quota file may be corrupted, skip loading it"); sbi 1970 fs/f2fs/super.c f2fs_err(sbi, "Failed to enable quota tracking (type=%d, err=%d). Please run fsck to fix.", sbi 1985 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 1999 fs/f2fs/super.c f2fs_lock_op(sbi); sbi 2001 fs/f2fs/super.c down_read(&sbi->quota_sem); sbi 2025 fs/f2fs/super.c if (is_journalled_quota(sbi)) sbi 2039 fs/f2fs/super.c up_read(&sbi->quota_sem); sbi 2040 fs/f2fs/super.c f2fs_unlock_op(sbi); sbi 2103 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 2113 fs/f2fs/super.c if (is_journalled_quota(sbi)) sbi 2114 fs/f2fs/super.c set_sbi_flag(sbi, SBI_QUOTA_NEED_REPAIR); sbi 2155 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_SB(dquot->dq_sb); sbi 2158 fs/f2fs/super.c down_read(&sbi->quota_sem); sbi 2161 fs/f2fs/super.c set_sbi_flag(sbi, SBI_QUOTA_NEED_REPAIR); sbi 2162 fs/f2fs/super.c up_read(&sbi->quota_sem); sbi 2168 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_SB(dquot->dq_sb); sbi 2171 fs/f2fs/super.c down_read(&sbi->quota_sem); sbi 2174 fs/f2fs/super.c set_sbi_flag(sbi, SBI_QUOTA_NEED_REPAIR); sbi 2175 fs/f2fs/super.c up_read(&sbi->quota_sem); sbi 2181 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_SB(dquot->dq_sb); sbi 2184 fs/f2fs/super.c down_read(&sbi->quota_sem); sbi 2187 fs/f2fs/super.c set_sbi_flag(sbi, SBI_QUOTA_NEED_REPAIR); sbi 2188 fs/f2fs/super.c up_read(&sbi->quota_sem); sbi 2195 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 2198 fs/f2fs/super.c down_read(&sbi->quota_sem); sbi 2202 fs/f2fs/super.c if (is_journalled_quota(sbi)) sbi 2203 fs/f2fs/super.c set_sbi_flag(sbi, SBI_QUOTA_NEED_FLUSH); sbi 2205 fs/f2fs/super.c up_read(&sbi->quota_sem); sbi 2211 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 2214 fs/f2fs/super.c down_read(&sbi->quota_sem); sbi 2217 fs/f2fs/super.c set_sbi_flag(sbi, SBI_QUOTA_NEED_REPAIR); sbi 2218 fs/f2fs/super.c up_read(&sbi->quota_sem); sbi 2294 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 2302 fs/f2fs/super.c if (f2fs_sb_has_lost_found(sbi) && sbi 2303 fs/f2fs/super.c inode->i_ino == F2FS_ROOT_INO(sbi)) sbi 2329 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 2332 fs/f2fs/super.c if (f2fs_check_nid_range(sbi, ino)) sbi 2410 fs/f2fs/super.c static inline bool sanity_check_area_boundary(struct f2fs_sb_info *sbi, sbi 2415 fs/f2fs/super.c struct super_block *sb = sbi->sb; sbi 2435 fs/f2fs/super.c f2fs_info(sbi, "Mismatch start address, segment0(%u) cp_blkaddr(%u)", sbi 2442 fs/f2fs/super.c f2fs_info(sbi, "Wrong CP boundary, start(%u) end(%u) blocks(%u)", sbi 2450 fs/f2fs/super.c f2fs_info(sbi, "Wrong SIT boundary, start(%u) end(%u) blocks(%u)", sbi 2458 fs/f2fs/super.c f2fs_info(sbi, "Wrong NAT boundary, start(%u) end(%u) blocks(%u)", sbi 2466 fs/f2fs/super.c f2fs_info(sbi, "Wrong SSA boundary, start(%u) end(%u) blocks(%u)", sbi 2473 fs/f2fs/super.c f2fs_info(sbi, "Wrong MAIN_AREA boundary, start(%u) end(%u) block(%u)", sbi 2488 fs/f2fs/super.c set_sbi_flag(sbi, SBI_NEED_SB_WRITE); sbi 2494 fs/f2fs/super.c f2fs_info(sbi, "Fix alignment : %s, start(%u) end(%u) block(%u)", sbi 2505 fs/f2fs/super.c static int sanity_check_raw_super(struct f2fs_sb_info *sbi, sbi 2517 fs/f2fs/super.c f2fs_info(sbi, "Magic Mismatch, valid(0x%x) - read(0x%x)", sbi 2527 fs/f2fs/super.c f2fs_info(sbi, "Invalid SB checksum offset: %zu", sbi 2532 fs/f2fs/super.c if (!f2fs_crc_valid(sbi, crc, raw_super, crc_offset)) { sbi 2533 fs/f2fs/super.c f2fs_info(sbi, "Invalid SB checksum value: %u", crc); sbi 2540 fs/f2fs/super.c f2fs_info(sbi, "Invalid page_cache_size (%lu), supports only 4KB", sbi 2548 fs/f2fs/super.c f2fs_info(sbi, "Invalid blocksize (%u), supports only 4KB", sbi 2555 fs/f2fs/super.c f2fs_info(sbi, "Invalid log blocks per segment (%u)", sbi 2565 fs/f2fs/super.c f2fs_info(sbi, "Invalid log sectorsize (%u)", sbi 2572 fs/f2fs/super.c f2fs_info(sbi, "Invalid log sectors per block(%u) log sectorsize(%u)", sbi 2588 fs/f2fs/super.c f2fs_info(sbi, "Invalid segment count (%u)", segment_count); sbi 2595 fs/f2fs/super.c f2fs_info(sbi, "Invalid segment/section count (%u, %u x %u)", sbi 2601 fs/f2fs/super.c f2fs_info(sbi, "Small segment_count (%u < %u * %u)", sbi 2607 fs/f2fs/super.c f2fs_info(sbi, "Wrong segment_count / block_count (%u > %llu)", sbi 2613 fs/f2fs/super.c f2fs_info(sbi, "Wrong secs_per_zone / total_sections (%u, %u)", sbi 2621 fs/f2fs/super.c f2fs_info(sbi, "Corrupted extension count (%u + %u > %u)", sbi 2630 fs/f2fs/super.c f2fs_info(sbi, "Insane cp_payload (%u > %u)", sbi 2640 fs/f2fs/super.c f2fs_info(sbi, "Invalid Fs Meta Ino: node(%u) meta(%u) root(%u)", sbi 2648 fs/f2fs/super.c if (sanity_check_area_boundary(sbi, bh)) sbi 2654 fs/f2fs/super.c int f2fs_sanity_check_ckpt(struct f2fs_sb_info *sbi) sbi 2657 fs/f2fs/super.c struct f2fs_super_block *raw_super = F2FS_RAW_SUPER(sbi); sbi 2658 fs/f2fs/super.c struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi); sbi 2687 fs/f2fs/super.c f2fs_err(sbi, "Wrong layout: check mkfs.f2fs version"); sbi 2696 fs/f2fs/super.c f2fs_err(sbi, "Wrong user_block_count: %u", sbi 2703 fs/f2fs/super.c f2fs_err(sbi, "Wrong valid_user_blocks: %u, user_block_count: %u", sbi 2709 fs/f2fs/super.c avail_node_count = sbi->total_node_count - F2FS_RESERVED_NODE_NUM; sbi 2711 fs/f2fs/super.c f2fs_err(sbi, "Wrong valid_node_count: %u, avail_node_count: %u", sbi 2717 fs/f2fs/super.c blocks_per_seg = sbi->blocks_per_seg; sbi 2726 fs/f2fs/super.c f2fs_err(sbi, "Node segment (%u, %u) has the same segno: %u", sbi 2740 fs/f2fs/super.c f2fs_err(sbi, "Data segment (%u, %u) has the same segno: %u", sbi 2751 fs/f2fs/super.c f2fs_err(sbi, "Node segment (%u) and Data segment (%u) has the same segno: %u", sbi 2764 fs/f2fs/super.c f2fs_err(sbi, "Wrong bitmap size: sit: %u, nat:%u", sbi 2769 fs/f2fs/super.c cp_pack_start_sum = __start_sum_addr(sbi); sbi 2770 fs/f2fs/super.c cp_payload = __cp_payload(sbi); sbi 2774 fs/f2fs/super.c f2fs_err(sbi, "Wrong cp_pack_start_sum: %u", sbi 2781 fs/f2fs/super.c f2fs_warn(sbi, "using deprecated layout of large_nat_bitmap, " sbi 2788 fs/f2fs/super.c if (unlikely(f2fs_cp_error(sbi))) { sbi 2789 fs/f2fs/super.c f2fs_err(sbi, "A bug case: need to run fsck"); sbi 2795 fs/f2fs/super.c static void init_sb_info(struct f2fs_sb_info *sbi) sbi 2797 fs/f2fs/super.c struct f2fs_super_block *raw_super = sbi->raw_super; sbi 2800 fs/f2fs/super.c sbi->log_sectors_per_block = sbi 2802 fs/f2fs/super.c sbi->log_blocksize = le32_to_cpu(raw_super->log_blocksize); sbi 2803 fs/f2fs/super.c sbi->blocksize = 1 << sbi->log_blocksize; sbi 2804 fs/f2fs/super.c sbi->log_blocks_per_seg = le32_to_cpu(raw_super->log_blocks_per_seg); sbi 2805 fs/f2fs/super.c sbi->blocks_per_seg = 1 << sbi->log_blocks_per_seg; sbi 2806 fs/f2fs/super.c sbi->segs_per_sec = le32_to_cpu(raw_super->segs_per_sec); sbi 2807 fs/f2fs/super.c sbi->secs_per_zone = le32_to_cpu(raw_super->secs_per_zone); sbi 2808 fs/f2fs/super.c sbi->total_sections = le32_to_cpu(raw_super->section_count); sbi 2809 fs/f2fs/super.c sbi->total_node_count = sbi 2811 fs/f2fs/super.c * sbi->blocks_per_seg * NAT_ENTRY_PER_BLOCK; sbi 2812 fs/f2fs/super.c sbi->root_ino_num = le32_to_cpu(raw_super->root_ino); sbi 2813 fs/f2fs/super.c sbi->node_ino_num = le32_to_cpu(raw_super->node_ino); sbi 2814 fs/f2fs/super.c sbi->meta_ino_num = le32_to_cpu(raw_super->meta_ino); sbi 2815 fs/f2fs/super.c sbi->cur_victim_sec = NULL_SECNO; sbi 2816 fs/f2fs/super.c sbi->next_victim_seg[BG_GC] = NULL_SEGNO; sbi 2817 fs/f2fs/super.c sbi->next_victim_seg[FG_GC] = NULL_SEGNO; sbi 2818 fs/f2fs/super.c sbi->max_victim_search = DEF_MAX_VICTIM_SEARCH; sbi 2819 fs/f2fs/super.c sbi->migration_granularity = sbi->segs_per_sec; sbi 2821 fs/f2fs/super.c sbi->dir_level = DEF_DIR_LEVEL; sbi 2822 fs/f2fs/super.c sbi->interval_time[CP_TIME] = DEF_CP_INTERVAL; sbi 2823 fs/f2fs/super.c sbi->interval_time[REQ_TIME] = DEF_IDLE_INTERVAL; sbi 2824 fs/f2fs/super.c sbi->interval_time[DISCARD_TIME] = DEF_IDLE_INTERVAL; sbi 2825 fs/f2fs/super.c sbi->interval_time[GC_TIME] = DEF_IDLE_INTERVAL; sbi 2826 fs/f2fs/super.c sbi->interval_time[DISABLE_TIME] = DEF_DISABLE_INTERVAL; sbi 2827 fs/f2fs/super.c sbi->interval_time[UMOUNT_DISCARD_TIMEOUT] = sbi 2829 fs/f2fs/super.c clear_sbi_flag(sbi, SBI_NEED_FSCK); sbi 2832 fs/f2fs/super.c atomic_set(&sbi->nr_pages[i], 0); sbi 2835 fs/f2fs/super.c atomic_set(&sbi->wb_sync_req[i], 0); sbi 2837 fs/f2fs/super.c INIT_LIST_HEAD(&sbi->s_list); sbi 2838 fs/f2fs/super.c mutex_init(&sbi->umount_mutex); sbi 2839 fs/f2fs/super.c init_rwsem(&sbi->io_order_lock); sbi 2840 fs/f2fs/super.c spin_lock_init(&sbi->cp_lock); sbi 2842 fs/f2fs/super.c sbi->dirty_device = 0; sbi 2843 fs/f2fs/super.c spin_lock_init(&sbi->dev_lock); sbi 2845 fs/f2fs/super.c init_rwsem(&sbi->sb_lock); sbi 2848 fs/f2fs/super.c static int init_percpu_info(struct f2fs_sb_info *sbi) sbi 2852 fs/f2fs/super.c err = percpu_counter_init(&sbi->alloc_valid_block_count, 0, GFP_KERNEL); sbi 2856 fs/f2fs/super.c err = percpu_counter_init(&sbi->total_valid_inode_count, 0, sbi 2859 fs/f2fs/super.c percpu_counter_destroy(&sbi->alloc_valid_block_count); sbi 2865 fs/f2fs/super.c static int init_blkz_info(struct f2fs_sb_info *sbi, int devi) sbi 2875 fs/f2fs/super.c if (!f2fs_sb_has_blkzoned(sbi)) sbi 2878 fs/f2fs/super.c if (sbi->blocks_per_blkz && sbi->blocks_per_blkz != sbi 2881 fs/f2fs/super.c sbi->blocks_per_blkz = SECTOR_TO_BLOCK(bdev_zone_sectors(bdev)); sbi 2882 fs/f2fs/super.c if (sbi->log_blocks_per_blkz && sbi->log_blocks_per_blkz != sbi 2883 fs/f2fs/super.c __ilog2_u32(sbi->blocks_per_blkz)) sbi 2885 fs/f2fs/super.c sbi->log_blocks_per_blkz = __ilog2_u32(sbi->blocks_per_blkz); sbi 2887 fs/f2fs/super.c sbi->log_blocks_per_blkz; sbi 2891 fs/f2fs/super.c FDEV(devi).blkz_seq = f2fs_kzalloc(sbi, sbi 2900 fs/f2fs/super.c zones = f2fs_kzalloc(sbi, sbi 2939 fs/f2fs/super.c static int read_raw_super_block(struct f2fs_sb_info *sbi, sbi 2943 fs/f2fs/super.c struct super_block *sb = sbi->sb; sbi 2956 fs/f2fs/super.c f2fs_err(sbi, "Unable to read %dth superblock", sbi 2963 fs/f2fs/super.c err = sanity_check_raw_super(sbi, bh); sbi 2965 fs/f2fs/super.c f2fs_err(sbi, "Can't find valid F2FS filesystem in %dth superblock", sbi 2993 fs/f2fs/super.c int f2fs_commit_super(struct f2fs_sb_info *sbi, bool recover) sbi 2999 fs/f2fs/super.c if ((recover && f2fs_readonly(sbi->sb)) || sbi 3000 fs/f2fs/super.c bdev_read_only(sbi->sb->s_bdev)) { sbi 3001 fs/f2fs/super.c set_sbi_flag(sbi, SBI_NEED_SB_WRITE); sbi 3006 fs/f2fs/super.c if (!recover && f2fs_sb_has_sb_chksum(sbi)) { sbi 3007 fs/f2fs/super.c crc = f2fs_crc32(sbi, F2FS_RAW_SUPER(sbi), sbi 3009 fs/f2fs/super.c F2FS_RAW_SUPER(sbi)->crc = cpu_to_le32(crc); sbi 3013 fs/f2fs/super.c bh = sb_bread(sbi->sb, sbi->valid_super_block ? 0 : 1); sbi 3016 fs/f2fs/super.c err = __f2fs_commit_super(bh, F2FS_RAW_SUPER(sbi)); sbi 3024 fs/f2fs/super.c bh = sb_bread(sbi->sb, sbi->valid_super_block); sbi 3027 fs/f2fs/super.c err = __f2fs_commit_super(bh, F2FS_RAW_SUPER(sbi)); sbi 3032 fs/f2fs/super.c static int f2fs_scan_devices(struct f2fs_sb_info *sbi) sbi 3034 fs/f2fs/super.c struct f2fs_super_block *raw_super = F2FS_RAW_SUPER(sbi); sbi 3040 fs/f2fs/super.c if (!bdev_is_zoned(sbi->sb->s_bdev)) sbi 3049 fs/f2fs/super.c sbi->devs = f2fs_kzalloc(sbi, sbi 3053 fs/f2fs/super.c if (!sbi->devs) sbi 3064 fs/f2fs/super.c blkdev_get_by_dev(sbi->sb->s_bdev->bd_dev, sbi 3065 fs/f2fs/super.c sbi->sb->s_mode, sbi->sb->s_type); sbi 3075 fs/f2fs/super.c sbi->log_blocks_per_seg) - 1 + sbi 3081 fs/f2fs/super.c sbi->log_blocks_per_seg) - 1; sbi 3084 fs/f2fs/super.c sbi->sb->s_mode, sbi->sb->s_type); sbi 3090 fs/f2fs/super.c sbi->s_ndevs = i + 1; sbi 3094 fs/f2fs/super.c !f2fs_sb_has_blkzoned(sbi)) { sbi 3095 fs/f2fs/super.c f2fs_err(sbi, "Zoned block device feature not enabled\n"); sbi 3099 fs/f2fs/super.c if (init_blkz_info(sbi, i)) { sbi 3100 fs/f2fs/super.c f2fs_err(sbi, "Failed to initialize F2FS blkzone information"); sbi 3105 fs/f2fs/super.c f2fs_info(sbi, "Mount Device [%2d]: %20s, %8u, %8x - %8x (zone: %s)", sbi 3114 fs/f2fs/super.c f2fs_info(sbi, "Mount Device [%2d]: %20s, %8u, %8x - %8x", sbi 3119 fs/f2fs/super.c f2fs_info(sbi, sbi 3120 fs/f2fs/super.c "IO Block Size: %8d KB", F2FS_IO_SIZE_KB(sbi)); sbi 3124 fs/f2fs/super.c static int f2fs_setup_casefold(struct f2fs_sb_info *sbi) sbi 3127 fs/f2fs/super.c if (f2fs_sb_has_casefold(sbi) && !sbi->s_encoding) { sbi 3132 fs/f2fs/super.c if (f2fs_sb_has_encrypt(sbi)) { sbi 3133 fs/f2fs/super.c f2fs_err(sbi, sbi 3138 fs/f2fs/super.c if (f2fs_sb_read_encoding(sbi->raw_super, &encoding_info, sbi 3140 fs/f2fs/super.c f2fs_err(sbi, sbi 3147 fs/f2fs/super.c f2fs_err(sbi, sbi 3154 fs/f2fs/super.c f2fs_info(sbi, "Using encoding defined by superblock: " sbi 3158 fs/f2fs/super.c sbi->s_encoding = encoding; sbi 3159 fs/f2fs/super.c sbi->s_encoding_flags = encoding_flags; sbi 3160 fs/f2fs/super.c sbi->sb->s_d_op = &f2fs_dentry_ops; sbi 3163 fs/f2fs/super.c if (f2fs_sb_has_casefold(sbi)) { sbi 3164 fs/f2fs/super.c f2fs_err(sbi, "Filesystem with casefold feature cannot be mounted without CONFIG_UNICODE"); sbi 3171 fs/f2fs/super.c static void f2fs_tuning_parameters(struct f2fs_sb_info *sbi) sbi 3173 fs/f2fs/super.c struct f2fs_sm_info *sm_i = SM_I(sbi); sbi 3177 fs/f2fs/super.c F2FS_OPTION(sbi).alloc_mode = ALLOC_MODE_REUSE; sbi 3182 fs/f2fs/super.c sbi->readdir_ra = 1; sbi 3187 fs/f2fs/super.c struct f2fs_sb_info *sbi; sbi 3204 fs/f2fs/super.c sbi = kzalloc(sizeof(struct f2fs_sb_info), GFP_KERNEL); sbi 3205 fs/f2fs/super.c if (!sbi) sbi 3208 fs/f2fs/super.c sbi->sb = sb; sbi 3211 fs/f2fs/super.c sbi->s_chksum_driver = crypto_alloc_shash("crc32", 0, 0); sbi 3212 fs/f2fs/super.c if (IS_ERR(sbi->s_chksum_driver)) { sbi 3213 fs/f2fs/super.c f2fs_err(sbi, "Cannot load crc32 driver."); sbi 3214 fs/f2fs/super.c err = PTR_ERR(sbi->s_chksum_driver); sbi 3215 fs/f2fs/super.c sbi->s_chksum_driver = NULL; sbi 3221 fs/f2fs/super.c f2fs_err(sbi, "unable to set blocksize"); sbi 3225 fs/f2fs/super.c err = read_raw_super_block(sbi, &raw_super, &valid_super_block, sbi 3230 fs/f2fs/super.c sb->s_fs_info = sbi; sbi 3231 fs/f2fs/super.c sbi->raw_super = raw_super; sbi 3234 fs/f2fs/super.c if (f2fs_sb_has_inode_chksum(sbi)) sbi 3235 fs/f2fs/super.c sbi->s_chksum_seed = f2fs_chksum(sbi, ~0, raw_super->uuid, sbi 3244 fs/f2fs/super.c if (f2fs_sb_has_blkzoned(sbi)) { sbi 3245 fs/f2fs/super.c f2fs_err(sbi, "Zoned block device support is not enabled"); sbi 3250 fs/f2fs/super.c default_options(sbi); sbi 3262 fs/f2fs/super.c sbi->max_file_blocks = max_file_blocks(); sbi 3263 fs/f2fs/super.c sb->s_maxbytes = sbi->max_file_blocks << sbi 3267 fs/f2fs/super.c err = f2fs_setup_casefold(sbi); sbi 3276 fs/f2fs/super.c if (f2fs_sb_has_quota_ino(sbi)) { sbi 3278 fs/f2fs/super.c if (f2fs_qf_ino(sbi->sb, i)) sbi 3279 fs/f2fs/super.c sbi->nquota_files++; sbi 3296 fs/f2fs/super.c (test_opt(sbi, POSIX_ACL) ? SB_POSIXACL : 0); sbi 3301 fs/f2fs/super.c sbi->valid_super_block = valid_super_block; sbi 3302 fs/f2fs/super.c mutex_init(&sbi->gc_mutex); sbi 3303 fs/f2fs/super.c mutex_init(&sbi->writepages); sbi 3304 fs/f2fs/super.c mutex_init(&sbi->cp_mutex); sbi 3305 fs/f2fs/super.c mutex_init(&sbi->resize_mutex); sbi 3306 fs/f2fs/super.c init_rwsem(&sbi->node_write); sbi 3307 fs/f2fs/super.c init_rwsem(&sbi->node_change); sbi 3310 fs/f2fs/super.c set_sbi_flag(sbi, SBI_POR_DOING); sbi 3311 fs/f2fs/super.c spin_lock_init(&sbi->stat_lock); sbi 3314 fs/f2fs/super.c spin_lock_init(&sbi->iostat_lock); sbi 3315 fs/f2fs/super.c sbi->iostat_enable = false; sbi 3321 fs/f2fs/super.c sbi->write_io[i] = sbi 3322 fs/f2fs/super.c f2fs_kmalloc(sbi, sbi 3326 fs/f2fs/super.c if (!sbi->write_io[i]) { sbi 3332 fs/f2fs/super.c init_rwsem(&sbi->write_io[i][j].io_rwsem); sbi 3333 fs/f2fs/super.c sbi->write_io[i][j].sbi = sbi; sbi 3334 fs/f2fs/super.c sbi->write_io[i][j].bio = NULL; sbi 3335 fs/f2fs/super.c spin_lock_init(&sbi->write_io[i][j].io_lock); sbi 3336 fs/f2fs/super.c INIT_LIST_HEAD(&sbi->write_io[i][j].io_list); sbi 3340 fs/f2fs/super.c init_rwsem(&sbi->cp_rwsem); sbi 3341 fs/f2fs/super.c init_rwsem(&sbi->quota_sem); sbi 3342 fs/f2fs/super.c init_waitqueue_head(&sbi->cp_wait); sbi 3343 fs/f2fs/super.c init_sb_info(sbi); sbi 3345 fs/f2fs/super.c err = init_percpu_info(sbi); sbi 3349 fs/f2fs/super.c if (F2FS_IO_ALIGNED(sbi)) { sbi 3350 fs/f2fs/super.c sbi->write_io_dummy = sbi 3351 fs/f2fs/super.c mempool_create_page_pool(2 * (F2FS_IO_SIZE(sbi) - 1), 0); sbi 3352 fs/f2fs/super.c if (!sbi->write_io_dummy) { sbi 3359 fs/f2fs/super.c sbi->meta_inode = f2fs_iget(sb, F2FS_META_INO(sbi)); sbi 3360 fs/f2fs/super.c if (IS_ERR(sbi->meta_inode)) { sbi 3361 fs/f2fs/super.c f2fs_err(sbi, "Failed to read F2FS meta data inode"); sbi 3362 fs/f2fs/super.c err = PTR_ERR(sbi->meta_inode); sbi 3366 fs/f2fs/super.c err = f2fs_get_valid_checkpoint(sbi); sbi 3368 fs/f2fs/super.c f2fs_err(sbi, "Failed to get valid F2FS checkpoint"); sbi 3372 fs/f2fs/super.c if (__is_set_ckpt_flags(F2FS_CKPT(sbi), CP_QUOTA_NEED_FSCK_FLAG)) sbi 3373 fs/f2fs/super.c set_sbi_flag(sbi, SBI_QUOTA_NEED_REPAIR); sbi 3374 fs/f2fs/super.c if (__is_set_ckpt_flags(F2FS_CKPT(sbi), CP_DISABLED_QUICK_FLAG)) { sbi 3375 fs/f2fs/super.c set_sbi_flag(sbi, SBI_CP_DISABLED_QUICK); sbi 3376 fs/f2fs/super.c sbi->interval_time[DISABLE_TIME] = DEF_DISABLE_QUICK_INTERVAL; sbi 3379 fs/f2fs/super.c if (__is_set_ckpt_flags(F2FS_CKPT(sbi), CP_FSCK_FLAG)) sbi 3380 fs/f2fs/super.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 3383 fs/f2fs/super.c err = f2fs_scan_devices(sbi); sbi 3385 fs/f2fs/super.c f2fs_err(sbi, "Failed to find devices"); sbi 3389 fs/f2fs/super.c sbi->total_valid_node_count = sbi 3390 fs/f2fs/super.c le32_to_cpu(sbi->ckpt->valid_node_count); sbi 3391 fs/f2fs/super.c percpu_counter_set(&sbi->total_valid_inode_count, sbi 3392 fs/f2fs/super.c le32_to_cpu(sbi->ckpt->valid_inode_count)); sbi 3393 fs/f2fs/super.c sbi->user_block_count = le64_to_cpu(sbi->ckpt->user_block_count); sbi 3394 fs/f2fs/super.c sbi->total_valid_block_count = sbi 3395 fs/f2fs/super.c le64_to_cpu(sbi->ckpt->valid_block_count); sbi 3396 fs/f2fs/super.c sbi->last_valid_block_count = sbi->total_valid_block_count; sbi 3397 fs/f2fs/super.c sbi->reserved_blocks = 0; sbi 3398 fs/f2fs/super.c sbi->current_reserved_blocks = 0; sbi 3399 fs/f2fs/super.c limit_reserve_root(sbi); sbi 3402 fs/f2fs/super.c INIT_LIST_HEAD(&sbi->inode_list[i]); sbi 3403 fs/f2fs/super.c spin_lock_init(&sbi->inode_lock[i]); sbi 3405 fs/f2fs/super.c mutex_init(&sbi->flush_lock); sbi 3407 fs/f2fs/super.c f2fs_init_extent_cache_info(sbi); sbi 3409 fs/f2fs/super.c f2fs_init_ino_entry_info(sbi); sbi 3411 fs/f2fs/super.c f2fs_init_fsync_node_info(sbi); sbi 3414 fs/f2fs/super.c err = f2fs_build_segment_manager(sbi); sbi 3416 fs/f2fs/super.c f2fs_err(sbi, "Failed to initialize F2FS segment manager (%d)", sbi 3420 fs/f2fs/super.c err = f2fs_build_node_manager(sbi); sbi 3422 fs/f2fs/super.c f2fs_err(sbi, "Failed to initialize F2FS node manager (%d)", sbi 3429 fs/f2fs/super.c sbi->sectors_written_start = sbi 3434 fs/f2fs/super.c seg_i = CURSEG_I(sbi, CURSEG_HOT_NODE); sbi 3435 fs/f2fs/super.c if (__exist_node_summaries(sbi)) sbi 3436 fs/f2fs/super.c sbi->kbytes_written = sbi 3439 fs/f2fs/super.c f2fs_build_gc_manager(sbi); sbi 3441 fs/f2fs/super.c err = f2fs_build_stats(sbi); sbi 3446 fs/f2fs/super.c sbi->node_inode = f2fs_iget(sb, F2FS_NODE_INO(sbi)); sbi 3447 fs/f2fs/super.c if (IS_ERR(sbi->node_inode)) { sbi 3448 fs/f2fs/super.c f2fs_err(sbi, "Failed to read node inode"); sbi 3449 fs/f2fs/super.c err = PTR_ERR(sbi->node_inode); sbi 3454 fs/f2fs/super.c root = f2fs_iget(sb, F2FS_ROOT_INO(sbi)); sbi 3456 fs/f2fs/super.c f2fs_err(sbi, "Failed to read root inode"); sbi 3473 fs/f2fs/super.c err = f2fs_register_sysfs(sbi); sbi 3479 fs/f2fs/super.c if (f2fs_sb_has_quota_ino(sbi) && !f2fs_readonly(sb)) { sbi 3482 fs/f2fs/super.c f2fs_err(sbi, "Cannot turn on quotas: error %d", err); sbi 3486 fs/f2fs/super.c err = f2fs_recover_orphan_inodes(sbi); sbi 3490 fs/f2fs/super.c if (unlikely(is_set_ckpt_flags(sbi, CP_DISABLED_FLAG))) sbi 3494 fs/f2fs/super.c if (!test_opt(sbi, DISABLE_ROLL_FORWARD) && sbi 3495 fs/f2fs/super.c !test_opt(sbi, NORECOVERY)) { sbi 3500 fs/f2fs/super.c if (f2fs_hw_is_readonly(sbi)) { sbi 3501 fs/f2fs/super.c if (!is_set_ckpt_flags(sbi, CP_UMOUNT_FLAG)) { sbi 3503 fs/f2fs/super.c f2fs_err(sbi, "Need to recover fsync data, but write access unavailable"); sbi 3506 fs/f2fs/super.c f2fs_info(sbi, "write access unavailable, skipping recovery"); sbi 3511 fs/f2fs/super.c set_sbi_flag(sbi, SBI_NEED_FSCK); sbi 3516 fs/f2fs/super.c err = f2fs_recover_fsync_data(sbi, false); sbi 3521 fs/f2fs/super.c f2fs_err(sbi, "Cannot recover all fsync data errno=%d", sbi 3526 fs/f2fs/super.c err = f2fs_recover_fsync_data(sbi, true); sbi 3530 fs/f2fs/super.c f2fs_err(sbi, "Need to recover fsync data"); sbi 3536 fs/f2fs/super.c clear_sbi_flag(sbi, SBI_POR_DOING); sbi 3538 fs/f2fs/super.c if (test_opt(sbi, DISABLE_CHECKPOINT)) { sbi 3539 fs/f2fs/super.c err = f2fs_disable_checkpoint(sbi); sbi 3542 fs/f2fs/super.c } else if (is_set_ckpt_flags(sbi, CP_DISABLED_FLAG)) { sbi 3543 fs/f2fs/super.c f2fs_enable_checkpoint(sbi); sbi 3550 fs/f2fs/super.c if (test_opt(sbi, BG_GC) && !f2fs_readonly(sb)) { sbi 3552 fs/f2fs/super.c err = f2fs_start_gc_thread(sbi); sbi 3560 fs/f2fs/super.c err = f2fs_commit_super(sbi, true); sbi 3561 fs/f2fs/super.c f2fs_info(sbi, "Try to recover %dth superblock, ret: %d", sbi 3562 fs/f2fs/super.c sbi->valid_super_block ? 1 : 2, err); sbi 3565 fs/f2fs/super.c f2fs_join_shrinker(sbi); sbi 3567 fs/f2fs/super.c f2fs_tuning_parameters(sbi); sbi 3569 fs/f2fs/super.c f2fs_notice(sbi, "Mounted with checkpoint version = %llx", sbi 3570 fs/f2fs/super.c cur_cp_version(F2FS_CKPT(sbi))); sbi 3571 fs/f2fs/super.c f2fs_update_time(sbi, CP_TIME); sbi 3572 fs/f2fs/super.c f2fs_update_time(sbi, REQ_TIME); sbi 3573 fs/f2fs/super.c clear_sbi_flag(sbi, SBI_CP_DISABLED_QUICK); sbi 3578 fs/f2fs/super.c sync_filesystem(sbi->sb); sbi 3584 fs/f2fs/super.c if (f2fs_sb_has_quota_ino(sbi) && !f2fs_readonly(sb)) sbi 3585 fs/f2fs/super.c f2fs_quota_off_umount(sbi->sb); sbi 3593 fs/f2fs/super.c truncate_inode_pages_final(META_MAPPING(sbi)); sbi 3596 fs/f2fs/super.c f2fs_unregister_sysfs(sbi); sbi 3601 fs/f2fs/super.c f2fs_release_ino_entry(sbi, true); sbi 3602 fs/f2fs/super.c truncate_inode_pages_final(NODE_MAPPING(sbi)); sbi 3603 fs/f2fs/super.c iput(sbi->node_inode); sbi 3604 fs/f2fs/super.c sbi->node_inode = NULL; sbi 3606 fs/f2fs/super.c f2fs_destroy_stats(sbi); sbi 3608 fs/f2fs/super.c f2fs_destroy_node_manager(sbi); sbi 3610 fs/f2fs/super.c f2fs_destroy_segment_manager(sbi); sbi 3612 fs/f2fs/super.c destroy_device_list(sbi); sbi 3613 fs/f2fs/super.c kvfree(sbi->ckpt); sbi 3615 fs/f2fs/super.c make_bad_inode(sbi->meta_inode); sbi 3616 fs/f2fs/super.c iput(sbi->meta_inode); sbi 3617 fs/f2fs/super.c sbi->meta_inode = NULL; sbi 3619 fs/f2fs/super.c mempool_destroy(sbi->write_io_dummy); sbi 3621 fs/f2fs/super.c destroy_percpu_info(sbi); sbi 3624 fs/f2fs/super.c kvfree(sbi->write_io[i]); sbi 3627 fs/f2fs/super.c utf8_unload(sbi->s_encoding); sbi 3632 fs/f2fs/super.c kvfree(F2FS_OPTION(sbi).s_qf_names[i]); sbi 3638 fs/f2fs/super.c if (sbi->s_chksum_driver) sbi 3639 fs/f2fs/super.c crypto_free_shash(sbi->s_chksum_driver); sbi 3640 fs/f2fs/super.c kvfree(sbi); sbi 3660 fs/f2fs/super.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 3662 fs/f2fs/super.c set_sbi_flag(sbi, SBI_IS_CLOSE); sbi 3663 fs/f2fs/super.c f2fs_stop_gc_thread(sbi); sbi 3664 fs/f2fs/super.c f2fs_stop_discard_thread(sbi); sbi 3666 fs/f2fs/super.c if (is_sbi_flag_set(sbi, SBI_IS_DIRTY) || sbi 3667 fs/f2fs/super.c !is_set_ckpt_flags(sbi, CP_UMOUNT_FLAG)) { sbi 3671 fs/f2fs/super.c f2fs_write_checkpoint(sbi, &cpc); sbi 3674 fs/f2fs/super.c if (is_sbi_flag_set(sbi, SBI_IS_RECOVERED) && f2fs_readonly(sb)) sbi 45 fs/f2fs/sysfs.c static unsigned char *__struct_ptr(struct f2fs_sb_info *sbi, int struct_type) sbi 48 fs/f2fs/sysfs.c return (unsigned char *)sbi->gc_thread; sbi 50 fs/f2fs/sysfs.c return (unsigned char *)SM_I(sbi); sbi 52 fs/f2fs/sysfs.c return (unsigned char *)SM_I(sbi)->dcc_info; sbi 54 fs/f2fs/sysfs.c return (unsigned char *)NM_I(sbi); sbi 56 fs/f2fs/sysfs.c return (unsigned char *)sbi; sbi 60 fs/f2fs/sysfs.c return (unsigned char *)&F2FS_OPTION(sbi).fault_info; sbi 66 fs/f2fs/sysfs.c struct f2fs_sb_info *sbi, char *buf) sbi 69 fs/f2fs/sysfs.c (unsigned long long)(dirty_segments(sbi))); sbi 73 fs/f2fs/sysfs.c struct f2fs_sb_info *sbi, char *buf) sbi 77 fs/f2fs/sysfs.c if (test_opt(sbi, DISABLE_CHECKPOINT)) sbi 78 fs/f2fs/sysfs.c unusable = sbi->unusable_block_count; sbi 80 fs/f2fs/sysfs.c unusable = f2fs_get_unusable_blocks(sbi); sbi 86 fs/f2fs/sysfs.c struct f2fs_sb_info *sbi, char *buf) sbi 89 fs/f2fs/sysfs.c if (f2fs_sb_has_casefold(sbi)) sbi 91 fs/f2fs/sysfs.c sbi->s_encoding->charset, sbi 92 fs/f2fs/sysfs.c (sbi->s_encoding->version >> 16) & 0xff, sbi 93 fs/f2fs/sysfs.c (sbi->s_encoding->version >> 8) & 0xff, sbi 94 fs/f2fs/sysfs.c sbi->s_encoding->version & 0xff); sbi 100 fs/f2fs/sysfs.c struct f2fs_sb_info *sbi, char *buf) sbi 102 fs/f2fs/sysfs.c struct super_block *sb = sbi->sb; sbi 108 fs/f2fs/sysfs.c (unsigned long long)(sbi->kbytes_written + sbi 109 fs/f2fs/sysfs.c BD_PART_WRITTEN(sbi))); sbi 113 fs/f2fs/sysfs.c struct f2fs_sb_info *sbi, char *buf) sbi 115 fs/f2fs/sysfs.c struct super_block *sb = sbi->sb; sbi 121 fs/f2fs/sysfs.c if (f2fs_sb_has_encrypt(sbi)) sbi 124 fs/f2fs/sysfs.c if (f2fs_sb_has_blkzoned(sbi)) sbi 127 fs/f2fs/sysfs.c if (f2fs_sb_has_extra_attr(sbi)) sbi 130 fs/f2fs/sysfs.c if (f2fs_sb_has_project_quota(sbi)) sbi 133 fs/f2fs/sysfs.c if (f2fs_sb_has_inode_chksum(sbi)) sbi 136 fs/f2fs/sysfs.c if (f2fs_sb_has_flexible_inline_xattr(sbi)) sbi 139 fs/f2fs/sysfs.c if (f2fs_sb_has_quota_ino(sbi)) sbi 142 fs/f2fs/sysfs.c if (f2fs_sb_has_inode_crtime(sbi)) sbi 145 fs/f2fs/sysfs.c if (f2fs_sb_has_lost_found(sbi)) sbi 148 fs/f2fs/sysfs.c if (f2fs_sb_has_verity(sbi)) sbi 151 fs/f2fs/sysfs.c if (f2fs_sb_has_sb_chksum(sbi)) sbi 154 fs/f2fs/sysfs.c if (f2fs_sb_has_casefold(sbi)) sbi 162 fs/f2fs/sysfs.c struct f2fs_sb_info *sbi, char *buf) sbi 164 fs/f2fs/sysfs.c return snprintf(buf, PAGE_SIZE, "%u\n", sbi->current_reserved_blocks); sbi 168 fs/f2fs/sysfs.c struct f2fs_sb_info *sbi, char *buf) sbi 173 fs/f2fs/sysfs.c ptr = __struct_ptr(sbi, a->struct_type); sbi 179 fs/f2fs/sysfs.c sbi->raw_super->extension_list; sbi 180 fs/f2fs/sysfs.c int cold_count = le32_to_cpu(sbi->raw_super->extension_count); sbi 181 fs/f2fs/sysfs.c int hot_count = sbi->raw_super->hot_ext_count; sbi 204 fs/f2fs/sysfs.c struct f2fs_sb_info *sbi, sbi 212 fs/f2fs/sysfs.c ptr = __struct_ptr(sbi, a->struct_type); sbi 237 fs/f2fs/sysfs.c down_write(&sbi->sb_lock); sbi 239 fs/f2fs/sysfs.c ret = f2fs_update_extension_list(sbi, name, hot, set); sbi 243 fs/f2fs/sysfs.c ret = f2fs_commit_super(sbi, false); sbi 245 fs/f2fs/sysfs.c f2fs_update_extension_list(sbi, name, hot, !set); sbi 247 fs/f2fs/sysfs.c up_write(&sbi->sb_lock); sbi 263 fs/f2fs/sysfs.c spin_lock(&sbi->stat_lock); sbi 264 fs/f2fs/sysfs.c if (t > (unsigned long)(sbi->user_block_count - sbi 265 fs/f2fs/sysfs.c F2FS_OPTION(sbi).root_reserved_blocks)) { sbi 266 fs/f2fs/sysfs.c spin_unlock(&sbi->stat_lock); sbi 270 fs/f2fs/sysfs.c sbi->current_reserved_blocks = min(sbi->reserved_blocks, sbi 271 fs/f2fs/sysfs.c sbi->user_block_count - valid_user_blocks(sbi)); sbi 272 fs/f2fs/sysfs.c spin_unlock(&sbi->stat_lock); sbi 286 fs/f2fs/sysfs.c if (t == 0 || t > sbi->segs_per_sec) sbi 295 fs/f2fs/sysfs.c sbi->gc_mode = GC_URGENT; sbi 296 fs/f2fs/sysfs.c if (sbi->gc_thread) { sbi 297 fs/f2fs/sysfs.c sbi->gc_thread->gc_wake = 1; sbi 299 fs/f2fs/sysfs.c &sbi->gc_thread->gc_wait_queue_head); sbi 300 fs/f2fs/sysfs.c wake_up_discard_thread(sbi, true); sbi 303 fs/f2fs/sysfs.c sbi->gc_mode = GC_NORMAL; sbi 309 fs/f2fs/sysfs.c sbi->gc_mode = GC_IDLE_CB; sbi 311 fs/f2fs/sysfs.c sbi->gc_mode = GC_IDLE_GREEDY; sbi 313 fs/f2fs/sysfs.c sbi->gc_mode = GC_NORMAL; sbi 319 fs/f2fs/sysfs.c sbi->iostat_enable = !!t; sbi 320 fs/f2fs/sysfs.c if (!sbi->iostat_enable) sbi 321 fs/f2fs/sysfs.c f2fs_reset_iostat(sbi); sbi 331 fs/f2fs/sysfs.c struct f2fs_sb_info *sbi, sbi 339 fs/f2fs/sysfs.c if (!down_read_trylock(&sbi->sb->s_umount)) sbi 342 fs/f2fs/sysfs.c ret = __sbi_store(a, sbi, buf, count); sbi 344 fs/f2fs/sysfs.c up_read(&sbi->sb->s_umount); sbi 352 fs/f2fs/sysfs.c struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info, sbi 356 fs/f2fs/sysfs.c return a->show ? a->show(a, sbi, buf) : 0; sbi 362 fs/f2fs/sysfs.c struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info, sbi 366 fs/f2fs/sysfs.c return a->store ? a->store(a, sbi, buf, len) : 0; sbi 371 fs/f2fs/sysfs.c struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info, sbi 373 fs/f2fs/sysfs.c complete(&sbi->s_kobj_unregister); sbi 393 fs/f2fs/sysfs.c struct f2fs_sb_info *sbi, char *buf) sbi 608 fs/f2fs/sysfs.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 610 fs/f2fs/sysfs.c le32_to_cpu(sbi->raw_super->segment_count_main); sbi 617 fs/f2fs/sysfs.c struct seg_entry *se = get_seg_entry(sbi, i); sbi 635 fs/f2fs/sysfs.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 637 fs/f2fs/sysfs.c le32_to_cpu(sbi->raw_super->segment_count_main); sbi 644 fs/f2fs/sysfs.c struct seg_entry *se = get_seg_entry(sbi, i); sbi 659 fs/f2fs/sysfs.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 662 fs/f2fs/sysfs.c if (!sbi->iostat_enable) sbi 669 fs/f2fs/sysfs.c sbi->write_iostat[APP_BUFFERED_IO]); sbi 671 fs/f2fs/sysfs.c sbi->write_iostat[APP_DIRECT_IO]); sbi 673 fs/f2fs/sysfs.c sbi->write_iostat[APP_MAPPED_IO]); sbi 677 fs/f2fs/sysfs.c sbi->write_iostat[FS_DATA_IO]); sbi 679 fs/f2fs/sysfs.c sbi->write_iostat[FS_NODE_IO]); sbi 681 fs/f2fs/sysfs.c sbi->write_iostat[FS_META_IO]); sbi 683 fs/f2fs/sysfs.c sbi->write_iostat[FS_GC_DATA_IO]); sbi 685 fs/f2fs/sysfs.c sbi->write_iostat[FS_GC_NODE_IO]); sbi 687 fs/f2fs/sysfs.c sbi->write_iostat[FS_CP_DATA_IO]); sbi 689 fs/f2fs/sysfs.c sbi->write_iostat[FS_CP_NODE_IO]); sbi 691 fs/f2fs/sysfs.c sbi->write_iostat[FS_CP_META_IO]); sbi 693 fs/f2fs/sysfs.c sbi->write_iostat[FS_DISCARD]); sbi 702 fs/f2fs/sysfs.c struct f2fs_sb_info *sbi = F2FS_SB(sb); sbi 703 fs/f2fs/sysfs.c struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); sbi 708 fs/f2fs/sysfs.c for (i = 0; i < MAIN_SECS(sbi); i++) { sbi 712 fs/f2fs/sysfs.c if ((i % 10) == 9 || i == (MAIN_SECS(sbi) - 1)) sbi 749 fs/f2fs/sysfs.c int f2fs_register_sysfs(struct f2fs_sb_info *sbi) sbi 751 fs/f2fs/sysfs.c struct super_block *sb = sbi->sb; sbi 754 fs/f2fs/sysfs.c sbi->s_kobj.kset = &f2fs_kset; sbi 755 fs/f2fs/sysfs.c init_completion(&sbi->s_kobj_unregister); sbi 756 fs/f2fs/sysfs.c err = kobject_init_and_add(&sbi->s_kobj, &f2fs_sb_ktype, NULL, sbi 759 fs/f2fs/sysfs.c kobject_put(&sbi->s_kobj); sbi 760 fs/f2fs/sysfs.c wait_for_completion(&sbi->s_kobj_unregister); sbi 765 fs/f2fs/sysfs.c sbi->s_proc = proc_mkdir(sb->s_id, f2fs_proc_root); sbi 767 fs/f2fs/sysfs.c if (sbi->s_proc) { sbi 768 fs/f2fs/sysfs.c proc_create_single_data("segment_info", S_IRUGO, sbi->s_proc, sbi 770 fs/f2fs/sysfs.c proc_create_single_data("segment_bits", S_IRUGO, sbi->s_proc, sbi 772 fs/f2fs/sysfs.c proc_create_single_data("iostat_info", S_IRUGO, sbi->s_proc, sbi 774 fs/f2fs/sysfs.c proc_create_single_data("victim_bits", S_IRUGO, sbi->s_proc, sbi 780 fs/f2fs/sysfs.c void f2fs_unregister_sysfs(struct f2fs_sb_info *sbi) sbi 782 fs/f2fs/sysfs.c if (sbi->s_proc) { sbi 783 fs/f2fs/sysfs.c remove_proc_entry("iostat_info", sbi->s_proc); sbi 784 fs/f2fs/sysfs.c remove_proc_entry("segment_info", sbi->s_proc); sbi 785 fs/f2fs/sysfs.c remove_proc_entry("segment_bits", sbi->s_proc); sbi 786 fs/f2fs/sysfs.c remove_proc_entry("victim_bits", sbi->s_proc); sbi 787 fs/f2fs/sysfs.c remove_proc_entry(sbi->sb->s_id, f2fs_proc_root); sbi 789 fs/f2fs/sysfs.c kobject_del(&sbi->s_kobj); sbi 790 fs/f2fs/sysfs.c kobject_put(&sbi->s_kobj); sbi 30 fs/f2fs/xattr.c struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb); sbi 34 fs/f2fs/xattr.c if (!test_opt(sbi, XATTR_USER)) sbi 52 fs/f2fs/xattr.c struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb); sbi 56 fs/f2fs/xattr.c if (!test_opt(sbi, XATTR_USER)) sbi 71 fs/f2fs/xattr.c struct f2fs_sb_info *sbi = F2FS_SB(dentry->d_sb); sbi 73 fs/f2fs/xattr.c return test_opt(sbi, XATTR_USER); sbi 261 fs/f2fs/xattr.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 269 fs/f2fs/xattr.c page = f2fs_get_node_page(sbi, inode->i_ino); sbi 283 fs/f2fs/xattr.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 290 fs/f2fs/xattr.c xpage = f2fs_get_node_page(sbi, xnid); sbi 415 fs/f2fs/xattr.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 425 fs/f2fs/xattr.c if (!f2fs_alloc_nid(sbi, &new_nid)) sbi 433 fs/f2fs/xattr.c in_page = f2fs_get_node_page(sbi, inode->i_ino); sbi 435 fs/f2fs/xattr.c f2fs_alloc_nid_failed(sbi, new_nid); sbi 446 fs/f2fs/xattr.c f2fs_alloc_nid_failed(sbi, new_nid); sbi 459 fs/f2fs/xattr.c xpage = f2fs_get_node_page(sbi, F2FS_I(inode)->i_xattr_nid); sbi 462 fs/f2fs/xattr.c f2fs_alloc_nid_failed(sbi, new_nid); sbi 465 fs/f2fs/xattr.c f2fs_bug_on(sbi, new_nid); sbi 473 fs/f2fs/xattr.c f2fs_alloc_nid_failed(sbi, new_nid); sbi 476 fs/f2fs/xattr.c f2fs_alloc_nid_done(sbi, new_nid); sbi 742 fs/f2fs/xattr.c struct f2fs_sb_info *sbi = F2FS_I_SB(inode); sbi 745 fs/f2fs/xattr.c if (unlikely(f2fs_cp_error(sbi))) sbi 747 fs/f2fs/xattr.c if (!f2fs_is_checkpoint_ready(sbi)) sbi 758 fs/f2fs/xattr.c f2fs_balance_fs(sbi, true); sbi 760 fs/f2fs/xattr.c f2fs_lock_op(sbi); sbi 767 fs/f2fs/xattr.c f2fs_unlock_op(sbi); sbi 769 fs/f2fs/xattr.c f2fs_update_time(sbi, REQ_TIME); sbi 228 fs/fat/cache.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 229 fs/fat/cache.c const int limit = sb->s_maxbytes >> sbi->cluster_bits; sbi 238 fs/fat/cache.c if (!fat_valid_entry(sbi, *dclus)) { sbi 315 fs/fat/cache.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 318 fs/fat/cache.c cluster = sector >> (sbi->cluster_bits - sb->s_blocksize_bits); sbi 319 fs/fat/cache.c offset = sector & (sbi->sec_per_clus - 1); sbi 324 fs/fat/cache.c *bmap = fat_clus_to_blknr(sbi, cluster) + offset; sbi 325 fs/fat/cache.c *mapped_blocks = sbi->sec_per_clus - offset; sbi 361 fs/fat/cache.c struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb); sbi 366 fs/fat/cache.c if (!is_fat32(sbi) && (inode->i_ino == MSDOS_ROOT_INO)) { sbi 367 fs/fat/cache.c if (sector < (sbi->dir_entries >> sbi->dir_per_block_bits)) { sbi 368 fs/fat/cache.c *phys = sector + sbi->dir_start; sbi 53 fs/fat/dir.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 58 fs/fat/dir.c if ((iblock & (sbi->sec_per_clus - 1)) || sbi->sec_per_clus == 1) sbi 61 fs/fat/dir.c if (!is_fat32(sbi) && (dir->i_ino == MSDOS_ROOT_INO)) sbi 66 fs/fat/dir.c for (sec = 0; sec < sbi->sec_per_clus; sec++) sbi 184 fs/fat/dir.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 185 fs/fat/dir.c if (sbi->options.utf8) sbi 189 fs/fat/dir.c return uni16_to_x8(sb, buf, uni, size, sbi->nls_io); sbi 254 fs/fat/dir.c static inline int fat_name_match(struct msdos_sb_info *sbi, sbi 261 fs/fat/dir.c if (sbi->options.name_check != 's') sbi 262 fs/fat/dir.c return !nls_strnicmp(sbi->nls_io, a, b, a_len); sbi 353 fs/fat/dir.c const struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 354 fs/fat/dir.c int isvfat = sbi->options.isvfat; sbi 355 fs/fat/dir.c int nocase = sbi->options.nocase; sbi 356 fs/fat/dir.c unsigned short opt_shortname = sbi->options.shortname; sbi 357 fs/fat/dir.c struct nls_table *nls_disk = sbi->nls_disk; sbi 450 fs/fat/dir.c if (sbi->options.isvfat) { sbi 467 fs/fat/dir.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 512 fs/fat/dir.c if (fat_name_match(sbi, name, name_len, bufname, len)) sbi 521 fs/fat/dir.c if (fat_name_match(sbi, name, name_len, longname, len)) sbi 558 fs/fat/dir.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 564 fs/fat/dir.c int isvfat = sbi->options.isvfat; sbi 571 fs/fat/dir.c mutex_lock(&sbi->s_lock); sbi 636 fs/fat/dir.c sbi->options.dotsOK); sbi 650 fs/fat/dir.c short_len = fat_parse_short(sb, de, bufname, sbi->options.dotsOK); sbi 697 fs/fat/dir.c mutex_unlock(&sbi->s_lock); sbi 1140 fs/fat/dir.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 1152 fs/fat/dir.c blknr = fat_clus_to_blknr(sbi, cluster); sbi 1159 fs/fat/dir.c fat_time_unix2fat(sbi, ts, &time, &date, &time_cs); sbi 1171 fs/fat/dir.c if (sbi->options.isvfat) { sbi 1207 fs/fat/dir.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 1219 fs/fat/dir.c *nr_cluster = (size + (sbi->cluster_size - 1)) >> sbi->cluster_bits; sbi 1233 fs/fat/dir.c start_blknr = blknr = fat_clus_to_blknr(sbi, cluster[i]); sbi 1234 fs/fat/dir.c last_blknr = start_blknr + sbi->sec_per_clus; sbi 1289 fs/fat/dir.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 1324 fs/fat/dir.c if (!is_fat32(sbi)) sbi 1391 fs/fat/dir.c if (dir->i_size & (sbi->cluster_size - 1)) { sbi 1393 fs/fat/dir.c dir->i_size = (dir->i_size + sbi->cluster_size - 1) sbi 1394 fs/fat/dir.c & ~((loff_t)sbi->cluster_size - 1); sbi 1396 fs/fat/dir.c dir->i_size += nr_cluster << sbi->cluster_bits; sbi 1397 fs/fat/dir.c MSDOS_I(dir)->mmu_private += nr_cluster << sbi->cluster_bits; sbi 149 fs/fat/fat.h static inline bool is_fat12(const struct msdos_sb_info *sbi) sbi 151 fs/fat/fat.h return sbi->fat_bits == 12; sbi 154 fs/fat/fat.h static inline bool is_fat16(const struct msdos_sb_info *sbi) sbi 156 fs/fat/fat.h return sbi->fat_bits == 16; sbi 159 fs/fat/fat.h static inline bool is_fat32(const struct msdos_sb_info *sbi) sbi 161 fs/fat/fat.h return sbi->fat_bits == 32; sbi 167 fs/fat/fat.h struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 169 fs/fat/fat.h return is_fat32(sbi) ? MAX_FAT32 : sbi 170 fs/fat/fat.h is_fat16(sbi) ? MAX_FAT16 : MAX_FAT12; sbi 187 fs/fat/fat.h struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb); sbi 191 fs/fat/fat.h if (!sbi->options.rodir) sbi 193 fs/fat/fat.h mask = ~sbi->options.fs_dmask; sbi 195 fs/fat/fat.h mask = ~sbi->options.fs_fmask; sbi 203 fs/fat/fat.h static inline umode_t fat_make_mode(struct msdos_sb_info *sbi, sbi 206 fs/fat/fat.h if (attrs & ATTR_RO && !((attrs & ATTR_DIR) && !sbi->options.rodir)) sbi 210 fs/fat/fat.h return (mode & ~sbi->options.fs_dmask) | S_IFDIR; sbi 212 fs/fat/fat.h return (mode & ~sbi->options.fs_fmask) | S_IFREG; sbi 245 fs/fat/fat.h static inline sector_t fat_clus_to_blknr(struct msdos_sb_info *sbi, int clus) sbi 247 fs/fat/fat.h return ((sector_t)clus - FAT_START_ENT) * sbi->sec_per_clus sbi 248 fs/fat/fat.h + sbi->data_start; sbi 251 fs/fat/fat.h static inline void fat_get_blknr_offset(struct msdos_sb_info *sbi, sbi 254 fs/fat/fat.h *blknr = i_pos >> sbi->dir_per_block_bits; sbi 255 fs/fat/fat.h *offset = i_pos & (sbi->dir_per_block - 1); sbi 258 fs/fat/fat.h static inline loff_t fat_i_pos_read(struct msdos_sb_info *sbi, sbi 263 fs/fat/fat.h spin_lock(&sbi->inode_hash_lock); sbi 267 fs/fat/fat.h spin_unlock(&sbi->inode_hash_lock); sbi 284 fs/fat/fat.h static inline int fat_get_start(const struct msdos_sb_info *sbi, sbi 288 fs/fat/fat.h if (is_fat32(sbi)) sbi 379 fs/fat/fat.h static inline bool fat_valid_entry(struct msdos_sb_info *sbi, int entry) sbi 381 fs/fat/fat.h return FAT_START_ENT <= entry && entry < sbi->max_cluster; sbi 443 fs/fat/fat.h extern void fat_time_fat2unix(struct msdos_sb_info *sbi, struct timespec64 *ts, sbi 445 fs/fat/fat.h extern void fat_time_unix2fat(struct msdos_sb_info *sbi, struct timespec64 *ts, sbi 25 fs/fat/fatent.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 27 fs/fat/fatent.c WARN_ON(!fat_valid_entry(sbi, entry)); sbi 29 fs/fat/fatent.c *blocknr = sbi->fat_start + (bytes >> sb->s_blocksize_bits); sbi 35 fs/fat/fatent.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 36 fs/fat/fatent.c int bytes = (entry << sbi->fatent_shift); sbi 37 fs/fat/fatent.c WARN_ON(!fat_valid_entry(sbi, entry)); sbi 39 fs/fat/fatent.c *blocknr = sbi->fat_start + (bytes >> sb->s_blocksize_bits); sbi 277 fs/fat/fatent.c static inline void lock_fat(struct msdos_sb_info *sbi) sbi 279 fs/fat/fatent.c mutex_lock(&sbi->fat_lock); sbi 282 fs/fat/fatent.c static inline void unlock_fat(struct msdos_sb_info *sbi) sbi 284 fs/fat/fatent.c mutex_unlock(&sbi->fat_lock); sbi 289 fs/fat/fatent.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 291 fs/fat/fatent.c mutex_init(&sbi->fat_lock); sbi 293 fs/fat/fatent.c if (is_fat32(sbi)) { sbi 294 fs/fat/fatent.c sbi->fatent_shift = 2; sbi 295 fs/fat/fatent.c sbi->fatent_ops = &fat32_ops; sbi 296 fs/fat/fatent.c } else if (is_fat16(sbi)) { sbi 297 fs/fat/fatent.c sbi->fatent_shift = 1; sbi 298 fs/fat/fatent.c sbi->fatent_ops = &fat16_ops; sbi 299 fs/fat/fatent.c } else if (is_fat12(sbi)) { sbi 300 fs/fat/fatent.c sbi->fatent_shift = -1; sbi 301 fs/fat/fatent.c sbi->fatent_ops = &fat12_ops; sbi 303 fs/fat/fatent.c fat_fs_error(sb, "invalid FAT variant, %u bits", sbi->fat_bits); sbi 309 fs/fat/fatent.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 311 fs/fat/fatent.c if (sb_rdonly(sb) || !is_fat32(sbi)) sbi 314 fs/fat/fatent.c __mark_inode_dirty(sbi->fsinfo_inode, I_DIRTY_SYNC); sbi 321 fs/fat/fatent.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 322 fs/fat/fatent.c const struct fatent_operations *ops = sbi->fatent_ops; sbi 328 fs/fat/fatent.c if (is_fat12(sbi)) { sbi 350 fs/fat/fatent.c struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb); sbi 351 fs/fat/fatent.c const struct fatent_operations *ops = sbi->fatent_ops; sbi 355 fs/fat/fatent.c if (!fat_valid_entry(sbi, entry)) { sbi 377 fs/fat/fatent.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 382 fs/fat/fatent.c for (copy = 1; copy < sbi->fats; copy++) { sbi 383 fs/fat/fatent.c sector_t backup_fat = sbi->fat_length * copy; sbi 396 fs/fat/fatent.c mark_buffer_dirty_inode(c_bh, sbi->fat_inode); sbi 424 fs/fat/fatent.c static inline int fat_ent_next(struct msdos_sb_info *sbi, sbi 427 fs/fat/fatent.c if (sbi->fatent_ops->ent_next(fatent)) { sbi 428 fs/fat/fatent.c if (fatent->entry < sbi->max_cluster) sbi 467 fs/fat/fatent.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 468 fs/fat/fatent.c const struct fatent_operations *ops = sbi->fatent_ops; sbi 475 fs/fat/fatent.c lock_fat(sbi); sbi 476 fs/fat/fatent.c if (sbi->free_clusters != -1 && sbi->free_clus_valid && sbi 477 fs/fat/fatent.c sbi->free_clusters < nr_cluster) { sbi 478 fs/fat/fatent.c unlock_fat(sbi); sbi 486 fs/fat/fatent.c fatent_set_entry(&fatent, sbi->prev_free + 1); sbi 487 fs/fat/fatent.c while (count < sbi->max_cluster) { sbi 488 fs/fat/fatent.c if (fatent.entry >= sbi->max_cluster) sbi 507 fs/fat/fatent.c sbi->prev_free = entry; sbi 508 fs/fat/fatent.c if (sbi->free_clusters != -1) sbi 509 fs/fat/fatent.c sbi->free_clusters--; sbi 523 fs/fat/fatent.c if (count == sbi->max_cluster) sbi 525 fs/fat/fatent.c } while (fat_ent_next(sbi, &fatent)); sbi 529 fs/fat/fatent.c sbi->free_clusters = 0; sbi 530 fs/fat/fatent.c sbi->free_clus_valid = 1; sbi 534 fs/fat/fatent.c unlock_fat(sbi); sbi 555 fs/fat/fatent.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 556 fs/fat/fatent.c const struct fatent_operations *ops = sbi->fatent_ops; sbi 564 fs/fat/fatent.c lock_fat(sbi); sbi 577 fs/fat/fatent.c if (sbi->options.discard) { sbi 587 fs/fat/fatent.c fat_clus_to_blknr(sbi, first_cl), sbi 588 fs/fat/fatent.c nr_clus * sbi->sec_per_clus, sbi 596 fs/fat/fatent.c if (sbi->free_clusters != -1) { sbi 597 fs/fat/fatent.c sbi->free_clusters++; sbi 627 fs/fat/fatent.c unlock_fat(sbi); sbi 653 fs/fat/fatent.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 654 fs/fat/fatent.c const struct fatent_operations *ops = sbi->fatent_ops; sbi 659 fs/fat/fatent.c lock_fat(sbi); sbi 660 fs/fat/fatent.c if (sbi->free_clusters != -1 && sbi->free_clus_valid) sbi 670 fs/fat/fatent.c while (fatent.entry < sbi->max_cluster) { sbi 673 fs/fat/fatent.c unsigned long rest = sbi->fat_length - cur_block; sbi 685 fs/fat/fatent.c } while (fat_ent_next(sbi, &fatent)); sbi 688 fs/fat/fatent.c sbi->free_clusters = free; sbi 689 fs/fat/fatent.c sbi->free_clus_valid = 1; sbi 693 fs/fat/fatent.c unlock_fat(sbi); sbi 699 fs/fat/fatent.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 700 fs/fat/fatent.c return sb_issue_discard(sb, fat_clus_to_blknr(sbi, clus), sbi 701 fs/fat/fatent.c nr_clus * sbi->sec_per_clus, GFP_NOFS, 0); sbi 707 fs/fat/fatent.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 708 fs/fat/fatent.c const struct fatent_operations *ops = sbi->fatent_ops; sbi 721 fs/fat/fatent.c ent_start = max_t(u64, range->start>>sbi->cluster_bits, FAT_START_ENT); sbi 722 fs/fat/fatent.c ent_end = ent_start + (range->len >> sbi->cluster_bits) - 1; sbi 723 fs/fat/fatent.c minlen = range->minlen >> sbi->cluster_bits; sbi 725 fs/fat/fatent.c if (ent_start >= sbi->max_cluster || range->len < sbi->cluster_size) sbi 727 fs/fat/fatent.c if (ent_end >= sbi->max_cluster) sbi 728 fs/fat/fatent.c ent_end = sbi->max_cluster - 1; sbi 734 fs/fat/fatent.c lock_fat(sbi); sbi 739 fs/fat/fatent.c unsigned long rest = sbi->fat_length - cur_block; sbi 763 fs/fat/fatent.c } while (fat_ent_next(sbi, &fatent) && fatent.entry <= ent_end); sbi 772 fs/fat/fatent.c unlock_fat(sbi); sbi 774 fs/fat/fatent.c lock_fat(sbi); sbi 791 fs/fat/fatent.c unlock_fat(sbi); sbi 793 fs/fat/fatent.c range->len = trimmed << sbi->cluster_bits; sbi 38 fs/fat/file.c struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb); sbi 69 fs/fat/file.c ia.ia_mode = fat_make_mode(sbi, attr, S_IRWXUGO); sbi 71 fs/fat/file.c ia.ia_mode = fat_make_mode(sbi, attr, sbi 81 fs/fat/file.c if (sbi->options.sys_immutable && sbi 103 fs/fat/file.c if (sbi->options.sys_immutable) { sbi 121 fs/fat/file.c struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb); sbi 122 fs/fat/file.c return put_user(sbi->vol_id, user_attr); sbi 278 fs/fat/file.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 297 fs/fat/file.c nr_cluster = (mm_bytes + (sbi->cluster_size - 1)) >> sbi 298 fs/fat/file.c sbi->cluster_bits; sbi 391 fs/fat/file.c struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb); sbi 392 fs/fat/file.c const unsigned int cluster_size = sbi->cluster_size; sbi 402 fs/fat/file.c nr_clusters = (offset + (cluster_size - 1)) >> sbi->cluster_bits; sbi 423 fs/fat/file.c static int fat_sanitize_mode(const struct msdos_sb_info *sbi, sbi 434 fs/fat/file.c mask = sbi->options.fs_fmask; sbi 436 fs/fat/file.c mask = sbi->options.fs_dmask; sbi 461 fs/fat/file.c static int fat_allow_set_time(struct msdos_sb_info *sbi, struct inode *inode) sbi 463 fs/fat/file.c umode_t allow_utime = sbi->options.allow_utime; sbi 482 fs/fat/file.c struct msdos_sb_info *sbi = MSDOS_SB(dentry->d_sb); sbi 490 fs/fat/file.c if (fat_allow_set_time(sbi, inode)) sbi 497 fs/fat/file.c if (sbi->options.quiet) sbi 520 fs/fat/file.c (!uid_eq(attr->ia_uid, sbi->options.fs_uid))) || sbi 522 fs/fat/file.c (!gid_eq(attr->ia_gid, sbi->options.fs_gid))) || sbi 528 fs/fat/file.c if (sbi->options.quiet) sbi 538 fs/fat/file.c if (fat_sanitize_mode(sbi, inode, &attr->ia_mode) < 0) sbi 123 fs/fat/inode.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 146 fs/fat/inode.c offset = (unsigned long)iblock & (sbi->sec_per_clus - 1); sbi 159 fs/fat/inode.c mapped_blocks = sbi->sec_per_clus - offset; sbi 381 fs/fat/inode.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 384 fs/fat/inode.c spin_lock_init(&sbi->inode_hash_lock); sbi 386 fs/fat/inode.c INIT_HLIST_HEAD(&sbi->inode_hashtable[i]); sbi 396 fs/fat/inode.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 399 fs/fat/inode.c spin_lock_init(&sbi->dir_hash_lock); sbi 401 fs/fat/inode.c INIT_HLIST_HEAD(&sbi->dir_hashtable[i]); sbi 406 fs/fat/inode.c struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb); sbi 409 fs/fat/inode.c struct hlist_head *head = sbi->inode_hashtable sbi 412 fs/fat/inode.c spin_lock(&sbi->inode_hash_lock); sbi 415 fs/fat/inode.c spin_unlock(&sbi->inode_hash_lock); sbi 422 fs/fat/inode.c if (S_ISDIR(inode->i_mode) && sbi->options.nfs) { sbi 423 fs/fat/inode.c struct hlist_head *d_head = sbi->dir_hashtable; sbi 426 fs/fat/inode.c spin_lock(&sbi->dir_hash_lock); sbi 428 fs/fat/inode.c spin_unlock(&sbi->dir_hash_lock); sbi 435 fs/fat/inode.c struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb); sbi 436 fs/fat/inode.c spin_lock(&sbi->inode_hash_lock); sbi 439 fs/fat/inode.c spin_unlock(&sbi->inode_hash_lock); sbi 441 fs/fat/inode.c if (S_ISDIR(inode->i_mode) && sbi->options.nfs) { sbi 442 fs/fat/inode.c spin_lock(&sbi->dir_hash_lock); sbi 444 fs/fat/inode.c spin_unlock(&sbi->dir_hash_lock); sbi 451 fs/fat/inode.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 452 fs/fat/inode.c struct hlist_head *head = sbi->inode_hashtable + fat_hash(i_pos); sbi 456 fs/fat/inode.c spin_lock(&sbi->inode_hash_lock); sbi 465 fs/fat/inode.c spin_unlock(&sbi->inode_hash_lock); sbi 481 fs/fat/inode.c struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb); sbi 491 fs/fat/inode.c inode->i_size = (fclus + 1) << sbi->cluster_bits; sbi 517 fs/fat/inode.c struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb); sbi 521 fs/fat/inode.c inode->i_uid = sbi->options.fs_uid; sbi 522 fs/fat/inode.c inode->i_gid = sbi->options.fs_gid; sbi 528 fs/fat/inode.c inode->i_mode = fat_make_mode(sbi, de->attr, S_IRWXUGO); sbi 529 fs/fat/inode.c inode->i_op = sbi->dir_ops; sbi 532 fs/fat/inode.c MSDOS_I(inode)->i_start = fat_get_start(sbi, de); sbi 546 fs/fat/inode.c inode->i_mode = fat_make_mode(sbi, de->attr, sbi 547 fs/fat/inode.c ((sbi->options.showexec && !is_exec(de->name + 8)) sbi 549 fs/fat/inode.c MSDOS_I(inode)->i_start = fat_get_start(sbi, de); sbi 559 fs/fat/inode.c if (sbi->options.sys_immutable) sbi 564 fs/fat/inode.c inode->i_blocks = ((inode->i_size + (sbi->cluster_size - 1)) sbi 565 fs/fat/inode.c & ~((loff_t)sbi->cluster_size - 1)) >> 9; sbi 567 fs/fat/inode.c fat_time_fat2unix(sbi, &inode->i_mtime, de->time, de->date, 0); sbi 568 fs/fat/inode.c if (sbi->options.isvfat) { sbi 569 fs/fat/inode.c fat_time_fat2unix(sbi, &inode->i_ctime, de->ctime, sbi 571 fs/fat/inode.c fat_time_fat2unix(sbi, &inode->i_atime, 0, de->adate, 0); sbi 578 fs/fat/inode.c static inline void fat_lock_build_inode(struct msdos_sb_info *sbi) sbi 580 fs/fat/inode.c if (sbi->options.nfs == FAT_NFS_NOSTALE_RO) sbi 581 fs/fat/inode.c mutex_lock(&sbi->nfs_build_inode_lock); sbi 584 fs/fat/inode.c static inline void fat_unlock_build_inode(struct msdos_sb_info *sbi) sbi 586 fs/fat/inode.c if (sbi->options.nfs == FAT_NFS_NOSTALE_RO) sbi 587 fs/fat/inode.c mutex_unlock(&sbi->nfs_build_inode_lock); sbi 670 fs/fat/inode.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 677 fs/fat/inode.c if (sbi->dirty) { sbi 695 fs/fat/inode.c if (is_fat32(sbi)) { sbi 723 fs/fat/inode.c struct msdos_sb_info *sbi = container_of(p, struct msdos_sb_info, rcu); sbi 724 fs/fat/inode.c unload_nls(sbi->nls_disk); sbi 725 fs/fat/inode.c unload_nls(sbi->nls_io); sbi 726 fs/fat/inode.c fat_reset_iocharset(&sbi->options); sbi 727 fs/fat/inode.c kfree(sbi); sbi 732 fs/fat/inode.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 736 fs/fat/inode.c iput(sbi->fsinfo_inode); sbi 737 fs/fat/inode.c iput(sbi->fat_inode); sbi 739 fs/fat/inode.c call_rcu(&sbi->rcu, delayed_free); sbi 805 fs/fat/inode.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 806 fs/fat/inode.c *flags |= SB_NODIRATIME | (sbi->options.isvfat ? 0 : SB_NOATIME); sbi 824 fs/fat/inode.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 828 fs/fat/inode.c if (sbi->free_clusters == -1 || !sbi->free_clus_valid) { sbi 835 fs/fat/inode.c buf->f_bsize = sbi->cluster_size; sbi 836 fs/fat/inode.c buf->f_blocks = sbi->max_cluster - FAT_START_ENT; sbi 837 fs/fat/inode.c buf->f_bfree = sbi->free_clusters; sbi 838 fs/fat/inode.c buf->f_bavail = sbi->free_clusters; sbi 842 fs/fat/inode.c (sbi->options.isvfat ? FAT_LFN_LEN : 12) * NLS_MAX_CHARSET_SIZE; sbi 850 fs/fat/inode.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 861 fs/fat/inode.c i_pos = fat_i_pos_read(sbi, inode); sbi 865 fs/fat/inode.c fat_get_blknr_offset(sbi, i_pos, &blocknr, &offset); sbi 872 fs/fat/inode.c spin_lock(&sbi->inode_hash_lock); sbi 874 fs/fat/inode.c spin_unlock(&sbi->inode_hash_lock); sbi 886 fs/fat/inode.c fat_time_unix2fat(sbi, &inode->i_mtime, &raw_entry->time, sbi 888 fs/fat/inode.c if (sbi->options.isvfat) { sbi 890 fs/fat/inode.c fat_time_unix2fat(sbi, &inode->i_ctime, &raw_entry->ctime, sbi 892 fs/fat/inode.c fat_time_unix2fat(sbi, &inode->i_atime, &atime, sbi 895 fs/fat/inode.c spin_unlock(&sbi->inode_hash_lock); sbi 942 fs/fat/inode.c struct msdos_sb_info *sbi = MSDOS_SB(root->d_sb); sbi 943 fs/fat/inode.c struct fat_mount_options *opts = &sbi->options; sbi 956 fs/fat/inode.c if (sbi->nls_disk) sbi 958 fs/fat/inode.c seq_printf(m, ",codepage=%s", &sbi->nls_disk->charset[2]); sbi 960 fs/fat/inode.c if (sbi->nls_io) sbi 961 fs/fat/inode.c seq_printf(m, ",iocharset=%s", sbi->nls_io->charset); sbi 1385 fs/fat/inode.c struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb); sbi 1389 fs/fat/inode.c inode->i_uid = sbi->options.fs_uid; sbi 1390 fs/fat/inode.c inode->i_gid = sbi->options.fs_gid; sbi 1393 fs/fat/inode.c inode->i_mode = fat_make_mode(sbi, ATTR_DIR, S_IRWXUGO); sbi 1394 fs/fat/inode.c inode->i_op = sbi->dir_ops; sbi 1396 fs/fat/inode.c if (is_fat32(sbi)) { sbi 1397 fs/fat/inode.c MSDOS_I(inode)->i_start = sbi->root_cluster; sbi 1403 fs/fat/inode.c inode->i_size = sbi->dir_entries * sizeof(struct msdos_dir_entry); sbi 1405 fs/fat/inode.c inode->i_blocks = ((inode->i_size + (sbi->cluster_size - 1)) sbi 1406 fs/fat/inode.c & ~((loff_t)sbi->cluster_size - 1)) >> 9; sbi 1420 fs/fat/inode.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 1423 fs/fat/inode.c if (!is_fat12(sbi)) { sbi 1424 fs/fat/inode.c unsigned long ent_per_sec = sb->s_blocksize * 8 / sbi->fat_bits; sbi 1425 fs/fat/inode.c return ent_per_sec * sbi->fat_length; sbi 1428 fs/fat/inode.c return sbi->fat_length * sb->s_blocksize * 8 / sbi->fat_bits; sbi 1610 fs/fat/inode.c struct msdos_sb_info *sbi; sbi 1624 fs/fat/inode.c sbi = kzalloc(sizeof(struct msdos_sb_info), GFP_KERNEL); sbi 1625 fs/fat/inode.c if (!sbi) sbi 1627 fs/fat/inode.c sb->s_fs_info = sbi; sbi 1638 fs/fat/inode.c mutex_init(&sbi->nfs_build_inode_lock); sbi 1639 fs/fat/inode.c ratelimit_state_init(&sbi->ratelimit, DEFAULT_RATELIMIT_INTERVAL, sbi 1642 fs/fat/inode.c error = parse_options(sb, data, isvfat, silent, &debug, &sbi->options); sbi 1658 fs/fat/inode.c if (error == -EINVAL && sbi->options.dos1xfloppy) sbi 1669 fs/fat/inode.c sbi->sec_per_clus = bpb.fat_sec_per_clus; sbi 1698 fs/fat/inode.c mutex_init(&sbi->s_lock); sbi 1699 fs/fat/inode.c sbi->cluster_size = sb->s_blocksize * sbi->sec_per_clus; sbi 1700 fs/fat/inode.c sbi->cluster_bits = ffs(sbi->cluster_size) - 1; sbi 1701 fs/fat/inode.c sbi->fats = bpb.fat_fats; sbi 1702 fs/fat/inode.c sbi->fat_bits = 0; /* Don't know yet */ sbi 1703 fs/fat/inode.c sbi->fat_start = bpb.fat_reserved; sbi 1704 fs/fat/inode.c sbi->fat_length = bpb.fat_fat_length; sbi 1705 fs/fat/inode.c sbi->root_cluster = 0; sbi 1706 fs/fat/inode.c sbi->free_clusters = -1; /* Don't know yet */ sbi 1707 fs/fat/inode.c sbi->free_clus_valid = 0; sbi 1708 fs/fat/inode.c sbi->prev_free = FAT_START_ENT; sbi 1710 fs/fat/inode.c fat_time_fat2unix(sbi, &ts, 0, cpu_to_le16(FAT_DATE_MIN), 0); sbi 1713 fs/fat/inode.c fat_time_fat2unix(sbi, &ts, cpu_to_le16(FAT_TIME_MAX), sbi 1717 fs/fat/inode.c if (!sbi->fat_length && bpb.fat32_length) { sbi 1722 fs/fat/inode.c sbi->fat_bits = 32; sbi 1723 fs/fat/inode.c sbi->fat_length = bpb.fat32_length; sbi 1724 fs/fat/inode.c sbi->root_cluster = bpb.fat32_root_cluster; sbi 1727 fs/fat/inode.c sbi->fsinfo_sector = bpb.fat32_info_sector; sbi 1728 fs/fat/inode.c if (sbi->fsinfo_sector == 0) sbi 1729 fs/fat/inode.c sbi->fsinfo_sector = 1; sbi 1731 fs/fat/inode.c fsinfo_bh = sb_bread(sb, sbi->fsinfo_sector); sbi 1734 fs/fat/inode.c " (sector = %lu)", sbi->fsinfo_sector); sbi 1744 fs/fat/inode.c sbi->fsinfo_sector); sbi 1746 fs/fat/inode.c if (sbi->options.usefree) sbi 1747 fs/fat/inode.c sbi->free_clus_valid = 1; sbi 1748 fs/fat/inode.c sbi->free_clusters = le32_to_cpu(fsinfo->free_clusters); sbi 1749 fs/fat/inode.c sbi->prev_free = le32_to_cpu(fsinfo->next_cluster); sbi 1756 fs/fat/inode.c if (is_fat32(sbi)) sbi 1757 fs/fat/inode.c sbi->vol_id = bpb.fat32_vol_id; sbi 1759 fs/fat/inode.c sbi->vol_id = bpb.fat16_vol_id; sbi 1761 fs/fat/inode.c sbi->dir_per_block = sb->s_blocksize / sizeof(struct msdos_dir_entry); sbi 1762 fs/fat/inode.c sbi->dir_per_block_bits = ffs(sbi->dir_per_block) - 1; sbi 1764 fs/fat/inode.c sbi->dir_start = sbi->fat_start + sbi->fats * sbi->fat_length; sbi 1765 fs/fat/inode.c sbi->dir_entries = bpb.fat_dir_entries; sbi 1766 fs/fat/inode.c if (sbi->dir_entries & (sbi->dir_per_block - 1)) { sbi 1769 fs/fat/inode.c " (%u)", sbi->dir_entries); sbi 1773 fs/fat/inode.c rootdir_sectors = sbi->dir_entries sbi 1775 fs/fat/inode.c sbi->data_start = sbi->dir_start + rootdir_sectors; sbi 1780 fs/fat/inode.c total_clusters = (total_sectors - sbi->data_start) / sbi->sec_per_clus; sbi 1782 fs/fat/inode.c if (!is_fat32(sbi)) sbi 1783 fs/fat/inode.c sbi->fat_bits = (total_clusters > MAX_FAT12) ? 16 : 12; sbi 1786 fs/fat/inode.c if (is_fat32(sbi)) sbi 1787 fs/fat/inode.c sbi->dirty = bpb.fat32_state & FAT_STATE_DIRTY; sbi 1789 fs/fat/inode.c sbi->dirty = bpb.fat16_state & FAT_STATE_DIRTY; sbi 1801 fs/fat/inode.c sbi->max_cluster = total_clusters + FAT_START_ENT; sbi 1803 fs/fat/inode.c if (sbi->free_clusters != -1 && sbi->free_clusters > total_clusters) sbi 1804 fs/fat/inode.c sbi->free_clusters = -1; sbi 1806 fs/fat/inode.c sbi->prev_free %= sbi->max_cluster; sbi 1807 fs/fat/inode.c if (sbi->prev_free < FAT_START_ENT) sbi 1808 fs/fat/inode.c sbi->prev_free = FAT_START_ENT; sbi 1828 fs/fat/inode.c sprintf(buf, "cp%d", sbi->options.codepage); sbi 1829 fs/fat/inode.c sbi->nls_disk = load_nls(buf); sbi 1830 fs/fat/inode.c if (!sbi->nls_disk) { sbi 1836 fs/fat/inode.c if (sbi->options.isvfat) { sbi 1837 fs/fat/inode.c sbi->nls_io = load_nls(sbi->options.iocharset); sbi 1838 fs/fat/inode.c if (!sbi->nls_io) { sbi 1840 fs/fat/inode.c sbi->options.iocharset); sbi 1849 fs/fat/inode.c sbi->fat_inode = fat_inode; sbi 1855 fs/fat/inode.c sbi->fsinfo_inode = fsinfo_inode; sbi 1877 fs/fat/inode.c if (sbi->options.discard) { sbi 1898 fs/fat/inode.c unload_nls(sbi->nls_io); sbi 1899 fs/fat/inode.c unload_nls(sbi->nls_disk); sbi 1900 fs/fat/inode.c fat_reset_iocharset(&sbi->options); sbi 1902 fs/fat/inode.c kfree(sbi); sbi 64 fs/fat/misc.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 68 fs/fat/misc.c if (!is_fat32(sbi)) sbi 71 fs/fat/misc.c bh = sb_bread(sb, sbi->fsinfo_sector); sbi 84 fs/fat/misc.c sbi->fsinfo_sector); sbi 86 fs/fat/misc.c if (sbi->free_clusters != -1) sbi 87 fs/fat/misc.c fsinfo->free_clusters = cpu_to_le32(sbi->free_clusters); sbi 88 fs/fat/misc.c if (sbi->prev_free != -1) sbi 89 fs/fat/misc.c fsinfo->next_cluster = cpu_to_le32(sbi->prev_free); sbi 104 fs/fat/misc.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 154 fs/fat/misc.c if (new_fclus != (inode->i_blocks >> (sbi->cluster_bits - 9))) { sbi 157 fs/fat/misc.c (llu)(inode->i_blocks >> (sbi->cluster_bits - 9))); sbi 160 fs/fat/misc.c inode->i_blocks += nr_cluster << (sbi->cluster_bits - 9); sbi 190 fs/fat/misc.c static inline int fat_tz_offset(struct msdos_sb_info *sbi) sbi 192 fs/fat/misc.c return (sbi->options.tz_set ? sbi 193 fs/fat/misc.c -sbi->options.time_offset : sbi 198 fs/fat/misc.c void fat_time_fat2unix(struct msdos_sb_info *sbi, struct timespec64 *ts, sbi 222 fs/fat/misc.c second += fat_tz_offset(sbi); sbi 234 fs/fat/misc.c void fat_time_unix2fat(struct msdos_sb_info *sbi, struct timespec64 *ts, sbi 238 fs/fat/misc.c time64_to_tm(ts->tv_sec, -fat_tz_offset(sbi), &tm); sbi 287 fs/fat/misc.c struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb); sbi 300 fs/fat/misc.c time64_t seconds = now->tv_sec - fat_tz_offset(sbi); sbi 305 fs/fat/misc.c seconds = seconds + fat_tz_offset(sbi) - remainder; sbi 310 fs/fat/misc.c if (sbi->options.isvfat) sbi 122 fs/fat/namei_msdos.c struct msdos_sb_info *sbi = MSDOS_SB(dir->i_sb); sbi 126 fs/fat/namei_msdos.c err = msdos_format_name(name, len, msdos_name, &sbi->options); sbi 131 fs/fat/namei_msdos.c if (!err && sbi->options.dotsOK) { sbi 231 fs/fat/namei_msdos.c struct msdos_sb_info *sbi = MSDOS_SB(dir->i_sb); sbi 241 fs/fat/namei_msdos.c fat_time_unix2fat(sbi, ts, &time, &date, NULL); sbi 584 fs/fat/namei_vfat.c struct msdos_sb_info *sbi = MSDOS_SB(dir->i_sb); sbi 585 fs/fat/namei_vfat.c struct fat_mount_options *opts = &sbi->options; sbi 603 fs/fat/namei_vfat.c opts->unicode_xlate, opts->utf8, sbi->nls_io); sbi 611 fs/fat/namei_vfat.c err = vfat_create_shortname(dir, sbi->nls_disk, uname, ulen, sbi 645 fs/fat/namei_vfat.c fat_time_unix2fat(sbi, ts, &time, &date, &time_cs); sbi 25 fs/fat/nfs.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 30 fs/fat/nfs.c head = sbi->dir_hashtable + fat_dir_hash(i_logstart); sbi 31 fs/fat/nfs.c spin_lock(&sbi->dir_hash_lock); sbi 40 fs/fat/nfs.c spin_unlock(&sbi->dir_hash_lock); sbi 104 fs/fat/nfs.c struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb); sbi 121 fs/fat/nfs.c i_pos = fat_i_pos_read(sbi, inode); sbi 127 fs/fat/nfs.c i_pos = fat_i_pos_read(sbi, parent); sbi 221 fs/fat/nfs.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 222 fs/fat/nfs.c sector_t blknr = fat_clus_to_blknr(sbi, parent_logstart); sbi 231 fs/fat/nfs.c clus_to_match = fat_get_start(sbi, &de[0]); sbi 232 fs/fat/nfs.c search_clus = fat_get_start(sbi, &de[1]); sbi 268 fs/fat/nfs.c struct msdos_sb_info *sbi = MSDOS_SB(sb); sbi 271 fs/fat/nfs.c int parent_logstart = fat_get_start(sbi, de); sbi 273 fs/fat/nfs.c if (!parent_inode && sbi->options.nfs == FAT_NFS_NOSTALE_RO) sbi 176 fs/freevxfs/vxfs.h static inline u16 fs16_to_cpu(struct vxfs_sb_info *sbi, __fs16 a) sbi 178 fs/freevxfs/vxfs.h if (sbi->byte_order == VXFS_BO_BE) sbi 184 fs/freevxfs/vxfs.h static inline u32 fs32_to_cpu(struct vxfs_sb_info *sbi, __fs32 a) sbi 186 fs/freevxfs/vxfs.h if (sbi->byte_order == VXFS_BO_BE) sbi 192 fs/freevxfs/vxfs.h static inline u64 fs64_to_cpu(struct vxfs_sb_info *sbi, __fs64 a) sbi 194 fs/freevxfs/vxfs.h if (sbi->byte_order == VXFS_BO_BE) sbi 71 fs/freevxfs/vxfs_bmap.c struct vxfs_sb_info *sbi = VXFS_SBI(sb); sbi 73 fs/freevxfs/vxfs_bmap.c u32 indsize = fs32_to_cpu(sbi, vip->vii_ext4.ve4_indsize); sbi 81 fs/freevxfs/vxfs_bmap.c if (bn >= 0 && bn < fs32_to_cpu(sbi, d->size)) sbi 82 fs/freevxfs/vxfs_bmap.c return (bn + fs32_to_cpu(sbi, d->extent)); sbi 83 fs/freevxfs/vxfs_bmap.c bn -= fs32_to_cpu(sbi, d->size); sbi 92 fs/freevxfs/vxfs_bmap.c fs32_to_cpu(sbi, vip->vii_ext4.ve4_indir[0])); sbi 97 fs/freevxfs/vxfs_bmap.c bno = fs32_to_cpu(sbi, indir[(bn / indsize) % (indsize * bn)]) + sbi 133 fs/freevxfs/vxfs_bmap.c struct vxfs_sb_info *sbi = VXFS_SBI(ip->i_sb); sbi 149 fs/freevxfs/vxfs_bmap.c off = fs64_to_cpu(sbi, typ->vt_hdr) & VXFS_TYPED_OFFSETMASK; sbi 156 fs/freevxfs/vxfs_bmap.c switch ((u_int32_t)(fs64_to_cpu(sbi, typ->vt_hdr) >> sbi 160 fs/freevxfs/vxfs_bmap.c fs32_to_cpu(sbi, typ->vt_block), sbi 161 fs/freevxfs/vxfs_bmap.c fs32_to_cpu(sbi, typ->vt_size), sbi 167 fs/freevxfs/vxfs_bmap.c if ((block - off) >= fs32_to_cpu(sbi, typ->vt_size)) sbi 169 fs/freevxfs/vxfs_bmap.c pblock = fs32_to_cpu(sbi, typ->vt_block) + block - off; sbi 178 fs/freevxfs/vxfs_bmap.c fs64_to_cpu(sbi, typ4->vd4_block), sbi 179 fs/freevxfs/vxfs_bmap.c fs64_to_cpu(sbi, typ4->vd4_size), sbi 180 fs/freevxfs/vxfs_bmap.c fs32_to_cpu(sbi, typ4->vd4_dev)); sbi 185 fs/freevxfs/vxfs_bmap.c __LINE__, fs64_to_cpu(sbi, typ->vt_hdr)); sbi 213 fs/freevxfs/vxfs_bmap.c struct vxfs_sb_info *sbi = VXFS_SBI(ip->i_sb); sbi 219 fs/freevxfs/vxfs_bmap.c u64 hdr = fs64_to_cpu(sbi, typ->vt_hdr); sbi 230 fs/freevxfs/vxfs_bmap.c fs32_to_cpu(sbi, typ->vt_block), sbi 231 fs/freevxfs/vxfs_bmap.c fs32_to_cpu(sbi, typ->vt_size), sbi 237 fs/freevxfs/vxfs_bmap.c if ((iblock - off) < fs32_to_cpu(sbi, typ->vt_size)) sbi 238 fs/freevxfs/vxfs_bmap.c return (fs32_to_cpu(sbi, typ->vt_block) + sbi 248 fs/freevxfs/vxfs_bmap.c fs64_to_cpu(sbi, typ4->vd4_block), sbi 249 fs/freevxfs/vxfs_bmap.c fs64_to_cpu(sbi, typ4->vd4_size), sbi 250 fs/freevxfs/vxfs_bmap.c fs32_to_cpu(sbi, typ4->vd4_dev)); sbi 90 fs/freevxfs/vxfs_dir.h #define VXFS_DIRBLKOV(sbi, dbp) \ sbi 91 fs/freevxfs/vxfs_dir.h ((sizeof(short) * fs16_to_cpu(sbi, dbp->d_nhash)) + 4) sbi 100 fs/freevxfs/vxfs_inode.c static inline void dip2vip_cpy(struct vxfs_sb_info *sbi, sbi 105 fs/freevxfs/vxfs_inode.c vip->vii_mode = fs32_to_cpu(sbi, dip->vdi_mode); sbi 106 fs/freevxfs/vxfs_inode.c vip->vii_nlink = fs32_to_cpu(sbi, dip->vdi_nlink); sbi 107 fs/freevxfs/vxfs_inode.c vip->vii_uid = fs32_to_cpu(sbi, dip->vdi_uid); sbi 108 fs/freevxfs/vxfs_inode.c vip->vii_gid = fs32_to_cpu(sbi, dip->vdi_gid); sbi 109 fs/freevxfs/vxfs_inode.c vip->vii_size = fs64_to_cpu(sbi, dip->vdi_size); sbi 110 fs/freevxfs/vxfs_inode.c vip->vii_atime = fs32_to_cpu(sbi, dip->vdi_atime); sbi 111 fs/freevxfs/vxfs_inode.c vip->vii_autime = fs32_to_cpu(sbi, dip->vdi_autime); sbi 112 fs/freevxfs/vxfs_inode.c vip->vii_mtime = fs32_to_cpu(sbi, dip->vdi_mtime); sbi 113 fs/freevxfs/vxfs_inode.c vip->vii_mutime = fs32_to_cpu(sbi, dip->vdi_mutime); sbi 114 fs/freevxfs/vxfs_inode.c vip->vii_ctime = fs32_to_cpu(sbi, dip->vdi_ctime); sbi 115 fs/freevxfs/vxfs_inode.c vip->vii_cutime = fs32_to_cpu(sbi, dip->vdi_cutime); sbi 118 fs/freevxfs/vxfs_inode.c vip->vii_blocks = fs32_to_cpu(sbi, dip->vdi_blocks); sbi 119 fs/freevxfs/vxfs_inode.c vip->vii_gen = fs32_to_cpu(sbi, dip->vdi_gen); sbi 122 fs/freevxfs/vxfs_inode.c vip->vii_dotdot = fs32_to_cpu(sbi, dip->vdi_dotdot); sbi 124 fs/freevxfs/vxfs_inode.c vip->vii_rdev = fs32_to_cpu(sbi, dip->vdi_rdev); sbi 89 fs/freevxfs/vxfs_lookup.c struct vxfs_sb_info *sbi = VXFS_SBI(ip->i_sb); sbi 108 fs/freevxfs/vxfs_lookup.c int overhead = VXFS_DIRBLKOV(sbi, dbp); sbi 121 fs/freevxfs/vxfs_lookup.c pg_ofs += fs16_to_cpu(sbi, de->d_reclen); sbi 122 fs/freevxfs/vxfs_lookup.c pos += fs16_to_cpu(sbi, de->d_reclen); sbi 126 fs/freevxfs/vxfs_lookup.c if (namelen != fs16_to_cpu(sbi, de->d_namelen)) sbi 221 fs/freevxfs/vxfs_lookup.c struct vxfs_sb_info *sbi = VXFS_SBI(sbp); sbi 259 fs/freevxfs/vxfs_lookup.c int overhead = VXFS_DIRBLKOV(sbi, dbp); sbi 272 fs/freevxfs/vxfs_lookup.c pg_ofs += fs16_to_cpu(sbi, de->d_reclen); sbi 273 fs/freevxfs/vxfs_lookup.c pos += fs16_to_cpu(sbi, de->d_reclen); sbi 278 fs/freevxfs/vxfs_lookup.c fs16_to_cpu(sbi, de->d_namelen), sbi 279 fs/freevxfs/vxfs_lookup.c fs32_to_cpu(sbi, de->d_ino), sbi 283 fs/freevxfs/vxfs_lookup.c pos -= fs16_to_cpu(sbi, de->d_reclen); sbi 56 fs/hfs/super.c struct hfs_sb_info *sbi; sbi 59 fs/hfs/super.c sbi = container_of(work, struct hfs_sb_info, mdb_work.work); sbi 60 fs/hfs/super.c sb = sbi->sb; sbi 62 fs/hfs/super.c spin_lock(&sbi->work_lock); sbi 63 fs/hfs/super.c sbi->work_queued = 0; sbi 64 fs/hfs/super.c spin_unlock(&sbi->work_lock); sbi 71 fs/hfs/super.c struct hfs_sb_info *sbi = HFS_SB(sb); sbi 77 fs/hfs/super.c spin_lock(&sbi->work_lock); sbi 78 fs/hfs/super.c if (!sbi->work_queued) { sbi 80 fs/hfs/super.c queue_delayed_work(system_long_wq, &sbi->mdb_work, delay); sbi 81 fs/hfs/super.c sbi->work_queued = 1; sbi 83 fs/hfs/super.c spin_unlock(&sbi->work_lock); sbi 136 fs/hfs/super.c struct hfs_sb_info *sbi = HFS_SB(root->d_sb); sbi 138 fs/hfs/super.c if (sbi->s_creator != cpu_to_be32(0x3f3f3f3f)) sbi 139 fs/hfs/super.c seq_show_option_n(seq, "creator", (char *)&sbi->s_creator, 4); sbi 140 fs/hfs/super.c if (sbi->s_type != cpu_to_be32(0x3f3f3f3f)) sbi 141 fs/hfs/super.c seq_show_option_n(seq, "type", (char *)&sbi->s_type, 4); sbi 143 fs/hfs/super.c from_kuid_munged(&init_user_ns, sbi->s_uid), sbi 144 fs/hfs/super.c from_kgid_munged(&init_user_ns, sbi->s_gid)); sbi 145 fs/hfs/super.c if (sbi->s_file_umask != 0133) sbi 146 fs/hfs/super.c seq_printf(seq, ",file_umask=%o", sbi->s_file_umask); sbi 147 fs/hfs/super.c if (sbi->s_dir_umask != 0022) sbi 148 fs/hfs/super.c seq_printf(seq, ",dir_umask=%o", sbi->s_dir_umask); sbi 149 fs/hfs/super.c if (sbi->part >= 0) sbi 150 fs/hfs/super.c seq_printf(seq, ",part=%u", sbi->part); sbi 151 fs/hfs/super.c if (sbi->session >= 0) sbi 152 fs/hfs/super.c seq_printf(seq, ",session=%u", sbi->session); sbi 153 fs/hfs/super.c if (sbi->nls_disk) sbi 154 fs/hfs/super.c seq_printf(seq, ",codepage=%s", sbi->nls_disk->charset); sbi 155 fs/hfs/super.c if (sbi->nls_io) sbi 156 fs/hfs/super.c seq_printf(seq, ",iocharset=%s", sbi->nls_io->charset); sbi 157 fs/hfs/super.c if (sbi->s_quiet) sbi 381 fs/hfs/super.c struct hfs_sb_info *sbi; sbi 387 fs/hfs/super.c sbi = kzalloc(sizeof(struct hfs_sb_info), GFP_KERNEL); sbi 388 fs/hfs/super.c if (!sbi) sbi 391 fs/hfs/super.c sbi->sb = sb; sbi 392 fs/hfs/super.c sb->s_fs_info = sbi; sbi 393 fs/hfs/super.c spin_lock_init(&sbi->work_lock); sbi 394 fs/hfs/super.c INIT_DELAYED_WORK(&sbi->mdb_work, flush_mdb); sbi 397 fs/hfs/super.c if (!parse_options((char *)data, sbi)) { sbi 405 fs/hfs/super.c mutex_init(&sbi->bitmap_lock); sbi 22 fs/hfsplus/bitmap.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb); sbi 35 fs/hfsplus/bitmap.c mutex_lock(&sbi->alloc_mutex); sbi 36 fs/hfsplus/bitmap.c mapping = sbi->alloc_file->i_mapping; sbi 156 fs/hfsplus/bitmap.c sbi->free_blocks -= *max; sbi 160 fs/hfsplus/bitmap.c mutex_unlock(&sbi->alloc_mutex); sbi 166 fs/hfsplus/bitmap.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb); sbi 179 fs/hfsplus/bitmap.c if ((offset + count) > sbi->total_blocks) sbi 182 fs/hfsplus/bitmap.c mutex_lock(&sbi->alloc_mutex); sbi 183 fs/hfsplus/bitmap.c mapping = sbi->alloc_file->i_mapping; sbi 235 fs/hfsplus/bitmap.c sbi->free_blocks += len; sbi 237 fs/hfsplus/bitmap.c mutex_unlock(&sbi->alloc_mutex); sbi 243 fs/hfsplus/bitmap.c mutex_unlock(&sbi->alloc_mutex); sbi 660 fs/hfsplus/bnode.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb); sbi 661 fs/hfsplus/bnode.c const u32 volume_attr = be32_to_cpu(sbi->s_vhdr->attributes); sbi 108 fs/hfsplus/catalog.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(inode->i_sb); sbi 116 fs/hfsplus/catalog.c if (test_bit(HFSPLUS_SB_HFSX, &sbi->flags)) sbi 125 fs/hfsplus/catalog.c if (inode == sbi->hidden_dir) sbi 151 fs/hfsplus/catalog.c cpu_to_be32(sbi->type); sbi 153 fs/hfsplus/catalog.c cpu_to_be32(sbi->creator); sbi 168 fs/hfsplus/catalog.c HFSPLUS_I(sbi->hidden_dir)->create_date; sbi 225 fs/hfsplus/catalog.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(dir->i_sb); sbi 227 fs/hfsplus/catalog.c if (test_bit(HFSPLUS_SB_HFSX, &sbi->flags)) { sbi 238 fs/hfsplus/catalog.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(dir->i_sb); sbi 240 fs/hfsplus/catalog.c if (test_bit(HFSPLUS_SB_HFSX, &sbi->flags)) { sbi 303 fs/hfsplus/dir.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(dst_dir->i_sb); sbi 316 fs/hfsplus/dir.c mutex_lock(&sbi->vh_mutex); sbi 325 fs/hfsplus/dir.c sbi->hidden_dir, &str); sbi 332 fs/hfsplus/dir.c cnid = sbi->next_cnid++; sbi 339 fs/hfsplus/dir.c sbi->file_count++; sbi 341 fs/hfsplus/dir.c cnid = sbi->next_cnid++; sbi 351 fs/hfsplus/dir.c sbi->file_count++; sbi 354 fs/hfsplus/dir.c mutex_unlock(&sbi->vh_mutex); sbi 360 fs/hfsplus/dir.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(dir->i_sb); sbi 370 fs/hfsplus/dir.c mutex_lock(&sbi->vh_mutex); sbi 378 fs/hfsplus/dir.c sbi->hidden_dir, &str); sbi 395 fs/hfsplus/dir.c sbi->file_count--; sbi 398 fs/hfsplus/dir.c sbi->hidden_dir, sbi 407 fs/hfsplus/dir.c sbi->file_count--; sbi 411 fs/hfsplus/dir.c mutex_unlock(&sbi->vh_mutex); sbi 417 fs/hfsplus/dir.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(dir->i_sb); sbi 424 fs/hfsplus/dir.c mutex_lock(&sbi->vh_mutex); sbi 433 fs/hfsplus/dir.c mutex_unlock(&sbi->vh_mutex); sbi 440 fs/hfsplus/dir.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(dir->i_sb); sbi 444 fs/hfsplus/dir.c mutex_lock(&sbi->vh_mutex); sbi 475 fs/hfsplus/dir.c mutex_unlock(&sbi->vh_mutex); sbi 482 fs/hfsplus/dir.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(dir->i_sb); sbi 486 fs/hfsplus/dir.c mutex_lock(&sbi->vh_mutex); sbi 516 fs/hfsplus/dir.c mutex_unlock(&sbi->vh_mutex); sbi 229 fs/hfsplus/extents.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb); sbi 237 fs/hfsplus/extents.c ablock = iblock >> sbi->fs_shift; sbi 281 fs/hfsplus/extents.c mask = (1 << sbi->fs_shift) - 1; sbi 282 fs/hfsplus/extents.c sector = ((sector_t)dblock << sbi->fs_shift) + sbi 283 fs/hfsplus/extents.c sbi->blockoffset + (iblock & mask); sbi 443 fs/hfsplus/extents.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb); sbi 448 fs/hfsplus/extents.c if (sbi->alloc_file->i_size * 8 < sbi 449 fs/hfsplus/extents.c sbi->total_blocks - sbi->free_blocks + 8) { sbi 452 fs/hfsplus/extents.c sbi->alloc_file->i_size * 8, sbi 453 fs/hfsplus/extents.c sbi->total_blocks, sbi->free_blocks); sbi 468 fs/hfsplus/extents.c start = hfsplus_block_allocate(sb, sbi->total_blocks, goal, &len); sbi 469 fs/hfsplus/extents.c if (start >= sbi->total_blocks) { sbi 502 fs/hfsplus/hfsplus_fs.h int hfsplus_parse_options(char *input, struct hfsplus_sb_info *sbi); sbi 184 fs/hfsplus/inode.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(inode->i_sb); sbi 191 fs/hfsplus/inode.c inode->i_uid = sbi->uid; sbi 195 fs/hfsplus/inode.c inode->i_gid = sbi->gid; sbi 198 fs/hfsplus/inode.c mode = mode ? (mode & S_IALLUGO) : (S_IRWXUGO & ~(sbi->umask)); sbi 201 fs/hfsplus/inode.c mode = S_IFREG | ((S_IRUGO|S_IWUGO) & ~(sbi->umask)); sbi 298 fs/hfsplus/inode.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(inode->i_sb); sbi 315 fs/hfsplus/inode.c error = filemap_write_and_wait(sbi->cat_tree->inode->i_mapping); sbi 319 fs/hfsplus/inode.c filemap_write_and_wait(sbi->ext_tree->inode->i_mapping); sbi 325 fs/hfsplus/inode.c if (sbi->attr_tree) { sbi 328 fs/hfsplus/inode.c sbi->attr_tree->inode->i_mapping); sbi 337 fs/hfsplus/inode.c error2 = filemap_write_and_wait(sbi->alloc_file->i_mapping); sbi 342 fs/hfsplus/inode.c if (!test_bit(HFSPLUS_SB_NOBARRIER, &sbi->flags)) sbi 371 fs/hfsplus/inode.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb); sbi 378 fs/hfsplus/inode.c inode->i_ino = sbi->next_cnid++; sbi 403 fs/hfsplus/inode.c sbi->folder_count++; sbi 407 fs/hfsplus/inode.c sbi->file_count++; sbi 411 fs/hfsplus/inode.c hip->clump_blocks = sbi->data_clump_blocks; sbi 413 fs/hfsplus/inode.c sbi->file_count++; sbi 419 fs/hfsplus/inode.c sbi->file_count++; sbi 452 fs/hfsplus/inode.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb); sbi 471 fs/hfsplus/inode.c be32_to_cpu(fork->clump_size) >> sbi->alloc_blksz_shift; sbi 474 fs/hfsplus/inode.c sbi->rsrc_clump_blocks : sbi 475 fs/hfsplus/inode.c sbi->data_clump_blocks; sbi 31 fs/hfsplus/ioctl.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(inode->i_sb); sbi 32 fs/hfsplus/ioctl.c struct hfsplus_vh *vh = sbi->s_vhdr; sbi 33 fs/hfsplus/ioctl.c struct hfsplus_vh *bvh = sbi->s_backup_vhdr; sbi 39 fs/hfsplus/ioctl.c mutex_lock(&sbi->vh_mutex); sbi 56 fs/hfsplus/ioctl.c mutex_unlock(&sbi->vh_mutex); sbi 100 fs/hfsplus/options.c int hfsplus_parse_options(char *input, struct hfsplus_sb_info *sbi) sbi 116 fs/hfsplus/options.c if (match_fourchar(&args[0], &sbi->creator)) { sbi 122 fs/hfsplus/options.c if (match_fourchar(&args[0], &sbi->type)) { sbi 132 fs/hfsplus/options.c sbi->umask = (umode_t)tmp; sbi 139 fs/hfsplus/options.c sbi->uid = make_kuid(current_user_ns(), (uid_t)tmp); sbi 140 fs/hfsplus/options.c if (!uid_valid(sbi->uid)) { sbi 150 fs/hfsplus/options.c sbi->gid = make_kgid(current_user_ns(), (gid_t)tmp); sbi 151 fs/hfsplus/options.c if (!gid_valid(sbi->gid)) { sbi 157 fs/hfsplus/options.c if (match_int(&args[0], &sbi->part)) { sbi 163 fs/hfsplus/options.c if (match_int(&args[0], &sbi->session)) { sbi 169 fs/hfsplus/options.c if (sbi->nls) { sbi 175 fs/hfsplus/options.c sbi->nls = load_nls(p); sbi 176 fs/hfsplus/options.c if (!sbi->nls) { sbi 185 fs/hfsplus/options.c clear_bit(HFSPLUS_SB_NODECOMPOSE, &sbi->flags); sbi 188 fs/hfsplus/options.c set_bit(HFSPLUS_SB_NODECOMPOSE, &sbi->flags); sbi 191 fs/hfsplus/options.c clear_bit(HFSPLUS_SB_NOBARRIER, &sbi->flags); sbi 194 fs/hfsplus/options.c set_bit(HFSPLUS_SB_NOBARRIER, &sbi->flags); sbi 197 fs/hfsplus/options.c set_bit(HFSPLUS_SB_FORCE, &sbi->flags); sbi 205 fs/hfsplus/options.c if (!sbi->nls) { sbi 207 fs/hfsplus/options.c sbi->nls = load_nls("utf8"); sbi 208 fs/hfsplus/options.c if (!sbi->nls) sbi 209 fs/hfsplus/options.c sbi->nls = load_nls_default(); sbi 210 fs/hfsplus/options.c if (!sbi->nls) sbi 219 fs/hfsplus/options.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(root->d_sb); sbi 221 fs/hfsplus/options.c if (sbi->creator != HFSPLUS_DEF_CR_TYPE) sbi 222 fs/hfsplus/options.c seq_show_option_n(seq, "creator", (char *)&sbi->creator, 4); sbi 223 fs/hfsplus/options.c if (sbi->type != HFSPLUS_DEF_CR_TYPE) sbi 224 fs/hfsplus/options.c seq_show_option_n(seq, "type", (char *)&sbi->type, 4); sbi 225 fs/hfsplus/options.c seq_printf(seq, ",umask=%o,uid=%u,gid=%u", sbi->umask, sbi 226 fs/hfsplus/options.c from_kuid_munged(&init_user_ns, sbi->uid), sbi 227 fs/hfsplus/options.c from_kgid_munged(&init_user_ns, sbi->gid)); sbi 228 fs/hfsplus/options.c if (sbi->part >= 0) sbi 229 fs/hfsplus/options.c seq_printf(seq, ",part=%u", sbi->part); sbi 230 fs/hfsplus/options.c if (sbi->session >= 0) sbi 231 fs/hfsplus/options.c seq_printf(seq, ",session=%u", sbi->session); sbi 232 fs/hfsplus/options.c if (sbi->nls) sbi 233 fs/hfsplus/options.c seq_printf(seq, ",nls=%s", sbi->nls->charset); sbi 234 fs/hfsplus/options.c if (test_bit(HFSPLUS_SB_NODECOMPOSE, &sbi->flags)) sbi 236 fs/hfsplus/options.c if (test_bit(HFSPLUS_SB_NOBARRIER, &sbi->flags)) sbi 73 fs/hfsplus/part_tbl.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb); sbi 81 fs/hfsplus/part_tbl.c (sbi->part < 0 || sbi->part == i)) { sbi 94 fs/hfsplus/part_tbl.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb); sbi 102 fs/hfsplus/part_tbl.c (sbi->part < 0 || sbi->part == i)) { sbi 102 fs/hfsplus/super.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(inode->i_sb); sbi 103 fs/hfsplus/super.c struct hfsplus_vh *vhdr = sbi->s_vhdr; sbi 110 fs/hfsplus/super.c tree = sbi->ext_tree; sbi 114 fs/hfsplus/super.c tree = sbi->cat_tree; sbi 124 fs/hfsplus/super.c tree = sbi->attr_tree; sbi 131 fs/hfsplus/super.c set_bit(HFSPLUS_SB_WRITEBACKUP, &sbi->flags); sbi 178 fs/hfsplus/super.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb); sbi 179 fs/hfsplus/super.c struct hfsplus_vh *vhdr = sbi->s_vhdr; sbi 196 fs/hfsplus/super.c error = filemap_write_and_wait(sbi->cat_tree->inode->i_mapping); sbi 197 fs/hfsplus/super.c error2 = filemap_write_and_wait(sbi->ext_tree->inode->i_mapping); sbi 200 fs/hfsplus/super.c if (sbi->attr_tree) { sbi 202 fs/hfsplus/super.c filemap_write_and_wait(sbi->attr_tree->inode->i_mapping); sbi 206 fs/hfsplus/super.c error2 = filemap_write_and_wait(sbi->alloc_file->i_mapping); sbi 210 fs/hfsplus/super.c mutex_lock(&sbi->vh_mutex); sbi 211 fs/hfsplus/super.c mutex_lock(&sbi->alloc_mutex); sbi 212 fs/hfsplus/super.c vhdr->free_blocks = cpu_to_be32(sbi->free_blocks); sbi 213 fs/hfsplus/super.c vhdr->next_cnid = cpu_to_be32(sbi->next_cnid); sbi 214 fs/hfsplus/super.c vhdr->folder_count = cpu_to_be32(sbi->folder_count); sbi 215 fs/hfsplus/super.c vhdr->file_count = cpu_to_be32(sbi->file_count); sbi 217 fs/hfsplus/super.c if (test_and_clear_bit(HFSPLUS_SB_WRITEBACKUP, &sbi->flags)) { sbi 218 fs/hfsplus/super.c memcpy(sbi->s_backup_vhdr, sbi->s_vhdr, sizeof(*sbi->s_vhdr)); sbi 223 fs/hfsplus/super.c sbi->part_start + HFSPLUS_VOLHEAD_SECTOR, sbi 224 fs/hfsplus/super.c sbi->s_vhdr_buf, NULL, REQ_OP_WRITE, sbi 232 fs/hfsplus/super.c sbi->part_start + sbi->sect_count - 2, sbi 233 fs/hfsplus/super.c sbi->s_backup_vhdr_buf, NULL, REQ_OP_WRITE, sbi 238 fs/hfsplus/super.c mutex_unlock(&sbi->alloc_mutex); sbi 239 fs/hfsplus/super.c mutex_unlock(&sbi->vh_mutex); sbi 241 fs/hfsplus/super.c if (!test_bit(HFSPLUS_SB_NOBARRIER, &sbi->flags)) sbi 250 fs/hfsplus/super.c struct hfsplus_sb_info *sbi; sbi 252 fs/hfsplus/super.c sbi = container_of(work, struct hfsplus_sb_info, sync_work.work); sbi 254 fs/hfsplus/super.c spin_lock(&sbi->work_lock); sbi 255 fs/hfsplus/super.c sbi->work_queued = 0; sbi 256 fs/hfsplus/super.c spin_unlock(&sbi->work_lock); sbi 258 fs/hfsplus/super.c err = hfsplus_sync_fs(sbi->alloc_file->i_sb, 1); sbi 265 fs/hfsplus/super.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb); sbi 271 fs/hfsplus/super.c spin_lock(&sbi->work_lock); sbi 272 fs/hfsplus/super.c if (!sbi->work_queued) { sbi 274 fs/hfsplus/super.c queue_delayed_work(system_long_wq, &sbi->sync_work, delay); sbi 275 fs/hfsplus/super.c sbi->work_queued = 1; sbi 277 fs/hfsplus/super.c spin_unlock(&sbi->work_lock); sbi 282 fs/hfsplus/super.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb); sbi 286 fs/hfsplus/super.c cancel_delayed_work_sync(&sbi->sync_work); sbi 288 fs/hfsplus/super.c if (!sb_rdonly(sb) && sbi->s_vhdr) { sbi 289 fs/hfsplus/super.c struct hfsplus_vh *vhdr = sbi->s_vhdr; sbi 298 fs/hfsplus/super.c hfs_btree_close(sbi->attr_tree); sbi 299 fs/hfsplus/super.c hfs_btree_close(sbi->cat_tree); sbi 300 fs/hfsplus/super.c hfs_btree_close(sbi->ext_tree); sbi 301 fs/hfsplus/super.c iput(sbi->alloc_file); sbi 302 fs/hfsplus/super.c iput(sbi->hidden_dir); sbi 303 fs/hfsplus/super.c kfree(sbi->s_vhdr_buf); sbi 304 fs/hfsplus/super.c kfree(sbi->s_backup_vhdr_buf); sbi 305 fs/hfsplus/super.c unload_nls(sbi->nls); sbi 313 fs/hfsplus/super.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb); sbi 318 fs/hfsplus/super.c buf->f_blocks = sbi->total_blocks << sbi->fs_shift; sbi 319 fs/hfsplus/super.c buf->f_bfree = sbi->free_blocks << sbi->fs_shift; sbi 322 fs/hfsplus/super.c buf->f_ffree = 0xFFFFFFFF - sbi->next_cnid; sbi 378 fs/hfsplus/super.c struct hfsplus_sb_info *sbi; sbi 388 fs/hfsplus/super.c sbi = kzalloc(sizeof(*sbi), GFP_KERNEL); sbi 389 fs/hfsplus/super.c if (!sbi) sbi 392 fs/hfsplus/super.c sb->s_fs_info = sbi; sbi 393 fs/hfsplus/super.c mutex_init(&sbi->alloc_mutex); sbi 394 fs/hfsplus/super.c mutex_init(&sbi->vh_mutex); sbi 395 fs/hfsplus/super.c spin_lock_init(&sbi->work_lock); sbi 396 fs/hfsplus/super.c INIT_DELAYED_WORK(&sbi->sync_work, delayed_sync_fs); sbi 397 fs/hfsplus/super.c hfsplus_fill_defaults(sbi); sbi 400 fs/hfsplus/super.c if (!hfsplus_parse_options(data, sbi)) { sbi 406 fs/hfsplus/super.c nls = sbi->nls; sbi 407 fs/hfsplus/super.c sbi->nls = load_nls("utf8"); sbi 408 fs/hfsplus/super.c if (!sbi->nls) { sbi 419 fs/hfsplus/super.c vhdr = sbi->s_vhdr; sbi 428 fs/hfsplus/super.c sbi->total_blocks = be32_to_cpu(vhdr->total_blocks); sbi 429 fs/hfsplus/super.c sbi->free_blocks = be32_to_cpu(vhdr->free_blocks); sbi 430 fs/hfsplus/super.c sbi->next_cnid = be32_to_cpu(vhdr->next_cnid); sbi 431 fs/hfsplus/super.c sbi->file_count = be32_to_cpu(vhdr->file_count); sbi 432 fs/hfsplus/super.c sbi->folder_count = be32_to_cpu(vhdr->folder_count); sbi 433 fs/hfsplus/super.c sbi->data_clump_blocks = sbi 434 fs/hfsplus/super.c be32_to_cpu(vhdr->data_clump_sz) >> sbi->alloc_blksz_shift; sbi 435 fs/hfsplus/super.c if (!sbi->data_clump_blocks) sbi 436 fs/hfsplus/super.c sbi->data_clump_blocks = 1; sbi 437 fs/hfsplus/super.c sbi->rsrc_clump_blocks = sbi 438 fs/hfsplus/super.c be32_to_cpu(vhdr->rsrc_clump_sz) >> sbi->alloc_blksz_shift; sbi 439 fs/hfsplus/super.c if (!sbi->rsrc_clump_blocks) sbi 440 fs/hfsplus/super.c sbi->rsrc_clump_blocks = 1; sbi 443 fs/hfsplus/super.c last_fs_block = sbi->total_blocks - 1; sbi 444 fs/hfsplus/super.c last_fs_page = (last_fs_block << sbi->alloc_blksz_shift) >> sbi 447 fs/hfsplus/super.c if ((last_fs_block > (sector_t)(~0ULL) >> (sbi->alloc_blksz_shift - 9)) || sbi 460 fs/hfsplus/super.c } else if (test_and_clear_bit(HFSPLUS_SB_FORCE, &sbi->flags)) { sbi 474 fs/hfsplus/super.c sbi->ext_tree = hfs_btree_open(sb, HFSPLUS_EXT_CNID); sbi 475 fs/hfsplus/super.c if (!sbi->ext_tree) { sbi 479 fs/hfsplus/super.c sbi->cat_tree = hfs_btree_open(sb, HFSPLUS_CAT_CNID); sbi 480 fs/hfsplus/super.c if (!sbi->cat_tree) { sbi 484 fs/hfsplus/super.c atomic_set(&sbi->attr_tree_state, HFSPLUS_EMPTY_ATTR_TREE); sbi 486 fs/hfsplus/super.c sbi->attr_tree = hfs_btree_open(sb, HFSPLUS_ATTR_CNID); sbi 487 fs/hfsplus/super.c if (!sbi->attr_tree) { sbi 491 fs/hfsplus/super.c atomic_set(&sbi->attr_tree_state, HFSPLUS_VALID_ATTR_TREE); sbi 501 fs/hfsplus/super.c sbi->alloc_file = inode; sbi 520 fs/hfsplus/super.c err = hfs_find_init(sbi->cat_tree, &fd); sbi 537 fs/hfsplus/super.c sbi->hidden_dir = inode; sbi 553 fs/hfsplus/super.c if (!sbi->hidden_dir) { sbi 554 fs/hfsplus/super.c mutex_lock(&sbi->vh_mutex); sbi 555 fs/hfsplus/super.c sbi->hidden_dir = hfsplus_new_inode(sb, root, S_IFDIR); sbi 556 fs/hfsplus/super.c if (!sbi->hidden_dir) { sbi 557 fs/hfsplus/super.c mutex_unlock(&sbi->vh_mutex); sbi 561 fs/hfsplus/super.c err = hfsplus_create_cat(sbi->hidden_dir->i_ino, root, sbi 562 fs/hfsplus/super.c &str, sbi->hidden_dir); sbi 564 fs/hfsplus/super.c mutex_unlock(&sbi->vh_mutex); sbi 568 fs/hfsplus/super.c err = hfsplus_init_security(sbi->hidden_dir, sbi 577 fs/hfsplus/super.c hfsplus_delete_cat(sbi->hidden_dir->i_ino, sbi 579 fs/hfsplus/super.c mutex_unlock(&sbi->vh_mutex); sbi 583 fs/hfsplus/super.c mutex_unlock(&sbi->vh_mutex); sbi 584 fs/hfsplus/super.c hfsplus_mark_inode_dirty(sbi->hidden_dir, sbi 589 fs/hfsplus/super.c unload_nls(sbi->nls); sbi 590 fs/hfsplus/super.c sbi->nls = nls; sbi 594 fs/hfsplus/super.c cancel_delayed_work_sync(&sbi->sync_work); sbi 595 fs/hfsplus/super.c iput(sbi->hidden_dir); sbi 600 fs/hfsplus/super.c iput(sbi->alloc_file); sbi 602 fs/hfsplus/super.c hfs_btree_close(sbi->attr_tree); sbi 604 fs/hfsplus/super.c hfs_btree_close(sbi->cat_tree); sbi 606 fs/hfsplus/super.c hfs_btree_close(sbi->ext_tree); sbi 608 fs/hfsplus/super.c kfree(sbi->s_vhdr_buf); sbi 609 fs/hfsplus/super.c kfree(sbi->s_backup_vhdr_buf); sbi 611 fs/hfsplus/super.c unload_nls(sbi->nls); sbi 613 fs/hfsplus/super.c kfree(sbi); sbi 162 fs/hfsplus/wrapper.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb); sbi 177 fs/hfsplus/wrapper.c sbi->s_vhdr_buf = kmalloc(hfsplus_min_io_size(sb), GFP_KERNEL); sbi 178 fs/hfsplus/wrapper.c if (!sbi->s_vhdr_buf) sbi 180 fs/hfsplus/wrapper.c sbi->s_backup_vhdr_buf = kmalloc(hfsplus_min_io_size(sb), GFP_KERNEL); sbi 181 fs/hfsplus/wrapper.c if (!sbi->s_backup_vhdr_buf) sbi 186 fs/hfsplus/wrapper.c sbi->s_vhdr_buf, (void **)&sbi->s_vhdr, sbi 192 fs/hfsplus/wrapper.c switch (sbi->s_vhdr->signature) { sbi 194 fs/hfsplus/wrapper.c set_bit(HFSPLUS_SB_HFSX, &sbi->flags); sbi 199 fs/hfsplus/wrapper.c if (!hfsplus_read_mdb(sbi->s_vhdr, &wd)) sbi 218 fs/hfsplus/wrapper.c sbi->s_backup_vhdr_buf, sbi 219 fs/hfsplus/wrapper.c (void **)&sbi->s_backup_vhdr, REQ_OP_READ, sbi 225 fs/hfsplus/wrapper.c if (sbi->s_backup_vhdr->signature != sbi->s_vhdr->signature) { sbi 230 fs/hfsplus/wrapper.c blocksize = be32_to_cpu(sbi->s_vhdr->blocksize); sbi 237 fs/hfsplus/wrapper.c sbi->alloc_blksz = blocksize; sbi 238 fs/hfsplus/wrapper.c sbi->alloc_blksz_shift = ilog2(blocksize); sbi 239 fs/hfsplus/wrapper.c blocksize = min_t(u32, sbi->alloc_blksz, PAGE_SIZE); sbi 252 fs/hfsplus/wrapper.c sbi->blockoffset = sbi 254 fs/hfsplus/wrapper.c sbi->part_start = part_start; sbi 255 fs/hfsplus/wrapper.c sbi->sect_count = part_size; sbi 256 fs/hfsplus/wrapper.c sbi->fs_shift = sbi->alloc_blksz_shift - sb->s_blocksize_bits; sbi 260 fs/hfsplus/wrapper.c kfree(sbi->s_backup_vhdr_buf); sbi 262 fs/hfsplus/wrapper.c kfree(sbi->s_vhdr_buf); sbi 124 fs/hfsplus/xattr.c struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb); sbi 138 fs/hfsplus/xattr.c switch (atomic_read(&sbi->attr_tree_state)) { sbi 140 fs/hfsplus/xattr.c if (old_state != atomic_cmpxchg(&sbi->attr_tree_state, sbi 181 fs/hfsplus/xattr.c sbi->sect_count, sbi 185 fs/hfsplus/xattr.c hip->clump_blocks = clump_size >> sbi->alloc_blksz_shift; sbi 188 fs/hfsplus/xattr.c if (sbi->free_blocks <= (hip->clump_blocks << 1)) { sbi 200 fs/hfsplus/xattr.c (loff_t)hip->alloc_blocks << sbi->alloc_blksz_shift; sbi 201 fs/hfsplus/xattr.c hip->fs_blocks = hip->alloc_blocks << sbi->fs_shift; sbi 238 fs/hfsplus/xattr.c sbi->attr_tree = hfs_btree_open(sb, HFSPLUS_ATTR_CNID); sbi 239 fs/hfsplus/xattr.c if (!sbi->attr_tree) sbi 249 fs/hfsplus/xattr.c atomic_set(&sbi->attr_tree_state, HFSPLUS_VALID_ATTR_TREE); sbi 251 fs/hfsplus/xattr.c atomic_set(&sbi->attr_tree_state, HFSPLUS_EMPTY_ATTR_TREE); sbi 253 fs/hfsplus/xattr.c atomic_set(&sbi->attr_tree_state, HFSPLUS_FAILED_ATTR_TREE); sbi 14 fs/hpfs/alloc.c struct hpfs_sb_info *sbi = hpfs_sb(s); sbi 15 fs/hpfs/alloc.c if (sbi->sb_n_free != (unsigned)-1) { sbi 16 fs/hpfs/alloc.c if (unlikely(!sbi->sb_n_free)) { sbi 18 fs/hpfs/alloc.c sbi->sb_n_free = -1; sbi 21 fs/hpfs/alloc.c sbi->sb_n_free--; sbi 27 fs/hpfs/alloc.c struct hpfs_sb_info *sbi = hpfs_sb(s); sbi 28 fs/hpfs/alloc.c if (sbi->sb_n_free != (unsigned)-1) { sbi 29 fs/hpfs/alloc.c if (unlikely(sbi->sb_n_free >= sbi->sb_fs_size)) { sbi 31 fs/hpfs/alloc.c sbi->sb_n_free = -1; sbi 34 fs/hpfs/alloc.c sbi->sb_n_free++; sbi 40 fs/hpfs/alloc.c struct hpfs_sb_info *sbi = hpfs_sb(s); sbi 41 fs/hpfs/alloc.c if (sbi->sb_n_free_dnodes != (unsigned)-1) { sbi 42 fs/hpfs/alloc.c if (unlikely(!sbi->sb_n_free_dnodes)) { sbi 44 fs/hpfs/alloc.c sbi->sb_n_free_dnodes = -1; sbi 47 fs/hpfs/alloc.c sbi->sb_n_free_dnodes--; sbi 53 fs/hpfs/alloc.c struct hpfs_sb_info *sbi = hpfs_sb(s); sbi 54 fs/hpfs/alloc.c if (sbi->sb_n_free_dnodes != (unsigned)-1) { sbi 55 fs/hpfs/alloc.c if (unlikely(sbi->sb_n_free_dnodes >= sbi->sb_dirband_size / 4)) { sbi 57 fs/hpfs/alloc.c sbi->sb_n_free_dnodes = -1; sbi 60 fs/hpfs/alloc.c sbi->sb_n_free_dnodes++; sbi 208 fs/hpfs/alloc.c struct hpfs_sb_info *sbi = hpfs_sb(s); sbi 215 fs/hpfs/alloc.c n_bmps = (sbi->sb_fs_size + 0x4000 - 1) >> 14; sbi 216 fs/hpfs/alloc.c if (near && near < sbi->sb_fs_size) { sbi 228 fs/hpfs/alloc.c if (!f_p) if (forward > sbi->sb_max_fwd_alloc) forward = sbi->sb_max_fwd_alloc; sbi 232 fs/hpfs/alloc.c sbi->sb_c_bitmap = near_bmp+i; sbi 237 fs/hpfs/alloc.c sbi->sb_c_bitmap = near_bmp-i-1; sbi 242 fs/hpfs/alloc.c sbi->sb_c_bitmap = near_bmp+i-n_bmps; sbi 246 fs/hpfs/alloc.c if (i == 1 && sbi->sb_c_bitmap != -1 && ((sec = alloc_in_bmp(s, (sbi->sb_c_bitmap) << 14, n, forward)))) { sbi 252 fs/hpfs/alloc.c sbi->sb_max_fwd_alloc = forward * 3 / 4; sbi 281 fs/hpfs/alloc.c struct hpfs_sb_info *sbi = hpfs_sb(s); sbi 282 fs/hpfs/alloc.c if (nr < sbi->sb_dirband_start) sbi 283 fs/hpfs/alloc.c nr = sbi->sb_dirband_start; sbi 284 fs/hpfs/alloc.c if (nr >= sbi->sb_dirband_start + sbi->sb_dirband_size) sbi 285 fs/hpfs/alloc.c nr = sbi->sb_dirband_start + sbi->sb_dirband_size - 4; sbi 286 fs/hpfs/alloc.c nr -= sbi->sb_dirband_start; sbi 291 fs/hpfs/alloc.c return ((sec & 0x3fff) << 2) + sbi->sb_dirband_start; sbi 319 fs/hpfs/alloc.c struct hpfs_sb_info *sbi = hpfs_sb(s); sbi 326 fs/hpfs/alloc.c sbi->sb_max_fwd_alloc += n > 0xffff ? 0xffff : n; sbi 327 fs/hpfs/alloc.c if (sbi->sb_max_fwd_alloc > 0xffffff) sbi->sb_max_fwd_alloc = 0xffffff; sbi 528 fs/hpfs/alloc.c struct hpfs_sb_info *sbi = hpfs_sb(s); sbi 534 fs/hpfs/alloc.c if (!end || end > sbi->sb_fs_size) sbi 535 fs/hpfs/alloc.c end = sbi->sb_fs_size; sbi 536 fs/hpfs/alloc.c if (start >= sbi->sb_fs_size) sbi 540 fs/hpfs/alloc.c if (start < sbi->sb_dirband_start + sbi->sb_dirband_size && end > sbi->sb_dirband_start) { sbi 552 fs/hpfs/alloc.c err = do_trim(s, sbi->sb_dirband_start + idx * 4, len * 4, start, end, minlen, result); sbi 17 fs/hpfs/buffer.c struct hpfs_sb_info *sbi = hpfs_sb(s); sbi 18 fs/hpfs/buffer.c for (i = 0; unlikely(i < sbi->n_hotfixes); i++) { sbi 19 fs/hpfs/buffer.c if (sbi->hotfix_from[i] == sec) { sbi 20 fs/hpfs/buffer.c return sbi->hotfix_to[i]; sbi 29 fs/hpfs/buffer.c struct hpfs_sb_info *sbi = hpfs_sb(s); sbi 30 fs/hpfs/buffer.c for (i = 0; unlikely(i < sbi->n_hotfixes); i++) { sbi 31 fs/hpfs/buffer.c if (sbi->hotfix_from[i] >= sec && sbi->hotfix_from[i] < sec + n) { sbi 32 fs/hpfs/buffer.c n = sbi->hotfix_from[i] - sec; sbi 365 fs/hpfs/hpfs_fn.h struct hpfs_sb_info *sbi = hpfs_sb(s); sbi 366 fs/hpfs/hpfs_fn.h mutex_lock(&sbi->hpfs_mutex); sbi 371 fs/hpfs/hpfs_fn.h struct hpfs_sb_info *sbi = hpfs_sb(s); sbi 372 fs/hpfs/hpfs_fn.h mutex_unlock(&sbi->hpfs_mutex); sbi 377 fs/hpfs/hpfs_fn.h struct hpfs_sb_info *sbi = hpfs_sb(s); sbi 378 fs/hpfs/hpfs_fn.h WARN_ON(!mutex_is_locked(&sbi->hpfs_mutex)); sbi 113 fs/hpfs/super.c static void free_sbi(struct hpfs_sb_info *sbi) sbi 115 fs/hpfs/super.c kfree(sbi->sb_cp_table); sbi 116 fs/hpfs/super.c kfree(sbi->sb_bmp_dir); sbi 117 fs/hpfs/super.c kfree(sbi); sbi 167 fs/hpfs/super.c struct hpfs_sb_info *sbi = hpfs_sb(s); sbi 168 fs/hpfs/super.c if (sbi->sb_n_free_dnodes == (unsigned)-1) { sbi 169 fs/hpfs/super.c unsigned c = hpfs_count_one_bitmap(s, sbi->sb_dmap); sbi 172 fs/hpfs/super.c sbi->sb_n_free_dnodes = c; sbi 174 fs/hpfs/super.c return sbi->sb_n_free_dnodes; sbi 180 fs/hpfs/super.c struct hpfs_sb_info *sbi = hpfs_sb(s); sbi 185 fs/hpfs/super.c if (sbi->sb_n_free == (unsigned)-1) sbi 186 fs/hpfs/super.c sbi->sb_n_free = count_bitmaps(s); sbi 190 fs/hpfs/super.c buf->f_blocks = sbi->sb_fs_size; sbi 191 fs/hpfs/super.c buf->f_bfree = sbi->sb_n_free; sbi 192 fs/hpfs/super.c buf->f_bavail = sbi->sb_n_free; sbi 193 fs/hpfs/super.c buf->f_files = sbi->sb_dirband_size / 4; sbi 450 fs/hpfs/super.c struct hpfs_sb_info *sbi = hpfs_sb(s); sbi 457 fs/hpfs/super.c uid = sbi->sb_uid; gid = sbi->sb_gid; sbi 458 fs/hpfs/super.c umask = 0777 & ~sbi->sb_mode; sbi 459 fs/hpfs/super.c lowercase = sbi->sb_lowercase; sbi 460 fs/hpfs/super.c eas = sbi->sb_eas; chk = sbi->sb_chk; chkdsk = sbi->sb_chkdsk; sbi 461 fs/hpfs/super.c errs = sbi->sb_err; timeshift = sbi->sb_timeshift; sbi 472 fs/hpfs/super.c if (timeshift != sbi->sb_timeshift) { sbi 479 fs/hpfs/super.c sbi->sb_uid = uid; sbi->sb_gid = gid; sbi 480 fs/hpfs/super.c sbi->sb_mode = 0777 & ~umask; sbi 481 fs/hpfs/super.c sbi->sb_lowercase = lowercase; sbi 482 fs/hpfs/super.c sbi->sb_eas = eas; sbi->sb_chk = chk; sbi->sb_chkdsk = chkdsk; sbi 483 fs/hpfs/super.c sbi->sb_err = errs; sbi->sb_timeshift = timeshift; sbi 497 fs/hpfs/super.c struct hpfs_sb_info *sbi = hpfs_sb(root->d_sb); sbi 499 fs/hpfs/super.c seq_printf(seq, ",uid=%u", from_kuid_munged(&init_user_ns, sbi->sb_uid)); sbi 500 fs/hpfs/super.c seq_printf(seq, ",gid=%u", from_kgid_munged(&init_user_ns, sbi->sb_gid)); sbi 501 fs/hpfs/super.c seq_printf(seq, ",umask=%03o", (~sbi->sb_mode & 0777)); sbi 502 fs/hpfs/super.c if (sbi->sb_lowercase) sbi 504 fs/hpfs/super.c if (!sbi->sb_chk) sbi 506 fs/hpfs/super.c if (sbi->sb_chk == 2) sbi 508 fs/hpfs/super.c if (!sbi->sb_err) sbi 510 fs/hpfs/super.c if (sbi->sb_err == 2) sbi 512 fs/hpfs/super.c if (!sbi->sb_chkdsk) sbi 514 fs/hpfs/super.c if (sbi->sb_chkdsk == 2) sbi 516 fs/hpfs/super.c if (!sbi->sb_eas) sbi 518 fs/hpfs/super.c if (sbi->sb_eas == 1) sbi 520 fs/hpfs/super.c if (sbi->sb_timeshift) sbi 521 fs/hpfs/super.c seq_printf(seq, ",timeshift=%d", sbi->sb_timeshift); sbi 544 fs/hpfs/super.c struct hpfs_sb_info *sbi; sbi 558 fs/hpfs/super.c sbi = kzalloc(sizeof(*sbi), GFP_KERNEL); sbi 559 fs/hpfs/super.c if (!sbi) { sbi 562 fs/hpfs/super.c s->s_fs_info = sbi; sbi 564 fs/hpfs/super.c mutex_init(&sbi->hpfs_mutex); sbi 589 fs/hpfs/super.c sbi->sb_fs_size = -1; sbi 620 fs/hpfs/super.c sbi->sb_root = le32_to_cpu(superblock->root); sbi 621 fs/hpfs/super.c sbi->sb_fs_size = le32_to_cpu(superblock->n_sectors); sbi 622 fs/hpfs/super.c sbi->sb_bitmaps = le32_to_cpu(superblock->bitmaps); sbi 623 fs/hpfs/super.c sbi->sb_dirband_start = le32_to_cpu(superblock->dir_band_start); sbi 624 fs/hpfs/super.c sbi->sb_dirband_size = le32_to_cpu(superblock->n_dir_band); sbi 625 fs/hpfs/super.c sbi->sb_dmap = le32_to_cpu(superblock->dir_band_bitmap); sbi 626 fs/hpfs/super.c sbi->sb_uid = uid; sbi 627 fs/hpfs/super.c sbi->sb_gid = gid; sbi 628 fs/hpfs/super.c sbi->sb_mode = 0777 & ~umask; sbi 629 fs/hpfs/super.c sbi->sb_n_free = -1; sbi 630 fs/hpfs/super.c sbi->sb_n_free_dnodes = -1; sbi 631 fs/hpfs/super.c sbi->sb_lowercase = lowercase; sbi 632 fs/hpfs/super.c sbi->sb_eas = eas; sbi 633 fs/hpfs/super.c sbi->sb_chk = chk; sbi 634 fs/hpfs/super.c sbi->sb_chkdsk = chkdsk; sbi 635 fs/hpfs/super.c sbi->sb_err = errs; sbi 636 fs/hpfs/super.c sbi->sb_timeshift = timeshift; sbi 637 fs/hpfs/super.c sbi->sb_was_error = 0; sbi 638 fs/hpfs/super.c sbi->sb_cp_table = NULL; sbi 639 fs/hpfs/super.c sbi->sb_c_bitmap = -1; sbi 640 fs/hpfs/super.c sbi->sb_max_fwd_alloc = 0xffffff; sbi 642 fs/hpfs/super.c if (sbi->sb_fs_size >= 0x80000000) { sbi 644 fs/hpfs/super.c (unsigned)sbi->sb_fs_size); sbi 652 fs/hpfs/super.c if (!(sbi->sb_bmp_dir = hpfs_load_bitmap_directory(s, le32_to_cpu(superblock->bitmaps)))) sbi 688 fs/hpfs/super.c a = sbi->sb_dirband_size; sbi 689 fs/hpfs/super.c sbi->sb_dirband_size = 0; sbi 696 fs/hpfs/super.c sbi->sb_dirband_size = a; sbi 702 fs/hpfs/super.c if (!(sbi->sb_cp_table = hpfs_load_code_page(s, le32_to_cpu(spareblock->code_page_dir)))) sbi 709 fs/hpfs/super.c root = iget_locked(s, sbi->sb_root); sbi 723 fs/hpfs/super.c root_dno = hpfs_fnode_dno(s, sbi->sb_root); sbi 752 fs/hpfs/super.c free_sbi(sbi); sbi 992 fs/hugetlbfs/inode.c struct hugetlbfs_sb_info *sbi = HUGETLBFS_SB(sb); sbi 994 fs/hugetlbfs/inode.c if (sbi) { sbi 997 fs/hugetlbfs/inode.c if (sbi->spool) sbi 998 fs/hugetlbfs/inode.c hugepage_put_subpool(sbi->spool); sbi 1000 fs/hugetlbfs/inode.c kfree(sbi); sbi 96 fs/isofs/dir.c struct isofs_sb_info *sbi = ISOFS_SB(inode->i_sb); sbi 166 fs/isofs/dir.c if (de->flags[-sbi->s_high_sierra] & 0x80) { sbi 198 fs/isofs/dir.c if ((sbi->s_hide && (de->flags[-sbi->s_high_sierra] & 1)) || sbi 199 fs/isofs/dir.c (!sbi->s_showassoc && sbi 200 fs/isofs/dir.c (de->flags[-sbi->s_high_sierra] & 4))) { sbi 206 fs/isofs/dir.c if (sbi->s_rock) { sbi 215 fs/isofs/dir.c if (sbi->s_joliet_level) { sbi 220 fs/isofs/dir.c if (sbi->s_mapping == 'a') { sbi 224 fs/isofs/dir.c if (sbi->s_mapping == 'n') { sbi 53 fs/isofs/inode.c struct isofs_sb_info *sbi = ISOFS_SB(sb); sbi 56 fs/isofs/inode.c unload_nls(sbi->s_nls_iocharset); sbi 59 fs/isofs/inode.c kfree(sbi); sbi 488 fs/isofs/inode.c struct isofs_sb_info *sbi = ISOFS_SB(root->d_sb); sbi 490 fs/isofs/inode.c if (!sbi->s_rock) seq_puts(m, ",norock"); sbi 491 fs/isofs/inode.c else if (!sbi->s_joliet_level) seq_puts(m, ",nojoliet"); sbi 492 fs/isofs/inode.c if (sbi->s_cruft) seq_puts(m, ",cruft"); sbi 493 fs/isofs/inode.c if (sbi->s_hide) seq_puts(m, ",hide"); sbi 494 fs/isofs/inode.c if (sbi->s_nocompress) seq_puts(m, ",nocompress"); sbi 495 fs/isofs/inode.c if (sbi->s_overriderockperm) seq_puts(m, ",overriderockperm"); sbi 496 fs/isofs/inode.c if (sbi->s_showassoc) seq_puts(m, ",showassoc"); sbi 497 fs/isofs/inode.c if (sbi->s_utf8) seq_puts(m, ",utf8"); sbi 499 fs/isofs/inode.c if (sbi->s_check) seq_printf(m, ",check=%c", sbi->s_check); sbi 500 fs/isofs/inode.c if (sbi->s_mapping) seq_printf(m, ",map=%c", sbi->s_mapping); sbi 501 fs/isofs/inode.c if (sbi->s_session != 255) seq_printf(m, ",session=%u", sbi->s_session - 1); sbi 502 fs/isofs/inode.c if (sbi->s_sbsector != -1) seq_printf(m, ",sbsector=%u", sbi->s_sbsector); sbi 507 fs/isofs/inode.c if (sbi->s_uid_set) sbi 509 fs/isofs/inode.c from_kuid_munged(&init_user_ns, sbi->s_uid)); sbi 510 fs/isofs/inode.c if (sbi->s_gid_set) sbi 512 fs/isofs/inode.c from_kgid_munged(&init_user_ns, sbi->s_gid)); sbi 514 fs/isofs/inode.c if (sbi->s_dmode != ISOFS_INVALID_MODE) sbi 515 fs/isofs/inode.c seq_printf(m, ",dmode=%o", sbi->s_dmode); sbi 516 fs/isofs/inode.c if (sbi->s_fmode != ISOFS_INVALID_MODE) sbi 517 fs/isofs/inode.c seq_printf(m, ",fmode=%o", sbi->s_fmode); sbi 520 fs/isofs/inode.c if (sbi->s_nls_iocharset && sbi 521 fs/isofs/inode.c strcmp(sbi->s_nls_iocharset->charset, CONFIG_NLS_DEFAULT) != 0) sbi 522 fs/isofs/inode.c seq_printf(m, ",iocharset=%s", sbi->s_nls_iocharset->charset); sbi 630 fs/isofs/inode.c struct isofs_sb_info *sbi; sbi 638 fs/isofs/inode.c sbi = kzalloc(sizeof(*sbi), GFP_KERNEL); sbi 639 fs/isofs/inode.c if (!sbi) sbi 641 fs/isofs/inode.c s->s_fs_info = sbi; sbi 663 fs/isofs/inode.c sbi->s_high_sierra = 0; /* default is iso9660 */ sbi 664 fs/isofs/inode.c sbi->s_session = opt.session; sbi 665 fs/isofs/inode.c sbi->s_sbsector = opt.sbsector; sbi 726 fs/isofs/inode.c sbi->s_high_sierra = 1; sbi 762 fs/isofs/inode.c if(sbi->s_high_sierra){ sbi 764 fs/isofs/inode.c sbi->s_nzones = isonum_733(h_pri->volume_space_size); sbi 765 fs/isofs/inode.c sbi->s_log_zone_size = isonum_723(h_pri->logical_block_size); sbi 766 fs/isofs/inode.c sbi->s_max_size = isonum_733(h_pri->volume_space_size); sbi 771 fs/isofs/inode.c sbi->s_nzones = isonum_733(pri->volume_space_size); sbi 772 fs/isofs/inode.c sbi->s_log_zone_size = isonum_723(pri->logical_block_size); sbi 773 fs/isofs/inode.c sbi->s_max_size = isonum_733(pri->volume_space_size); sbi 776 fs/isofs/inode.c sbi->s_ninodes = 0; /* No way to figure this out easily */ sbi 778 fs/isofs/inode.c orig_zonesize = sbi->s_log_zone_size; sbi 790 fs/isofs/inode.c switch (sbi->s_log_zone_size) { sbi 791 fs/isofs/inode.c case 512: sbi->s_log_zone_size = 9; break; sbi 792 fs/isofs/inode.c case 1024: sbi->s_log_zone_size = 10; break; sbi 793 fs/isofs/inode.c case 2048: sbi->s_log_zone_size = 11; break; sbi 816 fs/isofs/inode.c sbi->s_firstdatazone = first_data_zone; sbi 819 fs/isofs/inode.c sbi->s_max_size, 1UL << sbi->s_log_zone_size); sbi 820 fs/isofs/inode.c printk(KERN_DEBUG "ISOFS: First datazone:%ld\n", sbi->s_firstdatazone); sbi 821 fs/isofs/inode.c if(sbi->s_high_sierra) sbi 867 fs/isofs/inode.c sbi->s_nls_iocharset = NULL; sbi 872 fs/isofs/inode.c sbi->s_nls_iocharset = load_nls(p); sbi 873 fs/isofs/inode.c if (! sbi->s_nls_iocharset) { sbi 877 fs/isofs/inode.c sbi->s_nls_iocharset = load_nls_default(); sbi 883 fs/isofs/inode.c sbi->s_mapping = opt.map; sbi 884 fs/isofs/inode.c sbi->s_rock = (opt.rock ? 2 : 0); sbi 885 fs/isofs/inode.c sbi->s_rock_offset = -1; /* initial offset, will guess until SP is found*/ sbi 886 fs/isofs/inode.c sbi->s_cruft = opt.cruft; sbi 887 fs/isofs/inode.c sbi->s_hide = opt.hide; sbi 888 fs/isofs/inode.c sbi->s_showassoc = opt.showassoc; sbi 889 fs/isofs/inode.c sbi->s_uid = opt.uid; sbi 890 fs/isofs/inode.c sbi->s_gid = opt.gid; sbi 891 fs/isofs/inode.c sbi->s_uid_set = opt.uid_set; sbi 892 fs/isofs/inode.c sbi->s_gid_set = opt.gid_set; sbi 893 fs/isofs/inode.c sbi->s_utf8 = opt.utf8; sbi 894 fs/isofs/inode.c sbi->s_nocompress = opt.nocompress; sbi 895 fs/isofs/inode.c sbi->s_overriderockperm = opt.overriderockperm; sbi 902 fs/isofs/inode.c sbi->s_fmode = opt.fmode & 0777; sbi 904 fs/isofs/inode.c sbi->s_fmode = ISOFS_INVALID_MODE; sbi 906 fs/isofs/inode.c sbi->s_dmode = opt.dmode & 0777; sbi 908 fs/isofs/inode.c sbi->s_dmode = ISOFS_INVALID_MODE; sbi 915 fs/isofs/inode.c inode = isofs_iget(s, sbi->s_firstdatazone, 0); sbi 923 fs/isofs/inode.c if (sbi->s_rock == 1 && joliet_level && sbi 924 fs/isofs/inode.c rootdir_empty(s, sbi->s_firstdatazone)) { sbi 928 fs/isofs/inode.c sbi->s_rock = 0; sbi 939 fs/isofs/inode.c if (sbi->s_rock == 1) { sbi 942 fs/isofs/inode.c sbi->s_rock = 0; sbi 943 fs/isofs/inode.c if (sbi->s_firstdatazone != first_data_zone) { sbi 944 fs/isofs/inode.c sbi->s_firstdatazone = first_data_zone; sbi 948 fs/isofs/inode.c inode = isofs_iget(s, sbi->s_firstdatazone, 0); sbi 961 fs/isofs/inode.c sbi->s_joliet_level = joliet_level; sbi 976 fs/isofs/inode.c sbi->s_check = opt.check; sbi 1004 fs/isofs/inode.c unload_nls(sbi->s_nls_iocharset); sbi 1013 fs/isofs/inode.c sbi->s_log_zone_size); sbi 1028 fs/isofs/inode.c kfree(sbi); sbi 1311 fs/isofs/inode.c struct isofs_sb_info *sbi = ISOFS_SB(sb); sbi 1314 fs/isofs/inode.c int high_sierra = sbi->s_high_sierra; sbi 1358 fs/isofs/inode.c if (sbi->s_dmode != ISOFS_INVALID_MODE) sbi 1359 fs/isofs/inode.c inode->i_mode = S_IFDIR | sbi->s_dmode; sbi 1370 fs/isofs/inode.c if (sbi->s_fmode != ISOFS_INVALID_MODE) { sbi 1371 fs/isofs/inode.c inode->i_mode = S_IFREG | sbi->s_fmode; sbi 1382 fs/isofs/inode.c inode->i_uid = sbi->s_uid; sbi 1383 fs/isofs/inode.c inode->i_gid = sbi->s_gid; sbi 1408 fs/isofs/inode.c if (sbi->s_cruft) sbi 1454 fs/isofs/inode.c if (sbi->s_uid_set) sbi 1455 fs/isofs/inode.c inode->i_uid = sbi->s_uid; sbi 1456 fs/isofs/inode.c if (sbi->s_gid_set) sbi 1457 fs/isofs/inode.c inode->i_gid = sbi->s_gid; sbi 1460 fs/isofs/inode.c if (S_ISDIR(inode->i_mode) && sbi->s_overriderockperm && sbi 1461 fs/isofs/inode.c sbi->s_dmode != ISOFS_INVALID_MODE) sbi 1462 fs/isofs/inode.c inode->i_mode = S_IFDIR | sbi->s_dmode; sbi 1463 fs/isofs/inode.c if (S_ISREG(inode->i_mode) && sbi->s_overriderockperm && sbi 1464 fs/isofs/inode.c sbi->s_fmode != ISOFS_INVALID_MODE) sbi 1465 fs/isofs/inode.c inode->i_mode = S_IFREG | sbi->s_fmode; sbi 44 fs/isofs/namei.c struct isofs_sb_info *sbi = ISOFS_SB(dir->i_sb); sbi 108 fs/isofs/namei.c if (sbi->s_rock && sbi 113 fs/isofs/namei.c } else if (sbi->s_joliet_level) { sbi 117 fs/isofs/namei.c } else if (sbi->s_mapping == 'a') { sbi 120 fs/isofs/namei.c } else if (sbi->s_mapping == 'n') { sbi 131 fs/isofs/namei.c (!sbi->s_hide || sbi 132 fs/isofs/namei.c (!(de->flags[-sbi->s_high_sierra] & 1))) && sbi 133 fs/isofs/namei.c (sbi->s_showassoc || sbi 134 fs/isofs/namei.c (!(de->flags[-sbi->s_high_sierra] & 4)))) { sbi 697 fs/isofs/rock.c struct isofs_sb_info *sbi = ISOFS_SB(inode->i_sb); sbi 710 fs/isofs/rock.c if (!sbi->s_rock) sbi 1015 fs/jfs/jfs_dmap.c struct jfs_sb_info *sbi = JFS_SBI(ip->i_sb); sbi 1021 fs/jfs/jfs_dmap.c struct inode *ipbmap = sbi->ipbmap; sbi 1027 fs/jfs/jfs_dmap.c if (((rel_block = blkno & (sbi->nbperpage - 1))) && sbi 1028 fs/jfs/jfs_dmap.c (rel_block + nblocks + addnblocks > sbi->nbperpage)) sbi 1042 fs/jfs/jfs_dmap.c bmp = sbi->bmap; sbi 3373 fs/jfs/jfs_dmap.c struct jfs_sb_info *sbi = JFS_SBI(ipbmap->i_sb); sbi 3374 fs/jfs/jfs_dmap.c int nbperpage = sbi->nbperpage; sbi 3382 fs/jfs/jfs_dmap.c struct bmap *bmp = sbi->bmap; sbi 3465 fs/jfs/jfs_dmap.c p = BLKTOL1(blkno, sbi->l2nbperpage); /* L1 page */ sbi 3482 fs/jfs/jfs_dmap.c p = BLKTOL0(blkno, sbi->l2nbperpage); sbi 3516 fs/jfs/jfs_dmap.c sbi->l2nbperpage); sbi 121 fs/jfs/jfs_dmap.h #define BLKTOAG(b,sbi) ((b) >> ((sbi)->bmap->db_agl2size)) sbi 324 fs/jfs/jfs_dtree.c struct jfs_sb_info *sbi = JFS_SBI(sb); sbi 372 fs/jfs/jfs_dtree.c if (dquot_alloc_block(ip, sbi->nbperpage)) sbi 374 fs/jfs/jfs_dtree.c if (dbAlloc(ip, 0, sbi->nbperpage, &xaddr)) { sbi 375 fs/jfs/jfs_dtree.c dquot_free_block(ip, sbi->nbperpage); sbi 393 fs/jfs/jfs_dtree.c if (xtInsert(tid, ip, 0, 0, sbi->nbperpage, &xaddr, 0)) { sbi 398 fs/jfs/jfs_dtree.c dbFree(ip, xaddr, sbi->nbperpage); sbi 399 fs/jfs/jfs_dtree.c dquot_free_block(ip, sbi->nbperpage); sbi 434 fs/jfs/jfs_dtree.c blkno = ((offset + 1) >> L2PSIZE) << sbi->l2nbperpage; sbi 440 fs/jfs/jfs_dtree.c if (xtInsert(tid, ip, 0, blkno, sbi->nbperpage, &xaddr, 0)) { sbi 921 fs/jfs/jfs_dtree.c struct jfs_sb_info *sbi = JFS_SBI(ip->i_sb); sbi 969 fs/jfs/jfs_dtree.c n = sbi->bsize >> L2DTSLOTSIZE; sbi 995 fs/jfs/jfs_dtree.c ip->i_size = xlen << sbi->l2bsize; sbi 1008 fs/jfs/jfs_dtree.c xsize = xlen << sbi->l2bsize; sbi 1024 fs/jfs/jfs_dtree.c if ((rc = dbReAlloc(sbi->ipbmap, xaddr, (s64) xlen, sbi 1047 fs/jfs/jfs_dtree.c ip->i_size = lengthPXD(pxd) << sbi->l2bsize; sbi 1068 fs/jfs/jfs_dtree.c xlen = sbi->nbperpage; sbi 1177 fs/jfs/jfs_dtree.c sbi->mntflag); sbi 1189 fs/jfs/jfs_dtree.c dtGetKey(rp, 0, &key, sbi->mntflag); sbi 1192 fs/jfs/jfs_dtree.c if ((sbi->mntflag & JFS_OS2) == JFS_OS2) sbi 1200 fs/jfs/jfs_dtree.c dtGetKey(rp, 0, &key, sbi->mntflag); sbi 75 fs/jfs/jfs_extent.c struct jfs_sb_info *sbi = JFS_SBI(ip->i_sb); sbi 91 fs/jfs/jfs_extent.c xoff = pno << sbi->l2nbperpage; sbi 499 fs/jfs/jfs_extent.c struct jfs_sb_info *sbi = JFS_SBI(ip->i_sb); sbi 501 fs/jfs/jfs_extent.c int rc, nbperpage = sbi->nbperpage; sbi 502 fs/jfs/jfs_extent.c struct bmap *bmp = sbi->bmap; sbi 537 fs/jfs/jfs_extent.c ag = BLKTOAG(daddr, sbi); sbi 293 fs/jfs/jfs_imap.c struct jfs_sb_info *sbi = JFS_SBI(ip->i_sb); sbi 308 fs/jfs/jfs_imap.c ipimap = sbi->ipimap; sbi 339 fs/jfs/jfs_imap.c blkno = INOPBLK(&iagp->inoext[extno], ino, sbi->l2nbperpage); sbi 347 fs/jfs/jfs_imap.c pageno = blkno >> sbi->l2nbperpage; sbi 349 fs/jfs/jfs_imap.c if ((block_offset = ((u32) blkno & (sbi->nbperpage - 1)))) { sbi 354 fs/jfs/jfs_imap.c (sbi->nbperpage - block_offset) << sbi->l2niperblk; sbi 357 fs/jfs/jfs_imap.c rel_inode += block_offset << sbi->l2niperblk; sbi 365 fs/jfs/jfs_imap.c mp = read_metapage(ipimap, pageno << sbi->l2nbperpage, PSIZE, 1); sbi 418 fs/jfs/jfs_imap.c struct jfs_sb_info *sbi = JFS_SBI(sb); sbi 431 fs/jfs/jfs_imap.c address = addressPXD(&sbi->ait2) >> sbi->l2nbperpage; sbi 432 fs/jfs/jfs_imap.c JFS_IP(ip)->ipimap = sbi->ipaimap2; sbi 435 fs/jfs/jfs_imap.c JFS_IP(ip)->ipimap = sbi->ipaimap; sbi 445 fs/jfs/jfs_imap.c mp = read_metapage(ip, address << sbi->l2nbperpage, PSIZE, 1); sbi 473 fs/jfs/jfs_imap.c if ((inum == FILESYSTEM_I) && (JFS_IP(ip)->ipimap == sbi->ipaimap)) { sbi 474 fs/jfs/jfs_imap.c sbi->gengen = le32_to_cpu(dp->di_gengen); sbi 475 fs/jfs/jfs_imap.c sbi->inostamp = le32_to_cpu(dp->di_inostamp); sbi 500 fs/jfs/jfs_imap.c struct jfs_sb_info *sbi = JFS_SBI(ip->i_sb); sbi 507 fs/jfs/jfs_imap.c address = addressPXD(&sbi->ait2) >> sbi->l2nbperpage; sbi 516 fs/jfs/jfs_imap.c mp = read_metapage(ip, address << sbi->l2nbperpage, PSIZE, 1); sbi 531 fs/jfs/jfs_imap.c dp->di_gengen = cpu_to_le32(sbi->gengen); sbi 581 fs/jfs/jfs_imap.c struct jfs_sb_info *sbi = JFS_SBI(ip->i_sb); sbi 616 fs/jfs/jfs_imap.c blkno = INOPBLK(&(jfs_ip->ixpxd), ino, sbi->l2nbperpage); sbi 619 fs/jfs/jfs_imap.c pageno = blkno >> sbi->l2nbperpage; sbi 621 fs/jfs/jfs_imap.c if ((block_offset = ((u32) blkno & (sbi->nbperpage - 1)))) { sbi 626 fs/jfs/jfs_imap.c (sbi->nbperpage - block_offset) << sbi->l2niperblk; sbi 629 fs/jfs/jfs_imap.c rel_inode += block_offset << sbi->l2niperblk; sbi 637 fs/jfs/jfs_imap.c mp = read_metapage(ipimap, pageno << sbi->l2nbperpage, PSIZE, 1); sbi 2161 fs/jfs/jfs_imap.c struct jfs_sb_info *sbi; sbi 2173 fs/jfs/jfs_imap.c sbi = JFS_SBI(ipimap->i_sb); sbi 2179 fs/jfs/jfs_imap.c agno = BLKTOAG(le64_to_cpu(iagp->agstart), sbi); sbi 2248 fs/jfs/jfs_imap.c hint = ((s64) agno << sbi->bmap->db_agl2size) - 1; sbi 2264 fs/jfs/jfs_imap.c for (i = 0; i < imap->im_nbperiext; i += sbi->nbperpage) { sbi 2278 fs/jfs/jfs_imap.c dp->di_inostamp = cpu_to_le32(sbi->inostamp); sbi 2438 fs/jfs/jfs_imap.c struct jfs_sb_info *sbi; sbi 2449 fs/jfs/jfs_imap.c sbi = JFS_SBI(sb); sbi 2462 fs/jfs/jfs_imap.c blkno = IAGTOLBLK(iagno, sbi->l2nbperpage); sbi 2498 fs/jfs/jfs_imap.c blkno = IAGTOLBLK(iagno, sbi->l2nbperpage); sbi 2501 fs/jfs/jfs_imap.c xlen = sbi->nbperpage; sbi 3029 fs/jfs/jfs_imap.c struct jfs_sb_info *sbi = JFS_SBI(ip->i_sb); sbi 3036 fs/jfs/jfs_imap.c if (sbi->umask != -1) { sbi 3037 fs/jfs/jfs_imap.c ip->i_mode = (ip->i_mode & ~0777) | (0777 & ~sbi->umask); sbi 3051 fs/jfs/jfs_imap.c if (!uid_valid(sbi->uid)) sbi 3054 fs/jfs/jfs_imap.c ip->i_uid = sbi->uid; sbi 3058 fs/jfs/jfs_imap.c if (!gid_valid(sbi->gid)) sbi 3061 fs/jfs/jfs_imap.c ip->i_gid = sbi->gid; sbi 3113 fs/jfs/jfs_imap.c struct jfs_sb_info *sbi = JFS_SBI(ip->i_sb); sbi 3116 fs/jfs/jfs_imap.c dip->di_inostamp = cpu_to_le32(sbi->inostamp); sbi 3122 fs/jfs/jfs_imap.c if (!uid_valid(sbi->uid)) sbi 3127 fs/jfs/jfs_imap.c if (!gid_valid(sbi->gid)) sbi 3136 fs/jfs/jfs_imap.c if (sbi->umask == -1) sbi 167 fs/jfs/jfs_logmgr.c static int lmLogFileSystem(struct jfs_log * log, struct jfs_sb_info *sbi, sbi 204 fs/jfs/jfs_logmgr.c struct jfs_sb_info *sbi; sbi 206 fs/jfs/jfs_logmgr.c list_for_each_entry(sbi, &log->sb_list, log_list) { sbi 207 fs/jfs/jfs_logmgr.c writer(sbi->ipbmap->i_mapping); sbi 208 fs/jfs/jfs_logmgr.c writer(sbi->ipimap->i_mapping); sbi 209 fs/jfs/jfs_logmgr.c writer(sbi->direct_inode->i_mapping); sbi 1071 fs/jfs/jfs_logmgr.c struct jfs_sb_info *sbi = JFS_SBI(sb); sbi 1073 fs/jfs/jfs_logmgr.c if (sbi->flag & JFS_NOINTEGRITY) sbi 1076 fs/jfs/jfs_logmgr.c if (sbi->mntflag & JFS_INLINELOG) sbi 1081 fs/jfs/jfs_logmgr.c if (log->bdev->bd_dev == sbi->logdev) { sbi 1082 fs/jfs/jfs_logmgr.c if (!uuid_equal(&log->uuid, &sbi->loguuid)) { sbi 1090 fs/jfs/jfs_logmgr.c if ((rc = lmLogFileSystem(log, sbi, 1))) { sbi 1111 fs/jfs/jfs_logmgr.c bdev = blkdev_get_by_dev(sbi->logdev, FMODE_READ|FMODE_WRITE|FMODE_EXCL, sbi 1119 fs/jfs/jfs_logmgr.c uuid_copy(&log->uuid, &sbi->loguuid); sbi 1132 fs/jfs/jfs_logmgr.c if ((rc = lmLogFileSystem(log, sbi, 1))) sbi 1137 fs/jfs/jfs_logmgr.c list_add(&sbi->log_list, &log->sb_list); sbi 1138 fs/jfs/jfs_logmgr.c sbi->log = log; sbi 1444 fs/jfs/jfs_logmgr.c struct jfs_sb_info *sbi = JFS_SBI(sb); sbi 1445 fs/jfs/jfs_logmgr.c struct jfs_log *log = sbi->log; sbi 1453 fs/jfs/jfs_logmgr.c list_del(&sbi->log_list); sbi 1455 fs/jfs/jfs_logmgr.c sbi->log = NULL; sbi 1473 fs/jfs/jfs_logmgr.c lmLogFileSystem(log, sbi, 0); sbi 1714 fs/jfs/jfs_logmgr.c static int lmLogFileSystem(struct jfs_log * log, struct jfs_sb_info *sbi, sbi 1721 fs/jfs/jfs_logmgr.c uuid_t *uuid = &sbi->uuid; sbi 1734 fs/jfs/jfs_logmgr.c sbi->aggregate = i; sbi 2367 fs/jfs/jfs_logmgr.c struct jfs_sb_info *sbi; sbi 2378 fs/jfs/jfs_logmgr.c sbi = list_entry(log->sb_list.next, struct jfs_sb_info, log_list); sbi 2383 fs/jfs/jfs_logmgr.c npages = logSize >> sbi->l2nbperpage; sbi 2402 fs/jfs/jfs_logmgr.c logsuper->flag = cpu_to_le32(sbi->mntflag); /* ? */ sbi 2404 fs/jfs/jfs_logmgr.c logsuper->bsize = cpu_to_le32(sbi->bsize); sbi 2405 fs/jfs/jfs_logmgr.c logsuper->l2bsize = cpu_to_le32(sbi->l2bsize); sbi 2409 fs/jfs/jfs_logmgr.c bp->l_blkno = logAddress + sbi->nbperpage; sbi 2451 fs/jfs/jfs_logmgr.c bp->l_blkno += sbi->nbperpage; sbi 2464 fs/jfs/jfs_logmgr.c bp->l_blkno += sbi->nbperpage; sbi 71 fs/jfs/jfs_mount.c struct jfs_sb_info *sbi = JFS_SBI(sb); sbi 91 fs/jfs/jfs_mount.c sbi->ipaimap = ipaimap; sbi 114 fs/jfs/jfs_mount.c sbi->ipbmap = ipbmap; sbi 135 fs/jfs/jfs_mount.c if ((sbi->mntflag & JFS_BAD_SAIT) == 0) { sbi 142 fs/jfs/jfs_mount.c sbi->ipaimap2 = ipaimap2; sbi 156 fs/jfs/jfs_mount.c sbi->ipaimap2 = NULL; sbi 174 fs/jfs/jfs_mount.c sbi->ipimap = ipimap; sbi 228 fs/jfs/jfs_mount.c struct jfs_sb_info *sbi = JFS_SBI(sb); sbi 237 fs/jfs/jfs_mount.c if (chkSuper(sb) || (sbi->state != FM_CLEAN)) sbi 240 fs/jfs/jfs_mount.c truncate_inode_pages(sbi->ipimap->i_mapping, 0); sbi 241 fs/jfs/jfs_mount.c truncate_inode_pages(sbi->ipbmap->i_mapping, 0); sbi 242 fs/jfs/jfs_mount.c diUnmount(sbi->ipimap, 1); sbi 243 fs/jfs/jfs_mount.c if ((rc = diMount(sbi->ipimap))) { sbi 248 fs/jfs/jfs_mount.c dbUnmount(sbi->ipbmap, 1); sbi 249 fs/jfs/jfs_mount.c if ((rc = dbMount(sbi->ipbmap))) { sbi 291 fs/jfs/jfs_mount.c struct jfs_sb_info *sbi = JFS_SBI(sb); sbi 358 fs/jfs/jfs_mount.c sbi->state = le32_to_cpu(j_sb->s_state); sbi 359 fs/jfs/jfs_mount.c sbi->mntflag = le32_to_cpu(j_sb->s_flag); sbi 365 fs/jfs/jfs_mount.c sbi->bsize = bsize; sbi 366 fs/jfs/jfs_mount.c sbi->l2bsize = le16_to_cpu(j_sb->s_l2bsize); sbi 372 fs/jfs/jfs_mount.c sbi->nbperpage = PSIZE >> sbi->l2bsize; sbi 373 fs/jfs/jfs_mount.c sbi->l2nbperpage = L2PSIZE - sbi->l2bsize; sbi 374 fs/jfs/jfs_mount.c sbi->l2niperblk = sbi->l2bsize - L2DISIZE; sbi 375 fs/jfs/jfs_mount.c if (sbi->mntflag & JFS_INLINELOG) sbi 376 fs/jfs/jfs_mount.c sbi->logpxd = j_sb->s_logpxd; sbi 378 fs/jfs/jfs_mount.c sbi->logdev = new_decode_dev(le32_to_cpu(j_sb->s_logdev)); sbi 379 fs/jfs/jfs_mount.c uuid_copy(&sbi->uuid, &j_sb->s_uuid); sbi 380 fs/jfs/jfs_mount.c uuid_copy(&sbi->loguuid, &j_sb->s_loguuid); sbi 382 fs/jfs/jfs_mount.c sbi->fsckpxd = j_sb->s_fsckpxd; sbi 383 fs/jfs/jfs_mount.c sbi->ait2 = j_sb->s_ait2; sbi 399 fs/jfs/jfs_mount.c struct jfs_sb_info *sbi = JFS_SBI(sb); sbi 403 fs/jfs/jfs_mount.c if (sbi->flag & JFS_NOINTEGRITY) { sbi 405 fs/jfs/jfs_mount.c sbi->p_state = state; sbi 408 fs/jfs/jfs_mount.c sbi->p_state = sbi->state; sbi 411 fs/jfs/jfs_mount.c state = sbi->p_state; sbi 414 fs/jfs/jfs_mount.c } else if (sbi->state == FM_DIRTY) sbi 423 fs/jfs/jfs_mount.c sbi->state = state; sbi 427 fs/jfs/jfs_mount.c j_sb->s_logdev = cpu_to_le32(new_encode_dev(sbi->log->bdev->bd_dev)); sbi 428 fs/jfs/jfs_mount.c j_sb->s_logserial = cpu_to_le32(sbi->log->serial); sbi 2735 fs/jfs/jfs_txnmgr.c struct jfs_sb_info *sbi; sbi 2745 fs/jfs/jfs_txnmgr.c sbi = JFS_SBI(tblk->sb); sbi 2752 fs/jfs/jfs_txnmgr.c if (sbi->commit_state & IN_LAZYCOMMIT) sbi 2755 fs/jfs/jfs_txnmgr.c sbi->commit_state |= IN_LAZYCOMMIT; sbi 2767 fs/jfs/jfs_txnmgr.c sbi->commit_state &= ~IN_LAZYCOMMIT; sbi 39 fs/jfs/jfs_umount.c struct jfs_sb_info *sbi = JFS_SBI(sb); sbi 40 fs/jfs/jfs_umount.c struct inode *ipbmap = sbi->ipbmap; sbi 41 fs/jfs/jfs_umount.c struct inode *ipimap = sbi->ipimap; sbi 42 fs/jfs/jfs_umount.c struct inode *ipaimap = sbi->ipaimap; sbi 43 fs/jfs/jfs_umount.c struct inode *ipaimap2 = sbi->ipaimap2; sbi 54 fs/jfs/jfs_umount.c if ((log = sbi->log)) sbi 66 fs/jfs/jfs_umount.c sbi->ipimap = NULL; sbi 71 fs/jfs/jfs_umount.c ipaimap2 = sbi->ipaimap2; sbi 75 fs/jfs/jfs_umount.c sbi->ipaimap2 = NULL; sbi 81 fs/jfs/jfs_umount.c ipaimap = sbi->ipaimap; sbi 84 fs/jfs/jfs_umount.c sbi->ipaimap = NULL; sbi 92 fs/jfs/jfs_umount.c sbi->ipimap = NULL; sbi 98 fs/jfs/jfs_umount.c filemap_write_and_wait(sbi->direct_inode->i_mapping); sbi 125 fs/jfs/jfs_umount.c struct jfs_sb_info *sbi = JFS_SBI(sb); sbi 126 fs/jfs/jfs_umount.c struct jfs_log *log = sbi->log; sbi 141 fs/jfs/jfs_umount.c dbSync(sbi->ipbmap); sbi 142 fs/jfs/jfs_umount.c diSync(sbi->ipimap); sbi 150 fs/jfs/jfs_umount.c filemap_write_and_wait(sbi->direct_inode->i_mapping); sbi 52 fs/jfs/resize.c struct jfs_sb_info *sbi = JFS_SBI(sb); sbi 53 fs/jfs/resize.c struct inode *ipbmap = sbi->ipbmap; sbi 55 fs/jfs/resize.c struct inode *ipimap = sbi->ipimap; sbi 56 fs/jfs/resize.c struct jfs_log *log = sbi->log; sbi 57 fs/jfs/resize.c struct bmap *bmp = sbi->bmap; sbi 76 fs/jfs/resize.c if (sbi->mntflag & JFS_INLINELOG) sbi 77 fs/jfs/resize.c oldLVSize = addressPXD(&sbi->logpxd) + lengthPXD(&sbi->logpxd); sbi 79 fs/jfs/resize.c oldLVSize = addressPXD(&sbi->fsckpxd) + sbi 80 fs/jfs/resize.c lengthPXD(&sbi->fsckpxd); sbi 125 fs/jfs/resize.c if ((sbi->mntflag & JFS_INLINELOG)) { sbi 132 fs/jfs/resize.c t32 = (1 << (20 - sbi->l2bsize)) - 1; sbi 135 fs/jfs/resize.c min(newLogSize, MEGABYTE32 >> sbi->l2bsize); sbi 143 fs/jfs/resize.c newLogSize = (newLogSize * MEGABYTE) >> sbi->l2bsize; sbi 164 fs/jfs/resize.c newFSCKSize = t32 << sbi->l2nbperpage; sbi 183 fs/jfs/resize.c if ((sbi->mntflag & JFS_INLINELOG) && (newLogAddress > oldLVSize)) { sbi 201 fs/jfs/resize.c sbi->direct_inode->i_size = i_size_read(sb->s_bdev->bd_inode); sbi 203 fs/jfs/resize.c if (sbi->mntflag & JFS_INLINELOG) { sbi 380 fs/jfs/resize.c xoff = newPage << sbi->l2nbperpage; sbi 381 fs/jfs/resize.c xlen = (newNpages - nPages) << sbi->l2nbperpage; sbi 382 fs/jfs/resize.c xlen = min(xlen, (int) nblocks) & ~(sbi->nbperpage - 1); sbi 392 fs/jfs/resize.c ipbmap->i_size += xlen << sbi->l2bsize; sbi 393 fs/jfs/resize.c inode_add_bytes(ipbmap, xlen << sbi->l2bsize); sbi 493 fs/jfs/resize.c if (sbi->mntflag & JFS_INLINELOG) { sbi 64 fs/jfs/super.c struct jfs_sb_info *sbi = JFS_SBI(sb); sbi 71 fs/jfs/super.c if (sbi->flag & JFS_ERR_PANIC) sbi 74 fs/jfs/super.c else if (sbi->flag & JFS_ERR_REMOUNT_RO) { sbi 121 fs/jfs/super.c struct jfs_sb_info *sbi = JFS_SBI(dentry->d_sb); sbi 123 fs/jfs/super.c struct inomap *imap = JFS_IP(sbi->ipimap)->i_imap; sbi 127 fs/jfs/super.c buf->f_bsize = sbi->bsize; sbi 128 fs/jfs/super.c buf->f_blocks = sbi->bmap->db_mapsize; sbi 129 fs/jfs/super.c buf->f_bfree = sbi->bmap->db_nfree; sbi 130 fs/jfs/super.c buf->f_bavail = sbi->bmap->db_nfree; sbi 141 fs/jfs/super.c ((sbi->bmap->db_nfree >> imap->im_l2nbperiext) sbi 146 fs/jfs/super.c buf->f_fsid.val[0] = crc32_le(0, (char *)&sbi->uuid, sbi 147 fs/jfs/super.c sizeof(sbi->uuid)/2); sbi 149 fs/jfs/super.c (char *)&sbi->uuid + sizeof(sbi->uuid)/2, sbi 150 fs/jfs/super.c sizeof(sbi->uuid)/2); sbi 187 fs/jfs/super.c struct jfs_sb_info *sbi = JFS_SBI(sb); sbi 198 fs/jfs/super.c unload_nls(sbi->nls_tab); sbi 200 fs/jfs/super.c truncate_inode_pages(sbi->direct_inode->i_mapping, 0); sbi 201 fs/jfs/super.c iput(sbi->direct_inode); sbi 203 fs/jfs/super.c kfree(sbi); sbi 238 fs/jfs/super.c struct jfs_sb_info *sbi = JFS_SBI(sb); sbi 341 fs/jfs/super.c sbi->uid = make_kuid(current_user_ns(), val); sbi 342 fs/jfs/super.c if (!uid_valid(sbi->uid)) sbi 355 fs/jfs/super.c sbi->gid = make_kgid(current_user_ns(), val); sbi 356 fs/jfs/super.c if (!gid_valid(sbi->gid)) sbi 364 fs/jfs/super.c int rc = kstrtouint(umask, 8, &sbi->umask); sbi 368 fs/jfs/super.c if (sbi->umask & ~0777) { sbi 382 fs/jfs/super.c sbi->minblks_trim = 64; sbi 402 fs/jfs/super.c &sbi->minblks_trim); sbi 419 fs/jfs/super.c unload_nls(sbi->nls_tab); sbi 420 fs/jfs/super.c sbi->nls_tab = nls_map; sbi 492 fs/jfs/super.c struct jfs_sb_info *sbi; sbi 500 fs/jfs/super.c sbi = kzalloc(sizeof(struct jfs_sb_info), GFP_KERNEL); sbi 501 fs/jfs/super.c if (!sbi) sbi 504 fs/jfs/super.c sb->s_fs_info = sbi; sbi 508 fs/jfs/super.c sbi->sb = sb; sbi 509 fs/jfs/super.c sbi->uid = INVALID_UID; sbi 510 fs/jfs/super.c sbi->gid = INVALID_GID; sbi 511 fs/jfs/super.c sbi->umask = -1; sbi 518 fs/jfs/super.c sbi->flag = flag; sbi 560 fs/jfs/super.c sbi->direct_inode = inode; sbi 569 fs/jfs/super.c sbi->log = NULL; sbi 583 fs/jfs/super.c if (sbi->mntflag & JFS_OS2) sbi 610 fs/jfs/super.c filemap_write_and_wait(sbi->direct_inode->i_mapping); sbi 611 fs/jfs/super.c truncate_inode_pages(sbi->direct_inode->i_mapping, 0); sbi 612 fs/jfs/super.c make_bad_inode(sbi->direct_inode); sbi 613 fs/jfs/super.c iput(sbi->direct_inode); sbi 614 fs/jfs/super.c sbi->direct_inode = NULL; sbi 616 fs/jfs/super.c unload_nls(sbi->nls_tab); sbi 618 fs/jfs/super.c kfree(sbi); sbi 624 fs/jfs/super.c struct jfs_sb_info *sbi = JFS_SBI(sb); sbi 625 fs/jfs/super.c struct jfs_log *log = sbi->log; sbi 654 fs/jfs/super.c struct jfs_sb_info *sbi = JFS_SBI(sb); sbi 655 fs/jfs/super.c struct jfs_log *log = sbi->log; sbi 699 fs/jfs/super.c struct jfs_sb_info *sbi = JFS_SBI(root->d_sb); sbi 701 fs/jfs/super.c if (uid_valid(sbi->uid)) sbi 702 fs/jfs/super.c seq_printf(seq, ",uid=%d", from_kuid(&init_user_ns, sbi->uid)); sbi 703 fs/jfs/super.c if (gid_valid(sbi->gid)) sbi 704 fs/jfs/super.c seq_printf(seq, ",gid=%d", from_kgid(&init_user_ns, sbi->gid)); sbi 705 fs/jfs/super.c if (sbi->umask != -1) sbi 706 fs/jfs/super.c seq_printf(seq, ",umask=%03o", sbi->umask); sbi 707 fs/jfs/super.c if (sbi->flag & JFS_NOINTEGRITY) sbi 709 fs/jfs/super.c if (sbi->flag & JFS_DISCARD) sbi 710 fs/jfs/super.c seq_printf(seq, ",discard=%u", sbi->minblks_trim); sbi 711 fs/jfs/super.c if (sbi->nls_tab) sbi 712 fs/jfs/super.c seq_printf(seq, ",iocharset=%s", sbi->nls_tab->charset); sbi 713 fs/jfs/super.c if (sbi->flag & JFS_ERR_CONTINUE) sbi 715 fs/jfs/super.c if (sbi->flag & JFS_ERR_PANIC) sbi 719 fs/jfs/super.c if (sbi->flag & JFS_USRQUOTA) sbi 722 fs/jfs/super.c if (sbi->flag & JFS_GRPQUOTA) sbi 206 fs/jfs/xattr.c struct jfs_sb_info *sbi = JFS_SBI(sb); sbi 246 fs/jfs/xattr.c for (i = 0; i < nblocks; i += sbi->nbperpage) { sbi 355 fs/jfs/xattr.c struct jfs_sb_info *sbi = JFS_SBI(sb); sbi 378 fs/jfs/xattr.c nblocks = lengthDXD(&ji->ea) << sbi->l2nbperpage; sbi 379 fs/jfs/xattr.c blkno = addressDXD(&ji->ea) << sbi->l2nbperpage; sbi 386 fs/jfs/xattr.c for (i = 0; i < nblocks; i += sbi->nbperpage) { sbi 45 fs/minix/bitmap.c struct minix_sb_info *sbi = minix_sb(sb); sbi 50 fs/minix/bitmap.c if (block < sbi->s_firstdatazone || block >= sbi->s_nzones) { sbi 54 fs/minix/bitmap.c zone = block - sbi->s_firstdatazone + 1; sbi 57 fs/minix/bitmap.c if (zone >= sbi->s_zmap_blocks) { sbi 61 fs/minix/bitmap.c bh = sbi->s_zmap[zone]; sbi 73 fs/minix/bitmap.c struct minix_sb_info *sbi = minix_sb(inode->i_sb); sbi 77 fs/minix/bitmap.c for (i = 0; i < sbi->s_zmap_blocks; i++) { sbi 78 fs/minix/bitmap.c struct buffer_head *bh = sbi->s_zmap[i]; sbi 87 fs/minix/bitmap.c j += i * bits_per_zone + sbi->s_firstdatazone-1; sbi 88 fs/minix/bitmap.c if (j < sbi->s_firstdatazone || j >= sbi->s_nzones) sbi 99 fs/minix/bitmap.c struct minix_sb_info *sbi = minix_sb(sb); sbi 100 fs/minix/bitmap.c u32 bits = sbi->s_nzones - sbi->s_firstdatazone + 1; sbi 102 fs/minix/bitmap.c return (count_free(sbi->s_zmap, sb->s_blocksize, bits) sbi 103 fs/minix/bitmap.c << sbi->s_log_zone_size); sbi 110 fs/minix/bitmap.c struct minix_sb_info *sbi = minix_sb(sb); sbi 113 fs/minix/bitmap.c if (!ino || ino > sbi->s_ninodes) { sbi 119 fs/minix/bitmap.c block = 2 + sbi->s_imap_blocks + sbi->s_zmap_blocks + sbi 134 fs/minix/bitmap.c struct minix_sb_info *sbi = minix_sb(sb); sbi 139 fs/minix/bitmap.c if (!ino || ino > sbi->s_ninodes) { sbi 145 fs/minix/bitmap.c block = 2 + sbi->s_imap_blocks + sbi->s_zmap_blocks + sbi 186 fs/minix/bitmap.c struct minix_sb_info *sbi = minix_sb(inode->i_sb); sbi 192 fs/minix/bitmap.c if (ino < 1 || ino > sbi->s_ninodes) { sbi 198 fs/minix/bitmap.c if (ino >= sbi->s_imap_blocks) { sbi 205 fs/minix/bitmap.c bh = sbi->s_imap[ino]; sbi 216 fs/minix/bitmap.c struct minix_sb_info *sbi = minix_sb(sb); sbi 231 fs/minix/bitmap.c for (i = 0; i < sbi->s_imap_blocks; i++) { sbi 232 fs/minix/bitmap.c bh = sbi->s_imap[i]; sbi 251 fs/minix/bitmap.c if (!j || j > sbi->s_ninodes) { sbi 269 fs/minix/bitmap.c struct minix_sb_info *sbi = minix_sb(sb); sbi 270 fs/minix/bitmap.c u32 bits = sbi->s_ninodes + 1; sbi 272 fs/minix/bitmap.c return count_free(sbi->s_imap, sb->s_blocksize, bits); sbi 76 fs/minix/dir.c static inline void *minix_next_entry(void *de, struct minix_sb_info *sbi) sbi 78 fs/minix/dir.c return (void*)((char*)de + sbi->s_dirsize); sbi 85 fs/minix/dir.c struct minix_sb_info *sbi = minix_sb(sb); sbi 86 fs/minix/dir.c unsigned chunk_size = sbi->s_dirsize; sbi 108 fs/minix/dir.c for ( ; p <= limit; p = minix_next_entry(p, sbi)) { sbi 111 fs/minix/dir.c if (sbi->s_version == MINIX_V3) { sbi 121 fs/minix/dir.c unsigned l = strnlen(name, sbi->s_namelen); sbi 157 fs/minix/dir.c struct minix_sb_info * sbi = minix_sb(sb); sbi 175 fs/minix/dir.c limit = kaddr + minix_last_byte(dir, n) - sbi->s_dirsize; sbi 176 fs/minix/dir.c for (p = kaddr; p <= limit; p = minix_next_entry(p, sbi)) { sbi 177 fs/minix/dir.c if (sbi->s_version == MINIX_V3) { sbi 188 fs/minix/dir.c if (namecompare(namelen, sbi->s_namelen, name, namx)) sbi 206 fs/minix/dir.c struct minix_sb_info * sbi = minix_sb(sb); sbi 233 fs/minix/dir.c limit = kaddr + PAGE_SIZE - sbi->s_dirsize; sbi 234 fs/minix/dir.c for (p = kaddr; p <= limit; p = minix_next_entry(p, sbi)) { sbi 237 fs/minix/dir.c if (sbi->s_version == MINIX_V3) { sbi 246 fs/minix/dir.c if (sbi->s_version == MINIX_V3) sbi 255 fs/minix/dir.c if (namecompare(namelen, sbi->s_namelen, name, namx)) sbi 266 fs/minix/dir.c err = minix_prepare_chunk(page, pos, sbi->s_dirsize); sbi 270 fs/minix/dir.c if (sbi->s_version == MINIX_V3) { sbi 271 fs/minix/dir.c memset (namx + namelen, 0, sbi->s_dirsize - namelen - 4); sbi 274 fs/minix/dir.c memset (namx + namelen, 0, sbi->s_dirsize - namelen - 2); sbi 277 fs/minix/dir.c err = dir_commit_chunk(page, pos, sbi->s_dirsize); sbi 294 fs/minix/dir.c struct minix_sb_info *sbi = minix_sb(inode->i_sb); sbi 295 fs/minix/dir.c unsigned len = sbi->s_dirsize; sbi 301 fs/minix/dir.c if (sbi->s_version == MINIX_V3) sbi 318 fs/minix/dir.c struct minix_sb_info *sbi = minix_sb(inode->i_sb); sbi 324 fs/minix/dir.c err = minix_prepare_chunk(page, 0, 2 * sbi->s_dirsize); sbi 333 fs/minix/dir.c if (sbi->s_version == MINIX_V3) { sbi 338 fs/minix/dir.c de3 = minix_next_entry(de3, sbi); sbi 346 fs/minix/dir.c de = minix_next_entry(de, sbi); sbi 352 fs/minix/dir.c err = dir_commit_chunk(page, 0, 2 * sbi->s_dirsize); sbi 365 fs/minix/dir.c struct minix_sb_info *sbi = minix_sb(inode->i_sb); sbi 377 fs/minix/dir.c limit = kaddr + minix_last_byte(inode, i) - sbi->s_dirsize; sbi 378 fs/minix/dir.c for (p = kaddr; p <= limit; p = minix_next_entry(p, sbi)) { sbi 379 fs/minix/dir.c if (sbi->s_version == MINIX_V3) { sbi 416 fs/minix/dir.c struct minix_sb_info *sbi = minix_sb(dir->i_sb); sbi 423 fs/minix/dir.c err = minix_prepare_chunk(page, pos, sbi->s_dirsize); sbi 425 fs/minix/dir.c if (sbi->s_version == MINIX_V3) sbi 429 fs/minix/dir.c err = dir_commit_chunk(page, pos, sbi->s_dirsize); sbi 441 fs/minix/dir.c struct minix_sb_info *sbi = minix_sb(dir->i_sb); sbi 445 fs/minix/dir.c de = minix_next_entry(page_address(page), sbi); sbi 460 fs/minix/dir.c struct minix_sb_info *sbi = minix_sb(inode->i_sb); sbi 462 fs/minix/dir.c if (sbi->s_version == MINIX_V3) sbi 44 fs/minix/inode.c struct minix_sb_info *sbi = minix_sb(sb); sbi 47 fs/minix/inode.c if (sbi->s_version != MINIX_V3) /* s_state is now out from V3 sb */ sbi 48 fs/minix/inode.c sbi->s_ms->s_state = sbi->s_mount_state; sbi 49 fs/minix/inode.c mark_buffer_dirty(sbi->s_sbh); sbi 51 fs/minix/inode.c for (i = 0; i < sbi->s_imap_blocks; i++) sbi 52 fs/minix/inode.c brelse(sbi->s_imap[i]); sbi 53 fs/minix/inode.c for (i = 0; i < sbi->s_zmap_blocks; i++) sbi 54 fs/minix/inode.c brelse(sbi->s_zmap[i]); sbi 55 fs/minix/inode.c brelse (sbi->s_sbh); sbi 56 fs/minix/inode.c kfree(sbi->s_imap); sbi 58 fs/minix/inode.c kfree(sbi); sbi 118 fs/minix/inode.c struct minix_sb_info * sbi = minix_sb(sb); sbi 122 fs/minix/inode.c ms = sbi->s_ms; sbi 127 fs/minix/inode.c !(sbi->s_mount_state & MINIX_VALID_FS)) sbi 130 fs/minix/inode.c if (sbi->s_version != MINIX_V3) sbi 131 fs/minix/inode.c ms->s_state = sbi->s_mount_state; sbi 132 fs/minix/inode.c mark_buffer_dirty(sbi->s_sbh); sbi 135 fs/minix/inode.c if (sbi->s_version != MINIX_V3) { sbi 136 fs/minix/inode.c sbi->s_mount_state = ms->s_state; sbi 139 fs/minix/inode.c sbi->s_mount_state = MINIX_VALID_FS; sbi 141 fs/minix/inode.c mark_buffer_dirty(sbi->s_sbh); sbi 143 fs/minix/inode.c if (!(sbi->s_mount_state & MINIX_VALID_FS)) sbi 146 fs/minix/inode.c else if ((sbi->s_mount_state & MINIX_ERROR_FS)) sbi 161 fs/minix/inode.c struct minix_sb_info *sbi; sbi 164 fs/minix/inode.c sbi = kzalloc(sizeof(struct minix_sb_info), GFP_KERNEL); sbi 165 fs/minix/inode.c if (!sbi) sbi 167 fs/minix/inode.c s->s_fs_info = sbi; sbi 179 fs/minix/inode.c sbi->s_ms = ms; sbi 180 fs/minix/inode.c sbi->s_sbh = bh; sbi 181 fs/minix/inode.c sbi->s_mount_state = ms->s_state; sbi 182 fs/minix/inode.c sbi->s_ninodes = ms->s_ninodes; sbi 183 fs/minix/inode.c sbi->s_nzones = ms->s_nzones; sbi 184 fs/minix/inode.c sbi->s_imap_blocks = ms->s_imap_blocks; sbi 185 fs/minix/inode.c sbi->s_zmap_blocks = ms->s_zmap_blocks; sbi 186 fs/minix/inode.c sbi->s_firstdatazone = ms->s_firstdatazone; sbi 187 fs/minix/inode.c sbi->s_log_zone_size = ms->s_log_zone_size; sbi 188 fs/minix/inode.c sbi->s_max_size = ms->s_max_size; sbi 191 fs/minix/inode.c sbi->s_version = MINIX_V1; sbi 192 fs/minix/inode.c sbi->s_dirsize = 16; sbi 193 fs/minix/inode.c sbi->s_namelen = 14; sbi 196 fs/minix/inode.c sbi->s_version = MINIX_V1; sbi 197 fs/minix/inode.c sbi->s_dirsize = 32; sbi 198 fs/minix/inode.c sbi->s_namelen = 30; sbi 201 fs/minix/inode.c sbi->s_version = MINIX_V2; sbi 202 fs/minix/inode.c sbi->s_nzones = ms->s_zones; sbi 203 fs/minix/inode.c sbi->s_dirsize = 16; sbi 204 fs/minix/inode.c sbi->s_namelen = 14; sbi 207 fs/minix/inode.c sbi->s_version = MINIX_V2; sbi 208 fs/minix/inode.c sbi->s_nzones = ms->s_zones; sbi 209 fs/minix/inode.c sbi->s_dirsize = 32; sbi 210 fs/minix/inode.c sbi->s_namelen = 30; sbi 215 fs/minix/inode.c sbi->s_imap_blocks = m3s->s_imap_blocks; sbi 216 fs/minix/inode.c sbi->s_zmap_blocks = m3s->s_zmap_blocks; sbi 217 fs/minix/inode.c sbi->s_firstdatazone = m3s->s_firstdatazone; sbi 218 fs/minix/inode.c sbi->s_log_zone_size = m3s->s_log_zone_size; sbi 219 fs/minix/inode.c sbi->s_max_size = m3s->s_max_size; sbi 220 fs/minix/inode.c sbi->s_ninodes = m3s->s_ninodes; sbi 221 fs/minix/inode.c sbi->s_nzones = m3s->s_zones; sbi 222 fs/minix/inode.c sbi->s_dirsize = 64; sbi 223 fs/minix/inode.c sbi->s_namelen = 60; sbi 224 fs/minix/inode.c sbi->s_version = MINIX_V3; sbi 225 fs/minix/inode.c sbi->s_mount_state = MINIX_VALID_FS; sbi 234 fs/minix/inode.c if (sbi->s_imap_blocks == 0 || sbi->s_zmap_blocks == 0) sbi 236 fs/minix/inode.c i = (sbi->s_imap_blocks + sbi->s_zmap_blocks) * sizeof(bh); sbi 240 fs/minix/inode.c sbi->s_imap = &map[0]; sbi 241 fs/minix/inode.c sbi->s_zmap = &map[sbi->s_imap_blocks]; sbi 244 fs/minix/inode.c for (i=0 ; i < sbi->s_imap_blocks ; i++) { sbi 245 fs/minix/inode.c if (!(sbi->s_imap[i]=sb_bread(s, block))) sbi 249 fs/minix/inode.c for (i=0 ; i < sbi->s_zmap_blocks ; i++) { sbi 250 fs/minix/inode.c if (!(sbi->s_zmap[i]=sb_bread(s, block))) sbi 255 fs/minix/inode.c minix_set_bit(0,sbi->s_imap[0]->b_data); sbi 256 fs/minix/inode.c minix_set_bit(0,sbi->s_zmap[0]->b_data); sbi 262 fs/minix/inode.c block = minix_blocks_needed(sbi->s_ninodes, s->s_blocksize); sbi 263 fs/minix/inode.c if (sbi->s_imap_blocks < block) { sbi 270 fs/minix/inode.c (sbi->s_nzones - sbi->s_firstdatazone + 1), sbi 272 fs/minix/inode.c if (sbi->s_zmap_blocks < block) { sbi 294 fs/minix/inode.c if (sbi->s_version != MINIX_V3) /* s_state is now out from V3 sb */ sbi 298 fs/minix/inode.c if (!(sbi->s_mount_state & MINIX_VALID_FS)) sbi 301 fs/minix/inode.c else if (sbi->s_mount_state & MINIX_ERROR_FS) sbi 315 fs/minix/inode.c for (i = 0; i < sbi->s_imap_blocks; i++) sbi 316 fs/minix/inode.c brelse(sbi->s_imap[i]); sbi 317 fs/minix/inode.c for (i = 0; i < sbi->s_zmap_blocks; i++) sbi 318 fs/minix/inode.c brelse(sbi->s_zmap[i]); sbi 319 fs/minix/inode.c kfree(sbi->s_imap); sbi 349 fs/minix/inode.c kfree(sbi); sbi 356 fs/minix/inode.c struct minix_sb_info *sbi = minix_sb(sb); sbi 360 fs/minix/inode.c buf->f_blocks = (sbi->s_nzones - sbi->s_firstdatazone) << sbi->s_log_zone_size; sbi 363 fs/minix/inode.c buf->f_files = sbi->s_ninodes; sbi 365 fs/minix/inode.c buf->f_namelen = sbi->s_namelen; sbi 12 fs/omfs/bitmap.c struct omfs_sb_info *sbi = OMFS_SB(sb); sbi 15 fs/omfs/bitmap.c for (i = 0; i < sbi->s_imap_size; i++) sbi 16 fs/omfs/bitmap.c sum += nbits - bitmap_weight(sbi->s_imap[i], nbits); sbi 54 fs/omfs/bitmap.c struct omfs_sb_info *sbi = OMFS_SB(sb); sbi 57 fs/omfs/bitmap.c bh = sb_bread(sb, clus_to_blk(sbi, sbi->s_bitmap_ino) + map); sbi 69 fs/omfs/bitmap.c clus_to_blk(sbi, sbi->s_bitmap_ino) + map); sbi 74 fs/omfs/bitmap.c set_bit(bit, sbi->s_imap[map]); sbi 77 fs/omfs/bitmap.c clear_bit(bit, sbi->s_imap[map]); sbi 94 fs/omfs/bitmap.c struct omfs_sb_info *sbi = OMFS_SB(sb); sbi 104 fs/omfs/bitmap.c mutex_lock(&sbi->s_bitmap_lock); sbi 105 fs/omfs/bitmap.c if (map >= sbi->s_imap_size || test_and_set_bit(bit, sbi->s_imap[map])) sbi 108 fs/omfs/bitmap.c if (sbi->s_bitmap_ino > 0) { sbi 109 fs/omfs/bitmap.c bh = sb_bread(sb, clus_to_blk(sbi, sbi->s_bitmap_ino) + map); sbi 119 fs/omfs/bitmap.c mutex_unlock(&sbi->s_bitmap_lock); sbi 136 fs/omfs/bitmap.c struct omfs_sb_info *sbi = OMFS_SB(sb); sbi 141 fs/omfs/bitmap.c mutex_lock(&sbi->s_bitmap_lock); sbi 142 fs/omfs/bitmap.c for (i = 0; i < sbi->s_imap_size; i++) { sbi 145 fs/omfs/bitmap.c bit = find_next_zero_bit(sbi->s_imap[i], bits_per_entry, sbi 151 fs/omfs/bitmap.c run = count_run(&sbi->s_imap[i], bits_per_entry, sbi 152 fs/omfs/bitmap.c sbi->s_imap_size-i, bit, max_request); sbi 168 fs/omfs/bitmap.c mutex_unlock(&sbi->s_bitmap_lock); sbi 177 fs/omfs/bitmap.c struct omfs_sb_info *sbi = OMFS_SB(sb); sbi 187 fs/omfs/bitmap.c if (map >= sbi->s_imap_size) sbi 190 fs/omfs/bitmap.c mutex_lock(&sbi->s_bitmap_lock); sbi 192 fs/omfs/bitmap.c mutex_unlock(&sbi->s_bitmap_lock); sbi 86 fs/omfs/dir.c struct omfs_sb_info *sbi = OMFS_SB(sb); sbi 98 fs/omfs/dir.c sbi->s_sys_blocksize - OMFS_DIR_START); sbi 315 fs/omfs/dir.c int omfs_is_bad(struct omfs_sb_info *sbi, struct omfs_header *header, sbi 320 fs/omfs/dir.c is_bad = ((ino != fsblock) || (ino < sbi->s_root_ino) || sbi 321 fs/omfs/dir.c (ino > sbi->s_num_blocks)); sbi 13 fs/omfs/file.c static u32 omfs_max_extents(struct omfs_sb_info *sbi, int offset) sbi 15 fs/omfs/file.c return (sbi->s_sys_blocksize - offset - sbi 33 fs/omfs/file.c struct omfs_sb_info *sbi = OMFS_SB(inode->i_sb); sbi 57 fs/omfs/file.c max_extents = omfs_max_extents(sbi, OMFS_EXTENT_START); sbi 61 fs/omfs/file.c if (omfs_is_bad(sbi, (struct omfs_header *) bh->b_data, next)) sbi 87 fs/omfs/file.c omfs_clear_range(inode->i_sb, last, sbi->s_mirrors); sbi 96 fs/omfs/file.c max_extents = omfs_max_extents(sbi, OMFS_EXTENT_CONT); sbi 121 fs/omfs/file.c struct omfs_sb_info *sbi = OMFS_SB(inode->i_sb); sbi 155 fs/omfs/file.c max_count = omfs_max_extents(sbi, OMFS_EXTENT_START); sbi 162 fs/omfs/file.c ret = omfs_allocate_range(inode->i_sb, 1, sbi->s_clustersize, sbi 228 fs/omfs/file.c struct omfs_sb_info *sbi = OMFS_SB(inode->i_sb); sbi 238 fs/omfs/file.c max_extents = omfs_max_extents(sbi, OMFS_EXTENT_START); sbi 243 fs/omfs/file.c if (omfs_is_bad(sbi, (struct omfs_header *) bh->b_data, next)) sbi 270 fs/omfs/file.c max_extents = omfs_max_extents(sbi, OMFS_EXTENT_CONT); sbi 278 fs/omfs/file.c clus_to_blk(sbi, new_block)); sbi 26 fs/omfs/inode.c struct omfs_sb_info *sbi = OMFS_SB(sb); sbi 27 fs/omfs/inode.c if (block >= sbi->s_num_blocks) sbi 30 fs/omfs/inode.c return sb_bread(sb, clus_to_blk(sbi, block)); sbi 39 fs/omfs/inode.c struct omfs_sb_info *sbi = OMFS_SB(dir->i_sb); sbi 45 fs/omfs/inode.c err = omfs_allocate_range(dir->i_sb, sbi->s_mirrors, sbi->s_mirrors, sbi 59 fs/omfs/inode.c inode->i_size = sbi->s_sys_blocksize; sbi 105 fs/omfs/inode.c struct omfs_sb_info *sbi = OMFS_SB(inode->i_sb); sbi 130 fs/omfs/inode.c oi->i_head.h_body_size = cpu_to_be32(sbi->s_sys_blocksize - sbi 151 fs/omfs/inode.c for (i = 1; i < sbi->s_mirrors; i++) { sbi 204 fs/omfs/inode.c struct omfs_sb_info *sbi = OMFS_SB(sb); sbi 227 fs/omfs/inode.c inode->i_uid = sbi->s_uid; sbi 228 fs/omfs/inode.c inode->i_gid = sbi->s_gid; sbi 244 fs/omfs/inode.c inode->i_mode = S_IFDIR | (S_IRWXUGO & ~sbi->s_dmask); sbi 247 fs/omfs/inode.c inode->i_size = sbi->s_sys_blocksize; sbi 251 fs/omfs/inode.c inode->i_mode = S_IFREG | (S_IRWXUGO & ~sbi->s_fmask); sbi 268 fs/omfs/inode.c struct omfs_sb_info *sbi = OMFS_SB(sb); sbi 269 fs/omfs/inode.c kfree(sbi->s_imap); sbi 270 fs/omfs/inode.c kfree(sbi); sbi 277 fs/omfs/inode.c struct omfs_sb_info *sbi = OMFS_SB(s); sbi 281 fs/omfs/inode.c buf->f_bsize = sbi->s_blocksize; sbi 282 fs/omfs/inode.c buf->f_blocks = sbi->s_num_blocks; sbi 283 fs/omfs/inode.c buf->f_files = sbi->s_num_blocks; sbi 299 fs/omfs/inode.c struct omfs_sb_info *sbi = OMFS_SB(root->d_sb); sbi 302 fs/omfs/inode.c if (!uid_eq(sbi->s_uid, current_uid())) sbi 304 fs/omfs/inode.c from_kuid_munged(&init_user_ns, sbi->s_uid)); sbi 305 fs/omfs/inode.c if (!gid_eq(sbi->s_gid, current_gid())) sbi 307 fs/omfs/inode.c from_kgid_munged(&init_user_ns, sbi->s_gid)); sbi 309 fs/omfs/inode.c if (sbi->s_dmask == sbi->s_fmask) { sbi 310 fs/omfs/inode.c if (sbi->s_fmask != cur_umask) sbi 311 fs/omfs/inode.c seq_printf(m, ",umask=%o", sbi->s_fmask); sbi 313 fs/omfs/inode.c if (sbi->s_dmask != cur_umask) sbi 314 fs/omfs/inode.c seq_printf(m, ",dmask=%o", sbi->s_dmask); sbi 315 fs/omfs/inode.c if (sbi->s_fmask != cur_umask) sbi 316 fs/omfs/inode.c seq_printf(m, ",fmask=%o", sbi->s_fmask); sbi 341 fs/omfs/inode.c struct omfs_sb_info *sbi = OMFS_SB(sb); sbi 346 fs/omfs/inode.c bitmap_size = DIV_ROUND_UP(sbi->s_num_blocks, 8); sbi 349 fs/omfs/inode.c if (sbi->s_bitmap_ino == ~0ULL) sbi 352 fs/omfs/inode.c sbi->s_imap_size = array_size; sbi 353 fs/omfs/inode.c sbi->s_imap = kcalloc(array_size, sizeof(unsigned long *), GFP_KERNEL); sbi 354 fs/omfs/inode.c if (!sbi->s_imap) sbi 357 fs/omfs/inode.c block = clus_to_blk(sbi, sbi->s_bitmap_ino); sbi 358 fs/omfs/inode.c if (block >= sbi->s_num_blocks) sbi 361 fs/omfs/inode.c ptr = sbi->s_imap; sbi 383 fs/omfs/inode.c kfree(sbi->s_imap[count]); sbi 385 fs/omfs/inode.c kfree(sbi->s_imap); sbi 387 fs/omfs/inode.c sbi->s_imap = NULL; sbi 388 fs/omfs/inode.c sbi->s_imap_size = 0; sbi 405 fs/omfs/inode.c static int parse_options(char *options, struct omfs_sb_info *sbi) sbi 424 fs/omfs/inode.c sbi->s_uid = make_kuid(current_user_ns(), option); sbi 425 fs/omfs/inode.c if (!uid_valid(sbi->s_uid)) sbi 431 fs/omfs/inode.c sbi->s_gid = make_kgid(current_user_ns(), option); sbi 432 fs/omfs/inode.c if (!gid_valid(sbi->s_gid)) sbi 438 fs/omfs/inode.c sbi->s_fmask = sbi->s_dmask = option; sbi 443 fs/omfs/inode.c sbi->s_dmask = option; sbi 448 fs/omfs/inode.c sbi->s_fmask = option; sbi 462 fs/omfs/inode.c struct omfs_sb_info *sbi; sbi 466 fs/omfs/inode.c sbi = kzalloc(sizeof(struct omfs_sb_info), GFP_KERNEL); sbi 467 fs/omfs/inode.c if (!sbi) sbi 470 fs/omfs/inode.c sb->s_fs_info = sbi; sbi 472 fs/omfs/inode.c sbi->s_uid = current_uid(); sbi 473 fs/omfs/inode.c sbi->s_gid = current_gid(); sbi 474 fs/omfs/inode.c sbi->s_dmask = sbi->s_fmask = current_umask(); sbi 476 fs/omfs/inode.c if (!parse_options((char *) data, sbi)) sbi 501 fs/omfs/inode.c sbi->s_num_blocks = be64_to_cpu(omfs_sb->s_num_blocks); sbi 502 fs/omfs/inode.c sbi->s_blocksize = be32_to_cpu(omfs_sb->s_blocksize); sbi 503 fs/omfs/inode.c sbi->s_mirrors = be32_to_cpu(omfs_sb->s_mirrors); sbi 504 fs/omfs/inode.c sbi->s_root_ino = be64_to_cpu(omfs_sb->s_root_block); sbi 505 fs/omfs/inode.c sbi->s_sys_blocksize = be32_to_cpu(omfs_sb->s_sys_blocksize); sbi 506 fs/omfs/inode.c mutex_init(&sbi->s_bitmap_lock); sbi 508 fs/omfs/inode.c if (sbi->s_num_blocks > OMFS_MAX_BLOCKS) { sbi 510 fs/omfs/inode.c (unsigned long long)sbi->s_num_blocks); sbi 514 fs/omfs/inode.c if (sbi->s_sys_blocksize > PAGE_SIZE) { sbi 516 fs/omfs/inode.c sbi->s_sys_blocksize); sbi 520 fs/omfs/inode.c if (sbi->s_blocksize < sbi->s_sys_blocksize || sbi 521 fs/omfs/inode.c sbi->s_blocksize > OMFS_MAX_BLOCK_SIZE) { sbi 523 fs/omfs/inode.c sbi->s_blocksize); sbi 531 fs/omfs/inode.c sb_set_blocksize(sb, sbi->s_sys_blocksize); sbi 537 fs/omfs/inode.c sbi->s_block_shift = get_bitmask_order(sbi->s_blocksize) - sbi 538 fs/omfs/inode.c get_bitmask_order(sbi->s_sys_blocksize); sbi 546 fs/omfs/inode.c sbi->s_bitmap_ino = be64_to_cpu(omfs_rb->r_bitmap); sbi 547 fs/omfs/inode.c sbi->s_clustersize = be32_to_cpu(omfs_rb->r_clustersize); sbi 549 fs/omfs/inode.c if (sbi->s_num_blocks != be64_to_cpu(omfs_rb->r_num_blocks)) { sbi 552 fs/omfs/inode.c (unsigned long long)sbi->s_num_blocks, sbi 557 fs/omfs/inode.c if (sbi->s_bitmap_ino != ~0ULL && sbi 558 fs/omfs/inode.c sbi->s_bitmap_ino > sbi->s_num_blocks) { sbi 561 fs/omfs/inode.c (unsigned long long) sbi->s_bitmap_ino, sbi 562 fs/omfs/inode.c (unsigned long long) sbi->s_num_blocks); sbi 565 fs/omfs/inode.c if (sbi->s_clustersize < 1 || sbi 566 fs/omfs/inode.c sbi->s_clustersize > OMFS_MAX_CLUSTER_SIZE) { sbi 568 fs/omfs/inode.c sbi->s_clustersize); sbi 598 fs/omfs/inode.c kfree(sbi); sbi 30 fs/omfs/omfs.h static inline sector_t clus_to_blk(struct omfs_sb_info *sbi, sector_t block) sbi 32 fs/omfs/omfs.h return block << sbi->s_block_shift; sbi 51 fs/omfs/omfs.h extern int omfs_is_bad(struct omfs_sb_info *sbi, struct omfs_header *header, sbi 49 fs/qnx6/dir.c struct qnx6_sb_info *sbi = QNX6_SB(sb); sbi 50 fs/qnx6/dir.c u32 s = fs32_to_cpu(sbi, de->de_long_inode); /* in block units */ sbi 54 fs/qnx6/dir.c struct address_space *mapping = sbi->longfile->i_mapping; sbi 69 fs/qnx6/dir.c struct qnx6_sb_info *sbi = QNX6_SB(s); sbi 85 fs/qnx6/dir.c lf_size = fs16_to_cpu(sbi, lf->lf_size); sbi 96 fs/qnx6/dir.c if (!test_opt(s, MMI_FS) && fs32_to_cpu(sbi, de->de_checksum) != sbi 116 fs/qnx6/dir.c struct qnx6_sb_info *sbi = QNX6_SB(s); sbi 141 fs/qnx6/dir.c u32 no_inode = fs32_to_cpu(sbi, de->de_inode); sbi 179 fs/qnx6/dir.c struct qnx6_sb_info *sbi = QNX6_SB(s); sbi 187 fs/qnx6/dir.c thislen = fs16_to_cpu(sbi, lf->lf_size); sbi 194 fs/qnx6/dir.c return fs32_to_cpu(sbi, de->de_inode); sbi 206 fs/qnx6/dir.c struct qnx6_sb_info *sbi = QNX6_SB(s); sbi 208 fs/qnx6/dir.c return fs32_to_cpu(sbi, de->de_inode); sbi 50 fs/qnx6/inode.c struct qnx6_sb_info *sbi = QNX6_SB(sb); sbi 52 fs/qnx6/inode.c if (sbi->s_mount_opt & QNX6_MOUNT_MMI_FS) sbi 66 fs/qnx6/inode.c struct qnx6_sb_info *sbi = QNX6_SB(sb); sbi 67 fs/qnx6/inode.c return fs32_to_cpu(sbi, block) + sbi->s_blks_off; sbi 115 fs/qnx6/inode.c struct qnx6_sb_info *sbi = QNX6_SB(s); sbi 121 fs/qnx6/inode.c int ptrbits = sbi->s_ptrbits; sbi 159 fs/qnx6/inode.c struct qnx6_sb_info *sbi = QNX6_SB(sb); sbi 164 fs/qnx6/inode.c buf->f_blocks = fs32_to_cpu(sbi, sbi->sb->sb_num_blocks); sbi 165 fs/qnx6/inode.c buf->f_bfree = fs32_to_cpu(sbi, sbi->sb->sb_free_blocks); sbi 166 fs/qnx6/inode.c buf->f_files = fs32_to_cpu(sbi, sbi->sb->sb_num_inodes); sbi 167 fs/qnx6/inode.c buf->f_ffree = fs32_to_cpu(sbi, sbi->sb->sb_free_inodes); sbi 207 fs/qnx6/inode.c struct qnx6_sb_info *sbi = QNX6_SB(s); sbi 209 fs/qnx6/inode.c pr_debug("magic: %08x\n", fs32_to_cpu(sbi, sb->sb_magic)); sbi 210 fs/qnx6/inode.c pr_debug("checksum: %08x\n", fs32_to_cpu(sbi, sb->sb_checksum)); sbi 211 fs/qnx6/inode.c pr_debug("serial: %llx\n", fs64_to_cpu(sbi, sb->sb_serial)); sbi 212 fs/qnx6/inode.c pr_debug("flags: %08x\n", fs32_to_cpu(sbi, sb->sb_flags)); sbi 213 fs/qnx6/inode.c pr_debug("blocksize: %08x\n", fs32_to_cpu(sbi, sb->sb_blocksize)); sbi 214 fs/qnx6/inode.c pr_debug("num_inodes: %08x\n", fs32_to_cpu(sbi, sb->sb_num_inodes)); sbi 215 fs/qnx6/inode.c pr_debug("free_inodes: %08x\n", fs32_to_cpu(sbi, sb->sb_free_inodes)); sbi 216 fs/qnx6/inode.c pr_debug("num_blocks: %08x\n", fs32_to_cpu(sbi, sb->sb_num_blocks)); sbi 217 fs/qnx6/inode.c pr_debug("free_blocks: %08x\n", fs32_to_cpu(sbi, sb->sb_free_blocks)); sbi 235 fs/qnx6/inode.c struct qnx6_sb_info *sbi = QNX6_SB(sb); sbi 249 fs/qnx6/inode.c set_opt(sbi->s_mount_opt, MMI_FS); sbi 261 fs/qnx6/inode.c struct qnx6_sb_info *sbi = QNX6_SB(s); sbi 273 fs/qnx6/inode.c if (fs32_to_cpu(sbi, sb->sb_magic) != QNX6_SUPER_MAGIC) { sbi 274 fs/qnx6/inode.c sbi->s_bytesex = BYTESEX_BE; sbi 275 fs/qnx6/inode.c if (fs32_to_cpu(sbi, sb->sb_magic) == QNX6_SUPER_MAGIC) { sbi 280 fs/qnx6/inode.c sbi->s_bytesex = BYTESEX_LE; sbi 302 fs/qnx6/inode.c struct qnx6_sb_info *sbi; sbi 333 fs/qnx6/inode.c sbi = QNX6_SB(s); sbi 334 fs/qnx6/inode.c sbi->s_bytesex = BYTESEX_LE; sbi 356 fs/qnx6/inode.c if (fs32_to_cpu(sbi, sb1->sb_checksum) != sbi 363 fs/qnx6/inode.c if (!sb_set_blocksize(s, fs32_to_cpu(sbi, sb1->sb_blocksize))) { sbi 375 fs/qnx6/inode.c offset = fs32_to_cpu(sbi, sb1->sb_num_blocks) + sbi 380 fs/qnx6/inode.c sbi->s_blks_off = (bootblock_offset >> s->s_blocksize_bits) + sbi 390 fs/qnx6/inode.c if (fs32_to_cpu(sbi, sb2->sb_magic) != QNX6_SUPER_MAGIC) { sbi 397 fs/qnx6/inode.c if (fs32_to_cpu(sbi, sb2->sb_checksum) != sbi 403 fs/qnx6/inode.c if (fs64_to_cpu(sbi, sb1->sb_serial) >= sbi 404 fs/qnx6/inode.c fs64_to_cpu(sbi, sb2->sb_serial)) { sbi 406 fs/qnx6/inode.c sbi->sb_buf = bh1; sbi 407 fs/qnx6/inode.c sbi->sb = (struct qnx6_super_block *)bh1->b_data; sbi 412 fs/qnx6/inode.c sbi->sb_buf = bh2; sbi 413 fs/qnx6/inode.c sbi->sb = (struct qnx6_super_block *)bh2->b_data; sbi 436 fs/qnx6/inode.c sbi = QNX6_SB(s); sbi 437 fs/qnx6/inode.c sbi->s_ptrbits = ilog2(s->s_blocksize / 4); sbi 438 fs/qnx6/inode.c sbi->inodes = qnx6_private_inode(s, &sb1->Inode); sbi 439 fs/qnx6/inode.c if (!sbi->inodes) sbi 441 fs/qnx6/inode.c sbi->longfile = qnx6_private_inode(s, &sb1->Longfile); sbi 442 fs/qnx6/inode.c if (!sbi->longfile) sbi 471 fs/qnx6/inode.c iput(sbi->longfile); sbi 473 fs/qnx6/inode.c iput(sbi->inodes); sbi 512 fs/qnx6/inode.c struct qnx6_sb_info *sbi = QNX6_SB(s); sbi 513 fs/qnx6/inode.c inode->i_size = fs64_to_cpu(sbi, p->size); sbi 524 fs/qnx6/inode.c struct qnx6_sb_info *sbi = QNX6_SB(sb); sbi 550 fs/qnx6/inode.c mapping = sbi->inodes->i_mapping; sbi 561 fs/qnx6/inode.c inode->i_mode = fs16_to_cpu(sbi, raw_inode->di_mode); sbi 562 fs/qnx6/inode.c i_uid_write(inode, (uid_t)fs32_to_cpu(sbi, raw_inode->di_uid)); sbi 563 fs/qnx6/inode.c i_gid_write(inode, (gid_t)fs32_to_cpu(sbi, raw_inode->di_gid)); sbi 564 fs/qnx6/inode.c inode->i_size = fs64_to_cpu(sbi, raw_inode->di_size); sbi 565 fs/qnx6/inode.c inode->i_mtime.tv_sec = fs32_to_cpu(sbi, raw_inode->di_mtime); sbi 567 fs/qnx6/inode.c inode->i_atime.tv_sec = fs32_to_cpu(sbi, raw_inode->di_atime); sbi 569 fs/qnx6/inode.c inode->i_ctime.tv_sec = fs32_to_cpu(sbi, raw_inode->di_ctime); sbi 78 fs/qnx6/qnx6.h static inline __u64 fs64_to_cpu(struct qnx6_sb_info *sbi, __fs64 n) sbi 80 fs/qnx6/qnx6.h if (sbi->s_bytesex == BYTESEX_LE) sbi 86 fs/qnx6/qnx6.h static inline __fs64 cpu_to_fs64(struct qnx6_sb_info *sbi, __u64 n) sbi 88 fs/qnx6/qnx6.h if (sbi->s_bytesex == BYTESEX_LE) sbi 94 fs/qnx6/qnx6.h static inline __u32 fs32_to_cpu(struct qnx6_sb_info *sbi, __fs32 n) sbi 96 fs/qnx6/qnx6.h if (sbi->s_bytesex == BYTESEX_LE) sbi 102 fs/qnx6/qnx6.h static inline __fs32 cpu_to_fs32(struct qnx6_sb_info *sbi, __u32 n) sbi 104 fs/qnx6/qnx6.h if (sbi->s_bytesex == BYTESEX_LE) sbi 110 fs/qnx6/qnx6.h static inline __u16 fs16_to_cpu(struct qnx6_sb_info *sbi, __fs16 n) sbi 112 fs/qnx6/qnx6.h if (sbi->s_bytesex == BYTESEX_LE) sbi 118 fs/qnx6/qnx6.h static inline __fs16 cpu_to_fs16(struct qnx6_sb_info *sbi, __u16 n) sbi 120 fs/qnx6/qnx6.h if (sbi->s_bytesex == BYTESEX_LE) sbi 41 fs/qnx6/super_mmi.c struct qnx6_sb_info *sbi; sbi 52 fs/qnx6/super_mmi.c sbi = QNX6_SB(s); sbi 53 fs/qnx6/super_mmi.c if (fs32_to_cpu(sbi, sb1->sb_magic) != QNX6_SUPER_MAGIC) { sbi 61 fs/qnx6/super_mmi.c if (fs32_to_cpu(sbi, sb1->sb_checksum) != sbi 68 fs/qnx6/super_mmi.c offset = fs32_to_cpu(sbi, sb1->sb_num_blocks) + QNX6_SUPERBLOCK_AREA / sbi 69 fs/qnx6/super_mmi.c fs32_to_cpu(sbi, sb1->sb_blocksize); sbi 72 fs/qnx6/super_mmi.c if (!sb_set_blocksize(s, fs32_to_cpu(sbi, sb1->sb_blocksize))) { sbi 90 fs/qnx6/super_mmi.c if (fs32_to_cpu(sbi, sb2->sb_magic) != QNX6_SUPER_MAGIC) { sbi 97 fs/qnx6/super_mmi.c if (fs32_to_cpu(sbi, sb2->sb_checksum) sbi 109 fs/qnx6/super_mmi.c if (fs64_to_cpu(sbi, sb1->sb_serial) > sbi 110 fs/qnx6/super_mmi.c fs64_to_cpu(sbi, sb2->sb_serial)) { sbi 118 fs/qnx6/super_mmi.c sbi->sb_buf = bh1; sbi 119 fs/qnx6/super_mmi.c sbi->sb = (struct qnx6_super_block *)bh1->b_data; sbi 130 fs/qnx6/super_mmi.c sbi->sb_buf = bh2; sbi 131 fs/qnx6/super_mmi.c sbi->sb = (struct qnx6_super_block *)bh2->b_data; sbi 138 fs/qnx6/super_mmi.c sbi->s_blks_off = QNX6_SUPERBLOCK_AREA / s->s_blocksize; sbi 141 fs/qnx6/super_mmi.c return sbi->sb; sbi 86 fs/reiserfs/super.c struct reiserfs_sb_info *sbi; sbi 89 fs/reiserfs/super.c sbi = container_of(work, struct reiserfs_sb_info, old_work.work); sbi 90 fs/reiserfs/super.c s = sbi->s_journal->j_work_sb; sbi 99 fs/reiserfs/super.c spin_lock(&sbi->old_work_lock); sbi 100 fs/reiserfs/super.c if (sbi->work_queued == 1) sbi 101 fs/reiserfs/super.c queue_delayed_work(system_long_wq, &sbi->old_work, HZ); sbi 102 fs/reiserfs/super.c spin_unlock(&sbi->old_work_lock); sbi 105 fs/reiserfs/super.c spin_lock(&sbi->old_work_lock); sbi 107 fs/reiserfs/super.c if (sbi->work_queued == 1) sbi 108 fs/reiserfs/super.c sbi->work_queued = 0; sbi 109 fs/reiserfs/super.c spin_unlock(&sbi->old_work_lock); sbi 117 fs/reiserfs/super.c struct reiserfs_sb_info *sbi = REISERFS_SB(s); sbi 127 fs/reiserfs/super.c spin_lock(&sbi->old_work_lock); sbi 128 fs/reiserfs/super.c if (!sbi->work_queued) { sbi 130 fs/reiserfs/super.c queue_delayed_work(system_long_wq, &sbi->old_work, delay); sbi 131 fs/reiserfs/super.c sbi->work_queued = 1; sbi 133 fs/reiserfs/super.c spin_unlock(&sbi->old_work_lock); sbi 138 fs/reiserfs/super.c struct reiserfs_sb_info *sbi = REISERFS_SB(s); sbi 140 fs/reiserfs/super.c spin_lock(&sbi->old_work_lock); sbi 142 fs/reiserfs/super.c sbi->work_queued = 2; sbi 143 fs/reiserfs/super.c spin_unlock(&sbi->old_work_lock); sbi 172 fs/reiserfs/super.c struct reiserfs_sb_info *sbi = REISERFS_SB(s); sbi 175 fs/reiserfs/super.c spin_lock(&sbi->old_work_lock); sbi 177 fs/reiserfs/super.c sbi->work_queued = 0; sbi 178 fs/reiserfs/super.c spin_unlock(&sbi->old_work_lock); sbi 1907 fs/reiserfs/super.c struct reiserfs_sb_info *sbi; sbi 1912 fs/reiserfs/super.c sbi = kzalloc(sizeof(struct reiserfs_sb_info), GFP_KERNEL); sbi 1913 fs/reiserfs/super.c if (!sbi) sbi 1915 fs/reiserfs/super.c s->s_fs_info = sbi; sbi 1917 fs/reiserfs/super.c sbi->s_mount_opt |= (1 << REISERFS_SMALLTAIL); sbi 1918 fs/reiserfs/super.c sbi->s_mount_opt |= (1 << REISERFS_ERROR_RO); sbi 1919 fs/reiserfs/super.c sbi->s_mount_opt |= (1 << REISERFS_BARRIER_FLUSH); sbi 1921 fs/reiserfs/super.c sbi->s_alloc_options.preallocmin = 0; sbi 1923 fs/reiserfs/super.c sbi->s_alloc_options.preallocsize = 17; sbi 1927 fs/reiserfs/super.c spin_lock_init(&sbi->old_work_lock); sbi 1928 fs/reiserfs/super.c INIT_DELAYED_WORK(&sbi->old_work, flush_old_commits); sbi 1929 fs/reiserfs/super.c mutex_init(&sbi->lock); sbi 1930 fs/reiserfs/super.c sbi->lock_depth = -1; sbi 1932 fs/reiserfs/super.c sbi->commit_wq = alloc_workqueue("reiserfs/%s", WQ_MEM_RECLAIM, 0, sbi 1934 fs/reiserfs/super.c if (!sbi->commit_wq) { sbi 1942 fs/reiserfs/super.c (s, (char *)data, &sbi->s_mount_opt, &blocks, &jdev_name, sbi 1947 fs/reiserfs/super.c sbi->s_jdev = kstrdup(jdev_name, GFP_KERNEL); sbi 1948 fs/reiserfs/super.c if (!sbi->s_jdev) { sbi 2001 fs/reiserfs/super.c sbi->s_mount_state = SB_REISERFS_STATE(s); sbi 2002 fs/reiserfs/super.c sbi->s_mount_state = REISERFS_VALID_FS; sbi 2018 fs/reiserfs/super.c sbi->s_mount_opt |= (1 << REISERFS_DATA_ORDERED); sbi 2089 fs/reiserfs/super.c sbi->s_hash_function = hash_function(s); sbi 2090 fs/reiserfs/super.c if (sbi->s_hash_function == NULL) { sbi 2098 fs/reiserfs/super.c set_bit(REISERFS_3_5, &sbi->s_properties); sbi 2100 fs/reiserfs/super.c set_bit(REISERFS_OLD_FORMAT, &sbi->s_properties); sbi 2102 fs/reiserfs/super.c set_bit(REISERFS_3_6, &sbi->s_properties); sbi 2158 fs/reiserfs/super.c set_bit(REISERFS_3_6, &sbi->s_properties); sbi 2159 fs/reiserfs/super.c clear_bit(REISERFS_3_5, &sbi->s_properties); sbi 2205 fs/reiserfs/super.c set_sb_hash_function_code(rs, function2code(sbi->s_hash_function)); sbi 2211 fs/reiserfs/super.c init_waitqueue_head(&(sbi->s_wait)); sbi 2212 fs/reiserfs/super.c spin_lock_init(&sbi->bitmap_lock); sbi 2229 fs/reiserfs/super.c if (sbi->commit_wq) sbi 2230 fs/reiserfs/super.c destroy_workqueue(sbi->commit_wq); sbi 2244 fs/reiserfs/super.c kfree(sbi->s_jdev); sbi 2245 fs/reiserfs/super.c kfree(sbi); sbi 393 fs/squashfs/super.c struct squashfs_sb_info *sbi = sb->s_fs_info; sbi 394 fs/squashfs/super.c squashfs_cache_delete(sbi->block_cache); sbi 395 fs/squashfs/super.c squashfs_cache_delete(sbi->fragment_cache); sbi 396 fs/squashfs/super.c squashfs_cache_delete(sbi->read_page); sbi 397 fs/squashfs/super.c squashfs_decompressor_destroy(sbi); sbi 398 fs/squashfs/super.c kfree(sbi->id_table); sbi 399 fs/squashfs/super.c kfree(sbi->fragment_index); sbi 400 fs/squashfs/super.c kfree(sbi->meta_index); sbi 401 fs/squashfs/super.c kfree(sbi->inode_lookup_table); sbi 402 fs/squashfs/super.c kfree(sbi->xattr_id_table); sbi 45 fs/sysv/balloc.c struct sysv_sb_info * sbi = SYSV_SB(sb); sbi 47 fs/sysv/balloc.c sysv_zone_t *blocks = sbi->s_bcache; sbi 49 fs/sysv/balloc.c unsigned block = fs32_to_cpu(sbi, nr); sbi 56 fs/sysv/balloc.c if (sbi->s_type == FSTYPE_AFS) sbi 59 fs/sysv/balloc.c if (block < sbi->s_firstdatazone || block >= sbi->s_nzones) { sbi 64 fs/sysv/balloc.c mutex_lock(&sbi->s_lock); sbi 65 fs/sysv/balloc.c count = fs16_to_cpu(sbi, *sbi->s_bcache_count); sbi 67 fs/sysv/balloc.c if (count > sbi->s_flc_size) { sbi 69 fs/sysv/balloc.c mutex_unlock(&sbi->s_lock); sbi 76 fs/sysv/balloc.c if (count == sbi->s_flc_size || count == 0) { sbi 77 fs/sysv/balloc.c block += sbi->s_block_base; sbi 81 fs/sysv/balloc.c mutex_unlock(&sbi->s_lock); sbi 85 fs/sysv/balloc.c *(__fs16*)bh->b_data = cpu_to_fs16(sbi, count); sbi 92 fs/sysv/balloc.c sbi->s_bcache[count++] = nr; sbi 94 fs/sysv/balloc.c *sbi->s_bcache_count = cpu_to_fs16(sbi, count); sbi 95 fs/sysv/balloc.c fs32_add(sbi, sbi->s_free_blocks, 1); sbi 97 fs/sysv/balloc.c mutex_unlock(&sbi->s_lock); sbi 102 fs/sysv/balloc.c struct sysv_sb_info *sbi = SYSV_SB(sb); sbi 108 fs/sysv/balloc.c mutex_lock(&sbi->s_lock); sbi 109 fs/sysv/balloc.c count = fs16_to_cpu(sbi, *sbi->s_bcache_count); sbi 113 fs/sysv/balloc.c nr = sbi->s_bcache[--count]; sbi 117 fs/sysv/balloc.c block = fs32_to_cpu(sbi, nr); sbi 119 fs/sysv/balloc.c *sbi->s_bcache_count = cpu_to_fs16(sbi, count); sbi 121 fs/sysv/balloc.c if (block < sbi->s_firstdatazone || block >= sbi->s_nzones) { sbi 130 fs/sysv/balloc.c block += sbi->s_block_base; sbi 134 fs/sysv/balloc.c *sbi->s_bcache_count = cpu_to_fs16(sbi, 1); sbi 137 fs/sysv/balloc.c count = fs16_to_cpu(sbi, *(__fs16*)bh->b_data); sbi 138 fs/sysv/balloc.c if (count > sbi->s_flc_size) { sbi 143 fs/sysv/balloc.c *sbi->s_bcache_count = cpu_to_fs16(sbi, count); sbi 144 fs/sysv/balloc.c memcpy(sbi->s_bcache, get_chunk(sb, bh), sbi 149 fs/sysv/balloc.c fs32_add(sbi, sbi->s_free_blocks, -1); sbi 151 fs/sysv/balloc.c mutex_unlock(&sbi->s_lock); sbi 155 fs/sysv/balloc.c mutex_unlock(&sbi->s_lock); sbi 161 fs/sysv/balloc.c struct sysv_sb_info * sbi = SYSV_SB(sb); sbi 174 fs/sysv/balloc.c if (sbi->s_type == FSTYPE_AFS) sbi 177 fs/sysv/balloc.c mutex_lock(&sbi->s_lock); sbi 178 fs/sysv/balloc.c sb_count = fs32_to_cpu(sbi, *sbi->s_free_blocks); sbi 185 fs/sysv/balloc.c n = fs16_to_cpu(sbi, *sbi->s_bcache_count); sbi 186 fs/sysv/balloc.c blocks = sbi->s_bcache; sbi 189 fs/sysv/balloc.c if (n > sbi->s_flc_size) sbi 197 fs/sysv/balloc.c block = fs32_to_cpu(sbi, zone); sbi 201 fs/sysv/balloc.c if (block < sbi->s_firstdatazone || block >= sbi->s_nzones) sbi 203 fs/sysv/balloc.c block += sbi->s_block_base; sbi 207 fs/sysv/balloc.c n = fs16_to_cpu(sbi, *(__fs16*)bh->b_data); sbi 215 fs/sysv/balloc.c mutex_unlock(&sbi->s_lock); sbi 236 fs/sysv/balloc.c *sbi->s_free_blocks = cpu_to_fs32(sbi, count); sbi 42 fs/sysv/ialloc.c struct sysv_sb_info *sbi = SYSV_SB(sb); sbi 44 fs/sysv/ialloc.c if (sbi->s_bh1 == sbi->s_bh2) sbi 45 fs/sysv/ialloc.c return &sbi->s_sb_fic_inodes[i]; sbi 50 fs/sysv/ialloc.c return (sysv_ino_t*)(sbi->s_sbd1 + offset); sbi 52 fs/sysv/ialloc.c return (sysv_ino_t*)(sbi->s_sbd2 + offset); sbi 59 fs/sysv/ialloc.c struct sysv_sb_info *sbi = SYSV_SB(sb); sbi 61 fs/sysv/ialloc.c int block = sbi->s_firstinodezone + sbi->s_block_base; sbi 63 fs/sysv/ialloc.c block += (ino-1) >> sbi->s_inodes_per_block_bits; sbi 68 fs/sysv/ialloc.c return res + ((ino-1) & sbi->s_inodes_per_block_1); sbi 73 fs/sysv/ialloc.c struct sysv_sb_info *sbi = SYSV_SB(sb); sbi 82 fs/sysv/ialloc.c while (ino <= sbi->s_ninodes) { sbi 85 fs/sysv/ialloc.c if (i == sbi->s_fic_size) sbi 88 fs/sysv/ialloc.c if ((ino++ & sbi->s_inodes_per_block_1) == 0) { sbi 104 fs/sysv/ialloc.c struct sysv_sb_info *sbi = SYSV_SB(sb); sbi 112 fs/sysv/ialloc.c if (ino <= SYSV_ROOT_INO || ino > sbi->s_ninodes) { sbi 122 fs/sysv/ialloc.c mutex_lock(&sbi->s_lock); sbi 123 fs/sysv/ialloc.c count = fs16_to_cpu(sbi, *sbi->s_sb_fic_count); sbi 124 fs/sysv/ialloc.c if (count < sbi->s_fic_size) { sbi 125 fs/sysv/ialloc.c *sv_sb_fic_inode(sb,count++) = cpu_to_fs16(sbi, ino); sbi 126 fs/sysv/ialloc.c *sbi->s_sb_fic_count = cpu_to_fs16(sbi, count); sbi 128 fs/sysv/ialloc.c fs16_add(sbi, sbi->s_sb_total_free_inodes, 1); sbi 132 fs/sysv/ialloc.c mutex_unlock(&sbi->s_lock); sbi 139 fs/sysv/ialloc.c struct sysv_sb_info *sbi = SYSV_SB(sb); sbi 151 fs/sysv/ialloc.c mutex_lock(&sbi->s_lock); sbi 152 fs/sysv/ialloc.c count = fs16_to_cpu(sbi, *sbi->s_sb_fic_count); sbi 157 fs/sysv/ialloc.c mutex_unlock(&sbi->s_lock); sbi 163 fs/sysv/ialloc.c *sbi->s_sb_fic_count = cpu_to_fs16(sbi, count); sbi 164 fs/sysv/ialloc.c fs16_add(sbi, sbi->s_sb_total_free_inodes, -1); sbi 167 fs/sysv/ialloc.c inode->i_ino = fs16_to_cpu(sbi, ino); sbi 178 fs/sysv/ialloc.c mutex_unlock(&sbi->s_lock); sbi 184 fs/sysv/ialloc.c struct sysv_sb_info *sbi = SYSV_SB(sb); sbi 189 fs/sysv/ialloc.c mutex_lock(&sbi->s_lock); sbi 191 fs/sysv/ialloc.c sb_count = fs16_to_cpu(sbi, *sbi->s_sb_total_free_inodes); sbi 202 fs/sysv/ialloc.c while (ino <= sbi->s_ninodes) { sbi 205 fs/sysv/ialloc.c if ((ino++ & sbi->s_inodes_per_block_1) == 0) { sbi 217 fs/sysv/ialloc.c mutex_unlock(&sbi->s_lock); sbi 225 fs/sysv/ialloc.c *sbi->s_sb_total_free_inodes = cpu_to_fs16(SYSV_SB(sb), count); sbi 37 fs/sysv/inode.c struct sysv_sb_info *sbi = SYSV_SB(sb); sbi 40 fs/sysv/inode.c mutex_lock(&sbi->s_lock); sbi 47 fs/sysv/inode.c old_time = fs32_to_cpu(sbi, *sbi->s_sb_time); sbi 48 fs/sysv/inode.c if (sbi->s_type == FSTYPE_SYSV4) { sbi 49 fs/sysv/inode.c if (*sbi->s_sb_state == cpu_to_fs32(sbi, 0x7c269d38u - old_time)) sbi 50 fs/sysv/inode.c *sbi->s_sb_state = cpu_to_fs32(sbi, 0x7c269d38u - time); sbi 51 fs/sysv/inode.c *sbi->s_sb_time = cpu_to_fs32(sbi, time); sbi 52 fs/sysv/inode.c mark_buffer_dirty(sbi->s_bh2); sbi 55 fs/sysv/inode.c mutex_unlock(&sbi->s_lock); sbi 62 fs/sysv/inode.c struct sysv_sb_info *sbi = SYSV_SB(sb); sbi 65 fs/sysv/inode.c if (sbi->s_forced_ro) sbi 72 fs/sysv/inode.c struct sysv_sb_info *sbi = SYSV_SB(sb); sbi 76 fs/sysv/inode.c mark_buffer_dirty(sbi->s_bh1); sbi 77 fs/sysv/inode.c if (sbi->s_bh1 != sbi->s_bh2) sbi 78 fs/sysv/inode.c mark_buffer_dirty(sbi->s_bh2); sbi 81 fs/sysv/inode.c brelse(sbi->s_bh1); sbi 82 fs/sysv/inode.c if (sbi->s_bh1 != sbi->s_bh2) sbi 83 fs/sysv/inode.c brelse(sbi->s_bh2); sbi 85 fs/sysv/inode.c kfree(sbi); sbi 91 fs/sysv/inode.c struct sysv_sb_info *sbi = SYSV_SB(sb); sbi 96 fs/sysv/inode.c buf->f_blocks = sbi->s_ndatazones; sbi 98 fs/sysv/inode.c buf->f_files = sbi->s_ninodes; sbi 109 fs/sysv/inode.c static inline void read3byte(struct sysv_sb_info *sbi, sbi 112 fs/sysv/inode.c if (sbi->s_bytesex == BYTESEX_PDP) { sbi 117 fs/sysv/inode.c } else if (sbi->s_bytesex == BYTESEX_LE) { sbi 130 fs/sysv/inode.c static inline void write3byte(struct sysv_sb_info *sbi, sbi 133 fs/sysv/inode.c if (sbi->s_bytesex == BYTESEX_PDP) { sbi 137 fs/sysv/inode.c } else if (sbi->s_bytesex == BYTESEX_LE) { sbi 173 fs/sysv/inode.c struct sysv_sb_info * sbi = SYSV_SB(sb); sbi 180 fs/sysv/inode.c if (!ino || ino > sbi->s_ninodes) { sbi 199 fs/sysv/inode.c inode->i_mode = fs16_to_cpu(sbi, raw_inode->i_mode); sbi 200 fs/sysv/inode.c i_uid_write(inode, (uid_t)fs16_to_cpu(sbi, raw_inode->i_uid)); sbi 201 fs/sysv/inode.c i_gid_write(inode, (gid_t)fs16_to_cpu(sbi, raw_inode->i_gid)); sbi 202 fs/sysv/inode.c set_nlink(inode, fs16_to_cpu(sbi, raw_inode->i_nlink)); sbi 203 fs/sysv/inode.c inode->i_size = fs32_to_cpu(sbi, raw_inode->i_size); sbi 204 fs/sysv/inode.c inode->i_atime.tv_sec = fs32_to_cpu(sbi, raw_inode->i_atime); sbi 205 fs/sysv/inode.c inode->i_mtime.tv_sec = fs32_to_cpu(sbi, raw_inode->i_mtime); sbi 206 fs/sysv/inode.c inode->i_ctime.tv_sec = fs32_to_cpu(sbi, raw_inode->i_ctime); sbi 214 fs/sysv/inode.c read3byte(sbi, &raw_inode->i_data[3*block], sbi 220 fs/sysv/inode.c old_decode_dev(fs32_to_cpu(sbi, si->i_data[0]))); sbi 234 fs/sysv/inode.c struct sysv_sb_info * sbi = SYSV_SB(sb); sbi 242 fs/sysv/inode.c if (!ino || ino > sbi->s_ninodes) { sbi 253 fs/sysv/inode.c raw_inode->i_mode = cpu_to_fs16(sbi, inode->i_mode); sbi 254 fs/sysv/inode.c raw_inode->i_uid = cpu_to_fs16(sbi, fs_high2lowuid(i_uid_read(inode))); sbi 255 fs/sysv/inode.c raw_inode->i_gid = cpu_to_fs16(sbi, fs_high2lowgid(i_gid_read(inode))); sbi 256 fs/sysv/inode.c raw_inode->i_nlink = cpu_to_fs16(sbi, inode->i_nlink); sbi 257 fs/sysv/inode.c raw_inode->i_size = cpu_to_fs32(sbi, inode->i_size); sbi 258 fs/sysv/inode.c raw_inode->i_atime = cpu_to_fs32(sbi, inode->i_atime.tv_sec); sbi 259 fs/sysv/inode.c raw_inode->i_mtime = cpu_to_fs32(sbi, inode->i_mtime.tv_sec); sbi 260 fs/sysv/inode.c raw_inode->i_ctime = cpu_to_fs32(sbi, inode->i_ctime.tv_sec); sbi 264 fs/sysv/inode.c si->i_data[0] = cpu_to_fs32(sbi, old_encode_dev(inode->i_rdev)); sbi 266 fs/sysv/inode.c write3byte(sbi, (u8 *)&si->i_data[block], sbi 26 fs/sysv/itree.c struct sysv_sb_info *sbi = SYSV_SB(sb); sbi 27 fs/sysv/itree.c int ptrs_bits = sbi->s_ind_per_block_bits; sbi 28 fs/sysv/itree.c unsigned long indirect_blocks = sbi->s_ind_per_block, sbi 29 fs/sysv/itree.c double_blocks = sbi->s_ind_per_block_2; sbi 54 fs/sysv/itree.c static inline int block_to_cpu(struct sysv_sb_info *sbi, sysv_zone_t nr) sbi 56 fs/sysv/itree.c return sbi->s_block_base + fs32_to_cpu(sbi, nr); sbi 431 fs/sysv/itree.c struct sysv_sb_info *sbi = SYSV_SB(s); sbi 432 fs/sysv/itree.c int ptrs_bits = sbi->s_ind_per_block_bits; sbi 48 fs/sysv/super.c static void detected_xenix(struct sysv_sb_info *sbi, unsigned *max_links) sbi 50 fs/sysv/super.c struct buffer_head *bh1 = sbi->s_bh1; sbi 51 fs/sysv/super.c struct buffer_head *bh2 = sbi->s_bh2; sbi 64 fs/sysv/super.c sbi->s_fic_size = XENIX_NICINOD; sbi 65 fs/sysv/super.c sbi->s_flc_size = XENIX_NICFREE; sbi 66 fs/sysv/super.c sbi->s_sbd1 = (char *)sbd1; sbi 67 fs/sysv/super.c sbi->s_sbd2 = (char *)sbd2; sbi 68 fs/sysv/super.c sbi->s_sb_fic_count = &sbd1->s_ninode; sbi 69 fs/sysv/super.c sbi->s_sb_fic_inodes = &sbd1->s_inode[0]; sbi 70 fs/sysv/super.c sbi->s_sb_total_free_inodes = &sbd2->s_tinode; sbi 71 fs/sysv/super.c sbi->s_bcache_count = &sbd1->s_nfree; sbi 72 fs/sysv/super.c sbi->s_bcache = &sbd1->s_free[0]; sbi 73 fs/sysv/super.c sbi->s_free_blocks = &sbd2->s_tfree; sbi 74 fs/sysv/super.c sbi->s_sb_time = &sbd2->s_time; sbi 75 fs/sysv/super.c sbi->s_firstdatazone = fs16_to_cpu(sbi, sbd1->s_isize); sbi 76 fs/sysv/super.c sbi->s_nzones = fs32_to_cpu(sbi, sbd1->s_fsize); sbi 79 fs/sysv/super.c static void detected_sysv4(struct sysv_sb_info *sbi, unsigned *max_links) sbi 82 fs/sysv/super.c struct buffer_head *bh1 = sbi->s_bh1; sbi 83 fs/sysv/super.c struct buffer_head *bh2 = sbi->s_bh2; sbi 91 fs/sysv/super.c sbi->s_fic_size = SYSV_NICINOD; sbi 92 fs/sysv/super.c sbi->s_flc_size = SYSV_NICFREE; sbi 93 fs/sysv/super.c sbi->s_sbd1 = (char *)sbd; sbi 94 fs/sysv/super.c sbi->s_sbd2 = (char *)sbd; sbi 95 fs/sysv/super.c sbi->s_sb_fic_count = &sbd->s_ninode; sbi 96 fs/sysv/super.c sbi->s_sb_fic_inodes = &sbd->s_inode[0]; sbi 97 fs/sysv/super.c sbi->s_sb_total_free_inodes = &sbd->s_tinode; sbi 98 fs/sysv/super.c sbi->s_bcache_count = &sbd->s_nfree; sbi 99 fs/sysv/super.c sbi->s_bcache = &sbd->s_free[0]; sbi 100 fs/sysv/super.c sbi->s_free_blocks = &sbd->s_tfree; sbi 101 fs/sysv/super.c sbi->s_sb_time = &sbd->s_time; sbi 102 fs/sysv/super.c sbi->s_sb_state = &sbd->s_state; sbi 103 fs/sysv/super.c sbi->s_firstdatazone = fs16_to_cpu(sbi, sbd->s_isize); sbi 104 fs/sysv/super.c sbi->s_nzones = fs32_to_cpu(sbi, sbd->s_fsize); sbi 107 fs/sysv/super.c static void detected_sysv2(struct sysv_sb_info *sbi, unsigned *max_links) sbi 110 fs/sysv/super.c struct buffer_head *bh1 = sbi->s_bh1; sbi 111 fs/sysv/super.c struct buffer_head *bh2 = sbi->s_bh2; sbi 119 fs/sysv/super.c sbi->s_fic_size = SYSV_NICINOD; sbi 120 fs/sysv/super.c sbi->s_flc_size = SYSV_NICFREE; sbi 121 fs/sysv/super.c sbi->s_sbd1 = (char *)sbd; sbi 122 fs/sysv/super.c sbi->s_sbd2 = (char *)sbd; sbi 123 fs/sysv/super.c sbi->s_sb_fic_count = &sbd->s_ninode; sbi 124 fs/sysv/super.c sbi->s_sb_fic_inodes = &sbd->s_inode[0]; sbi 125 fs/sysv/super.c sbi->s_sb_total_free_inodes = &sbd->s_tinode; sbi 126 fs/sysv/super.c sbi->s_bcache_count = &sbd->s_nfree; sbi 127 fs/sysv/super.c sbi->s_bcache = &sbd->s_free[0]; sbi 128 fs/sysv/super.c sbi->s_free_blocks = &sbd->s_tfree; sbi 129 fs/sysv/super.c sbi->s_sb_time = &sbd->s_time; sbi 130 fs/sysv/super.c sbi->s_sb_state = &sbd->s_state; sbi 131 fs/sysv/super.c sbi->s_firstdatazone = fs16_to_cpu(sbi, sbd->s_isize); sbi 132 fs/sysv/super.c sbi->s_nzones = fs32_to_cpu(sbi, sbd->s_fsize); sbi 135 fs/sysv/super.c static void detected_coherent(struct sysv_sb_info *sbi, unsigned *max_links) sbi 138 fs/sysv/super.c struct buffer_head *bh1 = sbi->s_bh1; sbi 143 fs/sysv/super.c sbi->s_fic_size = COH_NICINOD; sbi 144 fs/sysv/super.c sbi->s_flc_size = COH_NICFREE; sbi 145 fs/sysv/super.c sbi->s_sbd1 = (char *)sbd; sbi 146 fs/sysv/super.c sbi->s_sbd2 = (char *)sbd; sbi 147 fs/sysv/super.c sbi->s_sb_fic_count = &sbd->s_ninode; sbi 148 fs/sysv/super.c sbi->s_sb_fic_inodes = &sbd->s_inode[0]; sbi 149 fs/sysv/super.c sbi->s_sb_total_free_inodes = &sbd->s_tinode; sbi 150 fs/sysv/super.c sbi->s_bcache_count = &sbd->s_nfree; sbi 151 fs/sysv/super.c sbi->s_bcache = &sbd->s_free[0]; sbi 152 fs/sysv/super.c sbi->s_free_blocks = &sbd->s_tfree; sbi 153 fs/sysv/super.c sbi->s_sb_time = &sbd->s_time; sbi 154 fs/sysv/super.c sbi->s_firstdatazone = fs16_to_cpu(sbi, sbd->s_isize); sbi 155 fs/sysv/super.c sbi->s_nzones = fs32_to_cpu(sbi, sbd->s_fsize); sbi 158 fs/sysv/super.c static void detected_v7(struct sysv_sb_info *sbi, unsigned *max_links) sbi 160 fs/sysv/super.c struct buffer_head *bh2 = sbi->s_bh2; sbi 164 fs/sysv/super.c sbi->s_fic_size = V7_NICINOD; sbi 165 fs/sysv/super.c sbi->s_flc_size = V7_NICFREE; sbi 166 fs/sysv/super.c sbi->s_sbd1 = (char *)sbd; sbi 167 fs/sysv/super.c sbi->s_sbd2 = (char *)sbd; sbi 168 fs/sysv/super.c sbi->s_sb_fic_count = &sbd->s_ninode; sbi 169 fs/sysv/super.c sbi->s_sb_fic_inodes = &sbd->s_inode[0]; sbi 170 fs/sysv/super.c sbi->s_sb_total_free_inodes = &sbd->s_tinode; sbi 171 fs/sysv/super.c sbi->s_bcache_count = &sbd->s_nfree; sbi 172 fs/sysv/super.c sbi->s_bcache = &sbd->s_free[0]; sbi 173 fs/sysv/super.c sbi->s_free_blocks = &sbd->s_tfree; sbi 174 fs/sysv/super.c sbi->s_sb_time = &sbd->s_time; sbi 175 fs/sysv/super.c sbi->s_firstdatazone = fs16_to_cpu(sbi, sbd->s_isize); sbi 176 fs/sysv/super.c sbi->s_nzones = fs32_to_cpu(sbi, sbd->s_fsize); sbi 179 fs/sysv/super.c static int detect_xenix(struct sysv_sb_info *sbi, struct buffer_head *bh) sbi 183 fs/sysv/super.c sbi->s_bytesex = BYTESEX_LE; sbi 185 fs/sysv/super.c sbi->s_bytesex = BYTESEX_BE; sbi 188 fs/sysv/super.c switch (fs32_to_cpu(sbi, sbd->s_type)) { sbi 190 fs/sysv/super.c sbi->s_type = FSTYPE_XENIX; sbi 193 fs/sysv/super.c sbi->s_type = FSTYPE_XENIX; sbi 200 fs/sysv/super.c static int detect_sysv(struct sysv_sb_info *sbi, struct buffer_head *bh) sbi 202 fs/sysv/super.c struct super_block *sb = sbi->s_sb; sbi 209 fs/sysv/super.c sbi->s_bytesex = BYTESEX_LE; sbi 211 fs/sysv/super.c sbi->s_bytesex = BYTESEX_BE; sbi 215 fs/sysv/super.c type = fs32_to_cpu(sbi, sbd->s_type); sbi 217 fs/sysv/super.c if (fs16_to_cpu(sbi, sbd->s_nfree) == 0xffff) { sbi 218 fs/sysv/super.c sbi->s_type = FSTYPE_AFS; sbi 219 fs/sysv/super.c sbi->s_forced_ro = 1; sbi 228 fs/sysv/super.c if (fs32_to_cpu(sbi, sbd->s_time) < JAN_1_1980) { sbi 232 fs/sysv/super.c sbi->s_type = FSTYPE_SYSV2; sbi 246 fs/sysv/super.c sbi->s_forced_ro = 1; sbi 249 fs/sysv/super.c sbi->s_type = FSTYPE_SYSV4; sbi 253 fs/sysv/super.c static int detect_coherent(struct sysv_sb_info *sbi, struct buffer_head *bh) sbi 261 fs/sysv/super.c sbi->s_bytesex = BYTESEX_PDP; sbi 262 fs/sysv/super.c sbi->s_type = FSTYPE_COH; sbi 266 fs/sysv/super.c static int detect_sysv_odd(struct sysv_sb_info *sbi, struct buffer_head *bh) sbi 268 fs/sysv/super.c int size = detect_sysv(sbi, bh); sbi 305 fs/sysv/super.c struct sysv_sb_info *sbi = SYSV_SB(sb); sbi 307 fs/sysv/super.c char *found = flavour_names[sbi->s_type]; sbi 312 fs/sysv/super.c sbi->s_firstinodezone = 2; sbi 314 fs/sysv/super.c flavour_setup[sbi->s_type](sbi, &sb->s_max_links); sbi 316 fs/sysv/super.c sbi->s_ndatazones = sbi->s_nzones - sbi->s_firstdatazone; sbi 317 fs/sysv/super.c sbi->s_inodes_per_block = bsize >> 6; sbi 318 fs/sysv/super.c sbi->s_inodes_per_block_1 = (bsize >> 6)-1; sbi 319 fs/sysv/super.c sbi->s_inodes_per_block_bits = n_bits-6; sbi 320 fs/sysv/super.c sbi->s_ind_per_block = bsize_4; sbi 321 fs/sysv/super.c sbi->s_ind_per_block_2 = bsize_4*bsize_4; sbi 322 fs/sysv/super.c sbi->s_toobig_block = 10 + bsize_4 * (1 + bsize_4 * (1 + bsize_4)); sbi 323 fs/sysv/super.c sbi->s_ind_per_block_bits = n_bits-2; sbi 325 fs/sysv/super.c sbi->s_ninodes = (sbi->s_firstdatazone - sbi->s_firstinodezone) sbi 326 fs/sysv/super.c << sbi->s_inodes_per_block_bits; sbi 332 fs/sysv/super.c sb->s_magic = SYSV_MAGIC_BASE + sbi->s_type; sbi 335 fs/sysv/super.c if (sbi->s_forced_ro) sbi 353 fs/sysv/super.c struct sysv_sb_info *sbi; sbi 363 fs/sysv/super.c sbi = kzalloc(sizeof(struct sysv_sb_info), GFP_KERNEL); sbi 364 fs/sysv/super.c if (!sbi) sbi 367 fs/sysv/super.c sbi->s_sb = sb; sbi 368 fs/sysv/super.c sbi->s_block_base = 0; sbi 369 fs/sysv/super.c mutex_init(&sbi->s_lock); sbi 370 fs/sysv/super.c sb->s_fs_info = sbi; sbi 408 fs/sysv/super.c sbi->s_bh1 = bh1; sbi 409 fs/sysv/super.c sbi->s_bh2 = bh; sbi 419 fs/sysv/super.c kfree(sbi); sbi 441 fs/sysv/super.c struct sysv_sb_info *sbi; sbi 443 fs/sysv/super.c sbi = sb->s_fs_info; sbi 447 fs/sysv/super.c if (fs16_to_cpu(sbi, v7sb->s_nfree) > V7_NICFREE || sbi 448 fs/sysv/super.c fs16_to_cpu(sbi, v7sb->s_ninode) > V7_NICINOD || sbi 449 fs/sysv/super.c fs32_to_cpu(sbi, v7sb->s_fsize) > V7_MAXSIZE) sbi 459 fs/sysv/super.c if ((fs16_to_cpu(sbi, v7i->i_mode) & ~0777) != S_IFDIR || sbi 460 fs/sysv/super.c (fs32_to_cpu(sbi, v7i->i_size) == 0) || sbi 461 fs/sysv/super.c (fs32_to_cpu(sbi, v7i->i_size) & 017) || sbi 462 fs/sysv/super.c (fs32_to_cpu(sbi, v7i->i_size) > V7_NFILES * sbi 474 fs/sysv/super.c struct sysv_sb_info *sbi; sbi 482 fs/sysv/super.c sbi = kzalloc(sizeof(struct sysv_sb_info), GFP_KERNEL); sbi 483 fs/sysv/super.c if (!sbi) sbi 486 fs/sysv/super.c sbi->s_sb = sb; sbi 487 fs/sysv/super.c sbi->s_block_base = 0; sbi 488 fs/sysv/super.c sbi->s_type = FSTYPE_V7; sbi 489 fs/sysv/super.c mutex_init(&sbi->s_lock); sbi 490 fs/sysv/super.c sb->s_fs_info = sbi; sbi 504 fs/sysv/super.c sbi->s_bytesex = BYTESEX_PDP; sbi 509 fs/sysv/super.c sbi->s_bytesex = BYTESEX_LE; sbi 516 fs/sysv/super.c sbi->s_bh1 = bh; sbi 517 fs/sysv/super.c sbi->s_bh2 = bh; sbi 525 fs/sysv/super.c kfree(sbi); sbi 115 fs/sysv/sysv.h struct sysv_sb_info *sbi = SYSV_SB(sb); sbi 117 fs/sysv/sysv.h mark_buffer_dirty(sbi->s_bh1); sbi 118 fs/sysv/sysv.h if (sbi->s_bh1 != sbi->s_bh2) sbi 119 fs/sysv/sysv.h mark_buffer_dirty(sbi->s_bh2); sbi 188 fs/sysv/sysv.h static inline __u32 fs32_to_cpu(struct sysv_sb_info *sbi, __fs32 n) sbi 190 fs/sysv/sysv.h if (sbi->s_bytesex == BYTESEX_PDP) sbi 192 fs/sysv/sysv.h else if (sbi->s_bytesex == BYTESEX_LE) sbi 198 fs/sysv/sysv.h static inline __fs32 cpu_to_fs32(struct sysv_sb_info *sbi, __u32 n) sbi 200 fs/sysv/sysv.h if (sbi->s_bytesex == BYTESEX_PDP) sbi 202 fs/sysv/sysv.h else if (sbi->s_bytesex == BYTESEX_LE) sbi 208 fs/sysv/sysv.h static inline __fs32 fs32_add(struct sysv_sb_info *sbi, __fs32 *n, int d) sbi 210 fs/sysv/sysv.h if (sbi->s_bytesex == BYTESEX_PDP) sbi 212 fs/sysv/sysv.h else if (sbi->s_bytesex == BYTESEX_LE) sbi 219 fs/sysv/sysv.h static inline __u16 fs16_to_cpu(struct sysv_sb_info *sbi, __fs16 n) sbi 221 fs/sysv/sysv.h if (sbi->s_bytesex != BYTESEX_BE) sbi 227 fs/sysv/sysv.h static inline __fs16 cpu_to_fs16(struct sysv_sb_info *sbi, __u16 n) sbi 229 fs/sysv/sysv.h if (sbi->s_bytesex != BYTESEX_BE) sbi 235 fs/sysv/sysv.h static inline __fs16 fs16_add(struct sysv_sb_info *sbi, __fs16 *n, int d) sbi 237 fs/sysv/sysv.h if (sbi->s_bytesex != BYTESEX_BE) sbi 94 fs/udf/balloc.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 97 fs/udf/balloc.c if (!sbi->s_lvid_bh) sbi 100 fs/udf/balloc.c lvid = (struct logicalVolIntegrityDesc *)sbi->s_lvid_bh->b_data; sbi 111 fs/udf/balloc.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 121 fs/udf/balloc.c mutex_lock(&sbi->s_alloc_mutex); sbi 122 fs/udf/balloc.c partmap = &sbi->s_partmaps[bloc->partitionReferenceNum]; sbi 159 fs/udf/balloc.c udf_add_free_space(sb, sbi->s_partition, count); sbi 168 fs/udf/balloc.c mutex_unlock(&sbi->s_alloc_mutex); sbi 176 fs/udf/balloc.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 183 fs/udf/balloc.c mutex_lock(&sbi->s_alloc_mutex); sbi 184 fs/udf/balloc.c part_len = sbi->s_partmaps[partition].s_partition_len; sbi 215 fs/udf/balloc.c mutex_unlock(&sbi->s_alloc_mutex); sbi 223 fs/udf/balloc.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 233 fs/udf/balloc.c mutex_lock(&sbi->s_alloc_mutex); sbi 236 fs/udf/balloc.c if (goal >= sbi->s_partmaps[partition].s_partition_len) sbi 303 fs/udf/balloc.c mutex_unlock(&sbi->s_alloc_mutex); sbi 312 fs/udf/balloc.c mutex_unlock(&sbi->s_alloc_mutex); sbi 328 fs/udf/balloc.c if (newblock >= sbi->s_partmaps[partition].s_partition_len) { sbi 335 fs/udf/balloc.c newblock, sbi->s_partmaps[partition].s_partition_len); sbi 347 fs/udf/balloc.c mutex_unlock(&sbi->s_alloc_mutex); sbi 353 fs/udf/balloc.c mutex_unlock(&sbi->s_alloc_mutex); sbi 363 fs/udf/balloc.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 372 fs/udf/balloc.c mutex_lock(&sbi->s_alloc_mutex); sbi 373 fs/udf/balloc.c partmap = &sbi->s_partmaps[bloc->partitionReferenceNum]; sbi 384 fs/udf/balloc.c udf_add_free_space(sb, sbi->s_partition, count); sbi 494 fs/udf/balloc.c mutex_unlock(&sbi->s_alloc_mutex); sbi 502 fs/udf/balloc.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 510 fs/udf/balloc.c if (first_block >= sbi->s_partmaps[partition].s_partition_len) sbi 521 fs/udf/balloc.c mutex_lock(&sbi->s_alloc_mutex); sbi 554 fs/udf/balloc.c mutex_unlock(&sbi->s_alloc_mutex); sbi 562 fs/udf/balloc.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 581 fs/udf/balloc.c mutex_lock(&sbi->s_alloc_mutex); sbi 582 fs/udf/balloc.c if (goal >= sbi->s_partmaps[partition].s_partition_len) sbi 625 fs/udf/balloc.c mutex_unlock(&sbi->s_alloc_mutex); sbi 646 fs/udf/balloc.c mutex_unlock(&sbi->s_alloc_mutex); sbi 32 fs/udf/ialloc.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 36 fs/udf/ialloc.c mutex_lock(&sbi->s_alloc_mutex); sbi 42 fs/udf/ialloc.c mutex_unlock(&sbi->s_alloc_mutex); sbi 51 fs/udf/ialloc.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 68 fs/udf/ialloc.c if (UDF_VERS_USE_EXTENDED_FE > sbi->s_udfrev) sbi 69 fs/udf/ialloc.c sbi->s_udfrev = UDF_VERS_USE_EXTENDED_FE; sbi 97 fs/udf/ialloc.c mutex_lock(&sbi->s_alloc_mutex); sbi 103 fs/udf/ialloc.c mutex_unlock(&sbi->s_alloc_mutex); sbi 108 fs/udf/ialloc.c inode->i_uid = sbi->s_uid; sbi 110 fs/udf/ialloc.c inode->i_gid = sbi->s_gid; sbi 1307 fs/udf/inode.c struct udf_sb_info *sbi = UDF_SB(inode->i_sb); sbi 1316 fs/udf/inode.c if (iloc->partitionReferenceNum >= sbi->s_partitions) { sbi 1318 fs/udf/inode.c iloc->partitionReferenceNum, sbi->s_partitions); sbi 1323 fs/udf/inode.c sbi->s_partmaps[iloc->partitionReferenceNum].s_partition_len) { sbi 1444 fs/udf/inode.c read_lock(&sbi->s_cred_lock); sbi 1448 fs/udf/inode.c inode->i_uid = sbi->s_uid; sbi 1455 fs/udf/inode.c inode->i_gid = sbi->s_gid; sbi 1460 fs/udf/inode.c sbi->s_fmode != UDF_INVALID_MODE) sbi 1461 fs/udf/inode.c inode->i_mode = sbi->s_fmode; sbi 1463 fs/udf/inode.c sbi->s_dmode != UDF_INVALID_MODE) sbi 1464 fs/udf/inode.c inode->i_mode = sbi->s_dmode; sbi 1467 fs/udf/inode.c inode->i_mode &= ~sbi->s_umask; sbi 1470 fs/udf/inode.c read_unlock(&sbi->s_cred_lock); sbi 1688 fs/udf/inode.c struct udf_sb_info *sbi = UDF_SB(inode->i_sb); sbi 1868 fs/udf/inode.c if (sbi->s_udfrev >= 0x0200) sbi 1872 fs/udf/inode.c fe->descTag.tagSerialNum = cpu_to_le16(sbi->s_serial_number); sbi 83 fs/udf/misc.c struct udf_sb_info *sbi = UDF_SB(inode->i_sb); sbi 89 fs/udf/misc.c if (sbi->s_udfrev >= 0x0200) sbi 94 fs/udf/misc.c cpu_to_le16(sbi->s_serial_number); sbi 32 fs/udf/partition.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 34 fs/udf/partition.c if (partition >= sbi->s_partitions) { sbi 39 fs/udf/partition.c map = &sbi->s_partmaps[partition]; sbi 53 fs/udf/partition.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 56 fs/udf/partition.c struct udf_inode_info *iinfo = UDF_I(sbi->s_vat_inode); sbi 58 fs/udf/partition.c map = &sbi->s_partmaps[partition]; sbi 82 fs/udf/partition.c loc = udf_block_map(sbi->s_vat_inode, newblock); sbi 117 fs/udf/partition.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 122 fs/udf/partition.c map = &sbi->s_partmaps[partition]; sbi 159 fs/udf/partition.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 164 fs/udf/partition.c mutex_lock(&sbi->s_alloc_mutex); sbi 165 fs/udf/partition.c for (i = 0; i < sbi->s_partitions; i++) { sbi 166 fs/udf/partition.c struct udf_part_map *map = &sbi->s_partmaps[i]; sbi 269 fs/udf/partition.c if (i == sbi->s_partitions) { sbi 276 fs/udf/partition.c mutex_unlock(&sbi->s_alloc_mutex); sbi 309 fs/udf/partition.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 317 fs/udf/partition.c map = &sbi->s_partmaps[partition]; sbi 254 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 256 fs/udf/super.c sbi->s_partmaps = kcalloc(count, sizeof(*sbi->s_partmaps), GFP_KERNEL); sbi 257 fs/udf/super.c if (!sbi->s_partmaps) { sbi 258 fs/udf/super.c sbi->s_partitions = 0; sbi 262 fs/udf/super.c sbi->s_partitions = count; sbi 304 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 307 fs/udf/super.c if (!sbi->s_partmaps) sbi 309 fs/udf/super.c for (i = 0; i < sbi->s_partitions; i++) sbi 310 fs/udf/super.c udf_free_partition(&sbi->s_partmaps[i]); sbi 311 fs/udf/super.c kfree(sbi->s_partmaps); sbi 312 fs/udf/super.c sbi->s_partmaps = NULL; sbi 318 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 337 fs/udf/super.c seq_printf(seq, ",uid=%u", from_kuid(&init_user_ns, sbi->s_uid)); sbi 339 fs/udf/super.c seq_printf(seq, ",gid=%u", from_kgid(&init_user_ns, sbi->s_gid)); sbi 340 fs/udf/super.c if (sbi->s_umask != 0) sbi 341 fs/udf/super.c seq_printf(seq, ",umask=%ho", sbi->s_umask); sbi 342 fs/udf/super.c if (sbi->s_fmode != UDF_INVALID_MODE) sbi 343 fs/udf/super.c seq_printf(seq, ",mode=%ho", sbi->s_fmode); sbi 344 fs/udf/super.c if (sbi->s_dmode != UDF_INVALID_MODE) sbi 345 fs/udf/super.c seq_printf(seq, ",dmode=%ho", sbi->s_dmode); sbi 347 fs/udf/super.c seq_printf(seq, ",session=%d", sbi->s_session); sbi 349 fs/udf/super.c seq_printf(seq, ",lastblock=%u", sbi->s_last_block); sbi 350 fs/udf/super.c if (sbi->s_anchor != 0) sbi 351 fs/udf/super.c seq_printf(seq, ",anchor=%u", sbi->s_anchor); sbi 354 fs/udf/super.c if (UDF_QUERY_FLAG(sb, UDF_FLAG_NLS_MAP) && sbi->s_nls_map) sbi 355 fs/udf/super.c seq_printf(seq, ",iocharset=%s", sbi->s_nls_map->charset); sbi 606 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 614 fs/udf/super.c uopt.flags = sbi->s_flags; sbi 615 fs/udf/super.c uopt.uid = sbi->s_uid; sbi 616 fs/udf/super.c uopt.gid = sbi->s_gid; sbi 617 fs/udf/super.c uopt.umask = sbi->s_umask; sbi 618 fs/udf/super.c uopt.fmode = sbi->s_fmode; sbi 619 fs/udf/super.c uopt.dmode = sbi->s_dmode; sbi 625 fs/udf/super.c write_lock(&sbi->s_cred_lock); sbi 626 fs/udf/super.c sbi->s_flags = uopt.flags; sbi 627 fs/udf/super.c sbi->s_uid = uopt.uid; sbi 628 fs/udf/super.c sbi->s_gid = uopt.gid; sbi 629 fs/udf/super.c sbi->s_umask = uopt.umask; sbi 630 fs/udf/super.c sbi->s_fmode = uopt.fmode; sbi 631 fs/udf/super.c sbi->s_dmode = uopt.dmode; sbi 632 fs/udf/super.c write_unlock(&sbi->s_cred_lock); sbi 707 fs/udf/super.c struct udf_sb_info *sbi; sbi 709 fs/udf/super.c sbi = UDF_SB(sb); sbi 715 fs/udf/super.c sector += (((loff_t)sbi->s_session) << sb->s_blocksize_bits); sbi 760 fs/udf/super.c else if (!bh && sector - (sbi->s_session << sb->s_blocksize_bits) == sbi 937 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 943 fs/udf/super.c map = &sbi->s_partmaps[partition]; sbi 1080 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 1084 fs/udf/super.c map = &sbi->s_partmaps[p_index]; sbi 1153 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 1154 fs/udf/super.c struct udf_part_map *map = &sbi->s_partmaps[p_index]; sbi 1170 fs/udf/super.c sbi->s_vat_inode = inode; sbi 1178 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 1179 fs/udf/super.c struct udf_part_map *map = &sbi->s_partmaps[p_index]; sbi 1187 fs/udf/super.c udf_find_vat_block(sb, p_index, type1_index, sbi->s_last_block); sbi 1188 fs/udf/super.c if (!sbi->s_vat_inode && sbi 1189 fs/udf/super.c sbi->s_last_block != blocks - 1) { sbi 1191 fs/udf/super.c (unsigned long)sbi->s_last_block, sbi 1195 fs/udf/super.c if (!sbi->s_vat_inode) sbi 1201 fs/udf/super.c (sbi->s_vat_inode->i_size - 36) >> 2; sbi 1203 fs/udf/super.c vati = UDF_I(sbi->s_vat_inode); sbi 1205 fs/udf/super.c pos = udf_block_map(sbi->s_vat_inode, 0); sbi 1218 fs/udf/super.c (sbi->s_vat_inode->i_size - sbi 1237 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 1255 fs/udf/super.c for (i = 0; i < sbi->s_partitions; i++) { sbi 1256 fs/udf/super.c map = &sbi->s_partmaps[i]; sbi 1265 fs/udf/super.c if (i >= sbi->s_partitions) { sbi 1282 fs/udf/super.c for (i = 0; i < sbi->s_partitions; i++) { sbi 1283 fs/udf/super.c map = &sbi->s_partmaps[i]; sbi 1292 fs/udf/super.c if (i >= sbi->s_partitions) { sbi 1384 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 1414 fs/udf/super.c i < sbi->s_partitions && offset < table_len; sbi 1416 fs/udf/super.c struct udf_part_map *map = &sbi->s_partmaps[i]; sbi 1519 fs/udf/super.c if (!sbi->s_lvid_bh) { sbi 1541 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 1565 fs/udf/super.c brelse(sbi->s_lvid_bh); sbi 1566 fs/udf/super.c sbi->s_lvid_bh = final_bh; sbi 1577 fs/udf/super.c brelse(sbi->s_lvid_bh); sbi 1578 fs/udf/super.c sbi->s_lvid_bh = NULL; sbi 1850 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 1855 fs/udf/super.c if (sbi->s_anchor) { sbi 1856 fs/udf/super.c ret = udf_check_anchor_block(sb, sbi->s_anchor, fileset); sbi 1867 fs/udf/super.c ret = udf_check_anchor_block(sb, sbi->s_session + 256, fileset); sbi 1906 fs/udf/super.c return udf_check_anchor_block(sb, sbi->s_session + 512, fileset); sbi 1920 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 1921 fs/udf/super.c sector_t lastblock = sbi->s_last_block; sbi 1930 fs/udf/super.c lastblock = udf_variable_to_fixed(sbi->s_last_block); sbi 1936 fs/udf/super.c lastblock = sbi->s_last_block; sbi 1945 fs/udf/super.c sbi->s_last_block = lastblock; sbi 1959 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 1968 fs/udf/super.c sbi->s_last_block = uopt->lastblock; sbi 1981 fs/udf/super.c if (!sbi->s_last_block) sbi 1982 fs/udf/super.c sbi->s_last_block = udf_get_last_block(sb); sbi 1988 fs/udf/super.c sbi->s_anchor = uopt->anchor; sbi 2012 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 2013 fs/udf/super.c struct buffer_head *bh = sbi->s_lvid_bh; sbi 2024 fs/udf/super.c mutex_lock(&sbi->s_alloc_mutex); sbi 2034 fs/udf/super.c sbi->s_lvid_dirty = 0; sbi 2035 fs/udf/super.c mutex_unlock(&sbi->s_alloc_mutex); sbi 2042 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 2043 fs/udf/super.c struct buffer_head *bh = sbi->s_lvid_bh; sbi 2054 fs/udf/super.c mutex_lock(&sbi->s_alloc_mutex); sbi 2059 fs/udf/super.c if (sbi->s_udfrev > le16_to_cpu(lvidiu->minUDFReadRev)) sbi 2060 fs/udf/super.c lvidiu->minUDFReadRev = cpu_to_le16(sbi->s_udfrev); sbi 2061 fs/udf/super.c if (sbi->s_udfrev > le16_to_cpu(lvidiu->minUDFWriteRev)) sbi 2062 fs/udf/super.c lvidiu->minUDFWriteRev = cpu_to_le16(sbi->s_udfrev); sbi 2074 fs/udf/super.c sbi->s_lvid_dirty = 0; sbi 2075 fs/udf/super.c mutex_unlock(&sbi->s_alloc_mutex); sbi 2083 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 2089 fs/udf/super.c bh = sbi->s_lvid_bh; sbi 2096 fs/udf/super.c mutex_lock(&sbi->s_alloc_mutex); sbi 2102 fs/udf/super.c mutex_unlock(&sbi->s_alloc_mutex); sbi 2113 fs/udf/super.c struct udf_sb_info *sbi; sbi 2125 fs/udf/super.c sbi = kzalloc(sizeof(*sbi), GFP_KERNEL); sbi 2126 fs/udf/super.c if (!sbi) sbi 2129 fs/udf/super.c sb->s_fs_info = sbi; sbi 2131 fs/udf/super.c mutex_init(&sbi->s_alloc_mutex); sbi 2154 fs/udf/super.c sbi->s_flags = uopt.flags; sbi 2155 fs/udf/super.c sbi->s_uid = uopt.uid; sbi 2156 fs/udf/super.c sbi->s_gid = uopt.gid; sbi 2157 fs/udf/super.c sbi->s_umask = uopt.umask; sbi 2158 fs/udf/super.c sbi->s_fmode = uopt.fmode; sbi 2159 fs/udf/super.c sbi->s_dmode = uopt.dmode; sbi 2160 fs/udf/super.c sbi->s_nls_map = uopt.nls_map; sbi 2161 fs/udf/super.c rwlock_init(&sbi->s_cred_lock); sbi 2164 fs/udf/super.c sbi->s_session = udf_get_last_session(sb); sbi 2166 fs/udf/super.c sbi->s_session = uopt.session; sbi 2168 fs/udf/super.c udf_debug("Multi-session=%d\n", sbi->s_session); sbi 2188 fs/udf/super.c brelse(sbi->s_lvid_bh); sbi 2189 fs/udf/super.c sbi->s_lvid_bh = NULL; sbi 2210 fs/udf/super.c udf_debug("Lastblock=%u\n", sbi->s_last_block); sbi 2212 fs/udf/super.c if (sbi->s_lvid_bh) { sbi 2238 fs/udf/super.c sbi->s_udfrev = minUDFWriteRev; sbi 2246 fs/udf/super.c if (!sbi->s_partitions) { sbi 2252 fs/udf/super.c if (sbi->s_partmaps[sbi->s_partition].s_partition_flags & sbi 2269 fs/udf/super.c udf_time_to_disk_stamp(&ts, sbi->s_record_time); sbi 2271 fs/udf/super.c sbi->s_volume_ident, sbi 2303 fs/udf/super.c iput(sbi->s_vat_inode); sbi 2309 fs/udf/super.c brelse(sbi->s_lvid_bh); sbi 2311 fs/udf/super.c kfree(sbi); sbi 2351 fs/udf/super.c struct udf_sb_info *sbi; sbi 2353 fs/udf/super.c sbi = UDF_SB(sb); sbi 2355 fs/udf/super.c iput(sbi->s_vat_inode); sbi 2357 fs/udf/super.c unload_nls(sbi->s_nls_map); sbi 2360 fs/udf/super.c brelse(sbi->s_lvid_bh); sbi 2362 fs/udf/super.c mutex_destroy(&sbi->s_alloc_mutex); sbi 2369 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 2371 fs/udf/super.c mutex_lock(&sbi->s_alloc_mutex); sbi 2372 fs/udf/super.c if (sbi->s_lvid_dirty) { sbi 2373 fs/udf/super.c struct buffer_head *bh = sbi->s_lvid_bh; sbi 2384 fs/udf/super.c sbi->s_lvid_dirty = 0; sbi 2386 fs/udf/super.c mutex_unlock(&sbi->s_alloc_mutex); sbi 2394 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 2401 fs/udf/super.c buf->f_blocks = sbi->s_partmaps[sbi->s_partition].s_partition_len; sbi 2494 fs/udf/super.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 2496 fs/udf/super.c unsigned int part = sbi->s_partition; sbi 2497 fs/udf/super.c int ptype = sbi->s_partmaps[part].s_partition_type; sbi 2500 fs/udf/super.c part = sbi->s_partmaps[part].s_type_specific.s_metadata. sbi 2510 fs/udf/super.c if (sbi->s_lvid_bh) { sbi 2513 fs/udf/super.c sbi->s_lvid_bh->b_data; sbi 2525 fs/udf/super.c map = &sbi->s_partmaps[part]; sbi 184 fs/udf/truncate.c struct udf_sb_info *sbi = UDF_SB(sb); sbi 190 fs/udf/truncate.c if (!UDF_QUERY_FLAG(sb, UDF_FLAG_STRICT) || sbi->s_udfrev >= 0x0201) sbi 32 fs/ufs/cylinder.c struct ufs_sb_info * sbi = UFS_SB(sb); sbi 39 fs/ufs/cylinder.c uspi = sbi->s_uspi; sbi 40 fs/ufs/cylinder.c ucpi = sbi->s_ucpi[bitmap_nr]; sbi 41 fs/ufs/cylinder.c ucg = (struct ufs_cylinder_group *)sbi->s_ucg[cgno]->b_data; sbi 48 fs/ufs/cylinder.c UCPI_UBH(ucpi)->bh[0] = sbi->s_ucg[cgno]; sbi 52 fs/ufs/cylinder.c sbi->s_cgno[bitmap_nr] = cgno; sbi 74 fs/ufs/cylinder.c brelse (sbi->s_ucg[j]); sbi 75 fs/ufs/cylinder.c sbi->s_cgno[bitmap_nr] = UFS_CGNO_EMPTY; sbi 85 fs/ufs/cylinder.c struct ufs_sb_info * sbi = UFS_SB(sb); sbi 93 fs/ufs/cylinder.c uspi = sbi->s_uspi; sbi 94 fs/ufs/cylinder.c if (sbi->s_cgno[bitmap_nr] == UFS_CGNO_EMPTY) { sbi 98 fs/ufs/cylinder.c ucpi = sbi->s_ucpi[bitmap_nr]; sbi 101 fs/ufs/cylinder.c if (uspi->s_ncg > UFS_MAX_GROUP_LOADED && bitmap_nr >= sbi->s_cg_loaded) { sbi 117 fs/ufs/cylinder.c sbi->s_cgno[bitmap_nr] = UFS_CGNO_EMPTY; sbi 130 fs/ufs/cylinder.c struct ufs_sb_info * sbi = UFS_SB(sb); sbi 137 fs/ufs/cylinder.c uspi = sbi->s_uspi; sbi 145 fs/ufs/cylinder.c if (sbi->s_cgno[0] == cgno) { sbi 147 fs/ufs/cylinder.c return sbi->s_ucpi[0]; sbi 153 fs/ufs/cylinder.c if (sbi->s_cgno[cgno] != UFS_CGNO_EMPTY) { sbi 154 fs/ufs/cylinder.c if (sbi->s_cgno[cgno] != cgno) { sbi 161 fs/ufs/cylinder.c return sbi->s_ucpi[cgno]; sbi 166 fs/ufs/cylinder.c return sbi->s_ucpi[cgno]; sbi 173 fs/ufs/cylinder.c for (i = 0; i < sbi->s_cg_loaded && sbi->s_cgno[i] != cgno; i++); sbi 174 fs/ufs/cylinder.c if (i < sbi->s_cg_loaded && sbi->s_cgno[i] == cgno) { sbi 175 fs/ufs/cylinder.c cg = sbi->s_cgno[i]; sbi 176 fs/ufs/cylinder.c ucpi = sbi->s_ucpi[i]; sbi 178 fs/ufs/cylinder.c sbi->s_cgno[j] = sbi->s_cgno[j-1]; sbi 179 fs/ufs/cylinder.c sbi->s_ucpi[j] = sbi->s_ucpi[j-1]; sbi 181 fs/ufs/cylinder.c sbi->s_cgno[0] = cg; sbi 182 fs/ufs/cylinder.c sbi->s_ucpi[0] = ucpi; sbi 188 fs/ufs/cylinder.c if (sbi->s_cg_loaded < UFS_MAX_GROUP_LOADED) sbi 189 fs/ufs/cylinder.c sbi->s_cg_loaded++; sbi 192 fs/ufs/cylinder.c ucpi = sbi->s_ucpi[sbi->s_cg_loaded - 1]; sbi 193 fs/ufs/cylinder.c for (j = sbi->s_cg_loaded - 1; j > 0; j--) { sbi 194 fs/ufs/cylinder.c sbi->s_cgno[j] = sbi->s_cgno[j-1]; sbi 195 fs/ufs/cylinder.c sbi->s_ucpi[j] = sbi->s_ucpi[j-1]; sbi 197 fs/ufs/cylinder.c sbi->s_ucpi[0] = ucpi; sbi 201 fs/ufs/cylinder.c return sbi->s_ucpi[0]; sbi 175 fs/ufs/ialloc.c struct ufs_sb_info * sbi; sbi 195 fs/ufs/ialloc.c sbi = UFS_SB(sb); sbi 196 fs/ufs/ialloc.c uspi = sbi->s_uspi; sbi 198 fs/ufs/ialloc.c mutex_lock(&sbi->s_lock); sbi 204 fs/ufs/ialloc.c if (sbi->fs_cs(i).cs_nifree) { sbi 216 fs/ufs/ialloc.c if (sbi->fs_cs(i).cs_nifree) { sbi 230 fs/ufs/ialloc.c if (sbi->fs_cs(i).cs_nifree) { sbi 278 fs/ufs/ialloc.c fs32_sub(sb, &sbi->fs_cs(cg).cs_nifree, 1); sbi 283 fs/ufs/ialloc.c fs32_add(sb, &sbi->fs_cs(cg).cs_ndir, 1); sbi 337 fs/ufs/ialloc.c mutex_unlock(&sbi->s_lock); sbi 344 fs/ufs/ialloc.c mutex_unlock(&sbi->s_lock); sbi 350 fs/ufs/ialloc.c mutex_unlock(&sbi->s_lock); sbi 472 fs/ufs/super.c struct ufs_sb_info *sbi = UFS_SB(sb); sbi 473 fs/ufs/super.c struct ufs_sb_private_info *uspi = sbi->s_uspi; sbi 477 fs/ufs/super.c unsigned mtype = sbi->s_mount_opt & UFS_MOUNT_UFSTYPE; sbi 506 fs/ufs/super.c struct ufs_sb_info *sbi = UFS_SB(sb); sbi 507 fs/ufs/super.c struct ufs_sb_private_info *uspi = sbi->s_uspi; sbi 523 fs/ufs/super.c sbi->s_csp = (struct ufs_csum *)space; sbi 545 fs/ufs/super.c sbi->s_ucg = kmalloc_array(uspi->s_ncg, sizeof(struct buffer_head *), sbi 547 fs/ufs/super.c if (!sbi->s_ucg) sbi 550 fs/ufs/super.c sbi->s_ucg[i] = NULL; sbi 552 fs/ufs/super.c sbi->s_ucpi[i] = NULL; sbi 553 fs/ufs/super.c sbi->s_cgno[i] = UFS_CGNO_EMPTY; sbi 557 fs/ufs/super.c if (!(sbi->s_ucg[i] = sb_bread(sb, ufs_cgcmin(i)))) sbi 559 fs/ufs/super.c if (!ufs_cg_chkmagic (sb, (struct ufs_cylinder_group *) sbi->s_ucg[i]->b_data)) sbi 562 fs/ufs/super.c ufs_print_cylinder_stuff(sb, (struct ufs_cylinder_group *) sbi->s_ucg[i]->b_data); sbi 565 fs/ufs/super.c if (!(sbi->s_ucpi[i] = kmalloc (sizeof(struct ufs_cg_private_info), GFP_NOFS))) sbi 567 fs/ufs/super.c sbi->s_cgno[i] = UFS_CGNO_EMPTY; sbi 569 fs/ufs/super.c sbi->s_cg_loaded = 0; sbi 575 fs/ufs/super.c if (sbi->s_ucg) { sbi 577 fs/ufs/super.c if (sbi->s_ucg[i]) sbi 578 fs/ufs/super.c brelse (sbi->s_ucg[i]); sbi 579 fs/ufs/super.c kfree (sbi->s_ucg); sbi 581 fs/ufs/super.c kfree (sbi->s_ucpi[i]); sbi 646 fs/ufs/super.c struct ufs_sb_info *sbi = UFS_SB(sb); sbi 647 fs/ufs/super.c struct ufs_sb_private_info *uspi = sbi->s_uspi; sbi 658 fs/ufs/super.c base = space = (char*) sbi->s_csp; sbi 672 fs/ufs/super.c for (i = 0; i < sbi->s_cg_loaded; i++) { sbi 674 fs/ufs/super.c kfree (sbi->s_ucpi[i]); sbi 677 fs/ufs/super.c kfree (sbi->s_ucpi[i]); sbi 679 fs/ufs/super.c brelse (sbi->s_ucg[i]); sbi 680 fs/ufs/super.c kfree (sbi->s_ucg); sbi 718 fs/ufs/super.c struct ufs_sb_info *sbi; sbi 720 fs/ufs/super.c sbi = container_of(work, struct ufs_sb_info, sync_work.work); sbi 722 fs/ufs/super.c spin_lock(&sbi->work_lock); sbi 723 fs/ufs/super.c sbi->work_queued = 0; sbi 724 fs/ufs/super.c spin_unlock(&sbi->work_lock); sbi 726 fs/ufs/super.c ufs_sync_fs(sbi->sb, 1); sbi 731 fs/ufs/super.c struct ufs_sb_info *sbi = UFS_SB(sb); sbi 734 fs/ufs/super.c spin_lock(&sbi->work_lock); sbi 735 fs/ufs/super.c if (!sbi->work_queued) { sbi 737 fs/ufs/super.c queue_delayed_work(system_long_wq, &sbi->sync_work, delay); sbi 738 fs/ufs/super.c sbi->work_queued = 1; sbi 740 fs/ufs/super.c spin_unlock(&sbi->work_lock); sbi 745 fs/ufs/super.c struct ufs_sb_info * sbi = UFS_SB(sb); sbi 751 fs/ufs/super.c cancel_delayed_work_sync(&sbi->sync_work); sbi 753 fs/ufs/super.c ubh_brelse_uspi (sbi->s_uspi); sbi 754 fs/ufs/super.c kfree (sbi->s_uspi); sbi 755 fs/ufs/super.c kfree (sbi); sbi 780 fs/ufs/super.c struct ufs_sb_info * sbi; sbi 806 fs/ufs/super.c sbi = kzalloc(sizeof(struct ufs_sb_info), GFP_KERNEL); sbi 807 fs/ufs/super.c if (!sbi) sbi 809 fs/ufs/super.c sb->s_fs_info = sbi; sbi 810 fs/ufs/super.c sbi->sb = sb; sbi 814 fs/ufs/super.c mutex_init(&sbi->s_lock); sbi 815 fs/ufs/super.c spin_lock_init(&sbi->work_lock); sbi 816 fs/ufs/super.c INIT_DELAYED_WORK(&sbi->sync_work, delayed_sync_fs); sbi 821 fs/ufs/super.c sbi->s_mount_opt = 0; sbi 822 fs/ufs/super.c ufs_set_opt (sbi->s_mount_opt, ONERROR_LOCK); sbi 823 fs/ufs/super.c if (!ufs_parse_options ((char *) data, &sbi->s_mount_opt)) { sbi 827 fs/ufs/super.c if (!(sbi->s_mount_opt & UFS_MOUNT_UFSTYPE)) { sbi 834 fs/ufs/super.c ufs_set_opt (sbi->s_mount_opt, UFSTYPE_OLD); sbi 838 fs/ufs/super.c sbi->s_uspi = uspi; sbi 850 fs/ufs/super.c switch (sbi->s_mount_opt & UFS_MOUNT_UFSTYPE) { sbi 1028 fs/ufs/super.c sbi->s_bytesex = BYTESEX_LE; sbi 1038 fs/ufs/super.c sbi->s_bytesex = BYTESEX_BE; sbi 1049 fs/ufs/super.c if ((((sbi->s_mount_opt & UFS_MOUNT_UFSTYPE) == UFS_MOUNT_UFSTYPE_NEXTSTEP) sbi 1050 fs/ufs/super.c || ((sbi->s_mount_opt & UFS_MOUNT_UFSTYPE) == UFS_MOUNT_UFSTYPE_NEXTSTEP_CD) sbi 1051 fs/ufs/super.c || ((sbi->s_mount_opt & UFS_MOUNT_UFSTYPE) == UFS_MOUNT_UFSTYPE_OPENSTEP)) sbi 1111 fs/ufs/super.c sbi->s_flags = flags;/*after that line some functions use s_flags*/ sbi 1255 fs/ufs/super.c if ((sbi->s_mount_opt & UFS_MOUNT_UFSTYPE) == UFS_MOUNT_UFSTYPE_44BSD || sbi 1256 fs/ufs/super.c (sbi->s_mount_opt & UFS_MOUNT_UFSTYPE) == UFS_MOUNT_UFSTYPE_UFS2) sbi 1298 fs/ufs/super.c kfree(sbi); sbi 1394 fs/ufs/super.c struct ufs_sb_info *sbi = UFS_SB(root->d_sb); sbi 1395 fs/ufs/super.c unsigned mval = sbi->s_mount_opt & UFS_MOUNT_UFSTYPE; sbi 1403 fs/ufs/super.c mval = sbi->s_mount_opt & UFS_MOUNT_ONERROR; sbi 33 include/linux/f2fs_fs.h #define F2FS_ROOT_INO(sbi) ((sbi)->root_ino_num) sbi 34 include/linux/f2fs_fs.h #define F2FS_NODE_INO(sbi) ((sbi)->node_ino_num) sbi 35 include/linux/f2fs_fs.h #define F2FS_META_INO(sbi) ((sbi)->meta_ino_num) sbi 41 include/linux/f2fs_fs.h #define f2fs_has_strict_mode(sbi) \ sbi 42 include/linux/f2fs_fs.h (sbi->s_encoding_flags & F2FS_ENC_STRICT_MODE_FL) sbi 44 include/linux/f2fs_fs.h #define F2FS_IO_SIZE(sbi) (1 << F2FS_OPTION(sbi).write_io_size_bits) /* Blocks */ sbi 45 include/linux/f2fs_fs.h #define F2FS_IO_SIZE_KB(sbi) (1 << (F2FS_OPTION(sbi).write_io_size_bits + 2)) /* KB */ sbi 46 include/linux/f2fs_fs.h #define F2FS_IO_SIZE_BYTES(sbi) (1 << (F2FS_OPTION(sbi).write_io_size_bits + 12)) /* B */ sbi 47 include/linux/f2fs_fs.h #define F2FS_IO_SIZE_BITS(sbi) (F2FS_OPTION(sbi).write_io_size_bits) /* power of 2 */ sbi 48 include/linux/f2fs_fs.h #define F2FS_IO_SIZE_MASK(sbi) (F2FS_IO_SIZE(sbi) - 1) sbi 49 include/linux/f2fs_fs.h #define F2FS_IO_ALIGNED(sbi) (F2FS_IO_SIZE(sbi) > 1) sbi 1605 include/trace/events/f2fs.h TP_PROTO(struct f2fs_sb_info *sbi, unsigned int node_cnt, sbi 1608 include/trace/events/f2fs.h TP_ARGS(sbi, node_cnt, tree_cnt), sbi 1617 include/trace/events/f2fs.h __entry->dev = sbi->sb->s_dev; sbi 1691 include/trace/events/f2fs.h TP_PROTO(struct f2fs_sb_info *sbi, unsigned int mode, int ret), sbi 1693 include/trace/events/f2fs.h TP_ARGS(sbi, mode, ret), sbi 1702 include/trace/events/f2fs.h __entry->dev = sbi->sb->s_dev; sbi 178 sound/drivers/opl3/opl3_oss.c struct sbi_instrument sbi; sbi 193 sound/drivers/opl3/opl3_oss.c if (count < (int)sizeof(sbi)) { sbi 197 sound/drivers/opl3/opl3_oss.c if (copy_from_user(&sbi, buf, sizeof(sbi))) sbi 200 sound/drivers/opl3/opl3_oss.c if (sbi.channel < 0 || sbi.channel >= SBFM_MAXINSTR) { sbi 202 sound/drivers/opl3/opl3_oss.c sbi.channel); sbi 207 sound/drivers/opl3/opl3_oss.c sprintf(name, "Chan%d", sbi.channel); sbi 209 sound/drivers/opl3/opl3_oss.c err = snd_opl3_load_patch(opl3, sbi.channel, 127, type, name, NULL, sbi 210 sound/drivers/opl3/opl3_oss.c sbi.operators); sbi 214 sound/drivers/opl3/opl3_oss.c return sizeof(sbi);