Chuck:* *John Chandy at the University of Connecticut ([email protected]*j*)wrote the original pvfs2fuse module.
Becky On Thu, Oct 18, 2012 at 5:11 PM, Becky Ligon <[email protected]> wrote: > Chuck: > > The person who wrote the pvfs2fuse module is not on our staff, but I will > track down his name and send it along to you. This guy is probably the > person you should ask about your concerns. > > Becky > > > On Thu, Oct 18, 2012 at 3:37 PM, Chuck Cranor <[email protected]> wrote: > >> hi- >> >> I've got the 2.8.4 embedded in a disk image i'm using >> across a set of clusters, so it isn't so easy to change right >> now. I am OK though, as I have a workaround that removes all >> double slashes from a filename before passing it to PVFS API. >> Glad the issue is resolved in 2.8.6, I can easily remove my >> workaround when I get a chance to upgrade (but I'm not sure >> when that will be). >> >> I've modified PLFS (parallel log structured filesystem from >> LANL) to write directly to PVFS rather than go through the PVFS >> kernel module. To do that I need to link PLFS with the PVFS APIs. >> I've got it working with that API, but I was mainly wondering about >> the memory management issues (to avoid memory leaks by not using >> the PVFS_SYS API properly). Based on my reading of the code, it >> seems to me that there may be memory leaks in pvfs2fuse... but maybe >> I don't understand the API fully. >> >> thanks, >> chuck >> >> >> On Tue, Oct 16, 2012 at 03:04:24PM -0400, Becky Ligon wrote: >> > Under Orangefs 2.8.6, the errors that you described with pvfs2-ls (and >> > kernel ls) no longer exist. Is it possible for you to use the latest >> > Orangefs 2.8.6? If so, use this SVN command: >> > >> > svn co http://www.orangefs.org/svn/orangefs/branches/stable. >> > >> > >> > Also with OrangeFS 2.8.6, we have a new user library that you may want >> to >> > use instead of the PVFS_SYS calls that I described earlier. If you can >> > tell me what you are trying to do, I can help you decide which way to >> go. >> > >> > Thanks, >> > Becky >> > >> > On Mon, Oct 15, 2012 at 1:47 PM, Chuck Cranor <[email protected]> >> wrote: >> > >> > > hi- >> > > >> > > I believe I've found a bug in path handling in OrangeFS 2.8.4. >> > > I don't know if it impacts newer versions, but it is easy to test. >> > > If you make a directory and then make a subdirectory with the same >> > > name in it, then stat gets confused when it encounters filenames with >> > > extra slashes in it. In other words, try this: >> > > >> > > >> > > # cat /etc/pvfs2tab >> > > tcp://p9ea1:3334/pvfs2-fs /pvfsarea/pp pvfs2 defaults,noauto >> 0 0 >> > > # pvfs2-mkdir /pvfsarea/pp/testdir >> > > # pvfs2-mkdir /pvfsarea/pp/testdir/testdir >> > > # pvfs2-ls /pvfsarea/pp/testdir/some_random_string >> > > PVFS_sys_lookup: No such file or directory (error class: 0) >> > > # pvfs2-ls /pvfsarea/pp//testdir/some_random_string >> > > # >> > > # pvfs2-ls /pvfsarea/pp/testdir/another_random_string >> > > PVFS_sys_lookup: No such file or directory (error class: 0) >> > > # pvfs2-ls /pvfsarea/pp////testdir/another_random_string >> > > # >> > > >> > > note that "pvfs2-ls" does not generate an error if I add the extra "/" >> > > characters (and it should!). >> > > >> > > >> > > >> > > While I am here, where is the documentation/man pages for the libpvfs2 >> > > API? I was looking at the pvfs2fuse as an example of using this API, >> > > but I'm unclear on when I need to call PVFS_Request_free() and >> > > PVFS_util_release_sys_attr(). >> > > >> > > >> > > For example, with PVFS_Request_free(), in pvfs2fuse.c in the function >> > > pvfs_fuse_read() it calls: >> > > >> > > PVFS_Request_contiguous(count, PVFS_BYTE, &mem_req); >> > > >> > > That function appears to malloc() mem_req in PVFS_Request_hvector(). >> > > pvfs_fuse_read() then goes on to call "ret = PVFS_sys_read()" and >> based >> > > on the return value it does: >> > > >> > > if (ret == 0) >> > > { >> > > PVFS_Request_free(&mem_req); >> > > return(resp_io.total_completed); >> > > } >> > > else >> > > return PVFS_ERROR_TO_ERRNO_N( ret ); >> > > >> > > the PVFS_Request_free() function appears to free mem_req, but it is >> > > only called if PVFS_sys_read() returns 0. >> > > >> > > My question: who frees mem_req if PVFS_sys_read() returns a non-zero >> value? >> > > >> > > >> > > Next: PVFS_util_release_sys_attr(). pvfs2fuse.c calls >> PVFS_sys_getattr() >> > > with PVFS_ATTR_SYS_ALL_NOHINT in 3 places: >> > > 1. pvfs_fuse_getattr_pfhp() >> > > 2. pvfs_fuse_readlink() >> > > 3. pvfs_fuse_access() >> > > >> > > in the first case, pvfs_fuse_getattr_pfhp(), it calls >> > > PVFS_util_release_sys_attr(attrs) before returning (attrs is >> > > shorthand for &getattr_response.attr). >> > > >> > > But in the second and third cases (readlink/access), it does not >> > > call PVFS_util_release_sys_attr() at all, and I'm not clear on >> > > why this is different from the pvfs_fuse_getattr_pfhp() case? >> > > >> > > >> > > Can anyone clarify when PVFS_Request_free() and >> > > PVFS_util_release_sys_attr() >> > > needs to be called (and maybe provide a pointer to docs so I can >> better >> > > check my own code). >> > > >> > > thanks, >> > > chuck >> > > >> > > _______________________________________________ >> > > Pvfs2-users mailing list >> > > [email protected] >> > > http://www.beowulf-underground.org/mailman/listinfo/pvfs2-users >> > > >> > >> > >> > >> > -- >> > Becky Ligon >> > OrangeFS Support and Development >> > Omnibond Systems >> > Anderson, South Carolina >> > > > > -- > Becky Ligon > OrangeFS Support and Development > Omnibond Systems > Anderson, South Carolina > > > -- Becky Ligon OrangeFS Support and Development Omnibond Systems Anderson, South Carolina
_______________________________________________ Pvfs2-users mailing list [email protected] http://www.beowulf-underground.org/mailman/listinfo/pvfs2-users
