Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dba88ba5 authored by J. Bruce Fields's avatar J. Bruce Fields
Browse files

nfsd4: remove state lock from nfsd4_load_reboot_recovery_data



That function is only called under nfsd_mutex: we know that because the
only caller is nfsd_svc, via

        nfsd_svc
          nfsd_startup
            nfs4_state_start
              nfsd4_client_tracking_init
                client_tracking_ops->init == nfsd4_load_reboot_recovery_data

The shared state accessed here includes:

        - user_recovery_dirname: used here, modified only by
          nfs4_reset_recoverydir, which can be verified to only be
          called under nfsd_mutex.
        - filesystem state, protected by i_mutex (handwaving slightly
	  here)
        - rec_file, reclaim_str_hashtbl, reclaim_str_hashtbl_size: other
          than here, used only from code called from nfsd or laundromat
          threads, both of which should be started only after this runs
          (see nfsd_svc) and stopped before this could run again (see
          nfsd_shutdown, called from nfsd_last_thread).

Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent a36b1725
Loading
Loading
Loading
Loading
+0 −2
Original line number Original line Diff line number Diff line
@@ -509,11 +509,9 @@ nfsd4_load_reboot_recovery_data(struct net *net)
{
{
	int status;
	int status;


	nfs4_lock_state();
	status = nfsd4_init_recdir();
	status = nfsd4_init_recdir();
	if (!status)
	if (!status)
		status = nfsd4_recdir_load(net);
		status = nfsd4_recdir_load(net);
	nfs4_unlock_state();
	if (status)
	if (status)
		printk(KERN_ERR "NFSD: Failure reading reboot recovery data\n");
		printk(KERN_ERR "NFSD: Failure reading reboot recovery data\n");
	return status;
	return status;