Commit Graph

3 Commits

Author SHA1 Message Date
Justin Husted
8b6497b4e7 Fix infinite looping behavior with readdir.
Also adds partial . and .. support, and implements ENOTDIR error.

The source of this problem was due to the off-by-one interface expected
by readdir. Each directory entry contains a pointer to next, so it
cannot be emitted to the user until the next entry is actually read.

Returning the current position + 1 is insufficient, because the user
will just retry cur + 1 as the start position to see if they've reached
the end of the directory.

Since directory entries are keyed by a 64-bit hash in bcachefs, the
result was that the user would call readdir over and over with what it
believed the next pointer to be until "cur + 1" reached some enormous
64-bit value related to the hash for the "lost+found" entry.
2019-10-18 16:23:39 -04:00
Justin Husted
08ce726f9c Implement option parsing for fuse. The syntax is:
bcachefs fusemount dev mountpoint
or
bcachefs fusemount dev1:dev2:... mountpoint
2019-10-18 16:23:39 -04:00
Kent Overstreet
bc45c28470 fuse 2019-10-18 16:23:39 -04:00