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