lkml.org 
[lkml]   [2008]   [Feb]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 32/37] NFS: Add read context retention for FS-Cache to call back with [ver #34]
    Date
    Add read context retention so that FS-Cache can call back into NFS when a read
    operation on the cache fails EIO rather than reading data. This permits NFS to
    then fetch the data from the server instead using the appropriate security
    context.

    Signed-off-by: David Howells <dhowells@redhat.com>
    ---

    fs/nfs/fscache-index.c | 26 ++++++++++++++++++++++++++
    1 files changed, 26 insertions(+), 0 deletions(-)


    diff --git a/fs/nfs/fscache-index.c b/fs/nfs/fscache-index.c
    index eec8e7e..af9f06b 100644
    --- a/fs/nfs/fscache-index.c
    +++ b/fs/nfs/fscache-index.c
    @@ -285,6 +285,30 @@ static void nfs_cache_inode_now_uncached(void *cookie_netfs_data)
    }

    /*
    + * Get an extra reference on a read context.
    + * - This function can be absent if the completion function doesn't require a
    + * context.
    + * - The read context is passed back to NFS in the event that a data read on the
    + * cache fails with EIO - in which case the server must be contacted to
    + * retrieve the data, which requires the read context for security.
    + */
    +static void nfs_fh_get_context(void *cookie_netfs_data, void *context)
    +{
    + get_nfs_open_context(context);
    +}
    +
    +/*
    + * Release an extra reference on a read context.
    + * - This function can be absent if the completion function doesn't require a
    + * context.
    + */
    +static void nfs_fh_put_context(void *cookie_netfs_data, void *context)
    +{
    + if (context)
    + put_nfs_open_context(context);
    +}
    +
    +/*
    * Define the inode object for FS-Cache. This is used to describe an inode
    * object to fscache_acquire_cookie(). It is keyed by the NFS file handle for
    * an inode.
    @@ -301,4 +325,6 @@ const struct fscache_cookie_def nfs_cache_inode_object_def = {
    .get_aux = nfs_cache_inode_get_aux,
    .check_aux = nfs_cache_inode_check_aux,
    .now_uncached = nfs_cache_inode_now_uncached,
    + .get_context = nfs_fh_get_context,
    + .put_context = nfs_fh_put_context,
    };


    \
     
     \ /
      Last update: 2008-02-29 01:59    [W:0.034 / U:32.012 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site