Lines Matching +full:non +full:- +full:negative
1 // SPDX-License-Identifier: GPL-2.0-only
100 ino_t ino = file_inode(file)->i_ino; in nfsctl_transaction_write()
105 return -EINVAL; in nfsctl_transaction_write()
121 if (! file->private_data) { in nfsctl_transaction_read()
123 * causes a 0-byte write so that the file can return in nfsctl_transaction_read()
150 seq = file->private_data; in exports_net_open()
151 seq->private = nn->svc_export_cache; in exports_net_open()
157 return exports_net_open(current->nsproxy->net_ns, file); in exports_proc_open()
169 return exports_net_open(inode->i_sb->s_fs_info, file); in exports_nfsd_open()
231 /*----------------------------------------------------------------------------*/
233 * payload - write methods
238 return file_inode(file)->i_sb->s_fs_info; in netns()
242 * write_unlock_ip - Release all locks used by a client
247 * buf: '\n'-terminated C string containing a
253 * On error: return code is negative errno value
265 return -EINVAL; in write_unlock_ip()
267 if (buf[size-1] != '\n') in write_unlock_ip()
268 return -EINVAL; in write_unlock_ip()
272 return -EINVAL; in write_unlock_ip()
275 return -EINVAL; in write_unlock_ip()
281 * write_unlock_fs - Release all locks on a local file system
286 * buf: '\n'-terminated C string containing the
292 * On error: return code is negative errno value
302 return -EINVAL; in write_unlock_fs()
304 if (buf[size-1] != '\n') in write_unlock_fs()
305 return -EINVAL; in write_unlock_fs()
309 return -EINVAL; in write_unlock_fs()
324 error = nlmsvc_unlock_all_by_sb(path.dentry->d_sb); in write_unlock_fs()
331 * write_filehandle - Get a variable-length NFS file handle by path
333 * On input, the buffer contains a '\n'-terminated C string comprised of
345 * On success: passed-in buffer filled with '\n'-terminated C
349 * On error: return code is negative errno value
361 return -EINVAL; in write_filehandle()
363 if (buf[size-1] != '\n') in write_filehandle()
364 return -EINVAL; in write_filehandle()
365 buf[size-1] = 0; in write_filehandle()
370 return -EINVAL; in write_filehandle()
375 return -EINVAL; in write_filehandle()
382 return -EINVAL; in write_filehandle()
386 return -EINVAL; in write_filehandle()
391 return -ENOMEM; in write_filehandle()
401 mesg[-1] = '\n'; in write_filehandle()
402 return mesg - buf; in write_filehandle()
406 * write_threads - Start NFSD, or report the current number of running threads
412 * On success: passed-in buffer filled with '\n'-terminated C
424 * size: non-zero length of C string in @buf
427 * passed-in buffer filled with '\n'-terminated C
431 * On error: return code is zero or a negative errno value
445 return -EINVAL; in write_threads()
446 rv = nfsd_svc(newthreads, net, file->f_cred); in write_threads()
456 * write_pool_threads - Set or report the current number of threads per pool
465 * buf: C string containing whitespace-
469 * size: non-zero length of C string in @buf
471 * On success: passed-in buffer filled with '\n'-terminated C
475 * On error: return code is zero or a negative errno value
504 rv = -ENOMEM; in write_pool_threads()
511 if (rv == -ENOENT) in write_pool_threads()
515 rv = -EINVAL; in write_pool_threads()
531 snprintf(mesg, size, "%d%c", nthreads[i], (i == npools-1 ? '\n' : ' ')); in write_pool_threads()
533 size -= len; in write_pool_threads()
536 rv = mesg - buf; in write_pool_threads()
557 * +4, unless -4.0 is present. in nfsd_print_version_support()
561 supported ? '+' : '-', vers, minor); in nfsd_print_version_support()
574 if (nn->nfsd_serv) in __write_versions()
576 * nn->nfsd_serv->sv_xdrsize, and reallocing in __write_versions()
579 return -EBUSY; in __write_versions()
580 if (buf[size-1] != '\n') in __write_versions()
581 return -EINVAL; in __write_versions()
582 buf[size-1] = 0; in __write_versions()
586 if (len <= 0) return -EINVAL; in __write_versions()
591 if (sign == '+' || sign == '-') in __write_versions()
597 return -EINVAL; in __write_versions()
599 return -EINVAL; in __write_versions()
602 cmd = sign == '-' ? NFSD_CLEAR : NFSD_SET; in __write_versions()
611 return -EINVAL; in __write_versions()
615 * or we have -4 and at least one minor is enabled. in __write_versions()
624 return -EINVAL; in __write_versions()
643 minor = -1; in __write_versions()
649 remaining -= len; in __write_versions()
660 return -EINVAL; in __write_versions()
665 * write_versions - Set or report the available NFS protocol versions
671 * On success: passed-in buffer filled with '\n'-terminated C
672 * string containing positive or negative integer
676 * On error: return code is zero or a negative errno value
681 * buf: C string containing whitespace-
682 * separated positive or negative
685 * or disable ("-n")
686 * size: non-zero length of C string in @buf
689 * been updated; passed-in buffer filled with
690 * '\n'-terminated C string containing positive
691 * or negative integer values representing the
694 * On error: return code is zero or a negative errno value
707 * Zero-length write. Return a list of NFSD's current listener
714 if (nn->nfsd_serv == NULL) in __write_ports_names()
716 return svc_xprt_names(nn->nfsd_serv, buf, SIMPLE_TRANSACTION_LIMIT); in __write_ports_names()
732 return -EINVAL; in __write_ports_addfd()
736 return -EINVAL; in __write_ports_addfd()
743 err = svc_addsock(nn->nfsd_serv, fd, buf, SIMPLE_TRANSACTION_LIMIT, cred); in __write_ports_addfd()
750 nn->nfsd_serv->sv_nrthreads--; in __write_ports_addfd()
766 return -EINVAL; in __write_ports_addxprt()
769 return -EINVAL; in __write_ports_addxprt()
775 err = svc_create_xprt(nn->nfsd_serv, transport, net, in __write_ports_addxprt()
780 err = svc_create_xprt(nn->nfsd_serv, transport, net, in __write_ports_addxprt()
782 if (err < 0 && err != -EAFNOSUPPORT) in __write_ports_addxprt()
786 nn->nfsd_serv->sv_nrthreads--; in __write_ports_addxprt()
789 xprt = svc_find_xprt(nn->nfsd_serv, transport, net, PF_INET, port); in __write_ports_addxprt()
806 return __write_ports_addfd(buf, net, file->f_cred); in __write_ports()
809 return __write_ports_addxprt(buf, net, file->f_cred); in __write_ports()
811 return -EINVAL; in __write_ports()
815 * write_ports - Pass a socket file descriptor or transport name to listen on
821 * On success: passed-in buffer filled with a '\n'-terminated C
822 * string containing a whitespace-separated list of
825 * On error: return code is zero or a negative errno value
836 * size: non-zero length of C string in @buf
839 * passed-in buffer filled with a '\n'-terminated C
843 * On error: return code is a negative errno value
852 * size: non-zero length of C string in @buf
855 * On error: return code is a negative errno value
871 * write_maxblksize - Set or report the current NFS blksize
883 * size: non-zero length of C string in @buf
885 * On success: passed-in buffer filled with '\n'-terminated C string
889 * On error: return code is zero or a negative errno value
906 bsize &= ~(1024-1); in write_maxblksize()
908 if (nn->nfsd_serv) { in write_maxblksize()
910 return -EBUSY; in write_maxblksize()
921 * write_maxconn - Set or report the current max number of connections
932 * size: non-zero length of C string in @buf
934 * On success: passed-in buffer filled with '\n'-terminated C string
938 * On error: return code is zero or a negative errno value
944 unsigned int maxconn = nn->max_connections; in write_maxconn()
951 nn->max_connections = maxconn; in write_maxconn()
965 if (nn->nfsd_serv) in __nfsd4_write_time()
966 return -EBUSY; in __nfsd4_write_time()
974 * - Too short: the briefest network outage may in __nfsd4_write_time()
977 * - Too long: do you really want reboot recovery in __nfsd4_write_time()
983 return -EINVAL; in __nfsd4_write_time()
1002 * write_leasetime - Set or report the current NFSv4 lease time
1014 * size: non-zero length of C string in @buf
1016 * On success: passed-in buffer filled with '\n'-terminated C
1020 * On error: return code is zero or a negative errno value
1025 return nfsd4_write_time(file, buf, size, &nn->nfsd4_lease, nn); in write_leasetime()
1029 * write_gracetime - Set or report current NFSv4 grace period time
1034 * lease-period time, but we don't try to enforce this. (In the common
1041 return nfsd4_write_time(file, buf, size, &nn->nfsd4_grace, nn); in write_gracetime()
1052 if (nn->nfsd_serv) in __write_recoverydir()
1053 return -EBUSY; in __write_recoverydir()
1054 if (size > PATH_MAX || buf[size-1] != '\n') in __write_recoverydir()
1055 return -EINVAL; in __write_recoverydir()
1056 buf[size-1] = 0; in __write_recoverydir()
1061 return -EINVAL; in __write_recoverydir()
1073 * write_recoverydir - Set or report the pathname of the recovery directory
1086 * size: non-zero length of C string in @buf
1088 * On success: passed-in buffer filled with '\n'-terminated C string
1091 * On error: return code is zero or a negative errno value
1105 * write_v4_end_grace - release grace period for nfsd's v4.x lock manager
1114 * size: non-zero length of C string in @buf
1116 * passed-in buffer filled with "Y" or "N" with a newline
1117 * and NULL-terminated C string. This indicates whether
1133 if (!nn->nfsd_serv) in write_v4_end_grace()
1134 return -EBUSY; in write_v4_end_grace()
1138 return -EINVAL; in write_v4_end_grace()
1143 nn->grace_ended ? 'Y' : 'N'); in write_v4_end_grace()
1148 /*----------------------------------------------------------------------------*/
1160 inode->i_ino = iunique(sb, NFSD_MaxReserved); in nfsd_get_inode()
1161 inode->i_mode = mode; in nfsd_get_inode()
1162 inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode); in nfsd_get_inode()
1165 inode->i_fop = &simple_dir_operations; in nfsd_get_inode()
1166 inode->i_op = &simple_dir_inode_operations; in nfsd_get_inode()
1178 inode = nfsd_get_inode(dir->i_sb, mode); in __nfsd_mkdir()
1180 return -ENOMEM; in __nfsd_mkdir()
1182 inode->i_private = ncl; in __nfsd_mkdir()
1183 kref_get(&ncl->cl_ref); in __nfsd_mkdir()
1193 struct inode *dir = parent->d_inode; in nfsd_mkdir()
1195 int ret = -ENOMEM; in nfsd_mkdir()
1215 struct nfsdfs_client *ncl = inode->i_private; in clear_ncl()
1217 inode->i_private = NULL; in clear_ncl()
1218 kref_put(&ncl->cl_ref, ncl->cl_release); in clear_ncl()
1223 struct nfsdfs_client *nc = inode->i_private; in __get_nfsdfs_client()
1226 kref_get(&nc->cl_ref); in __get_nfsdfs_client()
1256 list_for_each_entry_safe(dentry, tmp, &root->d_subdirs, d_child) { in nfsdfs_remove_files()
1276 for (i = 0; files->name && files->name[0]; i++, files++) { in nfsdfs_create_files()
1277 if (!files->name) in nfsdfs_create_files()
1279 dentry = d_alloc_name(root, files->name); in nfsdfs_create_files()
1282 inode = nfsd_get_inode(d_inode(root)->i_sb, in nfsdfs_create_files()
1283 S_IFREG | files->mode); in nfsdfs_create_files()
1288 inode->i_fop = files->ops; in nfsdfs_create_files()
1289 inode->i_private = __get_nfsdfs_client(dir); in nfsdfs_create_files()
1298 return -ENOMEM; in nfsdfs_create_files()
1312 dentry = nfsd_mkdir(nn->nfsd_client_dir, ncl, name); in nfsd_client_mkdir()
1326 struct inode *dir = d_inode(dentry->d_parent); in nfsd_client_rmdir()
1344 struct nfsd_net *nn = net_generic(current->nsproxy->net_ns, in nfsd_fill_super()
1381 dentry = nfsd_mkdir(sb->s_root, NULL, "clients"); in nfsd_fill_super()
1384 nn->nfsd_client_dir = dentry; in nfsd_fill_super()
1390 return get_tree_keyed(fc, nfsd_fill_super, get_net(fc->net_ns)); in nfsd_fs_get_tree()
1395 if (fc->s_fs_info) in nfsd_fs_free_fc()
1396 put_net(fc->s_fs_info); in nfsd_fs_free_fc()
1406 put_user_ns(fc->user_ns); in nfsd_init_fs_context()
1407 fc->user_ns = get_user_ns(fc->net_ns->user_ns); in nfsd_init_fs_context()
1408 fc->ops = &nfsd_fs_context_ops; in nfsd_init_fs_context()
1414 struct net *net = sb->s_fs_info; in nfsd_umount()
1436 nn->nfsd_mnt = mnt; in get_nfsdfs()
1447 return -ENOMEM; in create_proc_exports_entry()
1451 return -ENOMEM; in create_proc_exports_entry()
1475 nn->nfsd_versions = NULL; in nfsd_init_net()
1476 nn->nfsd4_minorversions = NULL; in nfsd_init_net()
1480 nn->nfsd4_lease = 90; /* default lease time */ in nfsd_init_net()
1481 nn->nfsd4_grace = 90; in nfsd_init_net()
1482 nn->somebody_reclaimed = false; in nfsd_init_net()
1483 nn->track_reclaim_completes = false; in nfsd_init_net()
1484 nn->clverifier_counter = prandom_u32(); in nfsd_init_net()
1485 nn->clientid_base = prandom_u32(); in nfsd_init_net()
1486 nn->clientid_counter = nn->clientid_base + 1; in nfsd_init_net()
1487 nn->s2s_cp_cl_id = nn->clientid_counter++; in nfsd_init_net()
1489 atomic_set(&nn->ntf_refcnt, 0); in nfsd_init_net()
1490 init_waitqueue_head(&nn->ntf_wq); in nfsd_init_net()
1491 seqlock_init(&nn->boot_lock); in nfsd_init_net()
1541 nfsd_lockd_init(); /* lockd->nfsd callbacks */ in init_nfsd()