Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fuseops.ReadDirOp error #95

Closed
kernelt opened this issue Jul 30, 2015 · 7 comments
Closed

fuseops.ReadDirOp error #95

kernelt opened this issue Jul 30, 2015 · 7 comments

Comments

@kernelt
Copy link

kernelt commented Jul 30, 2015

Hi Aaron!

Our team continues testing and integrating gcsfuse in our infrastructure. I see that you work hard and new versions release quickly, it’s really great stuff! Thanks you for that!

Now, however, we are facing one issue again.
Today, I tried to setup a binary gcsfuse 0.5.0 package on fedora 22 and it didn’t work properly. After bucket was mounted, objects didn't display. And we saw these errors:

fuse: 2015/07/30 17:23:35.461549 *fuseops.ReadDirOp error: readAllEntries: ReadEntries: ListObjects: EOF
fuse: 2015/07/30 17:23:40.568968 *fuseops.ReadDirOp error: readAllEntries: ReadEntries: ListObjects: EOF
2015/07/30 17:33:18.079280 Starting a garbage collection run.
2015/07/30 17:33:18.127958 Garbage collection failed after deleting 0 objects in 48.658522ms, with error: ListPrefix: ListObjects: EOF

However, if we setup go, set variables (gopath, goroot) and then run "go get -u github.com/googlecloudplatform/gcsfuse" the problem goes away. Objects are displayed and created.

And three more things

  1. I can see in documentation https://github.com/GoogleCloudPlatform/gcsfuse/blob/master/docs/installing.md and can’t understand what does ‘ sudo adduser $USER fuse’ step mean? Because $USER variable isn't present in the system and command fails.
  2. Can I use one tmp folder (--temp-dir option) for different buckets?
  3. I want setup stiky bit for mounted dir. What digists I need to use for --dir-mode and --file-mode options?
@jacobsa
Copy link
Contributor

jacobsa commented Jul 31, 2015

Hi, some itemized followup:

  1. Are you running on Linux? If so, consider switching to the pre-built release binaries in the installation instructions instead of trying to update yourself with go get -u. You are probably having version skew issues, due to not setting GO15VENDOREXPERIMENT or something like that. Please let me know if this fixes your problem.
  2. The adduser command is to ensure that your user is allowed to mount fuse file systems. Some systems restrict access to /dev/fuse to members of that group. I'm quite surprised you don't have $USER set, but it's supposed to expand to your user name.
  3. You can run as many gcsfuse processes as you want, each for a different bucket, and it is fine if they share a temp dir.
  4. I'm not sure a sticky bit will work. Can you file a separate issue about this describing why you want a sticky bit and showing that it doesn't work?

@kernelt
Copy link
Author

kernelt commented Aug 2, 2015

Hi!

  1. Yes, we are using Linux. I’m afraid, you advise exactly things we tried. If I follow installation instructions from the link above, I get an error “fuseops.ReadDirOp error”. In short, I mean that pre-built binaries don't work. Only install from the source work well.
  2. I have been using rpm-base distro for a long time, but I have never seen that $USER variable was set by default in server. Or, you mean that I need to replace $USER to ‘my_user’ something like that: sudo adduser my_user fuse? If so, it’s not a proper command syntax for ‘useradd’ command.
  3. Nice. It’s very helpful.
  4. Actually, question about sticky bit is highly specialized to our project and explaining ‘why we need it’ will be lengthy. Maybe, it doesn’t make sense at present. I will try to work without it, but if it won’t work as we expect, I will back to this question to describe for what goal we need it and would be great to have your opinion.

@jacobsa
Copy link
Contributor

jacobsa commented Aug 2, 2015

  1. What commit are you installing from when you install from source? What binary version are you installing ?Are you setting GO15VENDOREXPERIMENT? In general, please give me very exact instructions to reproduce your problem so I can try to fix it.
  2. Yes, you need to run sudo adduser my_user fuse. It's news to me that this isn't a valid command. What variant of Linux are you running exactly? I don't know what "rpm-base" is.

Re (4): Please open a new issue rather than using this one if you do have more to say about it. It's much easier to offer support if each issue is focused. Thanks!

@jacobsa
Copy link
Contributor

jacobsa commented Aug 2, 2015

Ah sorry, I see you said above you're using Fedora. The closest I have access to is RHEL 7. You're right that adduser seems to work differently there; plus the fuse group doesn't seem to be relevant:

$ sudo adduser $USER fuse
Usage: adduser [options] LOGIN

$ sudo adduser -g fuse $USER
adduser: group 'fuse' does not exist

I'll update the documentation, sorry about that.

jacobsa added a commit that referenced this issue Aug 3, 2015
The `adduser` syntax is different on the other distributions (the
command doesn't even exist on sles-12). More importantly, installing
fuse doesn't seem to even create a group called `fuse`. When I Google
for context, the only instructions saying to add the user to the group
seem to all be related to Ubuntu and Debian, so this appears to only be
relevant there.

For #95.
@jacobsa
Copy link
Contributor

jacobsa commented Aug 3, 2015

Documentation updated, thanks for the note. I'm still interested in detailed instructions for reproducing the readdir error if you can give them to me. Closing this for now; please re-open if you can tell me how to reproduce at HEAD or with the latest binary distribution.

@jacobsa
Copy link
Contributor

jacobsa commented Aug 3, 2015

FYI I've been able to reproduce the errors you saw; please follow along in #101.

@jacobsa
Copy link
Contributor

jacobsa commented Aug 4, 2015

@kernelt: this should be fixed if you install the latest release following the instructions here. Thanks for the report!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants