• Home
  • Raw
  • Download

Lines Matching refs:fc

485 bool mount_capable(struct fs_context *fc)  in mount_capable()  argument
487 if (!(fc->fs_type->fs_flags & FS_USERNS_MOUNT)) in mount_capable()
490 return ns_capable(fc->user_ns, CAP_SYS_ADMIN); in mount_capable()
511 struct super_block *sget_fc(struct fs_context *fc, in sget_fc() argument
517 struct user_namespace *user_ns = fc->global ? &init_user_ns : fc->user_ns; in sget_fc()
523 hlist_for_each_entry(old, &fc->fs_type->fs_supers, s_instances) { in sget_fc()
524 if (test(old, fc)) in sget_fc()
530 s = alloc_super(fc->fs_type, fc->sb_flags, user_ns); in sget_fc()
536 s->s_fs_info = fc->s_fs_info; in sget_fc()
537 err = set(s, fc); in sget_fc()
544 fc->s_fs_info = NULL; in sget_fc()
545 s->s_type = fc->fs_type; in sget_fc()
546 s->s_iflags |= fc->s_iflags; in sget_fc()
903 int reconfigure_super(struct fs_context *fc) in reconfigure_super() argument
905 struct super_block *sb = fc->root->d_sb; in reconfigure_super()
908 bool force = fc->sb_flags & SB_FORCE; in reconfigure_super()
910 if (fc->sb_flags_mask & ~MS_RMT_MASK) in reconfigure_super()
915 retval = security_sb_remount(sb, fc->security); in reconfigure_super()
919 if (fc->sb_flags_mask & SB_RDONLY) { in reconfigure_super()
921 if (!(fc->sb_flags & SB_RDONLY) && bdev_read_only(sb->s_bdev)) in reconfigure_super()
925 remount_ro = (fc->sb_flags & SB_RDONLY) && !sb_rdonly(sb); in reconfigure_super()
956 if (fc->ops->reconfigure) { in reconfigure_super()
957 retval = fc->ops->reconfigure(fc); in reconfigure_super()
967 WRITE_ONCE(sb->s_flags, ((sb->s_flags & ~fc->sb_flags_mask) | in reconfigure_super()
968 (fc->sb_flags & fc->sb_flags_mask))); in reconfigure_super()
995 struct fs_context *fc; in do_emergency_remount_callback() local
997 fc = fs_context_for_reconfigure(sb->s_root, in do_emergency_remount_callback()
999 if (!IS_ERR(fc)) { in do_emergency_remount_callback()
1000 if (parse_monolithic_mount_data(fc, NULL) == 0) in do_emergency_remount_callback()
1001 (void)reconfigure_super(fc); in do_emergency_remount_callback()
1002 put_fs_context(fc); in do_emergency_remount_callback()
1121 int set_anon_super_fc(struct super_block *sb, struct fs_context *fc) in set_anon_super_fc() argument
1127 static int test_keyed_super(struct super_block *sb, struct fs_context *fc) in test_keyed_super() argument
1129 return sb->s_fs_info == fc->s_fs_info; in test_keyed_super()
1132 static int test_single_super(struct super_block *s, struct fs_context *fc) in test_single_super() argument
1162 int vfs_get_super(struct fs_context *fc, in vfs_get_super() argument
1165 struct fs_context *fc)) in vfs_get_super()
1186 sb = sget_fc(fc, test, set_anon_super_fc); in vfs_get_super()
1191 err = fill_super(sb, fc); in vfs_get_super()
1196 fc->root = dget(sb->s_root); in vfs_get_super()
1198 fc->root = dget(sb->s_root); in vfs_get_super()
1200 err = reconfigure_super(fc); in vfs_get_super()
1202 dput(fc->root); in vfs_get_super()
1203 fc->root = NULL; in vfs_get_super()
1217 int get_tree_nodev(struct fs_context *fc, in get_tree_nodev() argument
1219 struct fs_context *fc)) in get_tree_nodev()
1221 return vfs_get_super(fc, vfs_get_independent_super, fill_super); in get_tree_nodev()
1225 int get_tree_single(struct fs_context *fc, in get_tree_single() argument
1227 struct fs_context *fc)) in get_tree_single()
1229 return vfs_get_super(fc, vfs_get_single_super, fill_super); in get_tree_single()
1233 int get_tree_single_reconf(struct fs_context *fc, in get_tree_single_reconf() argument
1235 struct fs_context *fc)) in get_tree_single_reconf()
1237 return vfs_get_super(fc, vfs_get_single_reconf_super, fill_super); in get_tree_single_reconf()
1241 int get_tree_keyed(struct fs_context *fc, in get_tree_keyed() argument
1243 struct fs_context *fc), in get_tree_keyed() argument
1246 fc->s_fs_info = key; in get_tree_keyed()
1247 return vfs_get_super(fc, vfs_get_keyed_super, fill_super); in get_tree_keyed()
1262 static int set_bdev_super_fc(struct super_block *s, struct fs_context *fc) in set_bdev_super_fc() argument
1264 return set_bdev_super(s, fc->sget_key); in set_bdev_super_fc()
1267 static int test_bdev_super_fc(struct super_block *s, struct fs_context *fc) in test_bdev_super_fc() argument
1269 return s->s_bdev == fc->sget_key; in test_bdev_super_fc()
1277 int get_tree_bdev(struct fs_context *fc, in get_tree_bdev() argument
1286 if (!(fc->sb_flags & SB_RDONLY)) in get_tree_bdev()
1289 if (!fc->source) in get_tree_bdev()
1290 return invalf(fc, "No source specified"); in get_tree_bdev()
1292 bdev = blkdev_get_by_path(fc->source, mode, fc->fs_type); in get_tree_bdev()
1294 errorf(fc, "%s: Can't open blockdev", fc->source); in get_tree_bdev()
1306 warnf(fc, "%pg: Can't mount, blockdev is frozen", bdev); in get_tree_bdev()
1310 fc->sb_flags |= SB_NOSEC; in get_tree_bdev()
1311 fc->sget_key = bdev; in get_tree_bdev()
1312 s = sget_fc(fc, test_bdev_super_fc, set_bdev_super_fc); in get_tree_bdev()
1321 if ((fc->sb_flags ^ s->s_flags) & SB_RDONLY) { in get_tree_bdev()
1322 warnf(fc, "%pg: Can't mount, would change RO state", bdev); in get_tree_bdev()
1342 error = fill_super(s, fc); in get_tree_bdev()
1352 BUG_ON(fc->root); in get_tree_bdev()
1353 fc->root = dget(s->s_root); in get_tree_bdev()
1476 struct fs_context *fc; in reconfigure_single() local
1484 fc = fs_context_for_reconfigure(s->s_root, flags, MS_RMT_MASK); in reconfigure_single()
1485 if (IS_ERR(fc)) in reconfigure_single()
1486 return PTR_ERR(fc); in reconfigure_single()
1488 ret = parse_monolithic_mount_data(fc, data); in reconfigure_single()
1492 ret = reconfigure_super(fc); in reconfigure_single()
1494 put_fs_context(fc); in reconfigure_single()
1536 int vfs_get_tree(struct fs_context *fc) in vfs_get_tree() argument
1541 if (fc->root) in vfs_get_tree()
1547 error = fc->ops->get_tree(fc); in vfs_get_tree()
1551 if (!fc->root) { in vfs_get_tree()
1553 fc->fs_type->name); in vfs_get_tree()
1560 sb = fc->root->d_sb; in vfs_get_tree()
1572 error = security_sb_set_mnt_opts(sb, fc->security, 0, NULL); in vfs_get_tree()
1574 fc_drop_locked(fc); in vfs_get_tree()
1585 "negative value (%lld)\n", fc->fs_type->name, sb->s_maxbytes); in vfs_get_tree()