Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755075Ab1CYVUe (ORCPT ); Fri, 25 Mar 2011 17:20:34 -0400 Received: from e9.ny.us.ibm.com ([32.97.182.139]:44623 "EHLO e9.ny.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754142Ab1CYVUd (ORCPT ); Fri, 25 Mar 2011 17:20:33 -0400 Message-ID: <4D8D0704.7080106@linux.vnet.ibm.com> Date: Fri, 25 Mar 2011 14:20:04 -0700 From: Venkateswararao Jujjuri User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.2.15) Gecko/20110303 Thunderbird/3.1.9 MIME-Version: 1.0 To: "Aneesh Kumar K.V" CC: v9fs-developer@lists.sourceforge.net, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [V9fs-developer] [PATCH 3/5] 9p: revert tsyncfs related changes References: <1301052651-21440-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com> <1301052651-21440-3-git-send-email-aneesh.kumar@linux.vnet.ibm.com> In-Reply-To: <1301052651-21440-3-git-send-email-aneesh.kumar@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Content-Scanned: Fidelis XPS MAILER Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 6883 Lines: 214 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 > --- > 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; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/