Lines Matching defs:sbinfo
213 struct shmem_sb_info *sbinfo = SHMEM_SB(inode->i_sb);
220 if (sbinfo->max_blocks) {
221 if (percpu_counter_compare(&sbinfo->used_blocks,
222 sbinfo->max_blocks - pages) > 0)
229 percpu_counter_add(&sbinfo->used_blocks, pages);
246 struct shmem_sb_info *sbinfo = SHMEM_SB(inode->i_sb);
251 if (sbinfo->max_blocks)
252 percpu_counter_sub(&sbinfo->used_blocks, pages);
332 struct shmem_sb_info *sbinfo = SHMEM_SB(sb);
336 raw_spin_lock(&sbinfo->stat_lock);
337 if (sbinfo->max_inodes) {
338 if (sbinfo->free_ispace < BOGO_INODE_SIZE) {
339 raw_spin_unlock(&sbinfo->stat_lock);
342 sbinfo->free_ispace -= BOGO_INODE_SIZE;
345 ino = sbinfo->next_ino++;
347 ino = sbinfo->next_ino++;
348 if (unlikely(!sbinfo->full_inums &&
357 sbinfo->next_ino = 1;
358 ino = sbinfo->next_ino++;
362 raw_spin_unlock(&sbinfo->stat_lock);
378 next_ino = per_cpu_ptr(sbinfo->ino_batch, get_cpu());
381 raw_spin_lock(&sbinfo->stat_lock);
382 ino = sbinfo->next_ino;
383 sbinfo->next_ino += SHMEM_INO_BATCH;
384 raw_spin_unlock(&sbinfo->stat_lock);
398 struct shmem_sb_info *sbinfo = SHMEM_SB(sb);
399 if (sbinfo->max_inodes) {
400 raw_spin_lock(&sbinfo->stat_lock);
401 sbinfo->free_ispace += BOGO_INODE_SIZE + freed_ispace;
402 raw_spin_unlock(&sbinfo->stat_lock);
612 static unsigned long shmem_unused_huge_shrink(struct shmem_sb_info *sbinfo,
623 if (list_empty(&sbinfo->shrinklist))
626 spin_lock(&sbinfo->shrinklist_lock);
627 list_for_each_safe(pos, next, &sbinfo->shrinklist) {
648 sbinfo->shrinklist_len--;
652 spin_unlock(&sbinfo->shrinklist_lock);
713 spin_lock(&sbinfo->shrinklist_lock);
714 list_move(&info->shrinklist, &sbinfo->shrinklist);
715 sbinfo->shrinklist_len++;
716 spin_unlock(&sbinfo->shrinklist_lock);
727 struct shmem_sb_info *sbinfo = SHMEM_SB(sb);
729 if (!READ_ONCE(sbinfo->shrinklist_len))
732 return shmem_unused_huge_shrink(sbinfo, sc, 0);
738 struct shmem_sb_info *sbinfo = SHMEM_SB(sb);
739 return READ_ONCE(sbinfo->shrinklist_len);
751 static unsigned long shmem_unused_huge_shrink(struct shmem_sb_info *sbinfo,
1253 struct shmem_sb_info *sbinfo = SHMEM_SB(inode->i_sb);
1262 spin_lock(&sbinfo->shrinklist_lock);
1265 sbinfo->shrinklist_len--;
1267 spin_unlock(&sbinfo->shrinklist_lock);
1281 simple_xattrs_free(&info->xattrs, sbinfo->max_inodes ? &freed : NULL);
1445 struct shmem_sb_info *sbinfo = SHMEM_SB(inode->i_sb);
1459 if (WARN_ON_ONCE((info->flags & VM_LOCKED) || sbinfo->noswap))
1565 static struct mempolicy *shmem_get_sbmpol(struct shmem_sb_info *sbinfo)
1568 if (sbinfo->mpol) {
1569 raw_spin_lock(&sbinfo->stat_lock); /* prevent replace/use races */
1570 mpol = sbinfo->mpol;
1572 raw_spin_unlock(&sbinfo->stat_lock);
1580 static inline struct mempolicy *shmem_get_sbmpol(struct shmem_sb_info *sbinfo)
1951 struct shmem_sb_info *sbinfo;
1968 sbinfo = SHMEM_SB(inode->i_sb);
2053 ret = shmem_unused_huge_shrink(sbinfo, NULL, 1);
2084 spin_lock(&sbinfo->shrinklist_lock);
2091 &sbinfo->shrinklist);
2092 sbinfo->shrinklist_len++;
2094 spin_unlock(&sbinfo->shrinklist_lock);
2457 struct shmem_sb_info *sbinfo = SHMEM_SB(sb);
2491 if (sbinfo->noswap)
2507 shmem_get_sbmpol(sbinfo));
3047 struct shmem_sb_info *sbinfo = SHMEM_SB(inode->i_sb);
3105 if (sbinfo->max_blocks && end - start > sbinfo->max_blocks) {
3199 struct shmem_sb_info *sbinfo = SHMEM_SB(dentry->d_sb);
3204 if (sbinfo->max_blocks) {
3205 buf->f_blocks = sbinfo->max_blocks;
3207 buf->f_bfree = sbinfo->max_blocks -
3208 percpu_counter_sum(&sbinfo->used_blocks);
3210 if (sbinfo->max_inodes) {
3211 buf->f_files = sbinfo->max_inodes;
3212 buf->f_ffree = sbinfo->free_ispace / BOGO_INODE_SIZE;
3606 struct shmem_sb_info *sbinfo = SHMEM_SB(inode->i_sb);
3612 if (sbinfo->max_inodes) {
3618 raw_spin_lock(&sbinfo->stat_lock);
3619 if (sbinfo->free_ispace < ispace)
3622 sbinfo->free_ispace -= ispace;
3623 raw_spin_unlock(&sbinfo->stat_lock);
3652 raw_spin_lock(&sbinfo->stat_lock);
3653 sbinfo->free_ispace += ispace;
3654 raw_spin_unlock(&sbinfo->stat_lock);
3680 struct shmem_sb_info *sbinfo = SHMEM_SB(inode->i_sb);
3685 if (value && sbinfo->max_inodes) {
3687 raw_spin_lock(&sbinfo->stat_lock);
3688 if (sbinfo->free_ispace < ispace)
3691 sbinfo->free_ispace -= ispace;
3692 raw_spin_unlock(&sbinfo->stat_lock);
3700 if (old_xattr && sbinfo->max_inodes)
3709 raw_spin_lock(&sbinfo->stat_lock);
3710 sbinfo->free_ispace += ispace;
3711 raw_spin_unlock(&sbinfo->stat_lock);
4121 struct shmem_sb_info *sbinfo = SHMEM_SB(fc->root->d_sb);
4126 raw_spin_lock(&sbinfo->stat_lock);
4127 used_isp = sbinfo->max_inodes * BOGO_INODE_SIZE - sbinfo->free_ispace;
4130 if (!sbinfo->max_blocks) {
4134 if (percpu_counter_compare(&sbinfo->used_blocks,
4141 if (!sbinfo->max_inodes) {
4152 sbinfo->next_ino > UINT_MAX) {
4156 if ((ctx->seen & SHMEM_SEEN_NOSWAP) && ctx->noswap && !sbinfo->noswap) {
4160 if (!(ctx->seen & SHMEM_SEEN_NOSWAP) && !ctx->noswap && sbinfo->noswap) {
4174 (ctx->qlimits.name## hardlimit != sbinfo->qlimits.name## hardlimit))
4184 sbinfo->huge = ctx->huge;
4186 sbinfo->full_inums = ctx->full_inums;
4188 sbinfo->max_blocks = ctx->blocks;
4190 sbinfo->max_inodes = ctx->inodes;
4191 sbinfo->free_ispace = ctx->inodes * BOGO_INODE_SIZE - used_isp;
4198 mpol = sbinfo->mpol;
4199 sbinfo->mpol = ctx->mpol; /* transfers initial ref */
4204 sbinfo->noswap = true;
4206 raw_spin_unlock(&sbinfo->stat_lock);
4210 raw_spin_unlock(&sbinfo->stat_lock);
4216 struct shmem_sb_info *sbinfo = SHMEM_SB(root->d_sb);
4219 if (sbinfo->max_blocks != shmem_default_max_blocks())
4220 seq_printf(seq, ",size=%luk", K(sbinfo->max_blocks));
4221 if (sbinfo->max_inodes != shmem_default_max_inodes())
4222 seq_printf(seq, ",nr_inodes=%lu", sbinfo->max_inodes);
4223 if (sbinfo->mode != (0777 | S_ISVTX))
4224 seq_printf(seq, ",mode=%03ho", sbinfo->mode);
4225 if (!uid_eq(sbinfo->uid, GLOBAL_ROOT_UID))
4227 from_kuid_munged(&init_user_ns, sbinfo->uid));
4228 if (!gid_eq(sbinfo->gid, GLOBAL_ROOT_GID))
4230 from_kgid_munged(&init_user_ns, sbinfo->gid));
4252 if (IS_ENABLED(CONFIG_TMPFS_INODE64) || sbinfo->full_inums)
4253 seq_printf(seq, ",inode%d", (sbinfo->full_inums ? 64 : 32));
4256 if (sbinfo->huge)
4257 seq_printf(seq, ",huge=%s", shmem_format_huge(sbinfo->huge));
4259 mpol = shmem_get_sbmpol(sbinfo);
4262 if (sbinfo->noswap)
4271 struct shmem_sb_info *sbinfo = SHMEM_SB(sb);
4276 free_percpu(sbinfo->ino_batch);
4277 percpu_counter_destroy(&sbinfo->used_blocks);
4278 mpol_put(sbinfo->mpol);
4279 kfree(sbinfo);
4287 struct shmem_sb_info *sbinfo;
4291 sbinfo = kzalloc(max((int)sizeof(struct shmem_sb_info),
4293 if (!sbinfo)
4296 sb->s_fs_info = sbinfo;
4311 sbinfo->noswap = ctx->noswap;
4320 sbinfo->max_blocks = ctx->blocks;
4321 sbinfo->max_inodes = ctx->inodes;
4322 sbinfo->free_ispace = sbinfo->max_inodes * BOGO_INODE_SIZE;
4324 sbinfo->ino_batch = alloc_percpu(ino_t);
4325 if (!sbinfo->ino_batch)
4328 sbinfo->uid = ctx->uid;
4329 sbinfo->gid = ctx->gid;
4330 sbinfo->full_inums = ctx->full_inums;
4331 sbinfo->mode = ctx->mode;
4332 sbinfo->huge = ctx->huge;
4333 sbinfo->mpol = ctx->mpol;
4336 raw_spin_lock_init(&sbinfo->stat_lock);
4337 if (percpu_counter_init(&sbinfo->used_blocks, 0, GFP_KERNEL))
4339 spin_lock_init(&sbinfo->shrinklist_lock);
4340 INIT_LIST_HEAD(&sbinfo->shrinklist);
4362 /* Copy the default limits from ctx into sbinfo */
4363 memcpy(&sbinfo->qlimits, &ctx->qlimits,
4371 inode = shmem_get_inode(&nop_mnt_idmap, sb, NULL, S_IFDIR | sbinfo->mode, 0,
4377 inode->i_uid = sbinfo->uid;
4378 inode->i_gid = sbinfo->gid;