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