mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
9p: revert tsyncfs related changes
Now that we use write_inode to flush server cache related to fid, we don't need tsyncfs either fort dotl or dotu protocols. For dotu this helps to do a more efficient server flush. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com> Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
This commit is contained in:
parent
c2ed388021
commit
df5d8c80f1
6 changed files with 11 additions and 62 deletions
15
fs/9p/fid.c
15
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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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 @@ static struct dentry *v9fs_mount(struct file_system_type *fs_type, int flags,
|
|||
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 @@ static int v9fs_statfs(struct dentry *dentry, struct kstatfs *buf)
|
|||
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;
|
||||
|
@ -365,7 +351,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,
|
||||
|
|
|
@ -139,8 +139,6 @@ do { \
|
|||
*/
|
||||
|
||||
enum p9_msg_t {
|
||||
P9_TSYNCFS = 0,
|
||||
P9_RSYNCFS,
|
||||
P9_TLERROR = 6,
|
||||
P9_RLERROR,
|
||||
P9_TSTATFS = 8,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -1220,27 +1220,6 @@ int p9_client_fsync(struct p9_fid *fid, int datasync)
|
|||
}
|
||||
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;
|
||||
|
|
Loading…
Reference in a new issue