* Is UNSTABLE ever sent in client writes? @ 2015-10-01 16:55 Constantine Peresypkin 2015-10-01 17:32 ` Benjamin Coddington 0 siblings, 1 reply; 5+ messages in thread From: Constantine Peresypkin @ 2015-10-01 16:55 UTC (permalink / raw) To: linux-nfs Tried with various mount options (sync, async) Looked into source code. It seems like it will never be sent, client always assumes server can do FILE_SYNC, and server cannot respond with anything else, if implemented correctly. But what we can do if the server is inherently unable to do FILE_SYNC (eventual consistency, write reorder, etc.)? ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Is UNSTABLE ever sent in client writes? 2015-10-01 16:55 Is UNSTABLE ever sent in client writes? Constantine Peresypkin @ 2015-10-01 17:32 ` Benjamin Coddington 2015-10-01 17:37 ` Constantine Peresypkin 0 siblings, 1 reply; 5+ messages in thread From: Benjamin Coddington @ 2015-10-01 17:32 UTC (permalink / raw) To: Constantine Peresypkin; +Cc: linux-nfs On Thu, 1 Oct 2015, Constantine Peresypkin wrote: > Tried with various mount options (sync, async) > Looked into source code. > It seems like it will never be sent, client always assumes server can > do FILE_SYNC, and server cannot respond with anything else, if > implemented correctly. > But what we can do if the server is inherently unable to do FILE_SYNC > (eventual consistency, write reorder, etc.)? Hi Constantine, my linux client does unstable writes all the time. nfs_pgio_rpcsetup() default stable arg is NFS_UNSTABLE.. Try doing a write larger than your mount's wsize parameter. Ben ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Is UNSTABLE ever sent in client writes? 2015-10-01 17:32 ` Benjamin Coddington @ 2015-10-01 17:37 ` Constantine Peresypkin 2015-10-01 17:55 ` Benjamin Coddington 0 siblings, 1 reply; 5+ messages in thread From: Constantine Peresypkin @ 2015-10-01 17:37 UTC (permalink / raw) To: Benjamin Coddington; +Cc: linux-nfs [-- Attachment #1: Type: text/plain, Size: 822 bytes --] The question is: can I force it to always use unstable? Or how can I debug why FILE_SYNC is always sent in my case? On Oct 1, 2015 12:32 PM, "Benjamin Coddington" <bcodding@redhat.com> wrote: > On Thu, 1 Oct 2015, Constantine Peresypkin wrote: > > > Tried with various mount options (sync, async) > > Looked into source code. > > It seems like it will never be sent, client always assumes server can > > do FILE_SYNC, and server cannot respond with anything else, if > > implemented correctly. > > But what we can do if the server is inherently unable to do FILE_SYNC > > (eventual consistency, write reorder, etc.)? > > Hi Constantine, my linux client does unstable writes all the time. > nfs_pgio_rpcsetup() default stable arg is NFS_UNSTABLE.. > > Try doing a write larger than your mount's wsize parameter. > > Ben > [-- Attachment #2: Type: text/html, Size: 1141 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Is UNSTABLE ever sent in client writes? 2015-10-01 17:37 ` Constantine Peresypkin @ 2015-10-01 17:55 ` Benjamin Coddington 2015-10-01 19:12 ` Constantine Peresypkin 0 siblings, 1 reply; 5+ messages in thread From: Benjamin Coddington @ 2015-10-01 17:55 UTC (permalink / raw) To: Constantine Peresypkin; +Cc: linux-nfs On Thu, 1 Oct 2015, Constantine Peresypkin wrote: > > The question is: can I force it to always use unstable? Or how can I debug why FILE_SYNC is always sent in my case? No, I don't believe you can. You can use systemtap, or turn up the nfs debugging. I don't think FILE_SYNC will always be sent. It depends upon how you are doing IO. What are you using to test? Try something like this on a mount with wsize=4096. It should get you four unstable writes, and eventually a COMMIT: #define TPATH "/mnt/fedora/tmp/" #define SIZE 4096*4 #define CHARS "I love when strings are 32 chars" int main(void *argc) { int pos, filp_foo; void *foo_addr; unlink(TPATH "foo"); filp_foo = open(TPATH "foo", O_RDWR|O_CREAT, S_IWUSR|S_IRUSR|S_IRGRP|S_IROTH); ftruncate(filp_foo, SIZE); foo_addr = mmap(NULL, SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, filp_foo, 0); for (pos = 0; pos < SIZE; pos += strlen(CHARS)) strcpy(foo_addr + pos, CHARS); close(filp_foo); } Ben > > On Oct 1, 2015 12:32 PM, "Benjamin Coddington" <bcodding@redhat.com> wrote: > On Thu, 1 Oct 2015, Constantine Peresypkin wrote: > > > Tried with various mount options (sync, async) > > Looked into source code. > > It seems like it will never be sent, client always assumes server can > > do FILE_SYNC, and server cannot respond with anything else, if > > implemented correctly. > > But what we can do if the server is inherently unable to do FILE_SYNC > > (eventual consistency, write reorder, etc.)? > > Hi Constantine, my linux client does unstable writes all the time. > nfs_pgio_rpcsetup() default stable arg is NFS_UNSTABLE.. > > Try doing a write larger than your mount's wsize parameter. > > Ben > > > ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Is UNSTABLE ever sent in client writes? 2015-10-01 17:55 ` Benjamin Coddington @ 2015-10-01 19:12 ` Constantine Peresypkin 0 siblings, 0 replies; 5+ messages in thread From: Constantine Peresypkin @ 2015-10-01 19:12 UTC (permalink / raw) To: Benjamin Coddington; +Cc: linux-nfs Doesn't help much. As far as I can see from the code, there are only two places where write_pageio_init() is called, and it's called either with FLUSH_STABLE or FLUSH_COND_STABLE Therefore I have no idea how exactly any unstable write will be submitted. On Thu, Oct 1, 2015 at 12:55 PM, Benjamin Coddington <bcodding@redhat.com> wrote: > On Thu, 1 Oct 2015, Constantine Peresypkin wrote: > >> >> The question is: can I force it to always use unstable? Or how can I debug why FILE_SYNC is always sent in my case? > > No, I don't believe you can. You can use systemtap, or turn up the nfs > debugging. > > I don't think FILE_SYNC will always be sent. It depends upon how you are > doing IO. What are you using to test? > > Try something like this on a mount with wsize=4096. It should get you four > unstable writes, and eventually a COMMIT: > > #define TPATH "/mnt/fedora/tmp/" > #define SIZE 4096*4 > #define CHARS "I love when strings are 32 chars" > > int main(void *argc) { > int pos, filp_foo; > void *foo_addr; > > unlink(TPATH "foo"); > filp_foo = open(TPATH "foo", O_RDWR|O_CREAT, S_IWUSR|S_IRUSR|S_IRGRP|S_IROTH); > ftruncate(filp_foo, SIZE); > foo_addr = mmap(NULL, SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, filp_foo, 0); > for (pos = 0; pos < SIZE; pos += strlen(CHARS)) > strcpy(foo_addr + pos, CHARS); > close(filp_foo); > } > > Ben > > >> >> On Oct 1, 2015 12:32 PM, "Benjamin Coddington" <bcodding@redhat.com> wrote: >> On Thu, 1 Oct 2015, Constantine Peresypkin wrote: >> >> > Tried with various mount options (sync, async) >> > Looked into source code. >> > It seems like it will never be sent, client always assumes server can >> > do FILE_SYNC, and server cannot respond with anything else, if >> > implemented correctly. >> > But what we can do if the server is inherently unable to do FILE_SYNC >> > (eventual consistency, write reorder, etc.)? >> >> Hi Constantine, my linux client does unstable writes all the time. >> nfs_pgio_rpcsetup() default stable arg is NFS_UNSTABLE.. >> >> Try doing a write larger than your mount's wsize parameter. >> >> Ben >> >> >> ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-10-01 19:12 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-10-01 16:55 Is UNSTABLE ever sent in client writes? Constantine Peresypkin 2015-10-01 17:32 ` Benjamin Coddington 2015-10-01 17:37 ` Constantine Peresypkin 2015-10-01 17:55 ` Benjamin Coddington 2015-10-01 19:12 ` Constantine Peresypkin
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).