diff options
Diffstat (limited to 'xlators/nfs/server/src/nfs.c')
| -rw-r--r-- | xlators/nfs/server/src/nfs.c | 28 | 
1 files changed, 27 insertions, 1 deletions
diff --git a/xlators/nfs/server/src/nfs.c b/xlators/nfs/server/src/nfs.c index 2bc20d04e34..b4568f519cf 100644 --- a/xlators/nfs/server/src/nfs.c +++ b/xlators/nfs/server/src/nfs.c @@ -39,6 +39,7 @@  #include "mount3.h"  #include "nfs3.h"  #include "nfs-mem-types.h" +#include "nfs3-helpers.h"  /* Every NFS version must call this function with the init function   * for its particular version. @@ -728,7 +729,32 @@ fini (xlator_t *this)          return 0;  } -struct xlator_cbks cbks = { }; +int32_t +nfs_forget (xlator_t *this, inode_t *inode) +{ +        int32_t                 ret = -1; +        uint64_t                ctx = 0; +        struct inode_op_queue  *inode_q = NULL; + +        if (!inode || !this) +                return 0; +        ret = inode_ctx_del (inode, this, &ctx); +        if (!ret && ctx && !(IA_ISDIR (inode->ia_type))) { +                inode_q = (struct inode_op_queue *) (long) ctx; +                pthread_mutex_lock (&inode_q->qlock); +                { +                        nfs3_flush_inode_queue (inode_q, NULL, 0); +                } +                pthread_mutex_unlock (&inode_q->qlock); +        } + +        return 0; +} + +struct xlator_cbks cbks = { +        .forget      = nfs_forget, +}; +  struct xlator_fops fops = { };  /* TODO: If needed, per-volume options below can be extended to be export  | 
