Re: [V9fs-developer] [PATCH 2/2] [9p] Introduce client side TFSYNC/RFSYNC for dotl.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Remind me again why we need this?  Don't blank twstats provide the
same functionality?

         -eric


On Fri, Sep 24, 2010 at 8:04 PM, Venkateswararao Jujjuri (JV)
<jvrao@xxxxxxxxxxxxxxxxxx> wrote:
> SYNOPSIS
>    size[4] Tfsync tag[2] fid[4]
>
>    size[4] Rfsync tag[2]
>
> DESCRIPTION
>
> The Tfsync transaction transfers ("flushes") all modified in-core data of
> file identified by fid to the disk device (or other  permanent  storage
> device)  where that  file  resides.
>
> Signed-off-by: Venkateswararao Jujjuri <jvrao@xxxxxxxxxxxxxxxxxx>
> ---
>  fs/9p/vfs_file.c        |   18 ++++++++++++++++--
>  include/net/9p/9p.h     |    2 ++
>  include/net/9p/client.h |    1 +
>  net/9p/client.c         |   25 +++++++++++++++++++++++++
>  4 files changed, 44 insertions(+), 2 deletions(-)
>
> diff --git a/fs/9p/vfs_file.c b/fs/9p/vfs_file.c
> index 28db7fb..fdf3032 100644
> --- a/fs/9p/vfs_file.c
> +++ b/fs/9p/vfs_file.c
> @@ -290,6 +290,20 @@ static int v9fs_file_fsync(struct file *filp, int datasync)
>        return retval;
>  }
>
> +static int v9fs_file_fsync_dotl(struct file *filp, int datasync)
> +{
> +       struct p9_fid *fid;
> +       int retval;
> +
> +       P9_DPRINTK(P9_DEBUG_VFS, "v9fs_file_fsync_dotl: filp %p datasync %x\n",
> +                       filp, datasync);
> +
> +       fid = filp->private_data;
> +
> +       retval = p9_client_fsync(fid);
> +       return retval;
> +}
> +
>  static const struct file_operations v9fs_cached_file_operations = {
>        .llseek = generic_file_llseek,
>        .read = do_sync_read,
> @@ -311,7 +325,7 @@ static const struct file_operations v9fs_cached_file_operations_dotl = {
>        .release = v9fs_dir_release,
>        .lock = v9fs_file_lock,
>        .mmap = generic_file_readonly_mmap,
> -       .fsync = v9fs_file_fsync,
> +       .fsync = v9fs_file_fsync_dotl,
>  };
>
>  const struct file_operations v9fs_file_operations = {
> @@ -333,5 +347,5 @@ const struct file_operations v9fs_file_operations_dotl = {
>        .release = v9fs_dir_release,
>        .lock = v9fs_file_lock,
>        .mmap = generic_file_readonly_mmap,
> -       .fsync = v9fs_file_fsync,
> +       .fsync = v9fs_file_fsync_dotl,
>  };
> diff --git a/include/net/9p/9p.h b/include/net/9p/9p.h
> index a4a1b04..55e9605 100644
> --- a/include/net/9p/9p.h
> +++ b/include/net/9p/9p.h
> @@ -163,6 +163,8 @@ enum p9_msg_t {
>        P9_RXATTRCREATE,
>        P9_TREADDIR = 40,
>        P9_RREADDIR,
> +       P9_TFSYNC = 50,
> +       P9_RFSYNC,
>        P9_TLINK = 70,
>        P9_RLINK,
>        P9_TMKDIR = 72,
> diff --git a/include/net/9p/client.h b/include/net/9p/client.h
> index d1aa2cf..fbb23b4 100644
> --- a/include/net/9p/client.h
> +++ b/include/net/9p/client.h
> @@ -232,6 +232,7 @@ int p9_client_symlink(struct p9_fid *fid, char *name, char *symname, gid_t gid,
>  int p9_client_create_dotl(struct p9_fid *ofid, char *name, u32 flags, u32 mode,
>                gid_t gid, struct p9_qid *qid);
>  int p9_client_clunk(struct p9_fid *fid);
> +int p9_client_fsync(struct p9_fid *fid);
>  int p9_client_remove(struct p9_fid *fid);
>  int p9_client_read(struct p9_fid *fid, char *data, char __user *udata,
>                                                        u64 offset, u32 count);
> diff --git a/net/9p/client.c b/net/9p/client.c
> index 208efce..124241b 100644
> --- a/net/9p/client.c
> +++ b/net/9p/client.c
> @@ -1211,6 +1211,31 @@ int p9_client_link(struct p9_fid *dfid, struct p9_fid *oldfid, char *newname)
>  }
>  EXPORT_SYMBOL(p9_client_link);
>
> +int p9_client_fsync(struct p9_fid *fid)
> +{
> +       int err;
> +       struct p9_client *clnt;
> +       struct p9_req_t *req;
> +
> +       P9_DPRINTK(P9_DEBUG_9P, ">>> TFSYNC fid %d\n", fid->fid);
> +       err = 0;
> +       clnt = fid->clnt;
> +
> +       req = p9_client_rpc(clnt, P9_TFSYNC, "d", fid->fid);
> +       if (IS_ERR(req)) {
> +               err = PTR_ERR(req);
> +               goto error;
> +       }
> +
> +       P9_DPRINTK(P9_DEBUG_9P, "<<< RFSYNC fid %d\n", fid->fid);
> +
> +       p9_free_req(clnt, req);
> +
> +error:
> +       return err;
> +}
> +EXPORT_SYMBOL(p9_client_fsync);
> +
>  int p9_client_clunk(struct p9_fid *fid)
>  {
>        int err;
> --
> 1.6.5.2
>
>
> ------------------------------------------------------------------------------
> Start uncovering the many advantages of virtual appliances
> and start using them to simplify application deployment and
> accelerate your shift to cloud computing.
> http://p.sf.net/sfu/novell-sfdev2dev
> _______________________________________________
> V9fs-developer mailing list
> V9fs-developer@xxxxxxxxxxxxxxxxxxxxx
> https://lists.sourceforge.net/lists/listinfo/v9fs-developer
>
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux