mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-19 13:11:14 +00:00
Merge branch 'nfsd-next' of git://linux-nfs.org/~bfields/linux
Pull nfsd changes from J. Bruce Fields: "This has been an unusually quiet cycle--mostly bugfixes and cleanup. The one large piece is Stanislav's work to containerize the server's grace period--but that in itself is just one more step in a not-yet-complete project to allow fully containerized nfs service. There are a number of outstanding delegation, container, v4 state, and gss patches that aren't quite ready yet; 3.7 may be wilder." * 'nfsd-next' of git://linux-nfs.org/~bfields/linux: (35 commits) NFSd: make boot_time variable per network namespace NFSd: make grace end flag per network namespace Lockd: move grace period management from lockd() to per-net functions LockD: pass actual network namespace to grace period management functions LockD: manage grace list per network namespace SUNRPC: service request network namespace helper introduced NFSd: make nfsd4_manager allocated per network namespace context. LockD: make lockd manager allocated per network namespace LockD: manage grace period per network namespace Lockd: add more debug to host shutdown functions Lockd: host complaining function introduced LockD: manage used host count per networks namespace LockD: manage garbage collection timeout per networks namespace LockD: make garbage collector network namespace aware. LockD: mark host per network namespace on garbage collect nfsd4: fix missing fault_inject.h include locks: move lease-specific code out of locks_delete_lock locks: prevent side-effects of locks_release_private before file_lock is initialized NFSd: set nfsd_serv to NULL after service destruction NFSd: introduce nfsd_destroy() helper ...
This commit is contained in:
commit
08843b79fb
27 changed files with 368 additions and 237 deletions
28
fs/locks.c
28
fs/locks.c
|
@ -427,18 +427,8 @@ static void lease_break_callback(struct file_lock *fl)
|
|||
kill_fasync(&fl->fl_fasync, SIGIO, POLL_MSG);
|
||||
}
|
||||
|
||||
static void lease_release_private_callback(struct file_lock *fl)
|
||||
{
|
||||
if (!fl->fl_file)
|
||||
return;
|
||||
|
||||
f_delown(fl->fl_file);
|
||||
fl->fl_file->f_owner.signum = 0;
|
||||
}
|
||||
|
||||
static const struct lock_manager_operations lease_manager_ops = {
|
||||
.lm_break = lease_break_callback,
|
||||
.lm_release_private = lease_release_private_callback,
|
||||
.lm_change = lease_modify,
|
||||
};
|
||||
|
||||
|
@ -580,12 +570,6 @@ static void locks_delete_lock(struct file_lock **thisfl_p)
|
|||
fl->fl_next = NULL;
|
||||
list_del_init(&fl->fl_link);
|
||||
|
||||
fasync_helper(0, fl->fl_file, 0, &fl->fl_fasync);
|
||||
if (fl->fl_fasync != NULL) {
|
||||
printk(KERN_ERR "locks_delete_lock: fasync == %p\n", fl->fl_fasync);
|
||||
fl->fl_fasync = NULL;
|
||||
}
|
||||
|
||||
if (fl->fl_nspid) {
|
||||
put_pid(fl->fl_nspid);
|
||||
fl->fl_nspid = NULL;
|
||||
|
@ -1155,8 +1139,18 @@ int lease_modify(struct file_lock **before, int arg)
|
|||
return error;
|
||||
lease_clear_pending(fl, arg);
|
||||
locks_wake_up_blocks(fl);
|
||||
if (arg == F_UNLCK)
|
||||
if (arg == F_UNLCK) {
|
||||
struct file *filp = fl->fl_file;
|
||||
|
||||
f_delown(filp);
|
||||
filp->f_owner.signum = 0;
|
||||
fasync_helper(0, fl->fl_file, 0, &fl->fl_fasync);
|
||||
if (fl->fl_fasync != NULL) {
|
||||
printk(KERN_ERR "locks_delete_lock: fasync == %p\n", fl->fl_fasync);
|
||||
fl->fl_fasync = NULL;
|
||||
}
|
||||
locks_delete_lock(before);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue