Commit eb82dd39 authored by Jeff Layton's avatar Jeff Layton Committed by J. Bruce Fields

nfsd: convert fi_deleg_file and ls_file fields to nfsd_file

Have them keep an nfsd_file reference instead of a struct file.
Signed-off-by: default avatarJeff Layton <jeff.layton@primarydata.com>
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent fd4f83fd
...@@ -212,6 +212,7 @@ struct file_lock_list_struct { ...@@ -212,6 +212,7 @@ struct file_lock_list_struct {
static DEFINE_PER_CPU(struct file_lock_list_struct, file_lock_list); static DEFINE_PER_CPU(struct file_lock_list_struct, file_lock_list);
DEFINE_STATIC_PERCPU_RWSEM(file_rwsem); DEFINE_STATIC_PERCPU_RWSEM(file_rwsem);
/* /*
* The blocked_hash is used to find POSIX lock loops for deadlock detection. * The blocked_hash is used to find POSIX lock loops for deadlock detection.
* It is protected by blocked_lock_lock. * It is protected by blocked_lock_lock.
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "blocklayoutxdr.h" #include "blocklayoutxdr.h"
#include "pnfs.h" #include "pnfs.h"
#include "filecache.h"
#define NFSDDBG_FACILITY NFSDDBG_PNFS #define NFSDDBG_FACILITY NFSDDBG_PNFS
...@@ -404,7 +405,7 @@ static void ...@@ -404,7 +405,7 @@ static void
nfsd4_scsi_fence_client(struct nfs4_layout_stateid *ls) nfsd4_scsi_fence_client(struct nfs4_layout_stateid *ls)
{ {
struct nfs4_client *clp = ls->ls_stid.sc_client; struct nfs4_client *clp = ls->ls_stid.sc_client;
struct block_device *bdev = ls->ls_file->f_path.mnt->mnt_sb->s_bdev; struct block_device *bdev = ls->ls_file->nf_file->f_path.mnt->mnt_sb->s_bdev;
bdev->bd_disk->fops->pr_ops->pr_preempt(bdev, NFSD_MDS_PR_KEY, bdev->bd_disk->fops->pr_ops->pr_preempt(bdev, NFSD_MDS_PR_KEY,
nfsd4_scsi_pr_key(clp), 0, true); nfsd4_scsi_pr_key(clp), 0, true);
......
...@@ -169,8 +169,8 @@ nfsd4_free_layout_stateid(struct nfs4_stid *stid) ...@@ -169,8 +169,8 @@ nfsd4_free_layout_stateid(struct nfs4_stid *stid)
spin_unlock(&fp->fi_lock); spin_unlock(&fp->fi_lock);
if (!nfsd4_layout_ops[ls->ls_layout_type]->disable_recalls) if (!nfsd4_layout_ops[ls->ls_layout_type]->disable_recalls)
vfs_setlease(ls->ls_file, F_UNLCK, NULL, (void **)&ls); vfs_setlease(ls->ls_file->nf_file, F_UNLCK, NULL, (void **)&ls);
fput(ls->ls_file); nfsd_file_put(ls->ls_file);
if (ls->ls_recalled) if (ls->ls_recalled)
atomic_dec(&ls->ls_stid.sc_file->fi_lo_recalls); atomic_dec(&ls->ls_stid.sc_file->fi_lo_recalls);
...@@ -197,7 +197,7 @@ nfsd4_layout_setlease(struct nfs4_layout_stateid *ls) ...@@ -197,7 +197,7 @@ nfsd4_layout_setlease(struct nfs4_layout_stateid *ls)
fl->fl_end = OFFSET_MAX; fl->fl_end = OFFSET_MAX;
fl->fl_owner = ls; fl->fl_owner = ls;
fl->fl_pid = current->tgid; fl->fl_pid = current->tgid;
fl->fl_file = ls->ls_file; fl->fl_file = ls->ls_file->nf_file;
status = vfs_setlease(fl->fl_file, fl->fl_type, &fl, NULL); status = vfs_setlease(fl->fl_file, fl->fl_type, &fl, NULL);
if (status) { if (status) {
...@@ -236,13 +236,13 @@ nfsd4_alloc_layout_stateid(struct nfsd4_compound_state *cstate, ...@@ -236,13 +236,13 @@ nfsd4_alloc_layout_stateid(struct nfsd4_compound_state *cstate,
NFSPROC4_CLNT_CB_LAYOUT); NFSPROC4_CLNT_CB_LAYOUT);
if (parent->sc_type == NFS4_DELEG_STID) if (parent->sc_type == NFS4_DELEG_STID)
ls->ls_file = get_file(fp->fi_deleg_file); ls->ls_file = nfsd_file_get(fp->fi_deleg_file);
else else
ls->ls_file = find_any_file(fp); ls->ls_file = find_any_file(fp);
BUG_ON(!ls->ls_file); BUG_ON(!ls->ls_file);
if (nfsd4_layout_setlease(ls)) { if (nfsd4_layout_setlease(ls)) {
fput(ls->ls_file); nfsd_file_put(ls->ls_file);
put_nfs4_file(fp); put_nfs4_file(fp);
kmem_cache_free(nfs4_layout_stateid_cache, ls); kmem_cache_free(nfs4_layout_stateid_cache, ls);
return NULL; return NULL;
...@@ -626,7 +626,7 @@ nfsd4_cb_layout_fail(struct nfs4_layout_stateid *ls) ...@@ -626,7 +626,7 @@ nfsd4_cb_layout_fail(struct nfs4_layout_stateid *ls)
argv[0] = (char *)nfsd_recall_failed; argv[0] = (char *)nfsd_recall_failed;
argv[1] = addr_str; argv[1] = addr_str;
argv[2] = ls->ls_file->f_path.mnt->mnt_sb->s_id; argv[2] = ls->ls_file->nf_file->f_path.mnt->mnt_sb->s_id;
argv[3] = NULL; argv[3] = NULL;
error = call_usermodehelper(nfsd_recall_failed, argv, envp, error = call_usermodehelper(nfsd_recall_failed, argv, envp,
......
This diff is collapsed.
...@@ -516,7 +516,7 @@ struct nfs4_file { ...@@ -516,7 +516,7 @@ struct nfs4_file {
*/ */
atomic_t fi_access[2]; atomic_t fi_access[2];
u32 fi_share_deny; u32 fi_share_deny;
struct file *fi_deleg_file; struct nfsd_file *fi_deleg_file;
int fi_delegees; int fi_delegees;
struct knfsd_fh fi_fhandle; struct knfsd_fh fi_fhandle;
bool fi_had_conflict; bool fi_had_conflict;
...@@ -565,7 +565,7 @@ struct nfs4_layout_stateid { ...@@ -565,7 +565,7 @@ struct nfs4_layout_stateid {
spinlock_t ls_lock; spinlock_t ls_lock;
struct list_head ls_layouts; struct list_head ls_layouts;
u32 ls_layout_type; u32 ls_layout_type;
struct file *ls_file; struct nfsd_file *ls_file;
struct nfsd4_callback ls_recall; struct nfsd4_callback ls_recall;
stateid_t ls_recall_sid; stateid_t ls_recall_sid;
bool ls_recalled; bool ls_recalled;
...@@ -657,7 +657,7 @@ static inline void get_nfs4_file(struct nfs4_file *fi) ...@@ -657,7 +657,7 @@ static inline void get_nfs4_file(struct nfs4_file *fi)
{ {
refcount_inc(&fi->fi_ref); refcount_inc(&fi->fi_ref);
} }
struct file *find_any_file(struct nfs4_file *f); struct nfsd_file *find_any_file(struct nfs4_file *f);
/* grace period management */ /* grace period management */
void nfsd4_end_grace(struct nfsd_net *nn); void nfsd4_end_grace(struct nfsd_net *nn);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment