* [PATCH 1/2] [fs/9p] Add file_operations for cached mode in dotl protocol. @ 2010-09-25 1:04 Venkateswararao Jujjuri (JV) 2010-09-25 1:04 ` [PATCH 2/2] [9p] Introduce client side TFSYNC/RFSYNC for dotl Venkateswararao Jujjuri (JV) 0 siblings, 1 reply; 6+ messages in thread From: Venkateswararao Jujjuri (JV) @ 2010-09-25 1:04 UTC (permalink / raw) To: v9fs-developer; +Cc: linux-fsdevel, Venkateswararao Jujjuri (JV) Signed-off-by: Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com> --- fs/9p/vfs_file.c | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) diff --git a/fs/9p/vfs_file.c b/fs/9p/vfs_file.c index f455c45..28db7fb 100644 --- a/fs/9p/vfs_file.c +++ b/fs/9p/vfs_file.c @@ -44,6 +44,7 @@ #include "cache.h" static const struct file_operations v9fs_cached_file_operations; +static const struct file_operations v9fs_cached_file_operations_dotl; /** * v9fs_file_open - open a file (or directory) @@ -92,6 +93,8 @@ int v9fs_file_open(struct inode *inode, struct file *file) /* enable cached file options */ if(file->f_op == &v9fs_file_operations) file->f_op = &v9fs_cached_file_operations; + else if (file->f_op == &v9fs_file_operations_dotl) + file->f_op = &v9fs_cached_file_operations_dotl; #ifdef CONFIG_9P_FSCACHE v9fs_cache_inode_set_cookie(inode, file); @@ -299,6 +302,18 @@ static const struct file_operations v9fs_cached_file_operations = { .fsync = v9fs_file_fsync, }; +static const struct file_operations v9fs_cached_file_operations_dotl = { + .llseek = generic_file_llseek, + .read = do_sync_read, + .aio_read = generic_file_aio_read, + .write = v9fs_file_write, + .open = v9fs_file_open, + .release = v9fs_dir_release, + .lock = v9fs_file_lock, + .mmap = generic_file_readonly_mmap, + .fsync = v9fs_file_fsync, +}; + const struct file_operations v9fs_file_operations = { .llseek = generic_file_llseek, .read = v9fs_file_read, -- 1.6.5.2 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] [9p] Introduce client side TFSYNC/RFSYNC for dotl. 2010-09-25 1:04 [PATCH 1/2] [fs/9p] Add file_operations for cached mode in dotl protocol Venkateswararao Jujjuri (JV) @ 2010-09-25 1:04 ` Venkateswararao Jujjuri (JV) 2010-09-27 12:59 ` [V9fs-developer] " Eric Van Hensbergen 2010-10-20 12:57 ` Aneesh Kumar K. V 0 siblings, 2 replies; 6+ messages in thread From: Venkateswararao Jujjuri (JV) @ 2010-09-25 1:04 UTC (permalink / raw) To: v9fs-developer; +Cc: linux-fsdevel, Venkateswararao Jujjuri (JV) 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@linux.vnet.ibm.com> --- 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 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [V9fs-developer] [PATCH 2/2] [9p] Introduce client side TFSYNC/RFSYNC for dotl. 2010-09-25 1:04 ` [PATCH 2/2] [9p] Introduce client side TFSYNC/RFSYNC for dotl Venkateswararao Jujjuri (JV) @ 2010-09-27 12:59 ` Eric Van Hensbergen 2010-09-27 15:54 ` Venkateswararao Jujjuri (JV) 2010-10-20 12:57 ` Aneesh Kumar K. V 1 sibling, 1 reply; 6+ messages in thread From: Eric Van Hensbergen @ 2010-09-27 12:59 UTC (permalink / raw) To: Venkateswararao Jujjuri (JV); +Cc: v9fs-developer, linux-fsdevel 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@linux.vnet.ibm.com> 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@linux.vnet.ibm.com> > --- > 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@lists.sourceforge.net > 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [V9fs-developer] [PATCH 2/2] [9p] Introduce client side TFSYNC/RFSYNC for dotl. 2010-09-27 12:59 ` [V9fs-developer] " Eric Van Hensbergen @ 2010-09-27 15:54 ` Venkateswararao Jujjuri (JV) 2010-09-27 16:05 ` Eric Van Hensbergen 0 siblings, 1 reply; 6+ messages in thread From: Venkateswararao Jujjuri (JV) @ 2010-09-27 15:54 UTC (permalink / raw) To: Eric Van Hensbergen; +Cc: v9fs-developer, linux-fsdevel On 9/27/2010 5:59 AM, Eric Van Hensbergen wrote: > Remind me again why we need this? Don't blank twstats provide the > same functionality? WSTAT is a dotu operation, and we are overloading it to accomplish the sync. I think it is good idea to avoid overloading in dotl and especially if it is happening through dotu protocol. Also, we are trying to get 1-to-1 correspondence (where ever is possible) between Linux VFS and dotl. Thanks, JV > -eric > > > On Fri, Sep 24, 2010 at 8:04 PM, Venkateswararao Jujjuri (JV) > <jvrao@linux.vnet.ibm.com> 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@linux.vnet.ibm.com> >> --- >> 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@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/v9fs-developer >> ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [V9fs-developer] [PATCH 2/2] [9p] Introduce client side TFSYNC/RFSYNC for dotl. 2010-09-27 15:54 ` Venkateswararao Jujjuri (JV) @ 2010-09-27 16:05 ` Eric Van Hensbergen 0 siblings, 0 replies; 6+ messages in thread From: Eric Van Hensbergen @ 2010-09-27 16:05 UTC (permalink / raw) To: Venkateswararao Jujjuri (JV); +Cc: v9fs-developer, linux-fsdevel On Mon, Sep 27, 2010 at 10:54 AM, Venkateswararao Jujjuri (JV) <jvrao@linux.vnet.ibm.com> wrote: > On 9/27/2010 5:59 AM, Eric Van Hensbergen wrote: >> >> Remind me again why we need this? Don't blank twstats provide the >> same functionality? > > WSTAT is a dotu operation, and we are overloading it to accomplish the sync. > I think it is good idea to avoid overloading in dotl and especially if it is > happening > through dotu protocol. > Actually, the use of WSTAT to sync files is part of the original protocol, not .U > > Also, we are trying to get 1-to-1 correspondence > (where ever is possible) > between Linux VFS and dotl. > It's a small enough change that I guess I'll allow it, particularly since .L won't use TWSTAT otherwise. -eric -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] [9p] Introduce client side TFSYNC/RFSYNC for dotl. 2010-09-25 1:04 ` [PATCH 2/2] [9p] Introduce client side TFSYNC/RFSYNC for dotl Venkateswararao Jujjuri (JV) 2010-09-27 12:59 ` [V9fs-developer] " Eric Van Hensbergen @ 2010-10-20 12:57 ` Aneesh Kumar K. V 1 sibling, 0 replies; 6+ messages in thread From: Aneesh Kumar K. V @ 2010-10-20 12:57 UTC (permalink / raw) To: Venkateswararao Jujjuri (JV), v9fs-developer Cc: linux-fsdevel, Venkateswararao Jujjuri (JV) On Fri, 24 Sep 2010 18:04:28 -0700, "Venkateswararao Jujjuri (JV)" <jvrao@linux.vnet.ibm.com> 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. I guess we want the operation to differentiate between fdatasync and fsync. ie we want it to be size[4] Tfsync tag[2] fid[4] datasync[4] -aneesh ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-10-20 12:57 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-09-25 1:04 [PATCH 1/2] [fs/9p] Add file_operations for cached mode in dotl protocol Venkateswararao Jujjuri (JV) 2010-09-25 1:04 ` [PATCH 2/2] [9p] Introduce client side TFSYNC/RFSYNC for dotl Venkateswararao Jujjuri (JV) 2010-09-27 12:59 ` [V9fs-developer] " Eric Van Hensbergen 2010-09-27 15:54 ` Venkateswararao Jujjuri (JV) 2010-09-27 16:05 ` Eric Van Hensbergen 2010-10-20 12:57 ` Aneesh Kumar K. V
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).