]> err.no Git - linux-2.6/blobdiff - fs/nfsd/nfs4recover.c
Merge HEAD from master.kernel.org:/home/rmk/linux-2.6-serial.git
[linux-2.6] / fs / nfsd / nfs4recover.c
index bb40083b6b7d77af0779beccf961a382b1e71ca9..57ed50fe7f8568be7f4408b292ee36a3d1a8ab4e 100644 (file)
@@ -289,7 +289,9 @@ nfsd4_unlink_clid_dir(char *name, int namlen)
 
        dprintk("NFSD: nfsd4_unlink_clid_dir. name %.*s\n", namlen, name);
 
+       down(&rec_dir.dentry->d_inode->i_sem);
        dentry = lookup_one_len(name, rec_dir.dentry, namlen);
+       up(&rec_dir.dentry->d_inode->i_sem);
        if (IS_ERR(dentry)) {
                status = PTR_ERR(dentry);
                return status;
@@ -314,6 +316,7 @@ nfsd4_remove_clid_dir(struct nfs4_client *clp)
        if (!rec_dir_init || !clp->cl_firststate)
                return;
 
+       clp->cl_firststate = 0;
        nfs4_save_user(&uid, &gid);
        status = nfsd4_unlink_clid_dir(clp->cl_recdir, HEXDIR_LEN-1);
        nfs4_reset_user(uid, gid);