lkml.org 
[lkml]   [2011]   [Mar]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [V9fs-developer] [PATCH 3/5] 9p: revert tsyncfs related changes
On 03/25/2011 04:30 AM, Aneesh Kumar K.V wrote:
> Now that we use write_inode to flush server
> cache related to fid, we don't need tsyncfs.
> This help us to do a more efficient server flush
> for dotu protocol
Why are you singling out dotu only? won't it be applicable to dotl too?

- JV
> Signed-off-by: Aneesh Kumar K.V<aneesh.kumar@linux.vnet.ibm.com>
> ---
> fs/9p/fid.c | 15 ++-------------
> fs/9p/v9fs.h | 1 -
> fs/9p/vfs_super.c | 33 +++++++++------------------------
> include/net/9p/9p.h | 2 --
> include/net/9p/client.h | 1 -
> net/9p/client.c | 21 ---------------------
> 6 files changed, 11 insertions(+), 62 deletions(-)
>
> diff --git a/fs/9p/fid.c b/fs/9p/fid.c
> index 0ee5945..85b67ff 100644
> --- a/fs/9p/fid.c
> +++ b/fs/9p/fid.c
> @@ -286,11 +286,9 @@ static struct p9_fid *v9fs_fid_clone_with_uid(struct dentry *dentry, uid_t uid)
>
> struct p9_fid *v9fs_writeback_fid(struct dentry *dentry)
> {
> - int err, flags;
> + int err;
> struct p9_fid *fid;
> - struct v9fs_session_info *v9ses;
>
> - v9ses = v9fs_dentry2v9ses(dentry);
> fid = v9fs_fid_clone_with_uid(dentry, 0);
> if (IS_ERR(fid))
> goto error_out;
> @@ -299,17 +297,8 @@ struct p9_fid *v9fs_writeback_fid(struct dentry *dentry)
> * dirty pages. We always request for the open fid in read-write
> * mode so that a partial page write which result in page
> * read can work.
> - *
> - * we don't have a tsyncfs operation for older version
> - * of protocol. So make sure the write back fid is
> - * opened in O_SYNC mode.
> */
> - if (!v9fs_proto_dotl(v9ses))
> - flags = O_RDWR | O_SYNC;
> - else
> - flags = O_RDWR;
> -
> - err = p9_client_open(fid, flags);
> + err = p9_client_open(fid, O_RDWR);
> if (err< 0) {
> p9_client_clunk(fid);
> fid = ERR_PTR(err);
> diff --git a/fs/9p/v9fs.h b/fs/9p/v9fs.h
> index 9665c2b..e5ebedf 100644
> --- a/fs/9p/v9fs.h
> +++ b/fs/9p/v9fs.h
> @@ -116,7 +116,6 @@ struct v9fs_session_info {
> struct list_head slist; /* list of sessions registered with v9fs */
> struct backing_dev_info bdi;
> struct rw_semaphore rename_sem;
> - struct p9_fid *root_fid; /* Used for file system sync */
> };
>
> /* cache_validity flags */
> diff --git a/fs/9p/vfs_super.c b/fs/9p/vfs_super.c
> index d94adcb..118078d 100644
> --- a/fs/9p/vfs_super.c
> +++ b/fs/9p/vfs_super.c
> @@ -154,6 +154,7 @@ static struct dentry *v9fs_mount(struct file_system_type *fs_type, int flags,
> retval = PTR_ERR(inode);
> goto release_sb;
> }
> +
> root = d_alloc_root(inode);
> if (!root) {
> iput(inode);
> @@ -185,21 +186,10 @@ static struct dentry *v9fs_mount(struct file_system_type *fs_type, int flags,
> p9stat_free(st);
> kfree(st);
> }
> - v9fs_fid_add(root, fid);
> retval = v9fs_get_acl(inode, fid);
> if (retval)
> goto release_sb;
> - /*
> - * Add the root fid to session info. This is used
> - * for file system sync. We want a cloned fid here
> - * so that we can do a sync_filesystem after a
> - * shrink_dcache_for_umount
> - */
> - v9ses->root_fid = v9fs_fid_clone(root);
> - if (IS_ERR(v9ses->root_fid)) {
> - retval = PTR_ERR(v9ses->root_fid);
> - goto release_sb;
> - }
> + v9fs_fid_add(root, fid);
>
> P9_DPRINTK(P9_DEBUG_VFS, " simple set mount, return 0\n");
> return dget(sb->s_root);
> @@ -210,11 +200,15 @@ close_session:
> v9fs_session_close(v9ses);
> kfree(v9ses);
> return ERR_PTR(retval);
> +
> release_sb:
> /*
> - * we will do the session_close and root dentry
> - * release in the below call.
> + * we will do the session_close and root dentry release
> + * in the below call. But we need to clunk fid, because we haven't
> + * attached the fid to dentry so it won't get clunked
> + * automatically.
> */
> + p9_client_clunk(fid);
> deactivate_locked_super(sb);
> return ERR_PTR(retval);
> }
> @@ -232,7 +226,7 @@ static void v9fs_kill_super(struct super_block *s)
> P9_DPRINTK(P9_DEBUG_VFS, " %p\n", s);
>
> kill_anon_super(s);
> - p9_client_clunk(v9ses->root_fid);
> +
> v9fs_session_cancel(v9ses);
> v9fs_session_close(v9ses);
> kfree(v9ses);
> @@ -285,14 +279,6 @@ done:
> return res;
> }
>
> -static int v9fs_sync_fs(struct super_block *sb, int wait)
> -{
> - struct v9fs_session_info *v9ses = sb->s_fs_info;
> -
> - P9_DPRINTK(P9_DEBUG_VFS, "v9fs_sync_fs: super_block %p\n", sb);
> - return p9_client_sync_fs(v9ses->root_fid);
> -}
> -
> static int v9fs_drop_inode(struct inode *inode)
> {
> struct v9fs_session_info *v9ses;
> @@ -361,7 +347,6 @@ static const struct super_operations v9fs_super_ops = {
> static const struct super_operations v9fs_super_ops_dotl = {
> .alloc_inode = v9fs_alloc_inode,
> .destroy_inode = v9fs_destroy_inode,
> - .sync_fs = v9fs_sync_fs,
> .statfs = v9fs_statfs,
> .drop_inode = v9fs_drop_inode,
> .evict_inode = v9fs_evict_inode,
> diff --git a/include/net/9p/9p.h b/include/net/9p/9p.h
> index 6b75a69..eaa45f9 100644
> --- a/include/net/9p/9p.h
> +++ b/include/net/9p/9p.h
> @@ -139,8 +139,6 @@ do { \
> */
>
> enum p9_msg_t {
> - P9_TSYNCFS = 0,
> - P9_RSYNCFS,
> P9_TLERROR = 6,
> P9_RLERROR,
> P9_TSTATFS = 8,
> diff --git a/include/net/9p/client.h b/include/net/9p/client.h
> index 0a30977..83ba6a4 100644
> --- a/include/net/9p/client.h
> +++ b/include/net/9p/client.h
> @@ -230,7 +230,6 @@ 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 datasync);
> -int p9_client_sync_fs(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 2ccbf04..fd7fb37 100644
> --- a/net/9p/client.c
> +++ b/net/9p/client.c
> @@ -1220,27 +1220,6 @@ error:
> }
> EXPORT_SYMBOL(p9_client_fsync);
>
> -int p9_client_sync_fs(struct p9_fid *fid)
> -{
> - int err = 0;
> - struct p9_req_t *req;
> - struct p9_client *clnt;
> -
> - P9_DPRINTK(P9_DEBUG_9P, ">>> TSYNC_FS fid %d\n", fid->fid);
> -
> - clnt = fid->clnt;
> - req = p9_client_rpc(clnt, P9_TSYNCFS, "d", fid->fid);
> - if (IS_ERR(req)) {
> - err = PTR_ERR(req);
> - goto error;
> - }
> - P9_DPRINTK(P9_DEBUG_9P, "<<< RSYNCFS fid %d\n", fid->fid);
> - p9_free_req(clnt, req);
> -error:
> - return err;
> -}
> -EXPORT_SYMBOL(p9_client_sync_fs);
> -
> int p9_client_clunk(struct p9_fid *fid)
> {
> int err;



\
 
 \ /
  Last update: 2011-03-25 22:23    [W:0.139 / U:0.236 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site