Lines Matching refs:nn
170 const char *dname, int len, struct nfsd_net *nn)
183 crp = nfs4_client_to_reclaim(name, princhash, nn);
198 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id);
202 if (!nn->rec_file)
213 status = mnt_want_write_file(nn->rec_file);
217 dir = nn->rec_file->f_path.dentry;
242 if (nn->in_grace)
244 HEXDIR_LEN, nn);
245 vfs_fsync(nn->rec_file, 0);
252 mnt_drop_write_file(nn->rec_file);
289 nfsd4_list_rec_dir(recdir_func *f, struct nfsd_net *nn)
292 struct dentry *dir = nn->rec_file->f_path.dentry;
304 status = vfs_llseek(nn->rec_file, 0, SEEK_SET);
310 status = iterate_dir(nn->rec_file, &ctx.ctx);
321 status = f(dir, dentry, nn);
339 nfsd4_unlink_clid_dir(char *name, int namlen, struct nfsd_net *nn)
346 dir = nn->rec_file->f_path.dentry;
366 struct nfsd_net *nn)
378 crp = nfsd4_find_reclaim_client(name, nn);
381 nfs4_remove_reclaim_record(crp, nn);
390 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id);
392 if (!nn->rec_file || !test_bit(NFSD4_CLIENT_STABLE, &clp->cl_flags))
399 status = mnt_want_write_file(nn->rec_file);
408 status = nfsd4_unlink_clid_dir(dname, HEXDIR_LEN-1, nn);
411 vfs_fsync(nn->rec_file, 0);
412 if (nn->in_grace)
414 HEXDIR_LEN, nn);
417 mnt_drop_write_file(nn->rec_file);
425 purge_old(struct dentry *parent, struct dentry *child, struct nfsd_net *nn)
443 if (nfs4_has_reclaimed_state(name, nn))
458 nfsd4_recdir_purge_old(struct nfsd_net *nn)
462 nn->in_grace = false;
463 if (!nn->rec_file)
465 status = mnt_want_write_file(nn->rec_file);
468 status = nfsd4_list_rec_dir(purge_old, nn);
470 vfs_fsync(nn->rec_file, 0);
471 mnt_drop_write_file(nn->rec_file);
473 nfs4_release_reclaim(nn);
476 " directory %pD\n", nn->rec_file);
480 load_recdir(struct dentry *parent, struct dentry *child, struct nfsd_net *nn)
498 if (!nfs4_client_to_reclaim(name, princhash, nn))
507 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
509 if (!nn->rec_file)
512 status = nfsd4_list_rec_dir(load_recdir, nn);
515 " directory %pD\n", nn->rec_file);
526 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
533 BUG_ON(nn->rec_file);
543 nn->rec_file = filp_open(user_recovery_dirname, O_RDONLY | O_DIRECTORY, 0);
544 if (IS_ERR(nn->rec_file)) {
547 status = PTR_ERR(nn->rec_file);
548 nn->rec_file = NULL;
553 nn->in_grace = true;
560 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
562 if (!nn->rec_file)
564 fput(nn->rec_file);
565 nn->rec_file = NULL;
571 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
574 nn->reclaim_str_hashtbl = kmalloc_array(CLIENT_HASH_SIZE,
577 if (!nn->reclaim_str_hashtbl)
581 INIT_LIST_HEAD(&nn->reclaim_str_hashtbl[i]);
582 nn->reclaim_str_hashtbl_size = 0;
590 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
592 kfree(nn->reclaim_str_hashtbl);
640 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
642 nfs4_release_reclaim(nn);
680 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id);
701 crp = nfsd4_find_reclaim_client(name, nn);
750 __cld_pipe_upcall(struct rpc_pipe *pipe, void *cmsg, struct nfsd_net *nn)
758 msg.len = nn->client_tracking_ops->msglen;
774 cld_pipe_upcall(struct rpc_pipe *pipe, void *cmsg, struct nfsd_net *nn)
783 ret = __cld_pipe_upcall(pipe, cmsg, nn);
791 struct nfsd_net *nn)
796 struct cld_net *cn = nn->cld_net;
803 if (nn->client_tracking_ops->version >= 2) {
841 if (!nfs4_client_to_reclaim(name, princhash, nn)) {
846 return nn->client_tracking_ops->msglen;
858 struct nfsd_net *nn = net_generic(file_inode(filp)->i_sb->s_fs_info,
860 struct cld_net *cn = nn->cld_net;
863 if (mlen != nn->client_tracking_ops->msglen) {
865 nn->client_tracking_ops->msglen);
905 return __cld_pipe_inprogress_downcall(cmsg, nn);
986 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
989 if (nn->cld_net)
1014 nn->cld_net = cn;
1040 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
1041 struct cld_net *cn = nn->cld_net;
1047 kfree(nn->cld_net);
1048 nn->cld_net = NULL;
1052 alloc_cld_upcall(struct nfsd_net *nn)
1055 struct cld_net *cn = nn->cld_net;
1072 new->cu_u.cu_msg.cm_vers = nn->client_tracking_ops->version;
1100 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id);
1101 struct cld_net *cn = nn->cld_net;
1107 cup = alloc_cld_upcall(nn);
1118 ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg, nn);
1137 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id);
1138 struct cld_net *cn = nn->cld_net;
1148 cup = alloc_cld_upcall(nn);
1183 ret = cld_pipe_upcall(cn->cn_pipe, cmsg, nn);
1203 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id);
1204 struct cld_net *cn = nn->cld_net;
1210 cup = alloc_cld_upcall(nn);
1221 ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg, nn);
1245 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id);
1246 struct cld_net *cn = nn->cld_net;
1252 cup = alloc_cld_upcall(nn);
1264 ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg, nn);
1284 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id);
1285 struct cld_net *cn = nn->cld_net;
1295 crp = nfsd4_find_reclaim_client(clp->cl_name, nn);
1311 crp = nfsd4_find_reclaim_client(name, nn);
1327 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id);
1328 struct cld_net *cn = nn->cld_net;
1341 crp = nfsd4_find_reclaim_client(clp->cl_name, nn);
1357 crp = nfsd4_find_reclaim_client(name, nn);
1394 nfsd4_cld_grace_start(struct nfsd_net *nn)
1398 struct cld_net *cn = nn->cld_net;
1400 cup = alloc_cld_upcall(nn);
1407 ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg, nn);
1421 nfsd4_cld_grace_done_v0(struct nfsd_net *nn)
1425 struct cld_net *cn = nn->cld_net;
1427 cup = alloc_cld_upcall(nn);
1434 cup->cu_u.cu_msg.cm_u.cm_gracetime = nn->boot_time;
1435 ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg, nn);
1450 nfsd4_cld_grace_done(struct nfsd_net *nn)
1454 struct cld_net *cn = nn->cld_net;
1456 cup = alloc_cld_upcall(nn);
1463 ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg, nn);
1469 nfs4_release_reclaim(nn);
1477 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
1480 nn->reclaim_str_hashtbl = kmalloc_array(CLIENT_HASH_SIZE,
1483 if (!nn->reclaim_str_hashtbl)
1487 INIT_LIST_HEAD(&nn->reclaim_str_hashtbl[i]);
1488 nn->reclaim_str_hashtbl_size = 0;
1489 nn->track_reclaim_completes = true;
1490 atomic_set(&nn->nr_reclaim_complete, 0);
1498 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
1500 nn->track_reclaim_completes = false;
1501 kfree(nn->reclaim_str_hashtbl);
1505 cld_running(struct nfsd_net *nn)
1507 struct cld_net *cn = nn->cld_net;
1514 nfsd4_cld_get_version(struct nfsd_net *nn)
1518 struct cld_net *cn = nn->cld_net;
1521 cup = alloc_cld_upcall(nn);
1527 ret = cld_pipe_upcall(cn->cn_pipe, &cup->cu_u.cu_msg, nn);
1542 nn->client_tracking_ops = &nfsd4_cld_tracking_ops;
1545 nn->client_tracking_ops = &nfsd4_cld_tracking_ops_v2;
1564 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
1585 while (!(running = cld_running(nn)) && retries--)
1597 nn->cld_net->cn_tfm = tfm;
1599 status = nfsd4_cld_get_version(nn);
1603 status = nfsd4_cld_grace_start(nn);
1607 nfs4_release_reclaim(nn);
1623 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
1625 nfs4_release_reclaim(nn);
1856 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
1857 char *grace_start = nfsd4_cltrack_grace_start(nn->boot_time);
1893 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id);
1918 grace_start = nfsd4_cltrack_grace_start(nn->boot_time);
1988 nfsd4_umh_cltrack_grace_done(struct nfsd_net *nn)
1993 sprintf(timestr, "%lld", nn->boot_time);
2015 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
2018 if (nn->client_tracking_ops)
2022 nn->client_tracking_ops = &nfsd4_cld_tracking_ops;
2023 status = nn->client_tracking_ops->init(net);
2027 nn->client_tracking_ops = &nfsd4_cld_tracking_ops_v0;
2028 status = nn->client_tracking_ops->init(net);
2036 nn->client_tracking_ops = &nfsd4_umh_tracking_ops;
2037 status = nn->client_tracking_ops->init(net);
2045 nn->client_tracking_ops = &nfsd4_legacy_tracking_ops;
2057 status = nn->client_tracking_ops->init(net);
2062 nn->client_tracking_ops = NULL;
2070 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
2072 if (nn->client_tracking_ops) {
2073 if (nn->client_tracking_ops->exit)
2074 nn->client_tracking_ops->exit(net);
2075 nn->client_tracking_ops = NULL;
2082 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id);
2084 if (nn->client_tracking_ops)
2085 nn->client_tracking_ops->create(clp);
2091 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id);
2093 if (nn->client_tracking_ops)
2094 nn->client_tracking_ops->remove(clp);
2100 struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id);
2102 if (nn->client_tracking_ops)
2103 return nn->client_tracking_ops->check(clp);
2109 nfsd4_record_grace_done(struct nfsd_net *nn)
2111 if (nn->client_tracking_ops)
2112 nn->client_tracking_ops->grace_done(nn);
2120 struct nfsd_net *nn = net_generic(net, nfsd_net_id);
2121 struct cld_net *cn = nn->cld_net;